HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/sources/helpers/__pycache__/ec2.cpython-310.pyc
o

�Ad�"�@s�ddlZddlZddlmZddlmZmZe�e�Z	e
ejg�ZGdd�d�Z
Gdd�d�Zdd	�Z	
							dd
d�Z	
									ddd�Z	
									ddd�Z	
								ddd�ZdS)�N)�log)�
url_helper�utilc@s eZdZdZdd�Zdd�ZdS)�MetadataLeafDecoderz.Decodes a leaf blob into something meaningful.cCs,|sdS|��}|�d�r|�d�rdSdS)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�|�}Wnty|YSw|�|�r>zt�|�WSttfy=}z
t�	d||�WYd}~nd}~ww|�
d�dkrI|��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
rrsrc@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)�MetadataMaterializerNcCs6||_d|_||_||_|durt�|_dS||_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]G}|��}||�}|r)|s*q|dkr/q||�r=||vr<|�|�q|�dd�}|}	t|�dkr^|\}
}t�|
�}
|
dur^d|
}	|}|	||<q||fS)	NcSs|�d�rdSdS)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�len�safe_int)rr�leaves�childrenr3r5r�
field_name�contents�resource�ident�sub_contentsr
r
r�_parseAs8

�

zMetadataMaterializer._parsecCs(|jdur|jS|�|j|j�|_|jSr&)r(�_materializer'r))rr
r
r�materializels
z MetadataMaterializer.materializecCs�|�|�\}}i}|D]}t�||�}|�d�s|d7}|�|�}|�||�||<qi}	|��D]\}
}t�||�}|�|�}
|�|
|
�|	|
<q0i}|�|�|	�	�D]}
|
|vr`t
�d|�qS|	|
||
<qS|S)Nr0z&Duplicate key found in results from %s)rCr�combine_urlr
r*rD�itemsr+�update�keysrr)rrr,r<r=�child_contents�c�	child_url�
child_blob�
leaf_contentsrr@�leaf_url�	leaf_blob�joinedr
r
rrDrs(



z!MetadataMaterializer._materializer&)r!r"r#r/rCrErDr
r
r
rr%6s


+r%cCs
|j|vS)z/Returns False if cause.code is in status_codes.)�code)�status_codes�
_request_args�causer
r
r�skip_retry_on_codes�s
rV�latest�http://169.254.169.254�c
Cs�t�||�}t�|d�}d}	z|st�tt�}tj|||||||d�}
|
j}	W|	StjyO}z|j	tvrDt
�td|�WYd}~|	SWYd}~|	Sd}~wt
y_t
�td|�Y|	Sw)Nz	user-datar)�ssl_details�timeout�retries�exception_cb�
headers_cb�headers_redactz$Failed fetching userdata from url %s)rrF�	functools�partialrV�SKIP_USERDATA_CODES�read_file_or_urlr?�UrlErrorrRr�logexcr�	Exception)�api_version�metadata_addressrZr[r\r^r_r]�ud_url�	user_data�responserr
r
r�get_instance_userdata�s<
��	�

����rlc	s�t�|||�}tjtj||||||	d����fdd�}z�|�}
t|
j|||d�}|��}t|t	�s4i}|WSt
yIt�t
d||�iYSw)N)rZr[r\r^r_r]c
sPz�|�jWStjy'}z�r�|�s�t�d|�WYd}~dSd}~ww)Nz&Skipped retrieval of the content of %sz	(skipped))r?rrdrr)�urlr�r-�retrieval_exception_ignore_cbr
r�mcaller�s����z'_get_instance_metadata.<locals>.mcaller)r.zFailed fetching %s from url %s)rrFr`rarcr%r?rE�
isinstance�dictrfrrer)�treergrhrZr[r\r.r^r_r]ro�md_urlrprk�materializer�mdr
rnr�_get_instance_metadata�s0
�


�
�rwc


Cstd||||||||||	d�S)Nz
meta-data/)rsrgrhrZr[r\r.r_r^r]ro�rw)
rgrhrZr[r\r.r^r_r]ror
r
r�get_instance_metadata�s�ryc		Cstd|||||||||d�
S)Nzdynamic/instance-identity)
rsrgrhrZr[r\r.r_r^r]rx)	rgrhrZr[r\r.r^r_r]r
r
r�get_instance_identitys�rz)rWrXNrYrYNNN)
rWrXNrYrYNNNNN)	rWrXNrYrYNNNN)r`r�	cloudinitr�loggingrr�	getLoggerr!r�	frozenset�	NOT_FOUNDrbrr%rVrlrwryrzr
r
r
r�<module>sd
#T
�)
�4
��