U
    M[^.
                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ zd dlm	Z	 W n e
k
rl   Y nX dZdZd	d
dZefeddddZefeedddZddddZejdddZdS )    N)
exceptions)clouds)status)util)Optionalz/var/lib/cloud/data/result.jsonz/var/lib/cloud/data/instance-idazureaws)ZazurenetZec2zOptional[str])	_iid_filereturnc                 C   sR   dt  d kr,t dddg\}}| S tj| rBt | S t	d|  dS )zBQuery cloud instance-id from cmdline or CLOUDINIT_INSTANCE_ID_FILEZtrustyZseriesz
cloud-initZqueryZinstance_idz/Unable to determine current instance-id from %sN)
r   Zget_platform_infosubpstripospathexists	load_fileloggingZwarning)r	   out_err r   :/usr/lib/python3/dist-packages/uaclient/clouds/identity.pyget_instance_id   s    
 r   )result_filer
   c                 C   s@   t t| }|d d  d  }|dd}t||S )NZv1Z
datasourcer    )	jsonloadsr   r   splitlowerreplaceDATASOURCE_TO_CLOUD_IDget)r   resultZdsnamer   r   r   get_cloud_type_from_result_file)   s    r!   )r
   c                  C   sD   t dr"t dg\} }|  S zt W S  tk
r>   Y nX d S )Nzcloud-id)r   Zwhichr   r   r!   FileNotFoundError)r   r   r   r   r   get_cloud_type2   s    
r#   c                  C   sz   ddl m}  ddl m} | j|jd}t }|s<ttj	|
|}|s^ttjj|d| }|jsvttj|S )Nr   )r   )r   )r   r   )
cloud_type)Zuaclient.cloudsr   r   ZUAAutoAttachAWSInstanceZUAAutoAttachAzureInstancer#   r   ZUserFacingErrorr   Z&MESSAGE_UNABLE_TO_DETERMINE_CLOUD_TYPEr   ZNonAutoAttachImageErrorZ*MESSAGE_UNSUPPORTED_AUTO_ATTACH_CLOUD_TYPEformatZ	is_viableZMESSAGE_UNSUPPORTED_AUTO_ATTACH)r   r   Zcloud_instance_mapr$   clsinstancer   r   r   cloud_instance_factory>   s.    
r(   )r   r   r   Zuaclientr   r   r   r   typingr   ImportErrorZCLOUDINIT_RESULT_FILEZCLOUDINIT_INSTANCE_ID_FILEr   strr   r!   r#   ZAutoAttachCloudInstancer(   r   r   r   r   <module>   s2   
	