Hcf 8ddlZddlZddlZddlZddlZddlmZmZddlZddl m Z m Z m Z m Z ddlmZmZddlmZmZmZddlmZddlmZddlmZmZmZmZmZmZdd l m!Z!m"Z"ejFe jHe%Z&Gd d eZ'Gd d eZ(dZ)dedee'de*fdZ+dejdeejde*fdZ,de-de*fdZ.de(de*fdZ/dedee0dee(fdZ1edefdZ2dedee-fdZ3dedee-fdZ4de-de-fd Z5defd!Z6y)"N)ListOptional)defaultsmessagessystemutil)ContractExpiryStatus _is_attached)ensure_apt_pkg_initget_pkg_versionversion_compare)get_cloud_type)UAConfig) BoolDataValue DataObjectDatetimeDataValueFieldStringDataValue data_list)notices state_filesceZdZedeededeededededeededeeedgZdddddd dee e dee e dee dee e dee e e f d Z y) AptNewsMessageSelectors codenamesFrequiredcloudspro architecturespackagesNrrrrr cJ||_||_||_||_||_yNr!)selfrrrrr s 3/usr/lib/python3/dist-packages/uaclient/apt_news.py__init__z AptNewsMessageSelectors.__init__*s(# *  ) __name__ __module__ __qualname__rrrrfieldsrrstrboolr&r'r%rrs k9_5F h /2UC e]U3 oy9EJ  )O"<= F*.&*"-1.2 !DI& !c# ! d^ !  S * !4S ?+ !r'rc eZdZedeedededededeegZdddde jde e jde ede e fd Z y) AptNewsMessagebeginendFr selectorslinesN)r2r3c<||_||_||_||_yr#)r1r2r3r4)r$r1r2r3r4s r%r&zAptNewsMessage.__init__Bs  " r')r(r)r*rrrrrr+datetimerrr,r&r.r'r%r0r0:s g() e&7 k2UC gy12 F,07;    h'' (  34  Cy r'r0c |\}}}t|}|yt ||}t |dk(xr|dv|dkxr|dv|dkDxr|dvgS#t$rtjd|YywxYw)NzInvalid package selector: %rFr)z==<=>=)r9) ValueErrorLOGwarningr r any)package_selector package_nameversion_operatorpackage_versioninstalled_package_versionversion_comparisons r%_does_package_selector_applyrFPs:J7 &!0 = ((!? #a';$(:: ! # G(8K(G ! # G(8K(G      24DEsA A-,A-cfgr3returnc|y|j+tjj|jvry|jt \}}|y||jvry|j #|j t|jk7ry|j!tj|jvry|j-t|jDcgc] }t|c}syycc}w)NTF)rrget_release_infoseriesrrrr is_attachedr get_dpkg_archr r?rF)rGr3cloud_idfailr@s r%do_selectors_applyrPhs&  " " $ + +93F3F F#')$   9++ +}} ==L-99 9*    !)@)@ @%)2(:(: $--=>    s!C<r1r2ctjjtjj}||kry|tjdz}|||kDr|}n|}||kDryy)NF)daysT)r6nowtimezoneutc timedelta)r1r2rTone_month_after_begin end_to_uses r%do_dates_applyrZsk      1 1 5 5 6C U{!H$6$6B$?? {c11*   Z r'cc8tj|ddk(S)NrC) unicodedatacategory)r[s r%is_control_charr`s    "1 % ,,r'msgc t|jdkryt|jdkDry|jD]6}t|Dcgc] }t|c}ryt|dkDs6yycc}w)NFMT)lenr4r?r`)raliner[s r%is_message_validrhsn 399~ 399~  D1q"1 2 t9r>   2s A9 rc|D]} tj|}t |stj d|;t |j|jstj d|rt||jstj d||cSy#t$r }tj d|Yd}~d}~wwxYw)Nzmsg failed parsing: %rzmsg not valid: %rzmsg dates don't apply: %rzmsg selectors don't apply: %r) r0 from_dict Exceptionr=debugrhrZr1r2rPr3)rGrmsg_dictraes r%select_messageros  **84C $ II)3 / cii1 II13 7 !#s}}5 II5s ;     II. 2  sB(( C1C  Cc~tjtjdt j }t j ||jdtj}|jtj|j}tj|tjS)NT)exist_ok)hashdestdir)cls)osmakedirsr UAC_RUN_PATHapt_pkgAcquire AcquireFile apt_news_urlrunr load_filedestfilejsonloadsrDatetimeAwareJSONDecoder)rGacq apt_news_fileapt_news_contentss r%fetch_aptnews_jsonrsKK%%5 // C'' S  B0E0EMGGI(()?)?@ ::  ) ) r'ct|}t||jdg}tj d||dj |j Sy)Nrz using msg: %r )rrogetr=rljoinr4)rG news_dictras r%fetch_and_process_apt_newsrsL"3'I immJ; >223,@@FFF--77GNN)O  ,AAGGG  6 6 G ''@@ >"J4J55??  &#4J   r'newschd}|jdD]}|dj|z }|dz }|S)Nz# rz# {} )splitr)rresultrgs r%format_news_for_apt_updaters@ F 4 ((//$''( eOF Mr'c t|}|s t|}|rJtjj |t |}tj j |ytj jtjjy#t$r\}tjd|tj jtjjYd}~yd}~wwxYw)Nz2something went wrong while processing apt_news: %r) rrrapt_news_raw_filewriterapt_news_contents_filedeleterkr=rl)rGrapt_update_formatted_newsrns r%update_apt_newsr s/c"-c2D   ) ) / / 5(B4(H %  . . 4 45N O  . . 5 5 7  ) ) 0 0 2 / FJ**113%%,,../sA#B#&rs  !55ON3$0g:::8DE!j!6Z,0" "&'>?" "J   #+H,=,=#> $-s-t- . T  !$Z n, H  H#""Xc]"JSS//r'