HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/__pycache__/ec2_utils.cpython-39.pyc
a

��`�"�	@s�ddlZddlZddlmZddlmZddlmZe�e�Z	e
ejg�ZGdd�de
�ZGdd�de
�Zd	d
�Zddd�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
�5/usr/lib/python3/dist-packages/cloudinit/ec2_utils.py�_maybe_json_objectsz&MetadataLeafDecoder._maybe_json_objectc
Cs�|sdSzt�|�}Wnty,|YS0|�|�r|zt�|�WSttfyz}zt�	d||�WYd}~n
d}~00|�
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|_||_||_|dur*t�|_n||_dS�N)�_blob�_md�	_base_url�_callerr�
_leaf_decoder)rr�base_url�caller�leaf_decoderr
r
r�__init__5s
zMetadataMaterializer.__init__cCs�i}g}t�|�}|s||fSdd�}dd�}|��D]�}|��}||�}|r6|sTq6|dkr^q6||�rz||vr�|�|�q6|�dd�}|}	t|�dkr�|\}
}t�|
�}
|
dur�d|
}	|}|	||<q6||fS)	NcSs|�d�rdSdSdS)N�/TF)r
��itemr
r
r�has_childrenGs
z1MetadataMaterializer._parse.<locals>.has_childrencSs|�d�r|�d�S|S)Nr0)r
�rstripr1r
r
r�get_nameMs

z-MetadataMaterializer._parse.<locals>.get_namezsecurity-credentials�=�z%s/openssh-key)rrrr�append�split�len�safe_int)rr�leaves�childrenr3r5r�
field_name�contents�resource�identZsub_contentsr
r
r�_parse?s6


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



�z!MetadataMaterializer._materialize)N)r!r"r#r/rBrDrCr
r
r
rr%4s

+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�srN�latest�http://169.254.169.254�c
Cs�t�||�}t�|d�}d}	z2|s.t�tt�}tj|||||||d�}
|
j}	Wn\tjy�}z$|j	tvrxt
�td|�WYd}~n(d}~0t
y�t
�td|�Yn0|	S)Nz	user-datar)�ssl_details�timeout�retries�exception_cb�
headers_cb�headers_redactz$Failed fetching userdata from url %s)rrE�	functools�partialrN�SKIP_USERDATA_CODES�read_file_or_urlr?�UrlErrorrJr�logexcr�	Exception)�api_version�metadata_addressrRrSrTrVrWrU�ud_url�	user_data�responserr
r
r�get_instance_userdata�s(��

"rdc
	s�t�|||�}
tjtj||||||	d���fdd�}z6�|
�}t|j|
||d�}
|
��}t|t	�sfi}|WSt
y�t�t
d||
�iYS0dS)N)rRrSrTrVrWrUcs
�|�jSr&)r?)�url�r-r
r�mcaller�sz'_get_instance_metadata.<locals>.mcaller)r.zFailed fetching %s from url %s)rrErXrYr[r%r?rD�
isinstance�dictr^rr]r)�treer_r`rRrSrTr.rVrWrU�md_urlrgrcZmaterializer�mdr
rfr�_get_instance_metadata�s*��
rmc		Cstd|||||||||d�
S)Nz
meta-data/�
rjr_r`rRrSrTr.rWrVrU�rm�	r_r`rRrSrTr.rVrWrUr
r
r�get_instance_metadata�s�rqc		Cstd|||||||||d�
S)Nzdynamic/instance-identityrnrorpr
r
r�get_instance_identity�s�rr)rOrPNrQrQNNN)	rOrPNrQrQNNNN)	rOrPNrQrQNNNN)	rOrPNrQrQNNNN)rXr�	cloudinitr�loggingrr�	getLoggerr!r�	frozenset�	NOT_FOUNDrZ�objectrr%rNrdrmrqrrr
r
r
r�<module>	sH
 U�
�
�
�