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: //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceGCE.cpython-38.pyc
U

ӇgN5�@sddlZddlZddlZddlmZddlmZmZmZm	Z	m
Z
ddlmZddl
mZmZddlmZddlmZddlmZe�e�Zd	Zd
eiZdZdZd
diZdZGdd�d�ZGdd�dej �Z!Gdd�de!�Z"dd�Z#dd�Z$d7dd�Z%d8dd�Z&dd �Z'e"ej(ffe!ej(ej)ffgZ*d!d"�Z+ed#k�rddl,Z,ddl-Z-dd$lm.Z.e,j/d%d&�Z0e0j1d'd(d)ed*�e0j1d+d,d-d.dd/�e0�2�Z3e&e3j4e3j5d0�Z6d1e6k�r�ze6d1�7�e6d1<Wn<e8k
�r�e-j9�:d2�e6d1=e.e6d1��7�e6d3<YnXe;ej<e6d4dd5d6��dS)9�N)�	b64decode)�dmi�net�sources�
url_helper�util)�ug_util)�
EventScope�	EventType)�NoDHCPLeaseError)�EphemeralDHCPv4)�DataSourceHostnamez3http://metadata.google.internal/computeMetadata/v1/�metadata_urlzLhttp://metadata.google.internal/computeMetadata/v1/instance/guest-attributes�hostkeyszMetadata-Flavor�GoogleZens4c@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__szGoogleMetadataFetcher.__init__Fc	
Cs�d}z0|j|}|r|d7}tj|t|j|jd�}Wn6tjk
rj}zd}t�|||�W5d}~XYn<X|j	dkr�|r�t
�|j�}q�|j�
d�}nt�d||j	�|S)Nz/?recursive=True)�url�headersZretriesZsec_betweenzurl %s raised exception %s���utf-8zurl %s returned code %s)rr�readurl�HEADERSrrZUrlError�LOG�debug�coderZ
decode_binary�contents�decode)	r�path�is_text�is_recursive�valuer�resp�exc�msgrrr�	get_value$s(
�
 
zGoogleMetadataFetcher.get_valueN)F)�__name__�
__module__�__qualname__rr,rrrrrsrc@s|eZdZdZdZejejej	hiZ
dd�Zdd�Ze
dd��Zd	d
�Zdd�Zd
d�Zddd�Ze
dd��Ze
dd��ZdS)�
DataSourceGCE�GCEFcCsrtj�||||�d|_|r<t�||�\}}t�|�\|_}t�|_t	�
t	�|ddgi�tg�|_
|j
d|_dS)NZ
datasourcer1r)r�
DataSourcer�default_userrZnormalize_users_groupsZextract_default�dict�metadatarZ
mergemanydictZget_cfg_by_path�BUILTIN_DS_CONFIGZds_cfgr)rZsys_cfg�distro�pathsZusersZ_groupsZ_user_configrrrrIs��zDataSourceGCE.__init__cCs�|��}|j�r4t��}t|kr6|�t�|�dt�t�d|�t	|�dksVt
d��|D]�}t|j|d�}zl|�^zt
|j|d�}WnDtk
r�}z&t�d||�WY�W5QR�WqZW5d}~XYnXW5QRXWntk
r�YqZYnX|drZ||j_t�d	|��qqZ|jjdk�rBt�d
|j�nt
|j|d�}|d�sx|d�rft�|d�nt�|d�d
S|d|_|d|_dS)Nrz"Looking for the primary NIC in: %s�z3The instance has to have at least one candidate NIC)Ziface)�address�
url_paramsz,Error fetching IMD with candidate NIC %s: %s�successzPrimary NIC found: %s.z(Did not find a fallback interface on %s.�platform_reports_gce�reasonF�	meta-data�	user-dataT)Zget_url_params�perform_dhcp_setuprZfind_candidate_nics�DEFAULT_PRIMARY_INTERFACE�remove�insertr r!�len�AssertionErrorrr7�read_mdr�	ExceptionrZfallback_interface�warningZ
cloud_namer5Zuserdata_raw)rr;Zcandidate_nicsZ
candidate_nicZnetwork_context�ret�errr�	_get_dataXsd

����
�4
�



zDataSourceGCE._get_datacCsdSrr�rrrr�launch_index�szDataSourceGCE.launch_indexcCs
|jdS)N�instance-id�r5rMrrr�get_instance_id�szDataSourceGCE.get_instance_idcCs|jd}t||j�S)N�public-keys-data)r5�_parse_public_keysr3)r�public_keys_datarrr�get_public_ssh_keys�s
z!DataSourceGCE.get_public_ssh_keyscCs|D]}t|�qdSr)�#_write_host_key_to_guest_attributes)rr�keyrrr�publish_host_keys�szDataSourceGCE.publish_host_keyscCst|jd�d�dd�S)N�local-hostname�.rF)r
r5�split)rZfqdnZ
resolve_ipZ
metadata_onlyrrr�get_hostname�s�zDataSourceGCE.get_hostnamecCs
|jdS)N�availability-zonerPrMrrr�availability_zone�szDataSourceGCE.availability_zonecCs|j�dd�dS)N�-r9r)r^�rsplitrMrrr�region�szDataSourceGCE.regionN)FFF)r-r.r/ZdsnamerAr	ZNETWORKr
ZBOOT_NEW_INSTANCEZBOOTZdefault_update_eventsrrL�propertyrNrQrUrXr\r^rarrrrr0>s&��5


r0c@seZdZdZdS)�DataSourceGCELocalTN)r-r.r/rArrrrrc�srccCsRdtt|f}|�d�}tj||tddd�}|��rBt�d|�nt�d|�dS)Nz%s/%s/%srZPUTF)r�datarZrequest_methodZcheck_statusz&Wrote %s host key to guest attributes.z0Unable to write %s host key to guest attributes.)	�GUEST_ATTRIBUTES_URL�HOSTKEY_NAMESPACE�encoderrr�okr r!)Zkey_type�	key_valuerr)rrrrV�s
�rVc	Cs�z|�dd�dd�\}}Wnttfk
r6YdSX|dkrDdSzt�|�}Wntk
rhYdSXd|krvdS|d}d}ztj�||�}Wntk
r�YdSXtj�tjj	�|kS)N��Fz
google-sshZexpireOnz%Y-%m-%dT%H:%M:%S%z)
r[�
ValueError�AttributeError�json�loads�datetime�strptimeZnow�timezoneZutc)�
public_keyZschemaZjson_strZjson_objZ
expire_strZ
format_strZexpire_timerrr�_has_expired�s&rtcCsrg}|s|S|D]\}|rtdd�|D��s,q|�dd�}t|�dkrFq|\}}|d|fkrt|�s|�|�q|S)Ncss|]}t|�dkVqdS)�N)�ord)�.0�crrr�	<genexpr>�sz%_parse_public_keys.<locals>.<genexpr>�:r9rk�	cloudinit)�allr[rErt�append)rTr3Zpublic_keysrsZsplit_public_key�userrWrrrrS�srSTcCs|dkrt}ddddd�}t�|d<|r<|ds<d|d<|St�|�sbt�d|�d||d<|Sdd	d
ddg}t||j|j�}i}|D]b\}}}	}
}d}|D]}
|�	|
|
|�}|dk	r�|}q�|	r�|dkr�d
}|||d<|S|||<q�t
�|dp�d�}t
�|d�pd�}|�d�|�d�g}|�dd��
�}|dk�rl|�d��sl|�|�d��|�|�d��d�dd�|D��}|��|d<|d�r�|d�d�d|d<d|k�r�|d�d�}|�d�}|d k�r�t|�}n|�r�t�d!|�||d<||d"<d#|d$<|S)%NF)r?r@r<r>r=zNot running on GCE.r>z%s is not resolvablezaddress "%s" is not resolvable)rO)zinstance/idTTF)r])z
instance/zoneTTF)rY)zinstance/hostnameTTF)�
instance-data)zinstance/attributesFFT)�project-data)zproject/attributesFFTz)required key %s returned nothing. not GCErz{}r�ZsshKeyszssh-keyszblock-project-ssh-keys��true�
cSsg|]}|r|�qSrr)rwrWrrr�
<listcomp>-szread_md.<locals>.<listcomp>rRr]�/���r@rzuser-data-encoding�base64z(unknown user-data-encoding: %s, ignoringr?Tr<)�	MD_V1_URLr=rZis_resolvable_urlr r!rrrr,rnro�get�lowerr}�join�
splitlinesr[rgrrI)r:r;�platform_checkrJZurl_mapZmetadata_fetcherZmdZmkeyr8Zrequiredr&r'r(r%Z	new_valuer+Z
instance_dataZproject_dataZ
valid_keysZ
block_projectrTZud�encodingrrrrG�sx�

��





rGcCsPt�d�pd}|dks|dkr"dSt�d�p.d}|�d�r>dSt�d||�d	S)
Nzsystem-product-namezN/AzGoogle Compute EnginerTzsystem-serial-numberzGoogleCloud-z6Not running on google cloud. product-name=%s serial=%sF)rZ
read_dmi_data�
startswithr r!)Zpname�serialrrrr=Cs
�r=cCst�|t�Sr)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_list[sr��__main__)�	b64encodezQuery GCE Metadata Service)Zdescriptionz
--endpointZURLz The url of the metadata service.)�metavar�help�defaultz--no-platform-checkr�zIgnore smbios platform checkZstore_false)�destr��actionr�)r:r�r@z/User-data cannot be decoded. Writing as base64
z
user-data-b64r9)�,z: )�indentZ	sort_keysZ
separators)N)NNT)=rprnZloggingr�rr{rrrrrZcloudinit.distrosrZcloudinit.eventr	r
Zcloudinit.net.dhcprZcloudinit.net.ephemeralrZcloudinit.sourcesr
Z	getLoggerr-r r�r6rerfrrBrr2r0rcrVrtrSrGr=ZDEP_FILESYSTEMZDEP_NETWORKr�r��argparse�sysr��ArgumentParser�parser�add_argument�
parse_args�argsZendpointr�rdr$�UnicodeDecodeError�stderr�write�print�dumpsrrrr�<module>sv
� n"

M
�
��
�