HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/sources/helpers/__pycache__/ec2.cpython-38.pyc
U

ӇgM"�
@s�ddlZddlZddlZddlmZmZe�e�Ze	ej
g�ZGdd�d�ZGdd�d�Z
dd�Zdddddddd�d
d�Zddd�Zddd�Zddd�ZdS)�N)�
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__rrrrrr
rsrc@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)�MetadataMaterializerNcCs4||_d|_||_||_|dkr*t�|_n||_dS�N)�_blob�_md�	_base_url�_callerr�
_leaf_decoder)r
r�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)Nr/)r	�rstripr0rrr
�get_nameOs

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

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



z!MetadataMaterializer._materialize)N)r r!r"r.r>r@r?rrrr
r$6s

+r$cCs
|j|kS)z/Returns False if cause.code is in status_codes.)�code)Zstatus_codes�causerrr
�skip_retry_on_codes�srH�latest�http://169.254.169.254���ssl_details�timeout�retries�
headers_cb�headers_redact�exception_cbc
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-data�)rMrNrOrRrPrQz$Failed fetching userdata from url %s)rrA�	functools�partialrH�SKIP_USERDATA_CODES�read_file_or_urlr<�UrlErrorrFr�logexcr�	Exception)�api_version�metadata_addressrMrNrOrPrQrRZud_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)NrLc
s\z�|�jWStjk
rV}z*�r,�|�s0�nt�d|�WY�dSW5d}~XYnXdS)Nz&Skipped retrieval of the content of %sz	(skipped))r<rrXrr)Zurlr�r,�retrieval_exception_ignore_cbrr
�mcaller�s��z'_get_instance_metadata.<locals>.mcaller)r-zFailed fetching %s from url %s)rrArTrUrWr$r<r@�
isinstance�dictrZrrYr)�treer[r\rMrNrOr-rPrQrRr`Zmd_urlrar]ZmaterializerZmdrr_r
�_get_instance_metadata�s4
�

�
rec


Cstd||||||||||	d�S)Nz
meta-data/)rdr[r\rMrNrOr-rQrPrRr`�re)
r[r\rMrNrOr-rPrQrRr`rrr
�get_instance_metadata�s�rgc		Cstd|||||||||d�
S)Nzdynamic/instance-identity)
rdr[r\rMrNrOr-rQrPrRrf)	r[r\rMrNrOr-rPrQrRrrr
�get_instance_identitys�rh)rIrJ)
rIrJNrKrKNNNNN)
rIrJNrKrKNNNNN)	rIrJNrKrKNNNN)rTrZloggingZ	cloudinitrrZ	getLoggerr r�	frozensetZ	NOT_FOUNDrVrr$rHr^rergrhrrrr
�<module>	sd
#T��*�
4�
�