Ë
    GKÕi‹!  ã                   óD  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dl	Z	d dl
mZmZmZmZ d dlmZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZm Z  d d	l!m"Z"m#Z#m$Z$  ejJ                   ejL                  e'«      «      Z( G d
„ de«      Z) G d„ de«      Z*d„ Z+dedee)   de,fd„Z-de j                   dee j                      de,fd„Z.de/de,fd„Z0de*de,fd„Z1dedee2   dee*   fd„Z3edefd„«       Z4dedee/   fd„Z5dedee/   fd„Z6de/de/fd „Z7defd!„Z8y)"é    N)ÚListÚOptional)ÚdefaultsÚmessagesÚsystemÚutil)ÚContractExpiryStatusÚ_is_attached)Úensure_apt_pkg_initÚget_pkg_versionÚversion_compare)Úget_cloud_type)ÚUAConfig)ÚBoolDataValueÚ
DataObjectÚDatetimeDataValueÚFieldÚStringDataValueÚ	data_list)Úmachine_tokenÚnoticesÚstate_filesc                   ó  — e Zd Z ed ee«      d¬«       ed ee«      d¬«       eded¬«       ed ee«      d¬«       ed e ee«      «      d¬«      gZdddddd	œdee	e
      dee	e
      dee   dee	e
      dee	e	e
         f
d
„Zy)ÚAptNewsMessageSelectorsÚ	codenamesF©ÚrequiredÚcloudsÚproÚarchitecturesÚpackagesN©r   r   r   r    r!   c                óJ   — || _         || _        || _        || _        || _        y ©Nr"   )Úselfr   r   r   r    r!   s         ú3/usr/lib/python3/dist-packages/uaclient/apt_news.pyÚ__init__z AptNewsMessageSelectors.__init__+   s(   € ð #ˆŒØˆŒØˆŒØ*ˆÔØ ˆ�ó    )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Úfieldsr   r   ÚstrÚboolr'   © r(   r&   r   r       sÕ   „ áˆk™9 _Ó5ÀÔFÙˆh™	 /Ó2¸UÔCÙˆe�]¨UÔ3Ùˆo™y¨Ó9ÀEÔJÙØ™	¡)¨OÓ"<Ó=Èô	
ð€Fð *.Ø&*Ø"Ø-1Ø.2ò!ð ˜D ™IÑ&ð!ð ˜˜c™Ñ#ð	!ð
 �d‰^ð!ð    S¡	Ñ*ð!ð ˜4  S¡	™?Ñ+ô!r(   r   c            
       ó¾   — e Zd Z ede«       eded¬«       eded¬«       ed ee«      «      gZdddœde	j                  de
e	j                     de
e   dee   fd	„Zy)
ÚAptNewsMessageÚbeginÚendFr   Ú	selectorsÚlinesN)r3   r4   c                ó<   — || _         || _        || _        || _        y r$   )r2   r3   r4   r5   )r%   r2   r3   r4   r5   s        r&   r'   zAptNewsMessage.__init__C   s    € ð ˆŒ
ØˆŒØ"ˆŒØˆ�
r(   )r)   r*   r+   r   r   r   r   r   r,   Údatetimer   r   r-   r'   r/   r(   r&   r1   r1   ;   s�   „ áˆgÐ(Ó)ÙˆeÐ&°Ô7ÙˆkÐ2¸UÔCÙˆg‘y Ó1Ó2ð	€Fð ,0Ø7;òð × Ñ ðð �h×'Ñ'Ñ(ð	ð
 Ð3Ñ4ðð �C‰yôr(   r1   c                 óà   — 	 | \  }}}t        |«      }|€yt	        ||«      }t        |dk(  xr |dv |dk  xr |dv |dkD  xr |dv g«      S # t         $ r t        j                  d| «       Y yw xY w)NzInvalid package selector: %rFr   )z==ú<=ú>=)ú<r9   )ú>r:   )Ú
ValueErrorÚLOGÚwarningr   r   Úany)Úpackage_selectorÚpackage_nameÚversion_operatorÚpackage_versionÚinstalled_package_versionÚversion_comparisons         r&   Ú_does_package_selector_applyrG   Q   s°   € ðØ:JÑ7ˆÐ&¨ô !0°Ó =ÐØ Ð(ØÜ(Ø! ?óÐô ð # aÑ'ò ;Ø$Ð(:Ð:à !Ñ#ÒGÐ(8¸KÐ(GØ !Ñ#ÒGÐ(8¸KÐ(Gð	
ó	ð 	øô ò Ü�‰Ð2Ð4DÔEÙðús   ‚A ÁA-Á,A-Úcfgr4   Úreturnc                 ó  — |€y|j                   �+t        j                  «       j                  |j                   vry|j                  �t        «       \  }}|�y||j                  vry|j                  �#|j                  t        | «      j                  k7  ry|j                  �!t        j                  «       |j                  vry|j                  �-t        |j                  D �cg c]  }t        |«      ‘Œ c}«      syyc c}w )NTF)r   r   Úget_release_infoÚseriesr   r   r   r
   Úis_attachedr    Úget_dpkg_archr!   r@   rG   )rH   r4   Úcloud_idÚfailrA   s        r&   Údo_selectors_applyrQ   i   sú   € ð ÐØà×ÑÐ&Ü×"Ñ"Ó$×+Ñ+°9×3FÑ3FÑFØà×ÑÐ#Ü'Ó)‰ˆ�$ØÐØØ˜9×+Ñ+Ñ+Øà‡}�}Ð Ø�=‰=œL¨Ó-×9Ñ9Ò9Øà×ÑÐ*Ü×ÑÓ!¨×)@Ñ)@Ñ@Øà×ÑÐ%Üð )2×(:Ñ(:öà$ô -Ð-=Õ>òô
ð àùòs   Ã!C<r2   r3   c                 óÔ   — t         j                   j                  t         j                  j                  «      }|| k  ry| t        j                  d¬«      z   }|�||kD  r|}n|}||kD  ryy)NFé   )ÚdaysT)r7   ÚnowÚtimezoneÚutcÚ	timedelta)r2   r3   rU   Úone_month_after_beginÚ
end_to_uses        r&   Údo_dates_applyr[   Ž   sk   € ô ×
Ñ
×
Ñ
¤× 1Ñ 1× 5Ñ 5Ó
6€CØ
ˆU‚{Øà!¤H×$6Ñ$6¸BÔ$?Ñ?ÐØ
€{�cÐ1Ò1Ø*‰
àˆ
Ø
ˆZÒØàr(   Úcc                 ó8   — t        j                  | «      d   dk(  S )Nr   ÚC)ÚunicodedataÚcategory)r\   s    r&   Úis_control_charra       s   € Ü×Ñ Ó" 1Ñ%¨Ñ,Ð,r(   Úmsgc           	      óü   — t        | j                  «      dk  ryt        | j                  «      dkD  ry| j                  D ]6  }t        |D �cg c]  }t        |«      ‘Œ c}«      r yt        |«      dkD  sŒ6 y yc c}w )Né   Fé   éM   T)Úlenr5   r@   ra   )rb   Úliner\   s      r&   Úis_message_validri   ¤   sn   € Ü
ˆ3�9‰9ƒ~˜ÒØÜ
ˆ3�9‰9ƒ~˜ÒØà—	‘	ò ˆÜ¨DÖ1 q” Õ"Ò1Ô2ÙÜˆt‹9�r‹>Ùð	ð ùò 2s   ÁA9
r   c                 ó¨  — |D ]¡  }	 t         j                  |«      }t        |«      st        j	                  d|«       Œ;t        |j                  |j                  «      st        j	                  d|«       Œrt        | |j                  «      st        j	                  d|«       ŒŸ|c S  y # t        $ r }t        j	                  d|«       Y d }~ŒÉd }~ww xY w)Nzmsg failed parsing: %rzmsg not valid: %rzmsg dates don't apply: %rzmsg selectors don't apply: %r)r1   Ú	from_dictÚ	Exceptionr>   Údebugri   r[   r2   r3   rQ   r4   )rH   r   Úmsg_dictrb   Úes        r&   Úselect_messagerp   ³   s¶   € ð ò ˆð	Ü ×*Ñ*¨8Ó4ˆCô   Ô$Ü�I‰IÐ)¨3Ô/ØÜ˜cŸi™i¨¯©Ô1Ü�I‰IÐ1°3Ô7ØÜ! # s§}¡}Ô5Ü�I‰IÐ5°sÔ;ØØŠ
ðð  øô ò 	Ü�I‰IÐ.°Ô2Üûð	ús   ‡B(Â(	CÂ1CÃCc                 óÈ  — t        j                  t        j                  d¬«       t	        j
                  t        j                  d¬«       t        j                  «       }t        j                  || j                  dt        j                  ¬«      }|j                  «        t        j                  |j                  «      }t        j                  |t         j"                  ¬«      S )NT)Úexist_okÚ_apt)ÚuserÚ )ÚhashÚdestdir)Úcls)ÚosÚmakedirsr   ÚAPT_NEWS_PATHÚshutilÚchownÚapt_pkgÚAcquireÚAcquireFileÚapt_news_urlÚrunr   Ú	load_fileÚdestfileÚjsonÚloadsr   ÚDatetimeAwareJSONDecoder)rH   ÚacqÚapt_news_fileÚapt_news_contentss       r&   Úfetch_aptnews_jsonr‹   É   sš   € ä‡K�K”×&Ñ&°Õ6Ü
‡L�L”×'Ñ'¨fÕ5ä
�/‰/Ó
€CÜ×'Ñ'ØˆS×Ñ B´×0FÑ0Fô€Mð ‡G�G„IÜ×(Ñ(¨×)?Ñ)?Ó@ÐÜ�:‰:ØÜ×)Ñ)ôð r(   c                 ó¸   — t        | «      }t        | |j                  dg «      «      }t        j	                  d|«       |�dj                  |j                  «      S y )Nr   zusing msg: %rú
)r‹   rp   Úgetr>   rm   Újoinr5   )rH   Ú	news_dictrb   s      r&   Úfetch_and_process_apt_newsr‘   Ú   sL   € Ü" 3Ó'€IÜ
˜˜iŸm™m¨J¸Ó;Ó
<€CÜ‡I�Iˆo˜sÔ#Ø
€Ø�y‰y˜Ÿ™Ó#Ð#Ør(   c                 ó  — t        | «      }|j                  }|j                  }t        j                  | «      }|t
        j                  j                  k(  r=t        j                  t        j                  j                  «       t        j                  S t        j                  t        j                  j                  «       |t
        j                  j                  k(  r/t        j                  j!                  |«      j#                  |¬«      S |t
        j$                  j                  k(  ret&        j(                  |z   }|j*                  }|€d}n|j-                  d«      }t        j.                  j!                  |«      j#                  ||¬«      S y)z4
    :return: str if local news, None otherwise
    )Úremaining_daysNÚUnknownz%d %b %Y)Úexpired_dater“   )r
   Úcontract_statusÚcontract_remaining_daysr   Úget_machine_token_filer	   ÚEXPIREDÚvaluer   ÚaddÚNoticeÚCONTRACT_EXPIREDr   ÚremoveÚACTIVE_EXPIRED_SOONÚCONTRACT_EXPIRES_SOONÚ	pluralizeÚformatÚEXPIRED_GRACE_PERIODr   Ú!CONTRACT_EXPIRY_GRACE_PERIOD_DAYSÚcontract_expiry_datetimeÚstrftimeÚCONTRACT_EXPIRED_GRACE_PERIOD)rH   Úis_attached_infoÚexpiry_statusr“   Úmachine_token_fileÚgrace_period_remainingÚexp_dtÚ
exp_dt_strs           r&   Úlocal_apt_newsr®   ã   sJ  € ô $ CÓ(ÐØ$×4Ñ4€MØ%×=Ñ=€NÜ&×=Ñ=¸cÓBÐàÔ,×4Ñ4×:Ñ:Ò:Ü�‰”G—N‘N×3Ñ3Ô4Ü×(Ñ(Ð(ä‡N�N”7—>‘>×2Ñ2Ô3àÔ,×@Ñ@×FÑFÒFÜ×-Ñ-×7Ñ7¸ÓG×NÑNØ)ð Oó 
ð 	
ð Ô,×AÑA×GÑGÒGä×6Ñ6¸ÑGð 	ð $×<Ñ<ˆØˆ>Ø"‰JàŸ™¨Ó4ˆJÜ×5Ñ5×?Ñ?Øó
ç
‰&Ø#Ð4Jð ó 
ð	
ð r(   Únewsc                 óh   — d}| j                  d«      D ]  }|dj                  |«      z  }Œ |dz  }|S )Nz#
r�   z# {}
)Úsplitr¢   )r¯   Úresultrh   s      r&   Úformat_news_for_apt_updater³   	  s@   € Ø€FØ—
‘
˜4Ó ò (ˆØ�(—/‘/ $Ó'Ñ'‰ð(à
ˆe�O€FØ€Mr(   c                 ó  — 	 t        | «      }|st        | «      }|rJt        j                  j	                  |«       t        |«      }t        j                  j	                  |«       y t        j                  j                  «        t        j                  j                  «        y # t        $ r\}t        j                  d|«       t        j                  j                  «        t        j                  j                  «        Y d }~y d }~ww xY w)Nz2something went wrong while processing apt_news: %r)r®   r‘   r   Úapt_news_raw_fileÚwriter³   Úapt_news_contents_fileÚdeleterl   r>   rm   )rH   r¯   Úapt_update_formatted_newsro   s       r&   Úupdate_apt_newsrº     s¿   € ð/Ü˜cÓ"ˆÙÜ-¨cÓ2ˆDÙÜ×)Ñ)×/Ñ/°Ô5Ü(BÀ4Ó(HÐ%Ü×.Ñ.×4Ñ4Ð5NÕOä×.Ñ.×5Ñ5Ô7Ü×)Ñ)×0Ñ0Õ2øÜò /Ü�	‰	ÐFÈÔJÜ×*Ñ*×1Ñ1Ô3Ü×%Ñ%×,Ñ,×.Ñ.ûð/ús   ‚A#B# Á&<B# Â#	DÂ,ADÄD)9r7   r…   Úloggingry   r|   r_   Útypingr   r   r~   Úuaclientr   r   r   r   Ú(uaclient.api.u.pro.status.is_attached.v1r	   r
   Úuaclient.aptr   r   r   Úuaclient.clouds.identityr   Úuaclient.configr   Úuaclient.data_typesr   r   r   r   r   r   Úuaclient.filesr   r   r   Ú	getLoggerÚreplace_top_level_logger_namer)   r>   r   r1   rG   r.   rQ   r[   r-   ra   ri   Údictrp   r‹   r‘   r®   r³   rº   r/   r(   r&   ú<module>rÇ      s�  ðÛ Û Û Û 	Û Û ß !ã ç 5Ó 5÷÷ OÑ NÝ 3Ý $÷÷ ÷ ?Ñ >à€g×ÑÐ:˜×:Ñ:¸8ÓDÓE€ô!˜jô !ô6�Zô ò,ð0"Ø	ð"Ø&Ð'>Ñ?ð"à	ó"ðJØ×ÑðØ#+¨H×,=Ñ,=Ñ#>ðà	óð$-�sð -˜tó -ð˜.ð ¨Tó ðØ	ðØ! $™ZðàˆnÑóð, ð˜Hò ó ðð  Hð °¸#±ó ð#˜ð # X¨c¡]ó #ðL Sð ¨Só ð/˜ô /r(   