관리-도구
편집 파일: DataSourceGCE.cpython-39.opt-1.pyc
a ����'�DgN5����������������������@���s��d�dl�Z�d�dlZd�dlZd�dlmZ�d�dlmZmZmZm Z m Z �d�dlmZ�d�dl mZmZ�d�dlmZ�d�dlmZ�d�dlmZ�e�e�Zd Zd eiZdZdZd diZdZG�dd��d�ZG�dd��dej �Z!G�dd��de!�Z"dd��Z#dd��Z$d7dd�Z%d8dd�Z&dd ��Z'e"ej(ffe!ej(ej)ffgZ*d!d"��Z+ed#k�r d�dl,Z,d�dl-Z-d�d$lm.Z.�e,j/d%d&�Z0e0j1d'd(d)ed*��e0j1d+d,d-d.dd/��e0�2��Z3e&e3j4e3j5d0�Z6d1e6v��r�ze6d1��7��e6d1<�W�n:�e8�y����e-j9�:d2��e6d1=�e.e6d1���7��e6d3<�Y�n0�e;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�������������������@���s���e�Zd�Zdd��Zddd�ZdS�)�GoogleMetadataFetcherc�����������������C���s���||�_�||�_||�_d�S��N)�metadata_address�num_retries�sec_between_retries)�selfr���r���r�����r����C/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceGCE.py�__init__���s����zGoogleMetadataFetcher.__init__Fc����������� ��� ���C���s����d�}z0|�j�|�}|r|d7�}tj|t|�j|�jd�}W�n8�tjyl�}�zd}t�|||��W�Y�d�}~nDd�}~0�0�|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)r���r����readurl�HEADERSr���r���ZUrlError�LOG�debug�coder���Z decode_binary�contents�decode) r����path�is_text�is_recursive�valuer����resp�exc�msgr���r���r���� get_value$���s(���� � $ zGoogleMetadataFetcher.get_valueN)F)�__name__� __module__�__qualname__r���r,���r���r���r���r���r������s���r���c�������������������@���s|���e�Zd�ZdZdZejejej hiZ dd��Zdd��Ze dd���Zd d ��Zdd��Zd d��Zddd�Ze dd���Ze dd���ZdS�)� DataSourceGCE�GCEFc�����������������C���sr���t�j�|�|||��d�|�_|r<t�||�\}}t�|�\|�_}t��|�_t � t �|ddgi��tg�|�_ |�j d�|�_d�S�)NZ datasourcer1���r���)r���� DataSourcer����default_userr���Znormalize_users_groupsZextract_default�dict�metadatar���Z mergemanydictZget_cfg_by_path�BUILTIN_DS_CONFIGZds_cfgr���)r���Zsys_cfg�distro�pathsZusersZ_groupsZ_user_configr���r���r���r���I���s������zDataSourceGCE.__init__c�����������������C���s���|�����}|�j�r:t���}t|v�r6|�t��|�dt��t�d|��|D�]�}t |�j |d�}z�|�p�zt|�j|d�}W�nL�t y��}�z4t�d||��W�Y�d�}~W�d�����W�qFW�Y�d�}~n d�}~0�0�W�d�����n1�s�0����Y��W�n�ty����Y�qFY�n0�|d�rF||�j _t�d|����qqF|�j jd�u��rHt�d|�j��nt|�j|d�}|d��s~|d ��rlt�|d ���nt�|d ���dS�|d�|�_|d �|�_dS�)Nr���z"Looking for the primary NIC in: %s)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_setupr���Zfind_candidate_nics�DEFAULT_PRIMARY_INTERFACE�remove�insertr ���r!���r���r7����read_mdr���� Exceptionr���Zfallback_interface�warningZ cloud_namer5���Zuserdata_raw)r���r:���Zcandidate_nicsZ candidate_nicZnetwork_context�ret�er���r���r���� _get_dataX���sZ���� �� �R � zDataSourceGCE._get_datac�����������������C���s���d�S�r���r����r���r���r���r����launch_index����s����zDataSourceGCE.launch_indexc�����������������C���s ���|�j�d�S�)N�instance-id�r5���rJ���r���r���r����get_instance_id����s����zDataSourceGCE.get_instance_idc�����������������C���s���|�j�d�}t||�j�S�)N�public-keys-data)r5����_parse_public_keysr3���)r����public_keys_datar���r���r����get_public_ssh_keys����s���� z!DataSourceGCE.get_public_ssh_keysc�����������������C���s���|D�]}t�|���qd�S�r���)�#_write_host_key_to_guest_attributes)r���r����keyr���r���r����publish_host_keys����s����zDataSourceGCE.publish_host_keysc�����������������C���s���t�|�jd��d�d�d�S�)N�local-hostname�.r���F)r ���r5����split)r���ZfqdnZ resolve_ipZ metadata_onlyr���r���r����get_hostname����s�����zDataSourceGCE.get_hostnamec�����������������C���s ���|�j�d�S�)N�availability-zonerM���rJ���r���r���r����availability_zone����s����zDataSourceGCE.availability_zonec�����������������C���s���|�j��dd�d�S�)N�-����r���)r[����rsplitrJ���r���r���r����region����s����zDataSourceGCE.regionN)FFF)r-���r.���r/���Zdsnamer@���r ���ZNETWORKr ���ZBOOT_NEW_INSTANCEZBOOTZdefault_update_eventsr���rI����propertyrK���rN���rR���rU���rY���r[���r_���r���r���r���r���r0���>���s&�����5 r0���c�������������������@���s���e�Zd�ZdZdS�)�DataSourceGCELocalTN)r-���r.���r/���r@���r���r���r���r���ra�������s���ra���c�����������������C���sR���dt�t|�f�}|�d�}tj||tddd�}|���rBt�d|���nt�d|���d�S�)Nz%s/%s/%sr���ZPUTF)r����datar���Zrequest_methodZcheck_statusz&Wrote %s host key to guest attributes.z0Unable to write %s host key to guest attributes.) �GUEST_ATTRIBUTES_URL�HOSTKEY_NAMESPACE�encoder���r���r����okr ���r!���)Zkey_type� key_valuer���r)���r���r���r���rS�������s���� �rS���c�������������� ���C���s����z|���d�d�dd���\}}W�n�ttfy4���Y�dS�0�|dkrBdS�zt�|�}W�n�tyd���Y�dS�0�d|vrrdS�|d�}d}ztj�||�}W�n�ty����Y�dS�0�tj�tjj �|kS�)N��������Fz google-sshZexpireOnz%Y-%m-%dT%H:%M:%S%z) rX���� ValueError�AttributeError�json�loads�datetime�strptimeZnow�timezoneZutc)� public_keyZschemaZjson_strZjson_objZ expire_strZ format_strZexpire_timer���r���r����_has_expired����s&����rr���c�����������������C���sr���g�}|�s|S�|�D�]\}|rt�dd��|D���s,q|�dd�}t|�dkrFq|\}}|d|fv�rt|�s|�|��q|S�)Nc�����������������s���s���|�]}t�|�d�k�V��qdS�)����N)�ord)�.0�cr���r���r���� <genexpr>���������z%_parse_public_keys.<locals>.<genexpr>�:r]���ri���� cloudinit)�allrX����lenrr����append)rQ���r3���Zpublic_keysrq���Zsplit_public_key�userrT���r���r���r���rP�������s����rP���Tc�����������������C���s ��|�d�u�rt�}�d�d�dd�d�}t��|d<�|r<|d�s<d|d<�|S�t�|��sbt�d|���d|��|d<�|S�g�d�}t|�|j|j�}i�}|D�]b\}}} } }d�}|D�]} |� | | |�}|d�ur�|}q�| r�|d�u�r�d }||�|d<�|��S�|||<�q�t �|d �p�d�}t �|d��pd�}|�d �|�d�g}|�dd�� ��}|dk�rf|�d ��sf|�|�d���|�|�d ���d�dd��|D���}|���|d<�|d��r�|d��d�d�|d<�d|v��r�|d��d�}|�d�}|dk�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))rL���)zinstance/idTTF)rZ���)z instance/zoneTTF)rV���)zinstance/hostnameTTF)� instance-data)zinstance/attributesFFT)�project-data)zproject/attributesFFTz)required key %s returned nothing. not GCEr���z{}r����ZsshKeyszssh-keyszblock-project-ssh-keys���true� c�����������������S���s���g�|�]}|r|�qS�r���r���)ru���rT���r���r���r���� <listcomp>-��rx���zread_md.<locals>.<listcomp>rO���rZ����/���r?���r���zuser-data-encoding�base64z(unknown user-data-encoding: %s, ignoringr>���Tr;���)� MD_V1_URLr<���r���Zis_resolvable_urlr ���r!���r���r���r���r,���rl���rm����get�lowerr}����join� splitlinesrX���re���r���rF���)r9���r:����platform_checkrG���Zurl_mapZmetadata_fetcherZmdZmkeyr8����requiredr&���r'���r(���r%���Z new_valuer+���Z instance_dataZproject_dataZ valid_keysZ block_projectrQ���Zud�encodingr���r���r���rD�������sj����� � rD���c������������������C���sP���t��d�pd}�|�dks|�dkr"dS�t��d�p.d}|�d�r>dS�t�d|�|��d S�) Nzsystem-product-namezN/AzGoogle Compute Enginer���Tzsystem-serial-numberzGoogleCloud-z6Not running on google cloud. product-name=%s serial=%sF)r���Z read_dmi_data� startswithr ���r!���)Zpname�serialr���r���r���r<���C��s���� �r<���c�����������������C���s���t��|�t�S�r���)r���Zlist_from_depends�datasources)Zdependsr���r���r����get_datasource_list[��s����r�����__main__)� b64encodezQuery GCE Metadata Service)�descriptionz --endpointZURLz The url of the metadata service.)�metavar�help�defaultz--no-platform-checkr����zIgnore smbios platform check�store_false)�destr�����actionr����)r9���r����r?���z/User-data cannot be decoded. Writing as base64 z user-data-b64r]���)�,z: )�indentZ sort_keysZ separators)N)NNT)=rn���rl���Zloggingr����r���rz���r���r���r���r���r���Zcloudinit.distrosr���Zcloudinit.eventr ���r ���Zcloudinit.net.dhcpr���Zcloudinit.net.ephemeralr���Zcloudinit.sourcesr ���Z getLoggerr-���r ���r����r6���rc���rd���r���rA���r���r2���r0���ra���rS���rr���rP���rD���r<���ZDEP_FILESYSTEMZDEP_NETWORKr����r�����argparse�sysr�����ArgumentParser�parser�add_argument� parse_args�argsZendpointr����rb���r$����UnicodeDecodeError�stderr�write�print�dumpsr���r���r���r����<module>���sv��� � n" M � �� �