Ë
    GKÕi„  ã                   óâ  — d dl Z d dl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mZmZmZ d dlmZ  e j$                   ej&                  e«      «      Zddd	d
ddœZej.                  j0                  ej.                  j2                  ej.                  j4                  dœZ G d„ de«      Zdee   fd„Z ed¬«       ed«      deee   ee   f   fd„«       «       Z	 ddee   dej@                  fd„Z!y)é    N)ÚEnum)Ú	lru_cache)ÚDictÚOptionalÚTupleÚType)ÚcloudsÚ
exceptionsÚmessagesÚsystemÚutil)Úapply_config_settings_overrideÚAWSz	AWS ChinazAWS GovÚAzureÚGCP)Úawsú	aws-chinaúaws-govÚazureÚgce)r   r   r   c                   ó   — e Zd ZdZdZy)ÚNoCloudTypeReasonr   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNO_CLOUD_DETECTEDÚCLOUD_ID_ERROR© ó    ú:/usr/lib/python3/dist-packages/uaclient/clouds/identity.pyr   r      s   „ ØÐØ�Nr    r   Úreturnc                  ó¶   — 	 t        j                  g d¢«      \  } }| j                  «       S # t        j                  $ r Y nw xY wt
        j                  d«       y)z%Query cloud instance-id from cmdline.)z
cloud-initÚqueryÚinstance_idz'Unable to determine current instance-idN)r   ÚsubpÚstripr
   ÚProcessExecutionErrorÚLOGÚwarning)ÚoutÚ_errs     r!   Úget_instance_idr-      sN   € ðä—K‘KÒ FÓG‰	ˆˆTØ�y‰y‹{ÐøÜ×+Ñ+ò Ùðúä‡K�KÐ9Ô:Øs   ‚), ¬AÁA)ÚmaxsizeÚ
cloud_typec                  óJ  — t        j                  d«      r,	 t        j                  dg«      \  } }| j                  «       d fS d t        j                  fS # t        j
                  $ r;}t        j                  dt        |«      «       d t        j                  fcY d }~S d }~ww xY w)Nzcloud-idzerror running cloud-id: %s)r   Úwhichr&   r'   r
   r(   r)   ÚdebugÚstrr   r   r   )r+   r,   Úexcs      r!   Úget_cloud_typer5   +   s‹   € ô ‡|�|�JÔð	<ÜŸ™ Z LÓ1‰IˆC�Ø—I‘I“K Ð&Ð&ð
 Ô#×5Ñ5Ð6Ð6øô	 ×/Ñ/ò 	<Ü�I‰IÐ2´C¸³HÔ=ØÔ+×:Ñ:Ð;Õ;ûð	<ús   —*A ÁB"Á'0BÂB"ÂB"Úcloud_overridec                 ó˜  — ddl m}m}m}m} |j
                  |j
                  |j
                  |j                  |j                  |j                  dœ}| �| }nt        «       \  }}|st        j                  «       ‚|j                  |«      }|st        j                  |¬«      ‚ |«       }	|	j                  st        j                  «       ‚|	S )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   r   ÚgcpÚlxd)r   r   r   r   r   r9   )r/   )Úuaclient.cloudsr   r   r8   r9   ÚAWSAutoAttachInstanceÚAzureAutoAttachInstanceÚGCPAutoAttachInstanceÚLXDAutoAttachInstancer5   r
   ÚCloudFactoryNoCloudErrorÚgetÚNonAutoAttachImageErrorÚ	is_viableÚCloudFactoryNonViableCloudError)
r6   r   r   r8   r9   Úcloud_instance_mapr/   Ú_ÚclsÚinstances
             r!   Úcloud_instance_factoryrH   :   s½   € ÷ 5Ó4ð ×(Ñ(Ø×.Ñ.Ø×,Ñ,Ø×.Ñ.Ø×(Ñ(Ø×(Ñ(ñÐð Ð!Ø#‰
ä&Ó(‰ˆ
�AáÜ×1Ñ1Ó3Ð3Ø
×
 Ñ
  Ó
,€CÙÜ×0Ñ0¸JÔGÐGÙ‹u€HØ×ÒÜ×8Ñ8Ó:Ð:Ø€Or    )N)"ÚloggingÚenumr   Ú	functoolsr   Útypingr   r   r   r   Úuaclientr	   r
   r   r   r   Úuaclient.configr   Ú	getLoggerÚreplace_top_level_logger_namer   r)   ÚCLOUD_TYPE_TO_TITLEÚurlsÚPRO_ON_AWS_HOME_PAGEÚPRO_ON_AZURE_HOME_PAGEÚPRO_ON_GCP_HOME_PAGEÚPRO_CLOUD_URLSr   r3   r-   r5   ÚAutoAttachInstancerH   r   r    r!   ú<module>rX      s  ðÛ Ý Ý ß .Ó .ç ?Õ ?Ý :à€g×ÑÐ:˜×:Ñ:¸8ÓDÓE€ð ØØØØñÐ ð �=‰=×-Ñ-Ø�]‰]×1Ñ1Ø�=‰=×-Ñ-ñ€ô˜ô ð
	˜ #™ó 	ñ �4ÔÙ Ó-ð
7˜˜h s™m¨XÐ6GÑ-HÐHÑIò 
7ó .ó ð
7ð %)ñ$Ø˜S‘Mð$à×Ñô$r    