
    fv                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZ d d	lmZmZ d d
l m!Z! d dl"m#Z#m$Z$m%Z%m&Z& d dl'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-  ej\                         Z/ ej`                   ejb                  e2            Z3dZ4dZ5dZ6e&jn                  jp                  e-jr                  ejt                  z   e-jv                  z   e&jx                  jp                  e-jz                  ej|                  z   e-jv                  z   e&j~                  jp                  e-j                  ej                  z   e-jv                  z   e&j                  jp                  e-j                  ej                  z   e-jv                  z   e&j                  jp                  e-j                  ej                  z   e-jv                  z   e#j                  jp                  e-jr                  ej                  z   e-jv                  z   e#j                  jp                  e-j                  ej                  z   e-jv                  z   e4e-jr                  ej                  z   e-jv                  z   e5e-jr                  ej                  z   e-jv                  z   e6e-jr                  ej                  z   e-jv                  z   i
ZNdZOdZPdj                  ej                  ej                  ej                  ej                        ZVdZWdZXi ddddd ej                         ddddd dd!dd"dd#g d$e%jx                  jp                  d%ej                  d&i d'g d(d)d)d)g e&j~                  jp                  d*d+d)d)d)g d,d-dZ[d. Z\d/e
e]e	f   fd0Z^d1ed/e
e]e	f   fd2Z_d1ed/e
e]e	f   fd3Z`d/e
e]e	f   fd4Zad/e
e]e	f   fd5ZbdHd1ed6ecd/e
e]e	f   fd7Zdd8ee
e]e	f      d9e]d/e
e]e	f   fd:Ze	 dHd;e]d6ecd/ee
e]e	f   eff   fd<Zgd=e]d/e]fd>Zhd?eee]      d/e]fd@Zi	 dIdAeee]e]f      dBee]   d/ee]   fdCZjd!ee   d/e]fdDZkdHdEe
e]e	f   d6ecd/e]fdFZldG Zmy)J    N)OrderedDict)datetimetimezone)AnyDictListOptionalTuple)event_logger
exceptions	livepatchmessagesutilversion)_is_attached)UA_CONFIGURABLE_KEYSUAConfig)get_available_resourcesget_contract_information)ATTACH_FAIL_DATE_FORMATPRINT_WRAP_WIDTH)entitlement_factory)ContractStatusUserFacingAvailabilityUserFacingConfigStatusUserFacingStatus)noticesstate_files)Notice)TxtColor	essentialstandardadvancedz({name: <17}{available: <11}{description}zJ{name: <17}{available: <11}{entitled: <11}{auto_enabled: <16}{description}z4{name: <17}{entitled: <10}{status: <13}{description}nameentitledstatusdescriptionz4{name: <17}{entitled: <19}{status: <22}{description}z={marker} {name: <15}{entitled: <19}{status: <22}{description}_doczUContent provided in json response is currently considered Experimental and may change_schema_versionz0.1r   
machine_idattachedF	effectiveexpiresoriginservicesexecution_statusexecution_detailsfeaturesr   contract idr%   
created_atproductstech_support_levelaccountr%   r7   r8   external_account_ids	simulatedc                     | j                         D cg c]p  }|j                  j                  s|j                  j                  n|j                  j                  |j
                  j                  |j
                  j                  dr c}S c c}w )N)r%   reason_codereason)blocking_incompatible_servicesentitlement
is_variantr%   variant_name	named_msgmsg)entservices     1/usr/lib/python3/dist-packages/uaclient/status.py_get_blocked_by_servicesrK      s~     99;	  &&11 '',,$$11",,11''++	
	 	 	s   A5Breturnc           
      "   d }d}| j                         }| j                         }| j                  |v rdnd}i }|t        j                  k(  rt
        j                  }	n| j                  |v r t
        j                  }	|| j                     }n| j                         \  }	}
|	t
        j                  k(  r|
j                  |
j                  d}n|
r|
j                  }|	t
        j                  k(  rd}| j                  r?| j                  j                         D ci c]  \  }}|t         ||      ||       }}}t        |       }| j                  | j                   |j"                  |	j"                  |||||d	}| j$                  s||d<   |S c c}}w )Nr5   noyes)codemessagecfg)	r%   r(   r&   r'   status_detailsdescription_override	available
blocked_bywarningvariants)status_description_overridecontract_statusr%   r   
UNENTITLEDr   UNAVAILABLEINAPPLICABLEuser_facing_statusWARNINGrG   rY   items_attached_service_statusrK   presentation_namer(   valuerD   )rH   inapplicable_resourcesrS   rX   rT   rU   r[   rV   rY   
ent_statusdetailsrE   variant_clsrW   service_statuss                  rJ   rb   rb      s    GN::<))+O$::IH.333%11
88--)66J#9#((#C "%"8"8":J-555#LL&{{ !(-::: 	|| 69\\5G5G5I 2k !":#,.#   *#.J %%#))""( 4 
N >>%-z"5s   FrS   c                    t        j                  t        j                         t        j                  t        j                         t        j                  t              }| j                  d   }|d   }t        j                  j                  }|j                  |d   d|j                  d      t        j                         xs g |d   |d   |j                  dd	      |j                  d
g       |d| j                  j                   d   | j                  j                   d   | j                  j                   j                  dd	      | j                  j                   j                  dg       dd       |j                  d      r| j                  j"                  |d<   |j                  d      r|d   |d<   | j                  j                  d      }|st%        |       }t'        |d       D ci c](  }|j                  d      s|d   |j                  d      * }}|D ]G  }	 t)        | |j                  dd	            } ||       }	|d   j/                  t1        |	||              I |d   j3                  d        | j                  j4                  j                  di       j                  d      }
|
r+|
j                  di       j                  d      }|r||d   d <   |S c c}w # t*        j,                  $ r Y w xY w)!z8Return configuration of attached status as a dictionary.machineTokenInfocontractInfo	machineIdTr/   r7   r%   	createdAtr5   r9   r6   externalAccountIDsr<   )r+   r,   r/   r   r4   r;   effectiveTor.   effectiveFromr-   availableResourcesc                 &    | j                  dd      S Nr%   r5   getxs    rJ   <lambda>z"_attached_status.<locals>.<lambda>   s    fb8I     keyrV   r(   rS   r%   r0   c                 &    | j                  dd      S rt   ru   rw   s    rJ   ry   z"_attached_status.<locals>.<lambda>
      AEE&",= rz   supportrC   affordancessupportLevelr4   r:   )r   remover   AUTO_ATTACH_RETRY_FULL_NOTICEAUTO_ATTACH_RETRY_TOTAL_FAILUREcopydeepcopyDEFAULT_STATUSmachine_tokenr   r^   rd   updaterv   listmachine_token_filer;   contract_expiry_datetimer   sortedr   r   EntitlementNotFoundErrorappendrb   sortentitlements)rS   responserk   rl   r:   	resourcesresourcere   ent_clsrH   r   r   s               rJ   _attached_statusr      s   NN6778NN699:}}^,H(();<#N3L)66<<OO*;7"&&x0||~+"4($V,*..{B?(,,Z<&8 ..66v>,,44T:!44<<@@ ),(>(>(F(F(J(J(")		
2 &!44MM( ,_ =!!%%&:;I+C0	 y.IJ||K( 	(,,}55   

	)hll626G
 cl##$S*@#F	


 Z"=>$$1155iDHHG {{="599.I9EHZ !56O5 22 		s   0-K%%K**L ?L c           	         t        j                  t              }t        |       }|D ]  }|j	                  d      rt
        j                  j                  }nt
        j                  j                  }	 t        | |j	                  dd            }|j                  dk(  rHt        j                          t        j"                  j$                  k(  r ||       }|j'                         }nd}|d	   j)                  |j	                  d
|d         |j*                  ||d        |d	   j-                  d        |S # t        j                  $ r* t        j                  d|j	                  dd             Y Lw xY w)z#Return unattached status as a dict.rV   r%   r5   r}   z@Ignoring availability of unknown service %s from contract serverzwithout a 'name' keyr   Nr0   presentedAs)r%   r(   rU   rV   c                 &    | j                  dd      S rt   ru   rw   s    rJ   ry   z$_unattached_status.<locals>.<lambda>B  r   rz   r{   )r   r   r   r   rv   r   	AVAILABLErd   r]   r   r   r   LOGdebugr%   r   on_supported_kernelLivepatchSupportUNSUPPORTEDrZ   r   r(   r   )rS   r   r   r   rV   r   lpdescr_overrides           rJ   _unattached_statusr     sY    }}^,H',I %
<<$.88>>I.::@@I	)hll626G LLK'--/))556 B;;=N!N## ]HV4DE&22(6&		
=%
L Z"=>O= 22 	IIV%;<
 	s   1D779E43E4c                    t        j                  | j                  d      }||z  }|r|S t        j                  |      }g }|j                  di       D ]b  }|d   }	 t        | |      }t        j                  j                  }	|j                  r|j                  dd      |	k(  sR|j                  |       d |r||d<   |S # t        j                  $ r 	 |j                  |       Y w xY w)z1Remove beta services from response dict if neededzfeatures.allow_beta)configpath_to_valuer0   r%   r}   r'   r5   )r   is_config_value_truerS   r   r   rv   r   r   r   r   r   ACTIVErd   is_beta)
rS   show_allr   config_allow_betanew_responsereleased_resourcesr   resource_namer   enabled_statuss
             rJ   _handle_beta_resourcesr   G  s    11ww&; !!H==*L $$Z4 0 (
	)cFG *0066(,,x"<"N%%h/!0$ #5Z # 22 	 %%h/	s   C%C*)C*c                    t         }|j                  j                  }t        j                  }| j                         \  }}t        j                         xs g }|dkD  r8|j                  j                  }t        j                  j                  ||      }nRt        j                  j                  r8|j                  j                  }d}t        j                  j                  |      }|||| j                   | j"                  | j$                  d}i }	t&        D ]  }
t)        | |
      st+        | |
      |	|
<     |	|d   d<   |S )aG  Return a dict with execution_status, execution_details and notices.

    Values for execution_status will be one of UserFacingConfigStatus
    enum:
        inactive, active, reboot-required
    execution_details will provide more details about that state.
    notices is a list of tuples with label and description items.
    r   )pidlock_holderzconfiguration changes)	operation)r1   r2   r   config_pathr   r3   r   	ua_config)r   INACTIVErd   r   NO_ACTIVE_OPERATIONScheck_lock_infor   r   r   	LOCK_HELDformatr   reboot_cmd_marker_file
is_presentREBOOTREQUIREDENABLE_REBOOT_REQUIRED_TMPLcfg_pathrS   r3   r   hasattrgetattr)rS   
userStatus
status_valstatus_desclock_pidr   notices_listr   retr   r|   s              rJ   _get_config_statusr   k  s2    (J$$**J//K!113X{<<>'RL!|&&,,
((//k 0 
 
	+	+	6	6..44
+	::AA B 
 '(||''LLC I# /3$S#.IcN/ "+CM+Jrz   r   c                 x   t        |       j                  rt        |       }nt        |       }|j	                  t        |              t        j                         r| j                  d|       t        | ||      }|s9|j                  dg       D cg c]  }|j                  dd      dk(  r| }}||d<   |S c c}w )a  Return status as a dict, using a cache for non-root users

    When unattached, get available resources from the contract service
    to report detailed availability of different resources for this
    machine.

    Write the status-cache when called by root.
    zstatus-cacher0   rV   rO   )r   is_attachedr   r   r   r   r   we_are_currently_rootwrite_cacher   rv   )rS   r   r   rI   available_servicess        rJ   r'   r'     s     C$$#C(%c*OO&s+,!!#1%c8X>H $<<
B7
{{;.%7 
 

  2O
s   B7r   entitlement_namec                     | D ]d  }|j                  d      |k(  s|j                  d      rdnd|j                  di       j                  d      rdnd|j                  di       dc S  ddi dS )	z0Extract information from the entitlements array.typer&   rO   rN   obligationsenableByDefaultr   )r&   auto_enabledr   ru   )r   r   rC   s      rJ   _get_entitlement_informationr     s~     $ ??6"&66%0__Z%@Ed??="599:KL !&*}bA  d2FFrz   tokenc           
      n	   d}t        j                  t              }	 t        | |      }|j                  di       }|j                  di       }|j                  |j                  dd      |j                  d	d      |j                  d
d      |j                  dg       d|j                  d	d      |j                  d      |j                  d
d      |j                  dg       ddd       t        j                  t        j                        }	|j                  d      r|j                  d      |d<   |d   }
|
|	z
  }|j                         dk  rt         j"                  j%                  |d   d   |
j'                  t(                    }t*        j-                  |j.                  |j0                         t*        j3                  t         j4                  dz   |j.                  z   dz          d}|j                  d      r|j                  d      |d<   |d   }|	|z
  }|j                         dk  rt         j6                  j%                  |d   d   |j'                  t(                    }t*        j-                  |j.                  |j0                         t*        j3                  t         j4                  dz   |j.                  z   dz          d}t9        |       }t;        |d       D cg c]  }|d   s|d	    }}|j                  dg       }|D ]  }|j                  d	d      }	 t=        | |      } ||       }tA        ||      }|d    jC                  |j                  d!|j0                        |jD                  |d"   |d#   |j0                  |vrd$nd%d&        |d    jG                  d'        tA        |d(      }|d"   r|d)   j                  d*      }|r||d   d+<   |j                  tI        |              tK        | ||      }|s9|j                  d g       D cg c]  }|j                  dd$      d$k(  r| }}||d <   ||fS # t        j
                  $ r6}t        |d      r#|j                  dk(  rt	        j                         |d}~ww xY wc c}w # t        j>                  $ r Y w xY wc c}w ),zGet a status dictionary based on a token.

    Returns a tuple with the status dictionary and an integer value - 0 for
    success, 1 for failure
    r   rP   i  Nrl   accountInfor7   r5   r%   rn   r9   )r7   r%   r8   r9   ro   r<   T)r4   r;   r>   rp   r.   r4   )contract_iddate)	error_msg
error_code
   rq   r-   c                     | d   S )Nr%    rw   s    rJ   ry   z!simulate_status.<locals>.<lambda>  s
    &	 rz   r{   rV   resourceEntitlementsr}   rR   r0   r   r&   r   rO   rN   )r%   r(   r&   r   rV   c                 &    | j                  dd      S rt   ru   rw   s    rJ   ry   z!simulate_status.<locals>.<lambda>*  r   rz   r   r   r   r:   )&r   r   r   r   r   ContractAPIErrorr   rP   AttachInvalidTokenErrorrv   r   r   nowr   utctotal_secondsr   E_ATTACH_FORBIDDEN_EXPIREDr   strftimer   eventerrorrG   r%   infoSTATUS_TOKEN_NOT_VALIDE_ATTACH_FORBIDDEN_NOT_YETr   r   r   r   r   r   r(   r   r   r   )rS   r   r   r   r   contract_informationecontract_infoaccount_infor   expiration_datetimedeltarQ   effective_datetimer   r   re   r   r   r   rH   entitlement_informationr   r   rI   r   s                             rJ   simulate_statusr     s    C}}^,H7UC ),,^R@M'++M2>LOO $''b1%))&"5+//R@)--j"=	 %((4"&&t,*..{B?(4(8(8(")	 	
( ,,x||
$C'+//>&y1#c) A%99@@$Z06(112IJ A G KK'++',,KGJJ//$6DtK C) - 1 1/ B%k2(( A%99@@$Z06'001HI A G KK'++',,KGJJ//$6DtK C',I y.AB$ 	  !$$%;R@L 
#<<3	)c8HIG #">*#
 	## ]CHH="3J? 7 G88#99 #
	

* Z"=>*<CGz}-11.A9EHZ !56OO&s+,%c8X>H $<<
B7
{{;.%7 
 

  2S=U && 1f!&&C-4466v 22 		:
s5   Q 'R$RR2R1RRR/.R/stringc                 n    t         j                  j                         rt        j	                  | |       S | S )z=Return colorized string if using a tty, else original string.)sysstdoutisattySTATUS_HUMANIZE_COLORIZErv   )r   s    rJ   for_human_colorizedr   @  s5     :: 	!$$VV4 rz   commandsc                 $   d}| D ]  }|r|dz  }|dj                  |      z  } dj                  t        j                  |t        dz
  d            }d|v rd	}d
}nd}d}dj	                  t
        j                  |||t
        j                        S )Nr5   z &&  z \
   z  )widthsubsequent_indentr   z{
  z
}z{ z }z%{color}{prefix}{content}{suffix}{end})colorprefixcontentsuffixend)jointextwrapwrapr   r   r    DISABLEGREYENDC)r   r  cmdwrapped_contentr  r  s         rJ   colorize_commandsr  I  s    G !vG388C= ! ll,q0T	
O
 299""MM :  rz   column_dataheaderc           	      d   g }|r|j                  |       t        | D cg c]  }t        |d          c}      }|dkD  r?dj                  |      }|j	                  | D cg c]  } |j                  |  c}       |S |j	                  | D cg c]  }|d   	 c}       |S c c}w c c}w c c}w )zReturn a list of content lines to print to console for a section

    Content lines will be center-aligned based on max value length of first
    column.
    r   z{{:>{}}}: {{}}r   )r   maxlenr   extend)r  r  r  pairtemplate_lengthtemplates         rJ   get_section_column_contentr  e  s     GvK@D3tAw<@AO#**?;;G4.GH N 	K8DQ89N A H 9s   B# B(B-c                     | t         j                  S 	 | j                         } | j	                  d      S # t        $ r Y w xY w)Nz%c %Z)r   STATUS_CONTRACT_EXPIRES_UNKNOWN
astimezone	Exceptionr   )r.   s    rJ   format_expiresr   z  sM    777$$& G$$  s   5 	A Ar'   c                 X   | j                  d      sg| j                  d      r| j                  dd      st        j                  S t        j	                  t        j
                  t        j                  t        j                  t        j                  t        j                        g}| j                  dg       D ]&  }|j                  t        j                  d)i |       ( dj                  |      S | j                  dd      st        j                  g}nt        j	                  t        j
                  t        j                  t        j                        g}| j                  dg       D ]  }|j                  d      }|r|n|j                  d	d
      }|j                  d      dk(  rt        j                  nt        j                  }|j                  t        j	                  |j                  dd
      ||              | j                  d      }|r0|j                  t        j                         |j!                  |       | j                  d      rt|j                  dt        j"                  z          t%        | j                  di       j'                               D ]&  \  }}	|j                  dj	                  ||	             ( |s!|j!                  d
t        j(                  g       |j!                  d
t        j*                  j,                  g       t/        j0                         t.        j2                  j4                  k(  r!|j!                  d
t        j6                  g       dj                  |      S g }
d}| j                  dd      st        j                  g}nt8        g}| j                  dg       D ]  }|j                  dd
      }|j                  d      }|r|n|j                  d	d
      }|j                  dd
      t;        |      t;        |j                  dd
            |d}|j                  dd      }|%|j                  dd      }||
j                  |       |j                  d      }|r|sd}dj	                  |d         |d<   |j                  t=        j                  d)i |       |s|s	t?        |j'                               D ]  \  }\  }}|tA        |      dz
  k7  rdnd}|j                  tB        j	                  ||j                  d      t;        |j                  dd
            t;        |j                  dd
            |j                  d	d
                     |r0|j                  d
       |j                  t        jD                         | j                  d      stA        |
      dkD  rs|j                  d
       |j                  t        j                         | j                  d      }|r|j!                  |       tA        |
      dkD  r|j!                  |
       | j                  d      rt|j                  dt        j"                  z          t%        | j                  di       j'                               D ]&  \  }}	|j                  dj	                  ||	             ( |j                  d
       |sA|r |j                  t        jF                         n|j                  t        j(                         |j                  t        jH                  j	                  d              g }| j                  d!i       j                  dd"      }|r!|j                  t        jJ                  |f       | j                  d#i       j                  dd"      }|r!|j                  t        jL                  |f       | j                  d$d      d%k7  r|j                  t        jN                  tQ        | j                  d&            f       | j                  d#i       j                  d'd"      }|j                  t        jR                  t;        |      f       |r,|j                  d
       |j!                  tU        |(             dj                  |      S )*z&Format status dict for tabular output.r,   r>   r0   N)r%   rV   r&   r   r(   r   )r%   rV   r(   rU   r(   r5   rV   rO   r%   r   r3   z{}: {}Fr&   r'   r$   rX   rQ   rY   Tz{}*r   u   ├u   └)markerr%   r&   r'   r(   r   zpro enable <service>)commandr;   unknownr4   r/   freer.   r:   )r  r   )+rv   r   STATUS_NO_SERVICES_AVAILABLESTATUS_SIMULATED_TMPLr   STATUS_SERVICESTATUS_AVAILABLESTATUS_ENTITLEDSTATUS_AUTO_ENABLEDSTATUS_DESCRIPTIONr   r
  STATUS_UNATTACHED_TMPLSTANDALONE_YESSTANDALONE_NOSTATUS_NOTICESr  STATUS_FEATURESr   ra   STATUS_ALL_HINTE_UNATTACHEDrG   r   r   r   r   )LIVEPATCH_KERNEL_NOT_SUPPORTED_UNATTACHEDSTATUS_HEADERr   STATUS_TMPL	enumerater  VARIANT_STATUS_TMPLSTATUS_SERVICE_HAS_VARIANTSSTATUS_ALL_HINT_WITH_VARIANTS"STATUS_FOOTER_ENABLE_SERVICES_WITHSTATUS_FOOTER_ACCOUNTSTATUS_FOOTER_SUBSCRIPTIONSTATUS_FOOTER_VALID_UNTILr   STATUS_FOOTER_SUPPORT_LEVELr  )r'   r   r  rI   r   r(   rV   r   r|   rd   service_warningshas_variantsri   r&   fmt_argsrX   warning_messagerY   idx_variantr"  pairsaccount_namecontract_namer:   s                             rJ   format_tabularrJ    sb   ::j!::k"::j$/<<< &,,!00&77%55!)!=!= ( ; ; - G "::j"5 H4;;FgFGH 99W%%zz*d+<<=G '--!00&77 ( ; ; . G "::j"5 !(-C!D & # ]B7  {{;/58 ++!// 
 *11$[[4"+$/ 2 ( **Y'NN8223NN7#::j!NN4(":"::;$VZZ
B%?%E%E%GH <
UxsE:;< NNB 8 89:H115567))+))556 NNXGGH yy!!L::j$'889 /$jjR8 *	N%))*b9H+//0FGN " #''r:  '**626/9-"&&x4  +H %((D9G"")++i">".$++O<%))*5H##(<<0@#A NN;--99:H)28>>3C)D %C!W&)S]Q->&>UEFNN+22#)!(V!4%8 'J ;& $7 'Hb 9$ )0M2(F 3 
9*	X rx;;<zz)$4 5 9rx../**Y'NN7# 1$NN+,zz*th6667 J!;!A!A!CD 	8JCNN8??367	8NN2NN8AABNN8334NN33::* 	; 	

 E::i,00CLh44lCDJJz2.2269EMh99=IJzz(D!V+22vzz)45	
 $ZZ
B7;; )
 	44#$67	
 r1eDE99Wrz   c                 T   t        |       }d}t               }||d<   |D ];  }|d   |k(  s|j                  d      |k(  s 	 t        | |d         }|} ||       } n |t	        j                  |      t        |       j                  r6t        i |       }|d   }	|d   |d<   |	|d<   |	dk(  rQj                  rEd	|d
<   n?|d   rt        j                  j                  }
nt        j                  j                  }
|
|d<   j                  |d<   |S # t        j
                  $ r Y w xY w)zReturn help information from an uaclient service as a dict

    :param name: Name of the service for which to return help data.

    :raises: UbuntuProError when no help is available.
    Nr%   r   r}   )r%   r'   r&   enabledTbetarV   help)r   r   rv   r   r   r   NoHelpContentr   r   rb   r   r   r   rd   r]   	help_info)rS   r%   r   help_resourceresponse_dictr   help_ent_clshelp_entri   
status_msgrV   s              rJ   rN  rN  @  sW    (,IM
  MM M& 
Ft#x||M'Bd'J2(6"2 
 %M#C(H
 &&D11C$$1(BD#H-
$2:$>j!",h"|';';$(M&! %.88>>I.::@@I%.k"$..M&9 66 s    DD'&D')F)N)nr   loggingr   r  collectionsr   r   r   typingr   r   r   r	   r
   uaclientr   r   r   r   r   r   (uaclient.api.u.pro.status.is_attached.v1r   uaclient.configr   r   uaclient.contractr   r   uaclient.defaultsr   r   uaclient.entitlementsr   (uaclient.entitlements.entitlement_statusr   r   r   r   uaclient.filesr   r   uaclient.files.noticesr   uaclient.messagesr    get_event_loggerr   	getLoggerreplace_top_level_logger_name__name__r   	ESSENTIALSTANDARDADVANCEDr   rd   OKGREENSTATUS_STATUS_ENABLEDr  r   FAILSTATUS_STATUS_DISABLEDr^   r  STATUS_STATUS_INAPPLICABLEr]   STATUS_STATUS_UNAVAILABLEr`   WARNINGYELLOWSTATUS_STATUS_WARNINGENTITLEDSTATUS_ENTITLED_ENTITLEDr\   STATUS_ENTITLED_UNENTITLEDSTATUS_SUPPORT_ESSENTIALSTATUS_SUPPORT_STANDARDSTATUS_SUPPORT_ADVANCEDr   r-  r'  r   r(  r*  STATUS_STATUSr,  r5  r6  r8  get_versionr   r   rK   strrb   r   r   r   r   boolr'   r   intr   r   r  r  r   rJ  rN  r   rz   rJ   <module>r}     s     
  # ' 3 3  B : O G 5  0 ) &%%%'g:::8DE 	
 !!8999HMMI##777(--G!!''

-
-	.
--	   &&

,
,	-
--	 ""!?!??(--O!!8<<<x}}L##

-
-	.
--	 x''(mm h&&'mm h&&'mmE% P D N  GMM		 	 %%!!++	 N  EC 
 # u "w""$	
 $   t d  .77== 66  r .;;AA,  "	-8 9@
8	#s(^8vE( EtCH~ EP.H .c3h .b!tCH~ !H(tCH~ (V D T#s(^ @GtCH~&G:=G	#s(^G" ',ww#w
4S>3wt  T#Y C : AEeCHo&08	#Y*%HX. %3 %y4S> yT yc yx2rz   