>fh3 .ddlZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z m Z mZmZmZddlmZmZmZmZmZmZddlmZddlmZdZd Zd Zd Ze j@Z!ejDejFe$Z%ejLGd d ejNZ(GddeZ)GddeZ*GddeZ+GddeZ,de e+fdZ-de e.de e(fdZ/Gddej`Z1de e(fdZ2de.de.de.d e.de e3e e3ff d!Z4de.de.de.d e.d"e ejde e(f d#Z5ed$de(fd%Z6 d/d&e.d'e ee7ddfd(Z8 d0d)e e.d*e e.d'e ee7ddfd+Z9d,e.de e.fd-Z:de3fd.Z;y)1N) lru_cache)ListOptionalTuple) event_logger exceptionsmessagessystemutil) BoolDataValue DataObjectFieldIncorrectTypeErrorStringDataValue data_list) state_files) serviceclientz http-proxyz https-proxyz/snap/bin/canonical-livepatchz/v1/api/kernels/supportedcReZdZeZeZeZeZeZy)LivepatchSupportN) __name__ __module__ __qualname__object SUPPORTEDKERNEL_UPGRADE_REQUIRED KERNEL_EOL UNSUPPORTEDUNKNOWN4/usr/lib/python3/dist-packages/uaclient/livepatch.pyrr s&I$hJ(KhGr rcXeZdZededdededdgZdeedee fdZ y) LivepatchPatchFixStatusnameFNamerequireddict_keypatchedPatchedc ||_||_yN)r$r))selfr$r)s r!__init__z LivepatchPatchFixStatus.__init__/s   r N) rrrrrr fieldsrstrboolr.rr r!r#r#)sD foG iKF sm$r r#ceZdZededdedeeddededdgZdee dee edee fd Z y ) LivepatchPatchStatusstateFStater&fixesFixesversionVersionc.||_||_||_yr,)r4r6r8)r-r4r6r8s r!r.zLivepatchPatchStatus.__init__Ds    r N) rrrrrrr#r/rr0rr.rr r!r3r38su gI  - .  i59M F}456# r r3cxeZdZededdededdededdgZdeedeedeefd Z y ) LivepatchStatusStatuskernelFKernelr& livepatch Livepatch supported Supportedc.||_||_||_yr,)r=r?rA)r-r=r?rAs r!r.zLivepatchStatusStatus.__init__`s  ""r N) rrrrrr3r/rr0r.rr r!r<r<Osp h%(K        F # #01#C= #r r<cJeZdZedeeddgZdeeefdZ y)LivepatchStatusstatusFStatusr&c||_yr,)rF)r-rFs r!r.zLivepatchStatus.__init__us  r N) rrrrrr<r/rrr.rr r!rErEks;  + ,  F345r rEreturnctstjdy tjt ddddg\}} tj|} tj|}|j t#|j d krtjd y|j d S#t j$rP}d|jvr$tj|jYd}~ytjd||d}~wwxYw#tj$r"}tjd ||Yd}~yd}~wwxYw#t$rtjd |YywxYw)Nz$canonical-livepatch is not installedrFz --verbosez--formatjsonzMachine is not enabledz;canonical-livepatch returned error when checking status: %s)exc_infozPJSONDecodeError while parsing livepatch status, returning None. output was: "%s"zC?rjc tj|||||}d}|tjk(rd}n|tjk(rd}t j jt j|||||tjjtjj|tjd|S)N)r8rgrhrirjTF)r8rgrhrirArz3livepatch kernel support API response was ambiguous)rer|rrrrrwriteLivepatchSupportCacheDatar~rrrrOrU)r8rgrhrirjrAcache_supporteds r!_on_supported_kernel_apirs"#77  8IO$... &22 2''----%''++H,=,=,A,AB    IJ r )maxsizec2t}|tjd|Stj}|j |j |j%tjdtjStj|j}tjj}dj!|j |j}t#||j ||\}}|rKtjd|tjS|rtj$S|stj&Stjdt)||j |||j*}|tjS|S)z Checks CLI, local cache, and API in that order for kernel support If all checks fail to return an authoritative answer, we return None zusing livepatch cli for supportzHunable to determine enough kernel information to check livepatch supportz{major}.{minor})majorminorzusing livepatch support cachezusing livepatch support api)rrOrPr get_kernel_inforgrrrUrrr standardize_arch_nameuname_machine_archget_release_infoseriesformatrrrrrj)cli_says kernel_inforhrilp_api_kernel_veris_cache_valid cache_saysapi_sayss r!on_supported_kernelr:sw()H 34((*K"    $    $  &  '''  % %k&D&D ED&&(//H)00{'8'81 "<;--tX"NJ 12  #++ + #-- -#// /II+,'  H''' Or protocol_type retry_sleepscttsytjtddj |g|y)a Unset livepatch configuration settings for http and https proxies. :param protocol_type: String either http or https :param retry_sleeps: Optional list of sleep lengths to apply between retries. Specifying a list of [0.5, 1] tells subp to retry twice on failure; sleeping half a second before the first retry and 1 second before the second retry. Nconfigz {}-proxy=r)rNr rQrRr)rrs r!unconfigure_livepatch_proxyrvs1 " # KK +"4"4]"CD!r http_proxy https_proxycPddlm}|s|r=tjtj j |j|r-tjtddj |g||r.tjtddj |g|yy) a Configure livepatch to use http and https proxies. :param http_proxy: http proxy to be used by livepatch. If None, it will not be configured :param https_proxy: https proxy to be used by livepatch. If None, it will not be configured :@param retry_sleeps: Optional list of sleep lengths to apply between snap calls r)LivepatchEntitlement)servicerz http-proxy={}rzhttps-proxy={}N) uaclient.entitlementsreventinfor SETTING_SERVICE_PROXYrtitler rQrR)rrrrs r!configure_livepatch_proxyrs;[  * * 1 1,22 2   Ho&<&) r rQrRresearchr MULTILINEgroupsubstrip)rrZr[matchvalues r!get_config_option_valuersu [[-2 3FC IIl))#.R\\ BE#EKKNE {He4!5;;=+t+r c8tjtduSr,)r whichrRrr r!rNrNs << &d 22r r,)NNN)rsk  ((EE'' "/ %@"% %%'g:::8DEtyy  j :.#J#8j"-!./-!`      ,K 55,K^I(+;"<I %(47 4$  >" " " " " **+ "  "J 48-88x?C&.tE{&; *!%!%*."  " #" 4;'"  " J , ,# ,33r