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/__pycache__/DataSourceGCE.cpython-310.pyc
o

�Ad�/�@sddlZddlZddlmZddlmZddlmZddlm	Z
ddlmZmZm
Z
ddlmZddlmZdd	lmZe
�e�Zd
ZdeiZdZd
ZdZddiZGdd�d�ZGdd�dej�ZGdd�de�Z dd�Z!dd�Z"d8dd�Z#d9dd�Z$d d!�Z%e ej&ffeej&ej'ffgZ(d"d#�Z)ed$k�rddl*Z*ddl+Z+dd%lm,Z,e*j-d&d'�Z.e.j/d(d)d*ed+�e.j/d,d-d.d/dd0�e.�0�Z1e$e1j2e1j3d1�Z4d2e4vr�z
e4d2�5�e4d2<Wne6y�e+j7�8d3�e4d2=e,e4d2��5�e4d4<Ynwe9ej:e4d5dd6d7��dSdS):�N)�	b64decode)�suppress)�dmi)�log)�sources�
url_helper�util)�ug_util)�EphemeralDHCPv4)�DataSourceHostnamez3http://metadata.google.internal/computeMetadata/v1/�metadata_url)�instance-id�availability-zone�local-hostnamezLhttp://metadata.google.internal/computeMetadata/v1/instance/guest-attributes�hostkeyszMetadata-Flavor�Googlec@seZdZdd�Zddd�ZdS)�GoogleMetadataFetchercCs||_||_||_dS�N)�metadata_address�num_retries�sec_between_retries)�selfrrr�r�A/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceGCE.py�__init__s
zGoogleMetadataFetcher.__init__Fc	
Cs�d}z|j|}|r|d7}tj|t|j|jd�}Wntjy7}zd}t�|||�WYd}~|Sd}~ww|j	dkrO|rGt
�|j�}|S|j�
d�}|St�d||j	�|S)Nz/?recursive=True)�url�headers�retries�sec_betweenzurl %s raised exception %s���utf-8zurl %s returned code %s)rr�readurl�HEADERSrr�UrlError�LOG�debug�coder�
decode_binary�contents�decode)	r�path�is_text�is_recursive�valuer�resp�exc�msgrrr�	get_value$s2

�	��
��zGoogleMetadataFetcher.get_valueN)F)�__name__�
__module__�__qualname__rr1rrrrrsrc@sjeZdZdZdZdd�Zdd�Zedd��Zd	d
�Z	dd�Z
d
d�Zddd�Zedd��Z
edd��ZdS)�
DataSourceGCE�GCEFcCsrtj�||||�d|_|rt�||�\}}t�|�\|_}t�|_t	�
t	�|ddgi�tg�|_
|j
d|_dS)N�
datasourcer6r)r�
DataSourcer�default_userr	�normalize_users_groups�extract_default�dict�metadatar�
mergemanydict�get_cfg_by_path�BUILTIN_DS_CONFIG�ds_cfgr)r�sys_cfg�distro�paths�users�_groups�_user_configrrrrCs��zDataSourceGCE.__init__cCs�|��}t�}|jrt|j|j��d�}|�tjt	j
dt|j|d�d�}Wd�n1s/wY|dsN|drEt	�
|d�dSt	�
|d�dS|d	|_|d
|_dS)N)�tmp_dirzCrawl of GCE metadata service)�address�
url_params)�kwargs�success�platform_reports_gce�reasonF�	meta-data�	user-dataT)�get_url_params�noop�perform_dhcp_setupr
�fallback_interfacerC�get_tmp_exec_pathr�log_timer$r%�read_mdr�warningr=�userdata_raw)rrJ�network_context�retrrr�	_get_dataRs4�����

zDataSourceGCE._get_datacCsdSrr�rrrr�launch_indexoszDataSourceGCE.launch_indexcC�
|jdS)Nr
�r=r]rrr�get_instance_idts
zDataSourceGCE.get_instance_idcCs|jd}t||j�S)N�public-keys-data)r=�_parse_public_keysr9)r�public_keys_datarrr�get_public_ssh_keysws
z!DataSourceGCE.get_public_ssh_keyscCs|D]}t|�qdSr)�#_write_host_key_to_guest_attributes)rr�keyrrr�publish_host_keys{s
�zDataSourceGCE.publish_host_keyscCst|jd�d�dd�S)Nr�.rF)rr=�split)r�fqdn�
resolve_ip�
metadata_onlyrrr�get_hostnames�zDataSourceGCE.get_hostnamecCr_)Nrr`r]rrr�availability_zone�s
zDataSourceGCE.availability_zonecCs|j�dd�dS)N�-�r)ro�rsplitr]rrr�region�szDataSourceGCE.regionN)FFF)r2r3r4�dsnamerSrr\�propertyr^rarerhrnrorsrrrrr5>s


r5c@seZdZdZdS)�DataSourceGCELocalTN)r2r3r4rSrrrrrv�srvcCsTdtt|f}|�d�}tj||tddd�}|��r"t�d|�dSt�d|�dS)Nz%s/%s/%sr �PUTF)r�datar�request_method�check_statusz&Wrote %s host key to guest attributes.z0Unable to write %s host key to guest attributes.)	�GUEST_ATTRIBUTES_URL�HOSTKEY_NAMESPACE�encoderr!r"�okr$r%)�key_type�	key_valuerr.rrrrf�s
�rfc	Cs�z|�dd�dd�\}}WnttfyYdSw|dkr!dSzt�|�}Wn
ty2YdSwd|vr9dS|d}d}z	tj�||�}Wn
tyRYdSwtj��|kS)N��Fz
google-ssh�expireOnz%Y-%m-%dT%H:%M:%S+0000)rj�
ValueError�AttributeError�json�loads�datetime�strptime�utcnow)�
public_key�schema�json_str�json_obj�
expire_str�
format_str�expire_timerrr�_has_expired�s,���r�cCsrg}|s|S|D].}|rtdd�|D��sq|�dd�}t|�dkr#q|\}}|d|fvr6t|�s6|�|�q|S)Ncss�|]	}t|�dkVqdS)�N)�ord)�.0�crrr�	<genexpr>�s�z%_parse_public_keys.<locals>.<genexpr>�:rqr��	cloudinit)�allrj�lenr��append)rdr9�public_keysr��split_public_key�userrgrrrrc�s
�rcTcCs�|durt}ddddd�}t�|d<|r|dsd|d<|St�|�s1t�d|�d||d<|Sgd�}t||j|j�}i}|D]1\}}}	}
}d}|D]}
|�	|
|
|�}|dur[|}qL|	rn|durnd	}|||d<|S|||<qAt
�|d
pzd�}t
�|dp�d�}|�d
�|�d�g}|�dd��
�}|dkr�|�d
�s�|�|�d��|�|�d
��d�dd�|D��}|��|d<|dr�|d�d�d|d<d|vr�|d�d�}|�d�}|dkr�t|�}n|r�t�d|�||d<||d<d|d <|S)!NF)rOrPrLrNrMzNot running on GCE.rNz%s is not resolvablezaddress "%s" is not resolvable))r
)zinstance/idTTF)r)z
instance/zoneTTF)r)zinstance/hostnameTTF)�
instance-data)zinstance/attributesFFT)�project-data)zproject/attributesFFTz)required key %s returned nothing. not GCEr�z{}r��sshKeyszssh-keyszblock-project-ssh-keys��true�
cSsg|]}|r|�qSrr)r�rgrrr�
<listcomp>szread_md.<locals>.<listcomp>rbr�/���rPr zuser-data-encoding�base64z(unknown user-data-encoding: %s, ignoringrOTrL)�	MD_V1_URLrMr�is_resolvable_urlr$r%rrrr1r�r��get�lowerr��join�
splitlinesrjr}rrX)rIrJ�platform_checkr[�url_map�metadata_fetcher�md�mkeyrD�requiredr+r,r-r*�	new_valuer0�
instance_data�project_data�
valid_keys�
block_projectrd�ud�encodingrrrrW�sl�


��


rWcCsPt�d�pd}|dks|dkrdSt�d�pd}|�d�rdSt�d||�d	S)
Nzsystem-product-namezN/AzGoogle Compute EnginerTzsystem-serial-numberzGoogleCloud-z6Not running on google cloud. product-name=%s serial=%sF)r�
read_dmi_data�
startswithr$r%)�pname�serialrrrrM%s
�rMcCst�|t�Sr)r�list_from_depends�datasources)�dependsrrr�get_datasource_list=sr��__main__)�	b64encodezQuery GCE Metadata Service)�descriptionz
--endpoint�URLz The url of the metadata service.)�metavar�help�defaultz--no-platform-checkr�zIgnore smbios platform check�store_false)�destr��actionr�)rIr�rPz/User-data cannot be decoded. Writing as base64
z
user-data-b64rq)�,z: )�indent�	sort_keys�
separatorsr)NNT);r�r�r�r�
contextlibrrRr�rr�loggingrrr�cloudinit.distrosr	�cloudinit.net.ephemeralr
�cloudinit.sourcesr�	getLoggerr2r$r�r@�REQUIRED_FIELDSr{r|r"rr8r5rvrfr�rcrWrM�DEP_FILESYSTEM�DEP_NETWORKr�r��argparse�sysr��ArgumentParser�parser�add_argument�
parse_args�args�endpointr�rxr)�UnicodeDecodeError�stderr�write�print�dumpsrrrr�<module>s|
� P
"
M
�
�����