Ë
    GKÕiá  ã                   óò   — d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZmZ ddlmZ dd	lmZmZ d
ZdZ ej4                   e
j6                  e«      «      Zdefd„Zdedefd„Z d„ Z!y)a%  
Update messaging text for use in MOTD and APT custom Ubuntu Pro messages.

Messaging files will be emitted to /var/lib/ubuntu-advantage/message-* which
will be sourced by apt-hook/hook.cc and various /etc/update-motd.d/ hooks to
present updated text about Ubuntu Pro service and token state.
é    N)Úexists)ÚcontractÚdefaultsÚmessagesÚsystemÚutil)Ú_updates)Ú_enabled_services)ÚContractExpiryStatusÚ_is_attached)ÚUAConfig)Úmachine_tokenÚnoticeszmotd-contract-statusz6/usr/lib/update-notifier/update-motd-updates-availableÚcfgc                 óÚ  — t        j                  | «      }|j                   }|j                  di «      j                  di «      j                  dd «      }t        j                  | «      }|j                  |j                  dd«      |«      }|j                  di «      j                  di «      j                  dd «      }|�-||j                  k7  r||d   d   d<   |j                  |«       y y y )NÚmachineTokenInfoÚcontractInfoÚidÚmachineTokenÚ ÚeffectiveTo)r   Úget_machine_token_fileÚgetr   ÚUAContractClientÚget_contract_machineÚcontract_expiry_datetimeÚwrite)r   Úmachine_token_fileÚ
orig_tokenÚcontract_idÚcontract_clientÚrespÚresp_expirys          úA/usr/lib/python3/dist-packages/uaclient/timer/update_messaging.pyÚupdate_contract_expiryr%       sø   € Ü&×=Ñ=¸cÓBÐØ#×1Ñ1€Jà�‰Ð)¨2Ó.ß	‰ˆ^˜RÓ	 ß	‰ˆT�4‹ð ô
 ×/Ñ/°Ó4€OØ×/Ñ/Ø�‰�~ rÓ*¨Kó€Dð 	�‰Ð# RÓ(ß	‰ˆ^˜RÓ	 ß	‰ˆ]˜DÓ	!ð ð 	ÐØÐ-×FÑFÒFð ð 	Ð%Ñ& ~Ñ6Øñ	
ð 	× Ñ  Õ,ð Gð 	 ó    Úreturnc                 ó€  — t        | «      }|j                  syt        j                  d«       t        j
                  j                  | j                  dt        «      }|j                  }|j                  }t        j                  | «      }|t        j                  j                  t        j                   j                  t        j"                  j                  fv r.t%        | «       t        | «      }|j                  }|j                  }|t        j&                  j                  t        j(                  j                  fv rCt+        j,                  t*        j.                  j0                  «       t3        j4                  |«       y|t        j                  j                  k(  rtt+        j,                  t*        j.                  j0                  «       t3        j6                  |t8        j:                  j=                  |«      j?                  |¬«      dz   «       y|t        j                   j                  k(  rªt+        j,                  t*        j.                  j0                  «       t@        jB                  |z   }|jD                  }|€d}n|jG                  d«      }t3        j6                  |t8        jH                  j=                  |«      j?                  ||¬«      dz   «       y|t        j"                  j                  k(  �rDt+        jJ                  t*        j.                  j0                  «       d	}	d
}
tM        | «      jN                  D �ch c]  }|jP                  ’Œ }}t3        jR                  «       r&d|v r[d}	tU        | «      jV                  jX                  }
n9t3        jZ                  «       r%d|v r!d}	tU        | «      jV                  j\                  }
|
d
k(  r(t3        j6                  |t8        j0                  dz   «       yt3        j6                  |t8        j^                  j=                  |
«      j?                  |
|	¬«      dz   «       yc c}w )z¨Emit human-readable status message used by motd.

    Used by /etc/update.motd.d/91-contract-ua-esm-status

    :param cfg: UAConfig instance for this environment.
    Fz&Updating Ubuntu Pro messages for MOTD.r   )Úremaining_daysz

ÚUnknownz%d %b %Y)Úexpired_dater)   zn/ar   z	esm-infrazesm-apps)Úpkg_numÚserviceT)0r   Úis_attachedÚLOGÚinfoÚosÚpathÚjoinÚdata_dirÚMOTD_CONTRACT_STATUS_FILE_NAMEÚcontract_statusÚcontract_remaining_daysr   r   r   ÚACTIVE_EXPIRED_SOONÚvalueÚEXPIRED_GRACE_PERIODÚEXPIREDr%   ÚACTIVEÚNONEr   ÚremoveÚNoticeÚCONTRACT_EXPIREDr   Úensure_file_absentÚ
write_filer   ÚCONTRACT_EXPIRES_SOONÚ	pluralizeÚformatr   Ú!CONTRACT_EXPIRY_GRACE_PERIOD_DAYSr   ÚstrftimeÚCONTRACT_EXPIRED_GRACE_PERIODÚaddr
   Úenabled_servicesÚnameÚis_current_series_active_esmÚapi_u_pro_packages_updates_v1ÚsummaryÚnum_esm_infra_updatesÚis_current_series_ltsÚnum_esm_apps_updatesÚCONTRACT_EXPIRED_WITH_PKGS)r   Úis_attached_infoÚmotd_contract_status_msg_pathÚexpiry_statusr)   r   Úgrace_period_remainingÚexp_dtÚ
exp_dt_strr-   r,   ÚsÚenabled_services_namess                r$   Úupdate_motd_messagesr[   ;   s¨  € ô $ CÓ(ÐØ×'Ò'Øä‡H�HÐ5Ô6Ü$&§G¡G§L¡LØ�‰�jÔ"@ó%Ð!ð %×4Ñ4€MØ%×=Ñ=€NÜ&×=Ñ=¸cÓBÐàÜ×0Ñ0×6Ñ6Ü×1Ñ1×7Ñ7Ü×$Ñ$×*Ñ*ðñ ô
 	˜sÔ#Ü'¨Ó,ÐØ(×8Ñ8ˆØ)×AÑAˆàÜ×#Ñ#×)Ñ)Ü×!Ñ!×'Ñ'ðñ ô 	�‰”w—~‘~×6Ñ6Ô7Ü×!Ñ!Ð"?Ô@ðF ðE 
Ô.×BÑB×HÑHÒ	HÜ�‰”w—~‘~×6Ñ6Ô7Ü×ÑØ)Ü×*Ñ*×4Ñ4°^ÓD×KÑKØ-ð Ló ð ñô	
ð@ ðs 
Ô.×CÑC×IÑIÒ	IÜ�‰”w—~‘~×6Ñ6Ô7ä×6Ñ6¸ÑGð 	ð $×<Ñ<ˆØˆ>Ø"‰JàŸ™¨Ó4ˆJÜ×ÑØ)Ü×2Ñ2×<Ñ<Øóç‰fØ'Ø5ð ó ð ñô		
ð^ ðK 
Ô.×6Ñ6×<Ñ<Ó	<Ü�‰”G—N‘N×3Ñ3Ô4àˆØˆô .¨cÓ2×CÑCö"
ØˆA�F‹Fð"
Ðð "
ô ×.Ñ.Ô0ØÐ4Ñ4Ø%�Ü7Øóç‘'×/Ñ/ñ ô ×)Ñ)Ô+ØÐ3Ñ3Ø$�Ü7Øóç‘'×.Ñ.ð ð �aŠ<Ü×ÑØ-Ü×)Ñ)¨FÑ2ôð ô ×ÑØ-Ü×3Ñ3×=Ñ=¸gÓF×MÑMØ#Ø#ð Nó ð ñ	ôð ùò?"
s   Ì>P;c                  ó²   — t        t        «      r	 t        j                  t        dg«       y y # t        $ r} t
        j                  | «       Y d } ~ y d } ~ ww xY w)Nz--force)r   ÚUPDATE_NOTIFIER_MOTD_SCRIPTr   ÚsubpÚ	Exceptionr/   Ú	exception)Úexcs    r$   Úrefresh_motdrb   ¤   sJ   € ô Ô)Ô*ð	Ü�K‰KÔ4°iÐ@ÕAð +øô ò 	Ü�M‰M˜#×Ñûð	ús   ‘. ®	A·AÁA)"Ú__doc__Úloggingr1   Úos.pathr   Úuaclientr   r   r   r   r   Ú&uaclient.api.u.pro.packages.updates.v1r	   rM   Ú-uaclient.api.u.pro.status.enabled_services.v1r
   Ú(uaclient.api.u.pro.status.is_attached.v1r   r   Úuaclient.configr   Úuaclient.filesr   r   r5   r]   Ú	getLoggerÚreplace_top_level_logger_nameÚ__name__r/   r%   Úboolr[   rb   © r&   r$   ú<module>rq      s‹   ðñó Û 	Ý ç ?Õ ?õõ L÷õ %ß 1à!7Ð à<ð ð €g×ÑÐ:˜×:Ñ:¸8ÓDÓE€ð- ó -ð6f˜hð f¨4ó fóR
r&   