Your IP : 216.73.217.13


Current Path : /usr/lib/python3/dist-packages/cloudinit/sources/helpers/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/sources/helpers/__pycache__/ec2.cpython-38.pyc

U

�Ad�"�
@s�ddlZddlZddlmZddlmZmZe�e�Z	e
ejg�ZGdd�d�Z
Gdd�d�Zdd	�Zdd
d�Zddd�Zddd�Zddd�ZdS)�N)�log)�
url_helper�utilc@s eZdZdZdd�Zdd�ZdS)�MetadataLeafDecoderz.Decodes a leaf blob into something meaningful.cCs,|sdS|��}|�d�r(|�d�r(dSdS)NF�{�}T)�strip�
startswith�endswith)�self�text�r
�?/usr/lib/python3/dist-packages/cloudinit/sources/helpers/ec2.py�_maybe_json_objectsz&MetadataLeafDecoder._maybe_json_objectc
Cs�|sdSzt�|�}Wntk
r.|YSX|�|�r|zt�|�WSttfk
rz}zt�	d||�W5d}~XYnX|�
d�dkr�|��S|S)N�z6Field %s looked like a json object, but it was not: %s�
���)r�
decode_binary�UnicodeDecodeErrorr�json�loads�
ValueError�	TypeError�LOG�warning�find�
splitlines)r�field�blob�er
r
r�__call__s$

�zMetadataLeafDecoder.__call__N)�__name__�
__module__�__qualname__�__doc__rr r
r
r
rrsrc@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)�MetadataMaterializerNcCs4||_d|_||_||_|dkr*t�|_n||_dS�N)�_blob�_md�	_base_url�_callerr�
_leaf_decoder)rr�base_url�caller�leaf_decoderr
r
r�__init__7s
zMetadataMaterializer.__init__cCs�i}g}t�|�}|s||fSdd�}dd�}|��D]�}|��}||�}|r6|sTq6|dkr^q6||�rz||kr�|�|�q6|�dd�}|}	t|�dkr�|\}
}t�|
�}
|
dk	r�d|
}	|}|	||<q6||fS)	NcSs|�d�rdSdSdS)N�/TF)r
��itemr
r
r�has_childrenIs
z1MetadataMaterializer._parse.<locals>.has_childrencSs|�d�r|�d�S|S)Nr0)r
�rstripr1r
r
r�get_nameOs

z-MetadataMaterializer._parse.<locals>.get_namezsecurity-credentials�=�z%s/openssh-key)rrrr�append�split�lenZsafe_int)rr�leaves�childrenr3r5rZ
field_name�contents�resourceZidentZsub_contentsr
r
r�_parseAs6


zMetadataMaterializer._parsecCs(|jdk	r|jS|�|j|j�|_|jSr&)r(�_materializer'r))rr
r
r�materializels
z MetadataMaterializer.materializecCs�|�|�\}}i}|D]<}t�||�}|�d�s8|d7}|�|�}|�||�||<qi}	|��D].\}
}t�||�}|�|�}
|�|
|
�|	|
<q`i}|�|�|	�	�D]&}
|
|kr�t
�d|�q�|	|
||
<q�|S)Nr0z&Duplicate key found in results from %s)r?r�combine_urlr
r*r@�itemsr+�update�keysrr)rrr,r;r<Zchild_contents�cZ	child_urlZ
child_blobZ
leaf_contentsrr>Zleaf_urlZ	leaf_blobZjoinedr
r
rr@rs(



z!MetadataMaterializer._materialize)N)r!r"r#r/r?rAr@r
r
r
rr%6s

+r%cCs
|j|kS)z/Returns False if cause.code is in status_codes.)�code)Zstatus_codesZ
_request_args�causer
r
r�skip_retry_on_codes�srI�latest�http://169.254.169.254�c
Cs�t�||�}t�|d�}d}	z2|s.t�tt�}tj|||||||d�}
|
j}	Wn\tjk
r�}z|j	tkrzt
�td|�W5d}~XYn"t
k
r�t
�td|�YnX|	S)Nz	user-datar)�ssl_details�timeout�retries�exception_cb�
headers_cb�headers_redactz$Failed fetching userdata from url %s)rrB�	functools�partialrI�SKIP_USERDATA_CODES�read_file_or_urlr=�UrlErrorrGr�logexcr�	Exception)�api_version�metadata_addressrMrNrOrQrRrPZud_urlZ	user_data�responserr
r
r�get_instance_userdata�s2
��	

r]c	s�t�|||�}tjtj||||||	d����fdd�}z6�|�}
t|
j|||d�}|��}t|t	�shi}|WSt
k
r�t�t
d||�iYSXdS)N)rMrNrOrQrRrPc
s\z�|�jWStjk
rV}z*�r,�|�s0�nt�d|�WY�dSW5d}~XYnXdS)Nz&Skipped retrieval of the content of %sz	(skipped))r=rrWrr)Zurlr�r-�retrieval_exception_ignore_cbr
r�mcaller�s��z'_get_instance_metadata.<locals>.mcaller)r.zFailed fetching %s from url %s)rrBrSrTrVr%r=rA�
isinstance�dictrYrrXr)�treerZr[rMrNrOr.rQrRrPr_Zmd_urlr`r\ZmaterializerZmdr
r^r�_get_instance_metadata�s4
�

�
rdc


Cstd||||||||||	d�S)Nz
meta-data/)rcrZr[rMrNrOr.rRrQrPr_�rd)
rZr[rMrNrOr.rQrRrPr_r
r
r�get_instance_metadata�s�rfc		Cstd|||||||||d�
S)Nzdynamic/instance-identity)
rcrZr[rMrNrOr.rRrQrPre)	rZr[rMrNrOr.rQrRrPr
r
r�get_instance_identitys�rg)rJrKNrLrLNNN)
rJrKNrLrLNNNNN)
rJrKNrLrLNNNNN)	rJrKNrLrLNNNN)rSrZ	cloudinitrZloggingrrZ	getLoggerr!r�	frozensetZ	NOT_FOUNDrUrr%rIr]rdrfrgr
r
r
r�<module>	sb
#T�
)�
4�
�