+
    g              
          ^ RI t ^ RIHt ^ RIHt ^ RIHtHtHtH	t	 ^ RI
HtHtHtHtHt ^ RIHt ] P$                  ! ]P&                  ! ]4      4      tRRR	R
RRRRRR/tR]P.                  P0                  R]P.                  P2                  R]P.                  P4                  /t ! R R]4      tR R lt]! RR7      ]! R4      R R l4       4       tRR R lltR# )    N)Enum)	lru_cache)DictOptionalTupleType)clouds
exceptionsmessagessystemutil)apply_config_settings_overrideawsAWS	aws-chinaz	AWS Chinaaws-govzAWS GovazureAzuregceGCPc                       ] tR t^t^ t^tRtR# )NoCloudTypeReason N)__name__
__module____qualname____firstlineno__NO_CLOUD_DETECTEDCLOUD_ID_ERROR__static_attributes__r       :/usr/lib/python3/dist-packages/uaclient/clouds/identity.pyr   r      s    Nr!   r   c                :    V ^8  d   QhR\         \        ,          /#    return)r   str)formats   "r"   __annotate__r)      s     	 	# 	r!   c                      \         P                  ! . RO4      w  rV P                  4       #   \        P                   d     Mi ; i\
        P                  R4       R# )z%Query cloud instance-id from cmdline.z'Unable to determine current instance-idN)z
cloud-initqueryinstance_id)r   subpstripr
   ProcessExecutionErrorLOGwarning)out_errs     r"   get_instance_idr4      sL    KK FG	yy{++ KK9:s   ), AA)maxsize
cloud_typec                r    V ^8  d   QhR\         \        \        ,          \        \        ,          3,          /# r$   )r   r   r'   r   )r(   s   "r"   r)   r)   -   s'     
7 
7hsmX6G-HHI 
7r!   c                  \   \         P                  ! R 4      '       d-    \         P                  ! R .4      w  rV P                  4       R3# R\        P                  3#   \        P
                   d<   p\        P                  R\        T4      4       R\        P                  3u Rp?# Rp?ii ; i)zcloud-idNzerror running cloud-id: %s)r   whichr-   r.   r
   r/   r0   debugr'   r   r   r   )r2   r3   excs      r"   get_cloud_typer<   +   s     ||J	<ZL1ICIIK&&
 #5566	 // 	<II2CH=+::;;	<s   *A B+00B& B+&B+c                Z    V ^8  d   QhR\         \        ,          R\        P                  /# )r%   cloud_overrider&   )r   r'   r	   AutoAttachInstance)r(   s   "r"   r)   r)   :   s&     $ $SM$$r!   c                   ^ RI HpHpHpHp RVP
                  RVP
                  RVP
                  RVP                  RVP                  RVP                  /pV e   T pM\        4       w  rgV'       g   \        P                  ! 4       hVP                  V4      pV'       g   \        P                  ! VR7      hV! 4       p	V	P                  '       g   \        P                  ! 4       hV	# )	a  
:raises CloudFactoryError: if no cloud instance object can be constructed
:raises CloudFactoryNoCloudError: if no cloud instance object can be
    constructed because we are not on a cloud
:raises CloudFactoryUnsupportedCloudError: if no cloud instance object can
    be constructed because we don't have a class for the cloud we're on
:raises CloudFactoryNonViableCloudError: if no cloud instance object can be
    constructed because we explicitly do not support the cloud we're on
)r   r   gcplxdr   r   r   r   r   rB   )r6   )uaclient.cloudsr   r   rA   rB   AWSAutoAttachInstanceAzureAutoAttachInstanceGCPAutoAttachInstanceLXDAutoAttachInstancer<   r
   CloudFactoryNoCloudErrorgetNonAutoAttachImageError	is_viableCloudFactoryNonViableCloudError)
r>   r   r   rA   rB   cloud_instance_mapr6   _clsinstances
   &         r"   cloud_instance_factoryrQ   :   s     54 	s((S..3,,..s((s(( !#
&(
1133

 
 
,C00JGGuH88::Or!   )N) loggingenumr   	functoolsr   typingr   r   r   r   uaclientr	   r
   r   r   r   uaclient.configr   	getLoggerreplace_top_level_logger_namer   r0   CLOUD_TYPE_TO_TITLEurlsPRO_ON_AWS_HOME_PAGEPRO_ON_AZURE_HOME_PAGEPRO_ON_GCP_HOME_PAGEPRO_CLOUD_URLSr   r4   r<   rQ   r   r!   r"   <module>r`      s       . . ? ? :::8DE 
5yW	5  
8==--X]]11	8==-- 
	 4-
7 . 
7$ $r!   