HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /lib/python3/dist-packages/cloudinit/sources/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceAzure.cpython-311.pyc
�

܍~c8:�
��UddlZddlZddlZddlZddlZddlZddlmcmZ	ddl
mZddlm
Z
ddlmZmZddlmZmZmZmZddlZddlmZddlmZddlmZmZmZmZmZdd	lm Z m!Z!dd
l"m#Z#ddl$m%Z%m&Z&m'Z'ddl(m)Z)dd
l*m+Z+ddl,m-Z-ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ddlAmBZBmCZCmDZDejEeF��ZGdZHddiZIdZJdZKdZLdZMdZNdZOdZPdZQdZRdZSejTeDeSejUf���ZVGd�d e��ZWGd!�d"e��ZXd#ZYeeZe[d$<gd%�Z\d&d'gZ]d(�Z^d)�Z_d*eZd+eZd,eeZfd-�Z`d.eZd,eZfd/�Zae6d,eeZfd0���Zbdjd,eZfd1�Zcd2�Zdd3�Zed4�Zfd,eeZfd5�Zgejh��rAd6ZKegd7��Ziei�eG�jd8��d9eizZJneG�jd:��dZYeLd;eJid<d=�Zkd;d>d?gd<d@�ieKdAdB�gdC�ZldDeHgZmdEZndFZodGZpe6dHee
d,eqfdI���ZrGdJ�dKejs��ZtdL�ZudM�ZvdN�ZwdO�ZxdP�ZydkdR�Zze6dS���Z{e6dT���Z|e6eJdUdUfdVeZdWeZdXeqdYeqfdZ���Z}e6djd[���Z~e6d\���Zdld^�Z�e6d_���Z�e6eYfd`���Z�e6da���Z�e6db���Z�e6dce�d,e�fdd���Z�e6d,e�fde���Z�e6eWj�ePeVdUfdf���Z�e6eWj�ePdUfdg���Z�e6djdh���Z�etZ�etej�ffgZ�di�Z�dS)m�N)�Enum)�Path)�sleep�time)�Any�Dict�List�Optional)�dmi)�log)�net�sources�ssh_util�subp�util)�
EventScope�	EventType)�
device_driver)�NoDHCPLeaseError�NoDHCPLeaseInterfaceError�NoDHCPLeaseMissingDhclientError)�EphemeralDHCPv4)�events)�netlink)�+DEFAULT_REPORT_FAILURE_USER_VISIBLE_MESSAGE�DEFAULT_WIRESERVER_ENDPOINT�BrokenAzureDataSource�ChassisAssetTag�NonAzureDataSource�	OvfEnvXml�azure_ds_reporter�azure_ds_telemetry_reporter�build_minimal_ovf�dhcp_log_cb�get_boot_telemetry�get_ip_from_lease_value�get_metadata_from_fabric�get_system_info�is_byte_swapped�push_log_to_kvp�report_diagnostic_event�report_failure_to_fabric)�UrlError�readurl�retry_on_url_exc�Azure�instance-idziid-AZURE-NODEz/dev/disk/cloud/azure_resource�ext4z/var/lib/waagentz/dev/sr0�zhttp://169.254.169.254/metadataz
2019-06-01z
2021-08-01z
2021-03-01)��i�i�)�retry_codes�retry_instancesc��eZdZd�e��Zd�e��Zd�e��ZdS)�MetadataTypez{}/instancez{}/instance/networkz{}/reprovisiondataN)�__name__�
__module__�__qualname__�format�IMDS_URL�ALL�NETWORK�REPROVISION_DATA���C/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceAzure.pyr9r9XsJ������
�
�
�x�
(�
(�C�#�*�*�8�4�4�G�+�2�2�8�<�<���rCr9c�"�eZdZdZdZdZdZdZdS)�PPSType�None�PreprovisionedOSDisk�Running�Savable�UnknownN)r:r;r<�NONE�OS_DISK�RUNNING�SAVABLE�UNKNOWNrBrCrDrFrF^s'�������D�$�G��G��G��G�G�GrCrFz/sys/firmware/acpi/tables/OEM0�PLATFORM_ENTROPY_SOURCE)z"/etc/netplan/90-hotplug-azure.yamlz /usr/local/sbin/ephemeral_eth.shz+/etc/udev/rules.d/10-net-device-added.rulesz#/run/network/interfaces.ephemeral.d�	mlx4_core�	mlx5_corec��|���D]�}tjd|��r�|���}t	|��dkrz|d�d��}t	|��dkrL|ddkr@|d�|��r%|d�d��}|dcS��d	S)
z�
    dev.storvsc.1.%pnpinfo:
        classid=32412632-86cb-44a2-9b5c-50d1417354f5
        deviceid=00000000-0001-8899-0000-000000000000
    �pnpinfo�r3�=r�deviceid��.N)�
splitlines�re�search�split�len�
startswith)�
sysctl_outrX�line�fields�columns�compss      rD�"find_storvscid_from_sysctl_pnpinforf�s����%�%�'�'�$�$��
�9�Z��&�&�
	$��Z�Z�\�\�F��6�{�{�a��� ��)�/�/�#�.�.����L�L�A�%�%���
�j�0�0���
�-�-�h�7�7�1�#�1�I�O�O�C�0�0�E� ��8�O�O�O���4rCc��|���D]5}tj||��r|���}|dcS�6dS)z�
    scbus0 on ata0 bus 0
    scbus1 on ata1 bus 0
    scbus2 on blkvsc0 bus 0
    scbus3 on blkvsc1 bus 0
    scbus4 on storvsc2 bus 0
    scbus5 on storvsc3 bus 0
    scbus-1 on xpt0 bus 0
    rN)r[r\r]r^)�camcontrol_out�disk_drvrb�itemss    rD�find_busdev_from_diskrk�sY���)�)�+�+����
�9�X�t�$�$�	��J�J�L�L�E���8�O�O�O�	��4rCrh�busdev�returnc��|���D]d}tj||��rM|�d��}t	|��dkr%|d�d��}|dcS�edS)z�
    <Msft Virtual CD/ROM 1.0>          at scbus1 target 0 lun 0 (cd0,pass0)
    <Msft Virtual Disk 1.0>            at scbus2 target 0 lun 0 (da0,pass1)
    <Msft Virtual Disk 1.0>            at scbus3 target 1 lun 0 (da1,pass2)
    �(r3rY�,rN)r[r\r]r^r_)rhrlrbrj�dev_passs     rD�find_dev_from_busdevrr�s|���)�)�+�+�#�#��
�9�V�T�"�"�	#��J�J�s�O�O�E��5�z�z�Q��� ��8�>�>�#�.�.����{�"�"�"���4rC�macc
���t|��dkrKd�|dd�|dd�|dd�|dd�|dd�|dd�g��}|���S)	z1Normalize mac address with colons and lower-case.��:rr3����
)r_�join�lower)rss rD�normalize_mac_addressr}�st��
�3�x�x�2�~�~��h�h�
��1��X�s�1�Q�3�x��Q�q�S��3�q��s�8�S��2��Y��B�r�E�
�K�
�
���9�9�;�;�rCc�<�d�tj��D��S)z-Get Hyper-V NICs as normalized MAC addresses.c�P�g|]#}|ddk�t|d����$S)r3�	hv_netvscrY�r})�.0�ns  rD�
<listcomp>z1get_hv_netvsc_macs_normalized.<locals>.<listcomp>�s=�����
��Q�4�;���	�a��d�#�#���rC)r
�get_interfacesrBrCrD�get_hv_netvsc_macs_normalizedr��s,�����#�%�%����rCc��	tj|��jS#tj$r3t�dd�|����|cYSwxYw)NzFailed to execute: %s� )r�stdout�ProcessExecutionError�LOG�debugr{)�cmd�fail_rets  rD�execute_or_debugr��s^����y��~�~�$�$���%�����	�	�)�3�8�8�C�=�=�9�9�9��������s��?A�Ac�(�tddgd���S)N�sysctlzdev.storvsc�)r��r�rBrCrD�get_dev_storvsc_sysctlr��s���X�}�5��C�C�C�CrCc�$�tgd���S)N)�
camcontrol�devlistz-br�rBrCrD�get_camcontrol_dev_busr��s���;�;�;�<�<�<rCc�$�tddg��S)Nr�r�r�rBrCrD�get_camcontrol_devr��s���\�9�5�6�6�6rCc��d}|dkrd}|dz
}dt|��z}d�||��}t��}t||��}|st�d��dSt
��}t��}d�|��}t||��}	|	r0t||	��}
|
�t�d	��dS|
Sd
�|��}t||��}	|	r0t||	��}
|
�t�d	��dS|
SdS)N�00000000rY�00000001r3�000z{0}-{1}z#Fail to find storvsc id from sysctlz	blkvsc{0}zFail to find /dev/daXz
storvsc{0})
�strr=r�rfr�r�r�r�rkrr)�port_id�g0�g1�g0g1ra�	storvscid�camcontrol_b_outrh�blkvsc�scbusx�devname�storvscs            rD�get_resource_disk_on_freebsdr��sS��	�B���{�{�
���A�+��	��W���	�B����B��#�#�D�(�)�)�J�2�:�t�D�D�I����	�	�7�8�8�8��t�-�/�/��'�)�)�N�
�
�
�	�
*�
*�F�
"�#3�V�
<�
<�F�
��&�~�v�>�>���?��I�I�-�.�.�.��4����!�!�)�,�,�G�
"�#3�W�
=�
=�F�
��&�~�v�>�>���?��I�I�-�.�.�.��4����4rCzfreebsd-ufsrYzresource disk is not None�/dev/zresource disk is None�
ephemeral0T)�data_dir�disk_aliases�apply_network_config�gpt�d)�
table_type�layout�	overwritezephemeral0.1)�
filesystem�device)�
disk_setup�fs_setup�
datasource�never_destroy_ntfszTemporary Storage�REDACTED�seed_dirc�f�tj��}|�dS|�dS|dz���S)z@Check platform environment to report if this datasource may run.NTF�ovf-env.xml)r�query_system�exists)r��chassis_tags  rD�is_platform_viabler�7sA��"�.�0�0�K����t����u��}�$�,�,�.�.�.rCc
�X��eZdZdZejejejhiZ	dZ
ejZ
dZd�Zdeddf�fd�Zd	�Zd
�Zedddd�d
eedededdfd���ZedGd���Zdefd�Zed���ZdH�fd�	Zed���Zeeje dd�dededede!fd���Z"d�Z#d�Z$ede%efd���Z&de!de%efd �Z'de%efd!�Z(d"�Z)d#�Z*dId$�Z+ed%���Z,e	dJd(edede-fd)���Z.ed*���Z/ed+dd,�d-ed.eddfd/���Z0ed0���Z1ed1���Z2ed2���Z3ed3���Z4ed4���Z5edId5eedefd6���Z6edd7�d8ee%edee%efd9���Z7de!deefd:�Z8d;e!de!de9fd<�Z:ed=���Z;ed>e!de!dee%efd?���Z<d@�Z=edA���Z>e?dB���Z@edC���ZAe?dD���ZBe?dE���ZCede!defdF���ZD�xZES)K�DataSourceAzurer0FrYc���tj�||||��tj�|jd��|_i|_d|_tj
tj|ti��tg��|_d|_d|_d|_t$|_tj�|jdd��|_dS)N�azure�data�reported_ready)r�
DataSource�__init__�os�pathr{r��cfg�seedr�
mergemanydict�get_cfg_by_path�DS_CFG_PATH�BUILTIN_DS_CONFIG�ds_cfg�_iso_dev�_network_config�_ephemeral_dhcp_ctxr�_wireserver_endpoint�	cloud_dir�_reported_ready_marker_file)�self�sys_cfg�distro�pathss    rDr�zDataSourceAzure.__init__Rs�����#�#�D�'�6�5�A�A�A�����U�^�W�=�=��
������	��(�
�
!�'�;��
;�
;�=N�O�
�
�����
�#���#'�� �$?��!�+-�7�<�<��O�V�%5�,
�,
��(�(�(rC�ci_pkl_versionrmNc����t���|��d|_d|_t|_tj�|j	j
dd��|_dS)Nr�r�)�super�	_unpickler�r�rr�r�r�r{r�r�r�)r�r��	__class__s  �rDr�zDataSourceAzure._unpicklebs]���
�����.�)�)�)�#'�� ���
�$?��!�+-�7�<�<��J� �&�*:�,
�,
��(�(�(rCc�Z�tj�|��}|�d|j�d�S)Nz [seed=�])rr��__str__r�)r��roots  rDr�zDataSourceAzure.__str__ls-���!�)�)�$�/�/��!%���t�y�y�y�1�1rCc��|j�d}n?|j�d��rd}n"|j���dkrd}nd}|�d|j�d�S)	z/Return the subplatform metadata source details.N�unknownz/devzconfig-disk�imdszseed-dir� (�))r�r`r|)r��subplatform_types  rD�_get_subplatformz DataSourceAzure._get_subplatformpsq���9��(���
�Y�
!�
!�&�
)�
)�	*�,���
�Y�_�_�
�
�&�
(�
(�%���)��,�,�,�d�i�i�i�8�8rC�)�iface�retry_sleep�timeout_minutesr�r�r�c�(�|j�td���t�d|��t	|t
|j������|_d}|dzt��z}tj
ddt���5|��	|j���}n�#t$rtd	tj�
��Yn�t $r$tdtj�
��d|_�t$$r!td|ztj�
��YnVt&j$rE}td
|j�d|j�d|j�d|j��tj�
��Yd}~nd}~wwxYw|�%t��|z|krt3|��nn|��|�d|_t%���|d|j_d|vrt7|d��|_ddd��dS#1swxYwYdS)a�Setup ephemeral networking.

        Keep retrying DHCP up to specified number of minutes.  This does
        not kill dhclient, so the timeout in practice may be up to
        timeout_minutes + the system-configured timeout for dhclient.

        :param timeout_minutes: Number of minutes to keep retrying for.

        :raises NoDHCPLeaseError: If unable to obtain DHCP lease.
        Nz/Bringing up networking when already configured.z)Requested ephemeral networking (iface=%s))r��
dhcp_log_func�tmp_dir�<zobtain-dhcp-leasezobtain dhcp lease��name�description�parentzInterface not found for DHCP��logger_funczdhclient executable not foundz&Failed to obtain DHCP lease (iface=%s)zCommand failed: cmd=z stderr=z stdout=z exit_code=�	interfacezunknown-245)r��RuntimeErrorr�r�rr$r��get_tmp_exec_pathrr�ReportEventStackr!�obtain_leaserr+�warningr�errorrrr�r��stderrr��	exit_coderr�r&r�)r�r�r�r��lease�timeoutrs       rD�_setup_ephemeral_networkingz+DataSourceAzure._setup_ephemeral_networking|s���$�#�/��A���
�	�	�	�=�u�E�E�E�#2��%��K�1�1�3�3�$
�$
�$
�� ���!�B�&����/��
�
$�$�+�$�
�
�
�9	�9	�
�-� � �4�A�A�C�C�E�E��0����+�6�C�K�������7����+�7�S�Y�����04�D�,��'����+�@�5�H�$'�I��������1����+�+�"�I�I�I�!�L�L�L�!�L�L�L�!�O�O�
�%(�I�
�
�
�
�
�
�
�
�
����������=�T�V�V�k�%9�G�%C�%C��+�&�&�&�&��O�-�R�}�+/��(�&�(�(�(�27�{�1C��(�.�!�E�)�)�0G��m�,�1�1�D�-�o9	�9	�9	�9	�9	�9	�9	�9	�9	�9	�9	�9	����9	�9	�9	�9	�9	�9	sV�H�B6�5H�6%F�H�AF�0H�2F�;F�;H�F�A5H�H�Hc�X�|j�dS|j���d|_dS)zTeardown ephemeral networking.N)r��
clean_network�r�s rD�_teardown_ephemeral_networkingz.DataSourceAzure._teardown_ephemeral_networking�s5���#�+��F�� �.�.�0�0�0�#'�� � � rCc�2�|jdup
|jjduS)z"Check if networking is configured.N)r�rr
s rD�_is_ephemeral_networking_upz+DataSourceAzure._is_ephemeral_networking_up�s,��
�$��,�
6��'�-��5�
�	
rCc	��i}|jd}d}d}i}d}i}i}t|j|��D�]8}		|	�d��r\t	j��r"t	j|	td���\}}}}nt	j|	t��\}}}}|	|_nt|	��\}}}}d}|	}n�#t$r!td	|	ztj�
��Y��tj
$r/td|	ztj�
��ddi}d
dddiii}d}Y��t$r9}
d|
z}t|tj�
��t!j|���d}
~
wwxYwtd|ztj�
��t%|j��p|}|rdnd}
	|�|
���n#t($rYnwxYw|���r|�d���}ni}|s'|s%d}t|��t!j|���|�||��}|t0jkr�t	j��r1d}t|tj�
��t!j|���|t0jkr|���n:|t0jkr*|�d���|���|���\}}}}|�d���}|� |���||_!|�"||t	j#|d|ig��|d���tI|��}tK|��}tM|��}|r,t�d|��||d
dd<|r&t�d|��||d d<|r&t�d!|��||d d"<|dkrX|d#sP	tO|||�$��}d%|i|d#<n5#tP$r(}td&|ztj�
��Yd}~nd}~wwxYw|s�tS|��}|r�t�d'��	tUj+d�,|�-������|d(<n+#tP$rtd)tj.�
��YnwxYw|s1d*}t|tj�
��t!j|���td+|ztj�
��||krtd,|ztj�
��t_��}|r||d d-<|�0��|d d.<|j1dur�|���r�|�2||�/��}	|�3|�0��}t�d1|��|r||d d2<|�4��d|_1n#tP$rYnwxYw|S)3aWalk all instance metadata sources returning a dict on success.

        @return: A dictionary of any metadata content for this instance.
        @raise: InvalidMetaDataException when the expected metadata service is
            unavailable, broken or disabled.
        r�FNr�r��udf)�mtypeTz$Did not find Azure data source in %sr�z%s was not mountable�local-hostname�system_info�default_userr��IMDSzBrokenAzureDataSource: %sz!Found provisioning metadata in %s�r��r�rz)�retrieszNo OVF or IMDS availablez%Free BSD is not supported for PPS VMs)�
create_marker)�imds_mdr�)r��files�metadata�userdata_rawz Username retrieved from IMDS: %sz Hostname retrieved from IMDS: %srz(Disable password retrieved from IMDS: %s�disable_passwordr)�username�hostname�
disableSshPwdr�z)Failed to construct OVF from IMDS data %szRetrieved userdata from IMDSrzBad userdata in IMDSzNo Azure metadata foundzfound datasource in %szusing files cached in %s�random_seedr1)r�r��pubkey_infoznegotiating returned %s�public-keys)5r��list_possible_azure_dsr�r`r�
is_FreeBSD�mount_cb�load_azure_ds_dirr�rr+r�r��MountFailedErrorrrr�InvalidMetaDataException�boolrrr
�get_imds_data_with_api_fallback�_determine_pps_typerFrLrO�_wait_for_all_nics_readyrM�_report_ready_for_pps�_wait_for_pps_os_disk_shutdown�_reprovision�validate_imds_network_metadatar��updater��_username_from_imds�_hostname_from_imds�_disable_password_from_imdsr#�	Exception�_userdata_from_imds�base64�	b64decoder{r^r�_get_random_seed�_iid�_negotiated�!_determine_wireserver_pubkey_info�
_report_ready�_cleanup_markers)r��crawled_data�ddir�ovf_is_accessible�metadata_source�mdrr�r�src�exc�msg�requires_imds_metadatar�r�pps_type�
imds_username�
imds_hostname�imds_disable_password�contents�e�
imds_userdatar�r#�ssh_keyss                         rD�crawl_metadatazDataSourceAzure.crawl_metadata�s������{�:�&��"����
��������)�$�-��>�>�#	<�#	<�C�"
<��>�>�'�*�*�J���(�(��7;�}��!2�%�8�8�8�4��L�#�u�u�8<�}��!2�8�8�4��L�#�u�%(�D�M�M�3D�S�3I�3I�0�B��c�5�$(�!�"%�����%�
�
�
�'�:�S�@� #�	��������(�
�
�
�'�*�S�0�c�i�����'��+��$�~���|�&D�E��"(����(�
<�
<�
<�1�C�7��'����C�C�C�C��6�s�;�;�;�����
<����
	 �/�/�A��	�	
�	
�	
�	
�"&�d�m�!4�!4�!M�<M�8M�� 6�=�"�"�A��	��,�,�_�,�M�M�M�M���	�	�	��D�	�����+�+�-�-�	��:�:�2�:�F�F�G�G��G��	8�0�	8�,�C�#�C�(�(�(��2�3�7�7�7��+�+�C��9�9���w�|�#�#��� � �
<�=��'����C�C�C�C��6�s�;�;�;��7�?�*�*��-�-�/�/�/�/��W�_�,�,��*�*��*�?�?�?��3�3�5�5�5�+/�+<�+<�+>�+>�(�B��c�5��:�:�2�:�F�F�G�	
�+�+�G�+�<�<�<�#��	������ �.��V�W�4E�/F�G�G� ,�	
�
�	
�	
�	
�,�G�4�4�
�+�G�4�4�
� ;�G� D� D���	G��I�I�8�-�H�H�H�9F�C�
��~�.�v�6��	G��I�I�8�-�H�H�H�9F�L��$�%5�6� �	&��I�I�:�%�
�
�
�&�
��$�"�
��f�$�$�\�'�-B�$�
�,�*�*�"7�����
*7��(A��W�%�%���
�
�
�'�?�!�C� #�	��������������
�����	�/��8�8�M��	
��	�	�8�9�9�9��39�3C����
� 3� 3� 5� 5�6�6�4�4�L��0�0��!����+�.�C�K�����������
�	�+�C�#�C�S�Y�?�?�?�?��2�3�7�7�7�#�(�?�:��I�
�
�
�
�
�d�"�"�#�*�T�1�s�y�
�
�
�
� �!�!���	;�6:�L��$�]�3�26�)�)�+�+��Z� ��/���u�$�$��)I�)I�)K�)K�$��@�@���A���K�
(��-�-�+�-�F�F��
�	�	�3�X�>�>�>��G�>F�L��,�]�;��%�%�'�'�'�#'�� � ���
�
�
���
�����sr�B	C�(E(�*:E(�&	E(�/4E#�#E(�'F>�>
G�
G�#P=�=
Q/�Q*�*Q/� <S�%T�T�*Y�
Y�YrBc�z��tt|���|��tj|_dS)z.Reset any cached class attributes to defaults.N)r�r��clear_cached_attrsr�UNSET�_metadata_imds)r��
attr_defaultsr�s  �rDrTz"DataSourceAzure.clear_cached_attrs�s1���
�o�t�$�$�7�7�
�F�F�F�%�m����rCc�t�tt|j����sdS	t��n2#t$r%}t
�d|��Yd}~nd}~wwxYw	t��n2#t$r%}t
�d|��Yd}~nd}~wwxYwt|j	j
_	tj
t
jd|j���}ne#t$rX}t!d|zt
j���|�t&�	��Yd}~|���dSd}~wwxYw	|���n#|���wxYw|j	r8|j	jd
kr(|j�d��rt1��t2}t4j�|��rEt!d|zt
j���tj|d
t<g��|_n+t!d|zt
j���|d
|_|dd|_ tj|dtBg��|_"|d|_#tI|jd|dd���dS)z�Crawl and process datasource metadata caching metadata as attrs.

        @return: True on success, False on error, invalid or disabled
            datasource.
        Fz Failed to get boot telemetry: %sNz$Failed to get system information: %szCrawl of metadata service)�logfuncrH�funcz"Could not crawl Azure metadata: %sr�)r��ubuntur�zXEphemeral resource disk '%s' exists. Merging default Azure cloud ephemeral disk configs.r�zdEphemeral resource disk '%s' does not exist. Not merging default Azure cloud ephemeral disk configs.rr�rr�ri�)�dirmodeT)%r�rr�r%r7r�rr(�BLACKLIST_DRIVERSr��
networking�blacklist_driversr�log_timer�rRr+r�_report_failurerrr�r��get�*maybe_remove_ubuntu_network_config_scripts�RESOURCE_DISK_PATHr�r�r�r��#BUILTIN_CLOUD_EPHEMERAL_DISK_CONFIGr�rV�DEFAULT_METADATArr�write_files)r�rOrA�devpaths    rD�	_get_datazDataSourceAzure._get_data�s0��"�$�t�}�"5�"5�6�6�	��5�	?�� � � � ���	?�	?�	?��K�K�:�A�>�>�>�>�>�>�>�>�����	?����	C��������	C�	C�	C��K�K�>��B�B�B�B�B�B�B�B�����	C����4E����0�	2��=��	�/��(����L�L��
�	�	�	�#�4�q�8�c�i�
�
�
�
�
� � �G�
!�
�
�
��5�5�5��/�/�1�1�1�1�1�����	����
�
�/�/�1�1�1�1��D�/�/�1�1�1�1����
�K�	9��� �H�,�,����� 6�7�7�-�
7�8�8�8�%��
�7�>�>�'�"�"�	+�#�F��� �I�	
�
�
�
��)��e�$�&I�J���D�H�H�
$�J��� �I�	
�
�
�
�$�E�*�D�H�*�:�6�v�>����*�
�*�
%�'7�8�
�
��
�)��8���	��K�
�#�\�'�%:�E�	
�	
�	
�	
��ts\�4�
A#�A�A#�'A6�6
B%�B � B%�?&C&�%E!�&
E�09E�)E!�E�E!�!E7)�md_type�exc_cb�infiniterrjrlc��t�dt��	t||t||���S#t$r<}t�dt��|jdkricYd}~SYd}~nd}~wwxYwd�t��}t|tj���	t||t||���S#t$r*}td|ztj	���icYd}~Sd}~wwxYw)	aFetch metadata from IMDS using IMDS_VER_WANT API version.

        Falls back to IMDS_VER_MIN version if IMDS returns a 400 error code,
        indicating that IMDS_VER_WANT is unsupported.

        :return: Parsed metadata dictionary or empty dict on error.
        zAttempting IMDS api-version: %s)rrj�api_versionrkrlz"UrlError with IMDS api-version: %s�Nz!Fall back to IMDS api-version: {}r�z!Failed to fetch IMDS metadata: %s)
r��info�
IMDS_VER_WANT�get_metadata_from_imdsr-�coder=�IMDS_VER_MINr+r)r�rrjrkrlr�log_msgs       rDr,z/DataSourceAzure.get_imds_data_with_api_fallbacksR�� 	���2�M�B�B�B�	�)���)��!����
���	�	�	��H�H�9�=�I�I�I��z�S� � ��	�	�	�	�	�	�!� � � � �����	����6�<�<�\�J�J����S�X�>�>�>�>�
	�)���(��!����
���	�	�	�#�3�e�;��I�
�
�
�
��I�I�I�I�I�I�����	���s9�;�
B�,A<�1B�<B�:C�
D�D�<D�Dc�~�|jr	d|jvr|���St|jd��S)Nr1)rr<r�r
s rD�get_instance_idzDataSourceAzure.get_instance_id<s;���}�	�
�T�]� B� B��9�9�;�;���4�=��/�0�0�0rCc�B�|jd�|��S)Nr�)r�rb)r�r�s  rD�device_name_to_devicez%DataSourceAzure.device_name_to_deviceAs���{�>�*�.�.�t�4�4�4rCc��	|�|jd��S#ttf$rYnwxYw|���S)z+
        Retrieve public SSH keys.
        r�)�_get_public_keys_from_imdsr�KeyError�
ValueError�_get_public_keys_from_ovfr
s rD�get_public_ssh_keysz#DataSourceAzure.get_public_ssh_keysDs[��
	��2�2�4�=��3H�I�I�I���*�%�	�	�	��D�	�����-�-�/�/�/s�"�6�6rc��	d�|ddD��}n,#t$rd}t|tj����wxYwt	d�|D����r,d}t|tj���t|���d�t|����}t|tj���|S)	z�Get SSH keys from IMDS metadata.

        :raises KeyError: if IMDS metadata is malformed/missing.
        :raises ValueError: if key format is not supported.

        :returns: List of keys.
        c��g|]
}|d��S)�keyDatarB)r��
public_keys  rDr�z>DataSourceAzure._get_public_keys_from_imds.<locals>.<listcomp>Ys-�������9�%���rC�compute�
publicKeysz"No SSH keys found in IMDS metadatar�c3�8K�|]}t|���V��dS))�keyN)�_key_is_openssh_formatted)r�r�s  rD�	<genexpr>z=DataSourceAzure._get_public_keys_from_imds.<locals>.<genexpr>bs1����J�J�#�,��5�5�5�5�J�J�J�J�J�JrCzKey(s) not in OpenSSH formatzRetrieved {} keys from IMDS)r|r+r�r��anyr}r=r_)r�rrQrus    rDr{z*DataSourceAzure._get_public_keys_from_imdsPs���	���")�)�"4�\�"B����H�H���	�	�	�:�G�#�G���C�C�C�C��	����
�J�J��J�J�J�J�J�	&�4�G�#�G���C�C�C�C��W�%�%�%�/�6�6�s�8�}�}�E�E����S�Y�?�?�?�?��s	��)Ac��g}	|jd}d�t|����}t|tj���n-#t$r d}t|tj���YnwxYw|S)zYGet SSH keys that were fetched from wireserver.

        :returns: List of keys.
        r$zRetrieved {} keys from OVFr�zNo keys available from OVF)rr=r_r+r�r�r|)r�rQrus   rDr~z)DataSourceAzure._get_public_keys_from_ovfks���
��	D��}�]�3�H�2�9�9�#�h�-�-�H�H�G�#�G���C�C�C�C�C���	D�	D�	D�2�G�#�G���C�C�C�C�C�C�	D�����s�A
A�'A9�8A9c��|jS�N�r�r
s rD�get_config_objzDataSourceAzure.get_config_obj{s	���x�rCc�N�tj|�����Sr�)r�instance_id_matches_system_uuidrw)r�r�s  rD�check_instance_idz!DataSourceAzure.check_instance_id~s���6�t�7K�7K�7M�7M�N�N�NrCc���tj�|j�d��d��}tjd��}|�td���|���}tj�	|��rdtj|�����}|���|kr|St|���|��r|S|S)Nr�r1zsystem-uuidzfailed to read system-uuid)r�r�r{r��	get_cpathr�
read_dmi_datar�r|r�r�	load_file�stripr))r��previous�
prev_iid_path�system_uuid�iids     rDr<zDataSourceAzure._iid�s��������J� � ��(�(�-�
�
�
��'�
�6�6�����;�<�<�<����!�!��
�7�>�>�-�(�(�	 ��~�m�4�4�:�:�<�<�H��~�~���3�&�&� ���x�~�~�/�/��5�5�
 ����
rCc��	d}tjddt���5tj|��}ddd��n#1swxYwY|�d}t|tj���dStd|ztj���dS#t$r.}tt|��tj
����d}~wwxYw)z�Use the netlink socket provided to wait for nic detach event.
        NOTE: The function doesn't close the socket. The caller owns closing
        the socket and disposing it safely.
        Nzwait-for-nic-detachzwait for nic detachr�zHPreprovisioned nic not detached as expected. Proceeding without failing.r�z%The preprovisioned nic %s is detached)rr�r!r�wait_for_nic_detach_eventr+r�r�AssertionErrorr�r)r��nl_sock�ifnamerHrs     rD�_wait_for_nic_detachz$DataSourceAzure._wait_for_nic_detach�sB��	��F��(�*�1�(����
D�
D�
!�:�7�C�C��
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��~�2��(����E�E�E�E�E�E�'�;�f�D� #����������	�	�	�#�C��J�J�C�I�F�F�F�F������	���s?�B
�A�B
�A�B
�A�	"B
�-B
�
C�)C�Cr�皙�����?r�c� �t|��D]Z}|jj�|��r!t	d|zt
j���dS|dz|krt|���[t	d|||zfzt
j���dS)NzThe link %s is up.r�rYz;The link %s is not up after %f seconds, continuing anyways.)�ranger�r^�try_set_link_upr+r�rpr)r�r�rr��is     rD�wait_for_link_upz DataSourceAzure.wait_for_link_up�s����w���	�	�A��{�%�5�5�f�=�=�
�'�(�6�1�s�x���������A��� � ��k�"�"�"��#�M��7�[�0�1�2��H�
�
�
�
�
�
rCc��|j}t�d|��tj|d�t
j��t�������tdtj
���dS)Nz*Creating a marker file to report ready: %sz{pid}: {time}
)�pidrzRSuccessfully created reported ready marker file while in the preprovisioning pool.r�)r�r�rpr�
write_filer=r��getpidrr+r�)r�r�s  rD�_create_report_ready_markerz+DataSourceAzure._create_report_ready_marker�s����/�����=�t�D�D�D����#�*�*�r�y�{�{����*�H�H�	
�	
�	
�	 �
1��	�	
�	
�	
�	
�	
�	
rCT)r�expect_url_errorrr�c�h�	|���n�#t$rv}|r8t|t��r#t	dt
j���d|_n2d}t	|t
j���tj
|��|�Yd}~nd}~wwxYw|r|���dSdS)z�Report ready for PPS, creating the marker file upon completion.

        :raises sources.InvalidMetaDataException: On error reporting ready.
        z,Ignoring http call failure, it was expected.r�Nz9Failed reporting ready while in the preprovisioning pool.)r?r7�
isinstancer-r+r�r�r�rrr*r�)r�rr�rrHs     rDr/z%DataSourceAzure._report_ready_for_pps�s���	G���� � � � ���	G�	G�	G� �
G�J�u�h�$?�$?�
G�'�B� #�	�����
!%��
�
�P��(����C�C�C�C��6�s�;�;��F�
�
�
�
�
�����	G����(�	/��,�,�.�.�.�.�.�	/�	/s��
B�A,B�Bc�t�tdtj���td��t	d���)Nz"Waiting for host to shutdown VM...r�i�3�zShutdown failure for PPS disk.)r+r�rprrr
s rDr0z.DataSourceAzure._wait_for_pps_os_disk_shutdown�s=���0���	
�	
�	
�	
�	�h����#�$D�E�E�ErCc�����	�d}d}d}d�	d�d�|�|d������	fd�}	|�dtj|d	�
��}n3#t$r&}t
�d||��Yd}~nd}~wwxYw|rQt
�d|��d	}t|d
��}td|zt
j���n|�
��||fS)z�Check if a given interface is the primary nic or not. If it is the
        primary nic, then we also get the expected total nic count from IMDS.
        IMDS will process the request and send a response only for primary NIC.
        F���NrrYr)r�r�c�h���dz���krh�dz�td|�fztj���t|t��r.td|�d|j�d|j��tj���|jr6t|jtjtj	f��r�dz��dkSd	S)
NrYr3z>Ran into exception when attempting to reach %s after %d polls.r��poll IMDS with � failed. Exception: � and code: rzT)
r+r�rr�r-�causers�requests�Timeout�ConnectionError)rHrG�expected_errors_count�metadata_logging_threshold�metadata_poll_counts  ���rD�network_metadata_exc_cbzIDataSourceAzure._check_if_nic_is_primary.<locals>.network_metadata_exc_cb"s����#6��"9��#�&@�@�@�*�a�/�*�'�&�),�.A�(B�C� #�	������c�8�,�,��+�+��3�3��	�	�	�3�8�8�5�$'�I������y�
3�Z��	�H�,�h�.F�G���
3�)>��(A�%�,��2�2��4rCT)rrjrkrlz�Failed to get network metadata using nic %s. Attempt to contact IMDS failed with error %s. Assuming this is not the primary nic.z%s is the primary nicr�zExpected nic count: %dr�)rr,r9r@r7r�rrpr_r+r)
r�r��
is_primary�expected_nic_countrr�rOr�r�r�s
       @@@rD�_check_if_nic_is_primaryz(DataSourceAzure._check_if_nic_is_primarysx������
�������%&�"� !��
	
�(�(�v�r�(�J�J�J�	�	�	�	�	�	�	�F	��:�:��$�,�.��	;���G�G���	�	�	��K�K����
�
�
�
�
�
�
�
�����	�����
	2��H�H�,�f�5�5�5��J�"%�W�[�%9�!:�!:��#�(�+=�=��H�
�
�
�
�
�
�/�/�1�1�1��-�-�-s�#A�
B�A>�>Bc��t�d��	g}d}	d}tjddt	|��zt
���5t
j||��}ddd��n#1swxYwY|�|��td|ztj�	��|�
|��|s3t�d
|��|�|��\}}|rt�d��dS��#t$r3}tt|��tj�	��Yd}~dSd}~wwxYw)z6Wait until the primary nic for the vm is hot-attached.z*Waiting for primary nic to be hot-attachedFTNzwait-for-nic-attachz4wait for nic attach after %d nics have been attachedr�zDetected nic %s attached.r�z!Checking if %s is the primary niczFound primary nic for this VM.)r�rprr�r_r!r�wait_for_nic_attach_event�appendr+r�r�r�r�r)r�r��
nics_found�primary_nic_foundr��_rs       rD�"_wait_for_hot_attached_primary_nicz2DataSourceAzure._wait_for_hot_attached_primary_nicfs���	���=�>�>�>�/	G��J� %��$
����,�.�N��j�/�/�*�-�
���
�
�%�>�����F�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��!�!�&�)�)�)�'�/�&�8�c�h������%�%�f�-�-�-�
)���H�H�@�&�I�I�I�+/�+H�+H��,�,�(�%�q�
%���H�H�=�>�>�>��E�I$
��L�	G�	G�	G�#�C��J�J�C�I�F�F�F�F�F�F�F�F�F�F�����	G���sB�3D�A1�%D�1A5�5D�8A5�9BD�D�
E�"(E�Ec�L�d}	tj��}|�d���	|���nA#tj$r/}t
d|ztj���d|_	Yd}~nd}~wwxYw|�
|��|�|��n@#tj$r.}t
t|��tj����d}~wwxYw	|r|���dSdS#|r|���wwxYw)aWait for nic(s) to be hot-attached. There may be multiple nics
        depending on the customer request.
        But only primary nic would be able to communicate with wireserver
        and IMDS. So we detect and save the primary nic to be used later.
        NT)r�zLIgnoring failure while tearing down networking, NIC was likely unplugged: %rr�)r�create_bound_netlink_socketr/rrr�r+r�rpr�r�r��NetlinkCreateSocketErrorr�r�close)r�r�rOs   rDr.z(DataSourceAzure._wait_for_all_nics_ready�sg����	 ��9�;�;�G��&�&��&�=�=�=�
0��3�3�5�5�5�5���-�
0�
0�
0�'�3�56�7� #������
,0��(�(�(�(�(�(�����

0����
�%�%�g�.�.�.��3�3�G�<�<�<�<���/�	�	�	�#�C��F�F���D�D�D�D������	����
=�
�
 ��
�
������
 �
 ��w�
 ��
�
�����
 ���sR�)B/�A�B/�B�%A<�7B/�<B�-B/�.D
�/C,�>)C'�'C,�,D
�
D#c	����d�tjjt��}ddi}d}ttj��j	����}d�_
d�_d}d}�fd�}|�r����s��
d�	��	�j��jj�t!d
����jj}t#j��}����t(�d|��t-jdd
t0���5	t#j||��n5#t4$r(}	t7d|	zt(j���Yd}	~	nd}	~	wwxYwddd��n#1swxYwYn�#t"j$r8}	t7d|	zt(j���t?j d��|	�d}	~	wtB$r5}	t7dt(j���t?j d��|	�d}	~	wwxYw|r|�"��n#|r|�"��wwxYw��#��|sȉ���s-|dz
}	��
d�	��n#tB$rY�?wxYwt-jddt0���5	tI|tJ||dd���j&}n/#tN$r"��#��Yddd����wxYw	ddd��n#1swxYwY|��t7d|zt(j���t7d�jzt(j���|S)ztPoll IMDS for the new provisioning data until we get a valid
        response. Then return the returned JSON object.�{}?api-version={}�Metadata�trueNrYrc����t|t��r�|jdvr��j�jkr^�xjdzc_t
�d�j��td|�d|j�d|j��t
j����xjdz
c_d	Std|�d|j�d|j��t
j	���d
Std|zt
j	���d
S)N)r4r5r3z:Backing off logging threshold for the same exception to %dr�r�r�r�rYTFz1poll IMDS failed with an unexpected exception: %s)
r�r-rs�imds_poll_counter�imds_logging_thresholdr�r�r+r�r)rH�	exceptionr�s  �rDrkz*DataSourceAzure._poll_imds.<locals>.exc_cb�s4����)�X�.�.�
!��>�Z�/�/��-��1L�L�L��3�3�q�8�3�3��	�	�.� �7����
0�/� #�s�s�I�O�O�O�Y�^�^�E�),�	�	�����*�*�a�/�*�*��4�,�+��3�3�	�������A�$'�K�����
!�5�#�C����K�
�
�
�
�
�5rCrrzMissing ephemeral contextz#Wait for vnetswitch to happen on %sz!wait-for-media-disconnect-connectzwait for vnet switchr�z'Error while waiting for vnet switch: %sr�z)Failed to create bound netlink socket: %sz2Failed to report ready while in provisioning pool.z&DHCP failed while in provisioning poolr�zget-reprovision-data-from-imdszget reprovision data from imdsTF)r�headers�exception_cbrl�log_req_respz#attempted dhcp %d times after reusez polled imds %d times after reuse)(r=r9rA�valuertr+r�r��isfiler�r�r�r
rr�r�r�rr�r/r�r�rr�r!�!wait_for_media_disconnect_connectr�r+rr�rrr*rr�rr.�IMDS_TIMEOUT_IN_SECONDSrNr-)
r��urlr�r��report_ready�
dhcp_attempts�reprovision_datarkr�rOs
`         rD�
_poll_imdszDataSourceAzure._poll_imds�s���"�(�(��)�/��
�
���v�&���������t�?�@�@�@�
�
��'(��#�!"����
���"	�"	�"	�"	�"	�H�:	2�
�3�3�5�5�
E��0�0��0�D�D�D�/
$��,�4��/�5�=�&�'B�C�C�C��0�6��!�=�?�?���*�*�,�,�,��	�	�9������,�<� 6�,����
�
�
��A�#�U������*����/�E��I�(+�	������������������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����3�
�
�
�'�?�!�C� #�������6�H���������$�
�
�
�'�<� #�������6�H���������
�����$��M�M�O�O�O����$��M�M�O�O�O�O�$����
�/�/�1�1�1�"�	��3�3�5�5�
���"�
���4�4�Q�4�G�G�G�G��'�����H������(�5�<�(����
�
�
�'.�� 7� '�%+�!%�%*�
(�(�(��%�$�� �����7�7�9�9�9��!
�
�
�
�
�
�
�����%�

�
�
�
�
�
�
�
�
�
�
����
�
�
�
�#�	�4	 �1�M�A��	�	
�	
�	
�	
�	 �.��1G�G��	�	
�	
�	
�	
�
 �s��)BF�5F�7E
�F�
E?�E:�5F�:E?�?F�F�F�F�F�F�H8�H�)3G�
H�)0H�H�H8�8I�J�
J(�'J(�L%�	K)�(L%�)L�L%�L�L%�%L)�,L)r�c�J�|���ri	tdtj���t	|j|���dS#t$r(}td|ztj���Yd}~nd}~wwxYw	tdtj���|���	|�	d�	��n#t$rYnwxYwt	|j|���dS#t$r(}td
|ztj���Yd}~nd}~wwxYwdS)z�Tells the Azure fabric that provisioning has failed.

        @param description: A description of the error encountered.
        @return: The success status of sending the failure signal.
        z>Using cached ephemeral dhcp context to report failure to Azurer�)�endpointr�Tz@Failed to report failure using cached ephemeral dhcp context: %sNz3Using new ephemeral dhcp to report failure to Azurerrz5Failed to report failure using new ephemeral dhcp: %sF)r
r+r�r�r,r�r7rrrr)r�r�rOs   rDrazDataSourceAzure._report_failurePs����+�+�-�-�	�
�'�1� #�	�����
)�!�6� +������t���
�
�
�'�8�:;�<� #�	��������������
����	�#�E��I�
�
�
�
�
�/�/�1�1�1�
��0�0��0�D�D�D�D��#�
�
�
���
����
%��2��
�
�
�
��4���	�	�	�#�G�!�K��I�
�
�
�
�
�
�
�
�
�����	�����usS�1A	�	
A;�A6�6A;�?/C.�/C�C.�
C�C.�C�C.�.
D �8D�D r"r#c��	t|j|j|���}n1#t$r$}t	d|zt
j����d}~wwxYwd|_|S)z�Tells the fabric provisioning has completed.

        :param pubkey_info: Fingerprints of keys to request from Wireserver.

        :raises Exception: if failed to report.

        :returns: List of SSH keys, if requested.
        )r��iso_devr#zQError communicating with Azure fabric; You may experience connectivity issues: %sr�N)r'r�r�r7r+r�r)r�r#r�rOs    rDr?zDataSourceAzure._report_ready�s���	�+��2��
�'����D�D��
�	�	�	�#�*�,-�.��K�
�
�
�
�

�����
	������
��s��
A
�A�A
c��	|dddS#t$r)}td|ztj���Yd}~dSd}~wwxYw)N�extendedr��ppsTypez2Could not retrieve pps configuration from IMDS: %sr�)r7r+r�r�)r�rrOs   rD�_ppstype_from_imdsz"DataSourceAzure._ppstype_from_imds�sn��	��:�&�y�1�)�<�<���	�	�	�#�D�q�H��I�
�
�
�
��4�4�4�4�4�����	���s��
A	�A�A	�ovf_cfgc�*�tj�|j��rtj}�n=|�dd��tjjks(|�	|��tjjkr
tj}n�|�dd��tj
jks(|�	|��tj
jkr
tj
}n�|�d��dusQ|�dd��tjjks(|�	|��tjjkr
tj}ntj}td|jztj���|S)z@Determine PPS type using OVF, IMDS data, and reprovision marker.�PreprovisionedVMTypeN�PreprovisionedVmTzPPS type: %sr�)r�r�r�r�rFrPrbrOr�r�rMrNrLr+r�rp)r�r�rrJs    rDr-z#DataSourceAzure._determine_pps_type�sF��
�7�>�>�$�:�;�;�	$���H�H��K�K�.��5�5���9N�N�N��&�&�w�/�/�7�?�3H�H�H���H�H��K�K�.��5�5���9N�N�N��&�&�w�/�/�7�?�3H�H�H���H�H��K�K�*�+�+�t�3�3��{�{�1�4�8�8���$�%�%��&�&�w�/�/�7�?�3H�H�H���H�H��|�H���X�^�+���	
�	
�	
�	
��rCc���|���}tjddt���5t	|��\}}}|||d|ifcddd��S#1swxYwYdS)zrInitiate the reprovisioning workflow.

        Ephemeral networking is up upon successful reprovisioning.
        zreprovisioning-read-azure-ovfz$read azure ovf during reprovisioningr�r�N)r�rr�r!�read_azure_ovf)r�rNrE�udr�s     rDr1zDataSourceAzure._reprovision�s����?�?�$�$��
�
$�0�>�$�
�
�
�	<�	<�
)��2�2�K�B��C���C�-��!:�;�
	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�A�A� Ar�c��d}	|�|��nn#ttf$rZ|�dd��}d�|�t|��nd��}t
|tj���YnwxYw|S)z�Determine the fingerprints we need to retrieve from Wireserver.

        :return: List of keys to request from Wireserver, if any, else None.
        N�_pubkeysz"Retrieved {} fingerprints from OVFrr�)	r{r|r}rbr=r_r+r�r�)r�r�rr#rus     rDr>z1DataSourceAzure._determine_wireserver_pubkey_info�s���,0��	D��+�+�G�4�4�4�4���*�%�	D�	D�	D��'�'�*�d�3�3�K�:�A�A�$/�$;��K� � � ����G�
$�G���C�C�C�C�C�C�	D�����s��A(B�Bc�8�tj|j��dS)zCleanup any marker files.N)r�del_filer�r
s rDr@z DataSourceAzure._cleanup_markers�s���
�d�6�7�7�7�7�7rCc��|j���}	t|||j�t
d�����t
|jd��n#t
|jd��wxYwdS)NF)�is_new_instance�
preserve_ntfs�def_log_file)r��
get_ipath_cur�address_ephemeral_resizer�rb�DS_CFG_KEY_PRESERVE_NTFSr*r�)r�r�r��instance_dirs    rD�activatezDataSourceAzure.activate�s����z�/�/�1�1��	:�$�� /�"�k�o�o�.F��N�N�
�
�
�
�
�D�L��8�9�9�9�9��O�D�L��8�9�9�9�9�����s�0A&�&Bc��|j�di���di���d��S)Nr�r��platformFaultDomain�rrbr
s rD�availability_zonez!DataSourceAzure.availability_zone�s;��
�M���f�b�)�)�
�S��B�
�
�
�S�&�
'�
'�	
rCc���|jr�|jtjkrt|j�d��rZ	t|jd��S#t$r2}t�dt|����Yd}~nd}~wwxYw	t��S#t$r2}t�dt|����Yd}~nd}~wwxYwiS)z:Generate network configuration according to configuration.r��networkz?Failed generating network config from IMDS network metadata: %sNz-Failed generating fallback network config: %s)rVrrUr�rb�6generate_network_config_from_instance_network_metadatar7r�rr��-_generate_network_config_from_fallback_config)r�rOs  rD�_generate_network_configz(DataSourceAzure._generate_network_configs��

��	��#�w�}�4�4����� 6�7�7�5�	
�M��'�	�2������
�
�
��	�	�5���F�F�������������
����	O�@�B�B�B���	O�	O�	O��I�I�E�s�1�v�v�N�N�N�N�N�N�N�N�����	O�����	s/�A�
B�(B	�	B�
B � 
C�*(C�Cc��|jr|jtjkr|jS|���|_|jS)z,Provide network configuration v2 dictionary.)r�rrUrr
s rD�network_configzDataSourceAzure.network_configsD����	(�D�$8�G�M�$I�$I��'�'�#�<�<�>�>����#�#rCc��|j�di���di���d��S)Nr�r��locationr�r
s rD�regionzDataSourceAzure.region's8���}� � ���,�,�0�0��B�?�?�C�C�J�O�O�OrCc�F��t��}	|d}d�|dD���nB#t$r5td|�d��ztj���YdSwxYw�fd�|D��}|sdStd	|�d
|��tj���|jr|jjsdStj	|jj��}|rt|t��sdSt|��}||vr!td|�d
|��tj���dS)z=Validate IMDS network config and report telemetry for errors.rc�8�g|]}t|d����S)�
macAddressr�)r�r�s  rDr�zBDataSourceAzure.validate_imds_network_metadata.<locals>.<listcomp>2s4������&�a��o�6�6���rCr�z6IMDS network metadata has incomplete configuration: %rr�Fc���g|]}|�v�|��	SrBrB)r��m�	imds_macss  �rDr�zBDataSourceAzure.validate_imds_network_metadata.<locals>.<listcomp>>s#���D�D�D�a��)�1C�1C��1C�1C�1CrCTz8IMDS network metadata is missing configuration for NICs z: z-IMDS network metadata is missing primary NIC )
r�r|r+rbr�rr�r�r
�get_interface_macr�r�r})r�r�
local_macsr�missing_macs�primary_macrs      @rDr2z.DataSourceAzure.validate_imds_network_metadata+s����3�4�4�
�	�$�Y�/�N���'��4����I�I���	�	�	�#�H��+�+�i�(�(�)��K�
�
�
�
�
�5�5�
	����E�D�D�D�:�D�D�D���	��4����|�|�^�^�
-���	
�	
�	
�	
��'�	�t�/G�/M�	��5��+�D�,D�,J�K�K���	�*�[�#�">�">�	��5�+�K�8�8���,�&�&�#�#��;�;���0��K�
�
�
�
��us�,�;A+�*A+)rmN)rBr�)r�r�)Fr:r;r<�dsnamerr@r�BOOT_NEW_INSTANCE�BOOT�default_update_eventsr=rrUrV�_ci_pkl_versionr��intr�r�r�r"r
r�rrr+r
rRrTrir9r?�imds_readurl_exception_callback�dictr,rwryr	rr{r~r�r�r<r��floatr�r�r/r0r�r�r.r�rar?r�rFr-r1r>r@r��propertyrrrr
r2�
__classcell__)r�s@rDr�r�EsA�������
�F����'��N�
����K��]�N��O�
�
�
� 
��
��
�
�
�
�
�
�2�2�2�
9�
9�
9�!� $�� �X�X�X���}�X��	X�
�X�
�
X�X�X�!� �X�t!�(�(�(�!� �(�
�T�
�
�
�
�!�K�K�!� �K�Z,�,�,�,�,�,�
!�O�O�!� �O�b!�
!-� 0�.��
-�-�-��-��	-��
-�
�-�-�-�!� �-�^1�1�1�
5�5�5�!�	0�T�#�Y�	0�	0�	0�!� �	0��$��4��9�����6�4��9����� ���O�O�O�����.!���!� ��>!�DG�����$'��<A����!� ��&!�

�

�!� �

�!�#�!&�	!/�!/�!/��!/��	!/�

�!/�!/�!/�!� �!/�F!�F�F�!� �F�!�\.�\.�!� �\.�|!�2G�2G�!� �2G�h!� � �!� � �<!�S �S �!� �S �j!�.�.�8�C�=�.�D�.�.�.�!� �.�`!�48����&�t�C�y�1��	�$�s�)�	����!� ��:�$��8�C�=������4��$��7�����:!�<�<�!� �<�!����%)��	�$�s�)�	����!� ��$8�8�8�!�
�
�!� �
��
�
��X�
�!���!� ��6�$�$��X�$��P�P��X�P�!�-�d�-�t�-�-�-�!� �-�-�-�-�-rCr�c�N�	|dddS#t$rYdSwxYw)Nr��	osProfile�
adminUsername�r|��	imds_datas rDr4r4\s>�����#�K�0��A�A�������t�t�������
$�$c�B�	|ddS#t$rYdSwxYw)Nr��userDatar#r$s rDr8r8cs9�����#�J�/�/�������t�t����s�
�
�c�N�	|dddS#t$rYdSwxYw)Nr�r!�computerNamer#r$s rDr5r5js>�����#�K�0��@�@�������t�t����r&c�V�	|ddddkS#t$rYdSwxYw)Nr�r!�disablePasswordAuthenticationr�r#r$s rDr6r6qsK����i� ��-�.M�N��
�	
�������t�t����s��
(�(c��d|���vrdStj��}	|�|��}n#t$rYdSwxYw|jduS)z?
    Validate whether or not the key is OpenSSH-formatted.
    z
FN)r�r�AuthKeyLineParser�parse�	TypeError�keytype)r��parser�akls   rDr�r�{ss��
���������u�
�
'�
)�
)�F���l�l�3�����������u�u������;�d�"�"s�A�
A�A�c��dD]�}g}td|��D]j}||zt|��z}tj�|��r4|�|tj�|��f���k|r|cS��gS)N)z-part�pr�rY)r�r�r�r�r�r��realpath)rh�maxnum�suff�found�pnum�ppaths      rD�_partitions_on_devicer=�s���"�������!�V�$�$�	>�	>�D��d�N�S��Y�Y�.�E��w�~�~�e�$�$�
>����d�B�G�$4�$4�U�$;�$;�<�=�=�=���	��L�L�L�	�
�IrCc��tjdd���}t�d|��tj�|��|vS)Nz	TYPE=ntfsT)�no_cachezntfs_devices found = %s)r�find_devs_withr�r�r�r�r7)rh�ntfs_devicess  rD�_has_ntfs_filesystemrB�sG���&�{�T�B�B�B�L��I�I�'��6�6�6�
�7���G�$�$��4�4rCc���|r*dd�t���dt�d�}d|fStj�|��sdd|zfSt�d|tj�|����t|��}t|��dkrdd|zfSt|��d	kr)d
|�dd�d
�|D������}d|fSt|��d	kr|d\}}n|d\}}t|��sd|�d|�d|�d�}d|fStd���}d|�d|�d|�d�}tjddt���5}	t!j||dddi���}	ne#t j$rS}
d|_dt)|
��vrd|dzfcYd}
~
cddd��Sd|d |�d!|
��zfcYd}
~
cddd��Sd}
~
wwxYw|	dkrYd"|	z|_t�d#d�t��t��d|d$|	zzfcddd��S	ddd��n#1swxYwYd|d%zfS)&a�Determine if the ephemeral drive at devpath should be reformatted.

    A fresh ephemeral disk is formatted by Azure and will:
      a.) have a partition table (dos or gpt)
      b.) have 1 partition that is ntfs formatted, or
          have 2 partitions with the second partition ntfs formatted.
          (larger instances with >2TB ephemeral disk have gpt, and will
           have a microsoft reserved partition as part 1.  LP: #1686514)
      c.) the ntfs partition will have no files other than possibly
          'dataloss_warning_readme.txt'

    User can indicate that NTFS should never be destroyed by setting
    DS_CFG_KEY_PRESERVE_NTFS in dscfg.
    If data is found on NTFS, user is warned to set DS_CFG_KEY_PRESERVE_NTFS
    to make sure cloud-init does not accidentally wipe their data.
    If cloud-init cannot mount the disk to check for data, destruction
    will be allowed, unless the dscfg key is set.z#config says to never destroy NTFS (rZz), skipping checksFzdevice %s does not existzResolving realpath of %s -> %srzdevice %s was not partitionedr3zdevice z had 3 or more partitions: r�c��g|]
}|d��S)rYrB)r�r6s  rDr�z*can_dev_be_reformatted.<locals>.<listcomp>�s��/�/�/�q�a��d�/�/�/rCrYz
partition r�z) on device z was not ntfs formattedc�~��tdg���t�fd�tj|��D����S)Nzdataloss_warning_readme.txtc�@��g|]}|����v�|��SrB)r|)r��f�ignoreds  �rDr�z?can_dev_be_reformatted.<locals>.count_files.<locals>.<listcomp>�s+���J�J�J�!������'�1I�1I�A�1I�1I�1IrC)�setr_r��listdir)�mprHs @rD�count_filesz+can_dev_be_reformatted.<locals>.count_files�s?����4�5�6�6���J�J�J�J�r�z�"�~�~�J�J�J�K�K�KrCz was ntfs formattedzmount-ntfs-and-countr��ntfs�LANG�C)r�update_env_for_mountzcannot mount ntfszunknown filesystem type 'ntfs'Tz^ but this system cannot mount NTFS, assuming there are no important files. Formatting allowed.Nz but mount of z	 failed: zmounted and counted %d fileszxit looks like you're using NTFS on the ephemeral disk, to ensure that filesystem does not get wiped, set %s.%s in configz but had %d files on it.z3 and had no important files. Safe for reformatting.)r{r�r�r�r�r�r�r�r7r=r_rBr"rr�r!rr'r)r�r�r)rhr�rH�
partitions�	cand_part�	cand_pathrL�bmsg�evt�
file_countrOs           rD�can_dev_be_reformattedrW�s��&����H�H�[�!�!�!�!�$�$�$�
���c�z��
�7�>�>�'�"�"�;��0�7�:�:�:��I�I�(�'�2�7�3C�3C�G�3L�3L����'�w�/�/�J�
�:���!����5��?�?�?�	�Z���1�	�	�	��G�G��H�H�/�/�J�/�/�/�0�0�0�
���c�z��	�Z���A�	�	�)�!�}��	�9�9�)�!�}��	�9��	�*�*����I�I��I�I��G�G�
��
�c�z�� �L�L�!� �L�L�
	�	�	��	�	�����D�
�	 �
#�*� �
�
�
�"I�

�	P������&,�c�]�	���J�J���$�	P�	P�	P�1�C�O�/�3�q�6�6�9�9��� /�/�������"I�"I�"I�"I�"I�"I�"I�"I�.�$�$�)�)�)�Q�Q�!O�O�O�O�O�O�O�O�/"I�"I�"I�"I�"I�"I�"I�"I�����	P������?�?�<�z�I�C�O��K�K�'�����%�%�(�
�
�
��$�!;�j�!H�H�H�E"I�"I�"I�"I�"I�"I�"I�"I�2�3"I�"I�"I�"I�"I�"I�"I�"I�"I�"I�"I����"I�"I�"I�"I�H��M�M�M�MsU�2I �4F�I �G1�G,�<G1�=I �G,�G1�I �,G1�1AI � I$�'I$Fr�rhr�r�c���tj�|��s td|ztj���dStd|ztj���d}d}|rd\}}nt
||��\}}t�d||��|sdSdD]�}tj�|dd	|z��}d
|�d|�d�}tj�|��rd	tj|��t�d
|���#t$r&}	t�
d||	��Yd}	~	��d}	~	wwxYwt�d|����dS)Nz,Ephemeral resource disk '%s' does not exist.r�z$Ephemeral resource disk '%s' exists.F)TzFirst instance boot.zreformattable=%s: %s)r��mounts�sem�config_zMarker "z" for module "�"z%s removed.z%s: remove failed! (%s)z%s did not exist.)r�r�r�r+r�r�rWr{�unlink�FileNotFoundErrorr)
r�rhr�r��resultrH�mod�sempathrTrOs
          rDr�r�s����7�>�>�'�"�"�

��:�W�D��	�	
�	
�	
�	
�	���2�W�<��	�	
�	
�	
�	
�
�F�
�C��E�4�����,�W�m�D�D�����I�I�$�f�c�2�2�2�����'�
1�
1���'�,�,�|�U�I��O�D�D���07������=��
�7�>�>�'�"�"�	1�
@��	�'�"�"�"��	�	�-��.�.�.�.��$�
@�
@�
@����5�t�Q�?�?�?�?�?�?�?�?�����
@����
�I�I�)�4�0�0�0�0�
�Fs�./D�
E�(E	�	Ec��d�}|sdS|si}tj||��|���D]L\}}tj�||��}d|vr|||��}tj||d����MdS)Nc�&�	tj|��}|���D]'}d|jvr|jt
krt
|_�(tj|��S#t$r t�	d|��|cYSwxYw)z>Azure provides the UserPassword in plain text. So we redact it�UserPasswordz#failed to redact userpassword in %s)
�ET�
fromstring�iter�tag�text�DEF_PASSWD_REDACTION�tostringr7r��critical)�cnt�fnamer��elems    rD�_redact_passwordz%write_files.<locals>._redact_password9s���	��=��%�%�D��	�	���
5�
5��"�d�h�.�.��	�%9�9�9� 4�D�I���;�t�$�$�$���	�	�	��L�L�>��F�F�F��J�J�J�	���s�A#A&�&'B�Br�i�)�filename�content�mode)r�
ensure_dirrjr�r�r{r�)�datadirrr\rpr�rrrns       rDrgrg7s���
�
�
����������O�G�W�%�%�%� �;�;�=�=�E�E���w�����W�d�+�+���D� � �&�&�w��6�6�G�����e�D�D�D�D�D�	E�ErCc�"�tj|��}i}i}|jpd}|jr
|j|d<|jr
|j|d<|j�|j|d<n|jrd|d<i}|jr
|j|d<|jr,d|d	<t|jkrt|j��|d
<|rd|i|d<|j
|d
<td|j
ztj
���|j|d<td|jztj
���|||fS)z�Parse OVF XML contents.

    :return: Tuple of metadata, configuration, userdata dicts.

    :raises NonAzureDataSource: if XML is not in Azure's format.
    :raises BrokenAzureDataSource: if XML is unparseable or invalid.
    r�rr�N�
ssh_pwauthTr�F�lock_passwd�
hashed_passwdrrr�zPreprovisionedVm: %sr�r�zPreprovisionedVMType: %s)r �
parse_text�custom_datar�public_keys�disable_ssh_password_auth�passwordrrj�encrypt_pass�preprovisioned_vmr+r�rp�preprovisioned_vm_type)rN�ovf_envrEr�r��defusers      rDr�r�Tsr���"�8�,�,�G��B�
�C�	�	�	"��B���0�&�/������.�!�-��J���(�4� '� A�A��L���	�	�!� ��L���G���+�!�*������F�!&��
���7�#3�3�3�'3�G�4D�'E�'E�G�O�$��7�,�g�6��M��%�7�C������!:�:��H�����
#*�"@�C����"�W�%C�C��H�����
��C�=�rC�$6$c�X�tj||tjd���z��S)Nr4)�strlen)�cryptr�rand_str)r~�salt_ids  rDrr�s&���;�x��4�=��+C�+C�+C�!C�D�D�DrCc���	t|��5}|�d��	ddd��dS#1swxYwYn+#t$rt�d|��YnwxYwdS)z;Return boolean indicating path to cdrom device has content.iNTzcdrom (%s) is not configuredF)�open�read�IOErrorr�r�)�	cdrom_dev�fps  rD�_check_freebsd_cdromr��s���=�
�)�_�_�	���G�G�D�M�M�M��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	���=�=�=��	�	�0�)�<�<�<�<�<�=�����5s,�A�5�A�9�A�9�A�%A)�(A)c��|�dStj|dd���}tj|�����S)zIReturn content random seed file if available, otherwise,
    return None.NTF)�quiet�decode)rr�r9�	b64encoder�)�sourcer�s  rDr;r;�sC���~��t��>�&��U�;�;�;�D���D�!�!�(�(�*�*�*rCc#��K�|V�tV�tj��rd}t|��r|V�n"dD]}tjd|z��Ed{V��� |r|V�dSdS)Nz/dev/cd0)�iso9660rzTYPE=%s)�DEFAULT_PROVISIONING_ISO_DEVrr&r�r@)r��	cache_dirr��fstypes    rDr%r%�s�����
�J�J�J�
&�&�&�&�����?��	��	�*�*�	��O�O�O��(�	?�	?�F��*�9�v�+=�>�>�>�>�>�>�>�>�>�>����������rCc�L�tj�|d��}tj�|��st	d���t|d��5}|���}ddd��n#1swxYwYt|��\}}}|||d|ifS)Nr�zNo ovf-env file found�rb)r�r�r{r�rr�r�r�)�
source_dir�ovf_filer�rNrEr�r�s       rDr(r(�s����w�|�|�J�
�6�6�H�
�7�>�>�(�#�#�:� �!8�9�9�9�	
�h��	�	����7�7�9�9��������������������!��*�*�K�B��C���C�-��2�3�3s�B�B�B�network_metadatac	��did�}t|d��D�]�\}}d}d�|���}d|dzd	zi}d
|dd�}dD]�}|�|i���d
g��}	|	st�d||���Kd
}|dkrd}
nd}
|	r
d
|d<||d<|	dd�D]|}||dd�d|
��}|d}
|�d��sg|d<|d�d�|
|������}��|rr|rpt
|d��}|�d|���i|d���t|��}|r|dkr||d d!<||d"|<���t�d#|||�����|S)$z�Convert imds network metadata dictionary to network v2 configuration.

    :param: network_metadata: Dict of "network" key from instance metdata.

    :return: Dictionary containing network version 2 standard configuration.
    r3)�version�	ethernetsr�Fzeth{idx})�idxzroute-metricrYr�T)�dhcp4zdhcp4-overrides�dhcp6)�ipv4�ipv6�	ipAddresszNo %s addresses found for: %rr��24�128r�zdhcp6-overridesN�subnetr�prefix�privateIpAddress�	addressesz
{ip}/{prefix})�ipr�r
�
macaddress)�matchzset-namer�r��driverr�z<No configuration for: %s (dev_config=%r) (has_ip_address=%r))
�	enumerater=rbr�r�r�r}r3r|r)r��	netconfigr��intf�has_ip_address�nicname�
dhcp_override�
dev_config�	addr_typer��default_prefix�addr�	netPrefix�	privateIprsr�s                rDrr�sv��-.�B� ?� ?�I��/��<�=�=�<
�<
�	��T����#�#��#�,�,��'�#��'�S��9�
��,��&
�&
�
�
*�	�	�I�����B�/�/�3�3�K��D�D�I��
��	�	�9�9�d�K�K�K��!�N��F�"�"�!%���!&���B�*.�J�w�'�5B�J�0�1�!�!�"�"�
�

�

�� ��O�H�5�a�8�<�<��n���	�!�!3�4�	�!�~�~�k�2�2�1�.0�J�{�+��;�'�.�.�#�*�*�i�	�*�J�J�����

��	�.�	�'��\�(:�;�;�C����'������5�7�K�K�
�
�
�#�7�+�+�F��
7�&�K�/�/�06�
�7�#�H�-�.8�I�k�"�7�+���	�	�J����		
�	
�	
�	
��rCc�D�tjtd���}|�iS|S)z�Generate fallback network config excluding blacklisted devices.

    @return: Dictionary containing network version 2 standard configuration.
    T)r_�
config_driver)r
�generate_fallback_configr]r�s rDrrs1���
&�+�4����C��{��	��JrCc��tjdt|||||fd�}	tjdi|��S#t
$r$}t
d|ztj����d}~wwxYw)a�Query Azure's instance metadata service, returning a dictionary.

    For more info on IMDS:
        https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service

    @param retries: The number of retries of the IMDS_URL.
    @param md_type: Metadata type for IMDS request.
    @param api_version: IMDS api-version to use in the request.

    @return: A dict of instance metadata containing compute and network
        info.
    z/Crawl of Azure Instance Metadata Service (IMDS))rYrHrZ�argsz$exception while getting metadata: %sr�NrB)r�r��_get_metadata_from_imdsrr`r7r+r)rrjrnrkrl�kwargsrOs       rDrrrr!s���*�9�@�'��&�'�;��A�	��F���}�&�&�v�&�&�&�������2�Q�6���	
�	
�	
�	
�	��������s�.�
A�A�Ac�R�d�|j|��}ddi}|tkr|tjkr|dz}	t|t||||���}nX#t$rK}t|t��r|j
dkr�td|ztj
���icYd}~Sd}~wwxYw	d	d
lm}	|	}
n#t $r
t"}
YnwxYw	t%j|j��S#|
$r0}td|j�d|��tj
���Yd}~nd}~wwxYwiS)
Nr�r�r�z&extended=true)rr�rr�rlrozBIgnoring IMDS instance metadata. Get metadata from IMDS failed: %sr�r)�JSONDecodeErrorz3Ignoring non-json IMDS instance metadata response: z). Loading non-json IMDS response failed: )r=r��IMDS_EXTENDED_VER_MINr9r?r.r�r7r�r-rsr+r�r�json.decoderr��ImportErrorr}r�	load_jsonrN)rrkrjrnrlr�r��responserOr��json_decode_errors           rDr�r�Es����
$�
$�W�]�K�
@�
@�C��6�"�G��+�+�+��<�;K�0K�0K��$�$�����+�����

�
�
�����
�
�
��a��"�"�	�q�v��}�}��#�4�67�8��K�
�
�
�
�
�I�I�I�I�I�I�����
����'�0�0�0�0�0�0�+�����'�'�'�&����'����
��~�h�/�0�0�0���
�
�
���� � � �!�!�
%���		
�	
�	
�	
�	
�	
�	
�	
�	
�����
�����IsI�A�
B1�&AB,�&B1�,B1�5B>�>C�C�C/�/D$�4&D�D$c�r�|st}d}|D]�}tj�|��r�|s=t�dtjjtj	jg��d}tj�
|��rtj|����tj
|����dS)a(Remove Azure-specific ubuntu network config for non-primary nics.

    @param paths: List of networking scripts or directories to remove when
        present.

    In certain supported ubuntu images, static udev rules or netplan yaml
    config is delivered in the base ubuntu image to support dhcp on any
    additional interfaces which get attached by a customer at some point
    after initial boot. Since the Azure datasource can now regenerate
    network configuration as metadata reports these new devices, we no longer
    want the udev rules or netplan's 90-hotplug-azure.yaml to configure
    networking on eth1 or greater as it might collide with cloud-init's
    configuration.

    Remove the any existing extended network scripts if the datasource is
    enabled to write network per-boot.
    Fz|Removing Ubuntu extended network scripts because cloud-init updates Azure network configuration on the following events: %s.TN)�UBUNTU_EXTENDED_NETWORK_SCRIPTSr�r�r�r�rprrr��BOOT_LEGACY�isdirr�del_dirr�)r��loggedr�s   rDrcrc{s���&�0�/��
�F��
$�
$��
�7�>�>�$���	$��
����-��^�)�9�+@�+F�G�	������w�}�}�T�"�"�
$���T�"�"�"�"��
�d�#�#�#��
$�
$rCc�6�tj|t��Sr�)r�list_from_depends�datasources)�dependss rD�get_datasource_listr��s���$�W�k�:�:�:rCr�)r4)r�)�r9r��	functoolsr��os.pathr\�xml.etree.ElementTree�etree�ElementTreere�enumr�pathlibrrr�typingrrr	r
r��	cloudinitrr�loggingr
rrrr�cloudinit.eventrr�
cloudinit.netr�cloudinit.net.dhcprrr�cloudinit.net.ephemeralr�cloudinit.reportingr�cloudinit.sources.helpersr�cloudinit.sources.helpers.azurerrrrrr r!r"r#r$r%r&r'r(r)r*r+r,�cloudinit.url_helperr-r.r/�	getLoggerr:r��DS_NAMErfrd�
DEFAULT_FS�AGENT_SEED_DIRr�r�r>rtrqr��IMDS_RETRY_CODES�partialr�rr9rFrQr��__annotations__r�r]rfrkrrr}r�r�r�r�r�r�r&�res_diskr�r�rer�r��DEF_EPHEMERAL_LABELrjr+r�r�r�r4r8r5r6r�r=rBrWr�rgr�rr�r;r%r(rrrr?rrr�rc�DataSourceAzureNet�DEP_FILESYSTEMr�r�rBrCrD�<module>r�s����
�
�
�
���������	�	�	�	�����	�	�	�	�"�"�"�"�"�"�"�"�"���������������������,�,�,�,�,�,�,�,�,�,�,�,�����������$�$�$�$�$�$�8�8�8�8�8�8�8�8�8�8�8�8�8�8�1�1�1�1�1�1�1�1�'�'�'�'�'�'�����������
4�3�3�3�3�3�&�&�&�&�&�&�-�-�-�-�-�-�����������������������������������������(E�D�D�D�D�D�D�D�D�D��g���!�!��
��!�#3�4��6��
�
�#��)����,�����
�$����#4�)�"3�� ��%�'�#�#�#��=�=�=�=�=�4�=�=�=������d����*J���#��I�I�I�#�#�#��0!�+�.�����,���&���c��h�s�m�����"�s��s�������t�C�y���������C�����D�D�D�=�=�=�7�7�7�'�X�c�]�'�'�'�'�V�4�?���	#��J�+�+�A�.�.�H����	�	�-�.�.�.�$�x�/����	�	�)�*�*�*�"���!�#5�6� ����	���e��
�
��!+�n�E�E�F�	'�	'�#��W�%��/��)��"���
/��$��
/�D�
/�
/�
/���
/�T�T�T�T�T�g�(�T�T�T�n(������������#�#�#�"
�
�
�
��5�5���5��gN�gN���gN�T�&�!��	(�(��(�
�(��(��	(�(�(���(�V�E�E�E���E�8�.�.���.�bE�E�E�E��������3�+�+�+���+�(�������
4�
4���
4��G��G�	�G�G�G���G�T�
�t�
�
�
���
��
���*�
� � � ��� �F�
���
�2�2�2���2�j�"$�"$�"$���"$�L%���w�-�/�0���;�;�;�;�;rC