__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

x[h�.�
���%SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJs J	r
 SSKJr SSK
Jr SSKJrJrJr SSKJrJrJrJr SSKrSSKJrJrJrJrJrJr SSKJ r J!r! SSK"J#r# SS	K$J%r%J&r&J'r' SS
K(J)r)J*r* SSK+J,r, SSK-J.r.J/r/J0r0J1r1 SS
K2J3r3 SSK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArA SSKBJCrC SSKDrD\R�"\DR�S\R�"SS93S9rG\\HS'\R�"\P5rQSrRSS0rSSrTSrUSrVSrW"SS\5rXSrY\\Z\HS '/S!Qr[S"r\S#r]S$\ZS%\ZS&\\Z4S'jr^S(\ZS&\Z4S)jr_\9S&\\Z4S*j5r`\9S(\ZS&\\Z4S+j5raS_S&\Z4S,jjrbS-rcS.rdS/reS&\\Z4S0jrf\R�"5(a7S1rU\f"S25rh\hb\QR�S35 S4\h-rTO\QR�S55 SrY\VS6\T0S7S7S8.rjS6S9S:/S7S;.0\US<S=./S>.rkS?\R/rlS@rmSArn"SBSC\R�5rpSDrqSErrSFrsSGrtSHruS`SIjrv\9SJ5rw\9SK5rx\9\TSLSL4SM\ZSN\ZSO\ySP\y4SQjj5rz\9S_SRj5r{\9SS5r|STr}\9SU5r~\9\Y4SVj5r\9SW5r�\9SX5r�\9SY\�SZ\yS&\�4S[j5r�\9S&\�4S\j5r�\9S_S]j5r�\pr�\p\GR44/r�S^r�g!\I\J4a: SSKKrL\LR�R�R�rGGN�!\Ia SrGGNf=ff=f)a�N)�Enum)�Path)�	monotonic�sleep�time)�Any�Dict�List�Optional)�net�performance�sources�ssh_util�subp�util)�
EventScope�	EventType)�
device_driver)�NoDHCPLeaseError�NoDHCPLeaseInterfaceError�NoDHCPLeaseMissingDhclientError)�EphemeralDHCPv4�EphemeralIPv4Network)�events)�errors�identity�imds�kvp)�netlink)
�DEFAULT_WIRESERVER_ENDPOINT�NonAzureDataSource�	OvfEnvXml�azure_ds_reporter�azure_ds_telemetry_reporter�build_minimal_ovf�dhcp_log_cb�get_boot_telemetry�get_metadata_from_fabric�get_system_info�report_diagnostic_event�report_dmesg_to_kvp�report_failure_to_fabric)�UrlErrorz$6$�)�strlen)�salt�
blowfish_hashc��[S5e)z�Raise when called so that importing this module doesn't throw
ImportError when ds_detect() returns false. In this case, crypt
and passlib are not needed.
z/crypt and passlib not found, missing dependency)�ImportError)�_s �C/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceAzure.pyr1r1@s��
�A��
��Azure�instance-idziid-AZURE-NODEz/dev/disk/cloud/azure_resource�ext4z/var/lib/waagentz/dev/sr0c�(�\rSrSrSrSrSrSrSrSr	g)	�PPSType�W�None�PreprovisionedOSDisk�Running�Savable�Unknown�N)
�__name__�
__module__�__qualname__�__firstlineno__�NONE�OS_DISK�RUNNING�SAVABLE�UNKNOWN�__static_attributes__rBr6r5r;r;Ws���D�$�G��G��G��Gr6r;z/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.dc�x�UR5H�n[R"SU5(dM!UR5n[	U5S:�dMBUSRS5n[	U5S:�dMgUSS:XdMrUSRU5(dM�USRS5nUSs $ g	)
z|
dev.storvsc.1.%pnpinfo:
    classid=32412632-86cb-44a2-9b5c-50d1417354f5
    deviceid=00000000-0001-8899-0000-000000000000
�pnpinfo���=r�deviceid��.N)�
splitlines�re�search�split�len�
startswith)�
sysctl_outrS�line�fields�columns�compss      r5�"find_storvscid_from_sysctl_pnpinforaks����%�%�'��
�9�9�Z��&�&��Z�Z�\�F��6�{�a�� ��)�/�/�#�.����L�A�%���
�j�0���
�-�-�h�7�7�"�1�I�O�O�C�0�E� ��8�O�(�r6c��UR5H5n[R"X5(dM UR5nUSs $ g)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)rVrWrXrY)�camcontrol_out�disk_drvr]�itemss    r5�find_busdev_from_diskrf�s?���)�)�+��
�9�9�X�$�$��J�J�L�E���8�O�,�r6rc�busdev�returnc���UR5H[n[R"X5(dM URS5n[	U5S:XdMBUSRS5nUSs $ g)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)
�(rQrT�,rN)rVrWrXrYrZ)rcrgr]re�dev_passs     r5�find_dev_from_busdevrm�s_���)�)�+��
�9�9�V�"�"��J�J�s�O�E��5�z�Q�� ��8�>�>�#�.����{�"�,�r6�macc
��[U5S:Xa)SRUSSUSSUSSUSSUSSUSS/5nUR5$)	z1Normalize mac address with colons and lower-case.��:rrQ����
)rZ�join�lower)rns r5�normalize_mac_addressrx�s]��
�3�x�2�~��h�h�
��1�X�s�1�Q�x��Q�q��3�q��8�S��2�Y��B�r�
�K�
���9�9�;�r6c��[R"5Vs/sHnUSS:XdM[US5PM sn$s snf)z-Get Hyper-V NICs as normalized MAC addresses.rQ�	hv_netvscrT)r�get_interfacesrx)�ns r5�get_hv_netvsc_macs_normalizedr}�sJ��
�#�#�%��%�A��Q�4�;��	$��a��d�#�%����s�
>�>c�<�[R"5Vs/sHnU[US5:XdMUSPM nnSU;ag[U5S:Xa%[	SU<SU<3[
RS9 US$[	SU<SU<3[
RS9 g	s snf)
z0Determine the device driver to match on, if any.rTrQrzz'Assuming driver for interface with mac=z	 drivers=��logger_funcrz0Unable to specify driver for interface with mac=N)rr{rxrZr*�LOG�debug�warning)rn�i�driverss   r5�determine_device_driver_for_macr��s���
�#�#�%��%�A��'��!��-�-�	
��!��%���
�g���
�7�|�q����G�
��	�	�	
�
�q�z�����	��K�K��
��+s
�B�	Bc���[R"U5R$![Ra* [R	SSRU55 Us$f=f)NzFailed to execute: %s� )r�stdout�ProcessExecutionErrorr�r�rv)�cmd�fail_rets  r5�execute_or_debugr��sL����y�y��~�$�$�$���%�%���	�	�)�3�8�8�C�=�9����s�"�;A �A c��[SS/SS9$)N�sysctlzdev.storvsc�)r��r�rBr6r5�get_dev_storvsc_sysctlr��s���X�}�5��C�Cr6c��[/SQ5$)N)�
camcontrol�devlistz-br�rBr6r5�get_camcontrol_dev_busr��s���;�<�<r6c��[SS/5$)Nr�r�r�rBr6r5�get_camcontrol_devr��s���\�9�5�6�6r6c��SnUS:�aSnUS-
nS[U5-nSRX5n[5n[XC5nU(d[RS5 g[
5n[5nSRU5n[Xh5n	U	(a&[Xy5n
U
c[RS	5 gU
$S
RU5n[Xk5n	U	(a&[Xy5n
U
c[RS	5 gU
$g)N�00000000rT�00000001rQ�000z{0}-{1}z#Fail to find storvsc id from sysctlz	blkvsc{0}zFail to find /dev/daXz
storvsc{0})
�str�formatr�rar�r�r�r�rfrm)�port_id�g0�g1�g0g1r\�	storvscid�camcontrol_b_outrc�blkvsc�scbusx�devname�storvscs            r5�get_resource_disk_on_freebsdr��s���	�B���{�
���A�+��	��W��	�B����B�#�D�(�)�J�2�:�D�I���	�	�7�8��-�/��'�)�N�
�
�
�	�
*�F�
"�#3�
<�F�
�&�~�>���?��I�I�-�.�����!�!�)�,�G�
"�#3�
=�F�
�&�~�>���?��I�I�-�.����r6zfreebsd-ufsrTzresource disk is not None�/dev/zresource disk is None�
ephemeral0T)�data_dir�disk_aliases�apply_network_config�&apply_network_config_for_secondary_ips�gpt�d)�
table_type�layout�	overwritezephemeral0.1)�
filesystem�device)�
disk_setup�fs_setup�
datasource�never_destroy_ntfs�REDACTEDc�X^�\rSrSrSr\R\R\R10r
Sr\RrSrSrS\SS4U4S	jjrS
rSr\S\S\4S
j5r\SSSSS.S\\S\S\S\S\4
Sjj5r\SLSj5rS\4SjrSLSjr\S5r\S\S\ 4Sj5r!SMU4Sjjr"\S5r#\S5r$Sr%S r&\S\'\4S!j5r(S"\)S\'\4S#jr*S\'\4S$jr+S%r,S&r-SNS'jr.\S(5r/\SOS)\S*\S\04S+jj5r1\S,5r2\SSS-.S.\S/\SS4S0jj5r3\S15r4\S\5Rj4S2j5r6\S35r7\SLS4j5r8\S55r9\S65r:\S\;4S7j5r<\SPS8\=R|S9\S\4S:jj5r?\SS;.S<\\'\S\\'\4S=jj5r@S"\)S\\4S>jrAS?\)S"\)S\B4S@jrC\SA5rD\SB\)S"\)S\\'\4SCj5rESDrF\SE5rG\HSF5rI\SG5rJ\HSH5rK\HSI5rL\S"\)S\4SJj5rMSKrNU=rO$)Q�DataSourceAzurei8r7FrTc���[RRXX#5 [RRURS5Ul0UlSUl[R"[R"U[05[/5UlSUlSUlSUlSUlSUl[(Ul[RRUR,SS5Ulg)N�azureF�data�reported_ready)r�
DataSource�__init__�os�pathrv�seed_dir�cfg�seedr�
mergemanydict�get_cfg_by_path�DS_CFG_PATH�BUILTIN_DS_CONFIG�ds_cfg�_iso_dev�_network_config�_ephemeral_dhcp_ctx�_route_configured_for_imds� _route_configured_for_wireserverr �_wireserver_endpoint�	cloud_dir�_reported_ready_marker_file)�self�sys_cfg�distro�pathss    r5r��DataSourceAzure.__init__Ds������#�#�D�6�A������U�^�^�W�=��
������	��(�(�
�
!�
!�'�;��
;�=N�O�
�����
�#���>B�� �*/��'�05��-�$?��!�+-�7�7�<�<��O�O�V�%5�,
��(r6�ci_pkl_versionrhNc��>�[TU]U5 SUlSUlSUlSUl[Ul[RRURRSS5Ul
g)NFr�r�)�super�	_unpickler�r�r�r�r r�r�r�rvr�r�r�)r�r��	__class__s  �r5r��DataSourceAzure._unpickleVs^���
���.�)�#'�� ���
�*/��'�05��-�$?��!�+-�7�7�<�<��J�J� � �&�*:�,
��(r6c�h�[RRU5nU<SUR<S3$)Nz [seed=�])rr��__str__r�)r��roots  r5r��DataSourceAzure.__str__bs'���!�!�)�)�$�/��!%�t�y�y�1�1r6c���URcSnOFURRS5(aSnO#URR5S:XaSnOSnU<SUR<S3$)z/Return the subplatform metadata source details.�unknownz/devzconfig-diskrzseed-dir� (�))r�r[rw)r��subplatform_types  r5�_get_subplatform� DataSourceAzure._get_subplatformfs[���9�9��(��
�Y�Y�
!�
!�&�
)�
)�,��
�Y�Y�_�_�
�&�
(�%��)��,�d�i�i�8�8r6�ephipv4c�
�UR(dgURVs/sHo"SRS5SPM nnSU;UlURU;UlUR=(d UR$s snf)NFr�/z169.254.169.254)�
static_routesrYr�r�r�)r�r��r�routed_networkss    r5�_check_if_primary�!DataSourceAzure._check_if_primaryrs����$�$��7>�7L�7L�M�7L�!�Q�4�:�:�c�?�1�-�7L��M�+<��*N��'�
�%�%��8�	
�-�

�+�+�
5��4�4�	
��Ns� BT�)�iface�report_failure_if_not_primary�retry_sleep�timeout_minutesr�r�r�r�c��URb[S5e[SU<S[R"5<3[
RS9 [URU[S9UlSn[5nXdS--n[R"SS	[S
9 UcAURR5nUc[5U-U:a[?U5 OOUcMAUcSUl[-5eUSnXRl SU;a
USUl![EU5n	URRFn
U
c[S5eURIU
5n[SU<SU<SU	<SU
RJ<SU
RL<SU<S URN<S!URP<S"3[
RS9 U(aAU(d:UR#[$RR"UU	U
RJU
RLUS#9S
S9 UsSSS5 $![aI [S[
R S9 UR#[$R&"[5U-
S9S
S9 GN�[(a! [S[
R*S9 SUle[,aM [SU-[
R*S9 UR#[$R."[5U-
US9S
S9 GN#[0a&n[SU-[
R*S9 SnAGNMSnAf[2R4a[n[SUR6<SUR8<SUR:<SUR<<3[
R*S9 SnAGN�SnAff=f!,(df   g=f)$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.

:returns: True if NIC is determined to be primary.
Nz/Bringing up networking when already configured.z,Bringing up ephemeral networking with iface=�: r)r��
dhcp_log_func�<zobtain-dhcp-leasezobtain dhcp lease��name�description�parentzInterface not found for DHCP)�durationT��	host_onlyzdhclient executable not foundz&Failed to obtain DHCP lease (iface=%s))r�	interfacezFile not found during DHCP %rzCommand failed: cmd=� stderr=� stdout=� exit_code=rzunknown-245zdhcp context missing ephipv4z!Obtained DHCP lease on interface z
 (primary=z driver=z router=z routes=z lease=z
 imds_routed=z wireserver_routed=r�)r�driver�routerr��lease)*r��RuntimeErrorr*rr{r�r�rr�r&rr�ReportEventStackr#�obtain_leaserr��_report_failurer�$ReportableErrorDhcpInterfaceNotFoundr�errorr�ReportableErrorDhcpLease�FileNotFoundErrorrr�r��stderrr��	exit_coderr�r�r�_ephipv4r�r
r�r�r��(ReportableErrorDhcpOnNonPrimaryInterface)r�r�r�r�r�r�
start_time�deadlinerr	r��primarys            r5�_setup_ephemeral_networking�+DataSourceAzure._setup_ephemeral_networking�sG��*�#�#�/��A��
�	 ��c�(�(�*�
,��	�	�	
�
$3��K�K��%�$
�� �+/���[�
��"� 4�4��
�
$�
$�$�+�$�
�
�-�1� �4�4�A�A�C�E�f�=�Y�[�;�%>��%I��+�&��q�-�t�}�+/��(�&�(�(��+�&�E�-2�$�$�*���%�,1�-�,@��)�"�5�)�F��.�.�7�7�G���"�#A�B�B��,�,�W�5�G�#�
����N�N��)�)���3�3��9�9�� �I�I�
�"-�W��$�$��C�C�"'�%�&�~�~�&-�&;�&;�#��#�%�	��[
�
��1�
�+�6�C�K�K���(�(��C�C�%.�[�:�%=��#'�	)��7��+�7�S�Y�Y��04�D�,��'��+�@�5�H�$'�I�I���(�(��7�7�%.�[�:�%=���#'�	)��)��+�7�%�?�$'�I�I�����1�1��+�"�I�I�!�L�L�!�L�L�!�O�O�
�%(�I�I�
�
����W
�
�sj�M8�H	�6$M8�D#M8�	AM5�M8�A;M5�M8�	M5�"L�=M8�M5�AM0�*M8�0M5�5M8�8
Nc�~�SUlSUlURcgURR5 SUlg)zTeardown ephemeral networking.FN)r�r�r��
clean_network�r�s r5�_teardown_ephemeral_networking�.DataSourceAzure._teardown_ephemeral_networkings=��+0��'�05��-��#�#�+��� � �.�.�0�#'�� r6c�f�URSL=(d URRSL(+$)z"Check if networking is configured.N)r�rrs r5�_is_ephemeral_networking_up�+DataSourceAzure._is_ephemeral_networking_up*s5��
�$�$��,�
6��'�'�-�-��5�
�	
r6c�t�/SQn[R"U5up#[SU<SU<SU<3[RS9 g![Ra�n[UR[5(a@[RS5 [R"5nURU5 SnAg[SUR<SUR<S	UR<S
UR<3[RS9 [R "U5nURU5 SnAgSnAff=f)aCheck if azure-proxy-agent is ready for communication with WS/IMDS.

If ProvisionGuestProxyAgent is true, query azure-proxy-agent status,
waiting up to 120 seconds for the proxy to negotiate with Wireserver
and configure an eBPF proxy.  Once azure-proxy-agent is ready,
it will exit with code 0 and cloud-init can then expect to be able to
communicate with these services.

Fail deployment if azure-proxy-agent is not found or otherwise returns
an error.

For more information, check out:
https://github.com/azure/guestproxyagent
)zazure-proxy-agentz--statusz--wait�120z
Executing z resulted in stderr=z
 with stdout=rzGFailed to activate Azure Guest Proxy Agent: azure-proxy-agent not foundzDFailed to activate Azure Guest Proxy Agent: status check failed cmd=rrrN)rr*r�r�r��
isinstance�reasonrrr�!ReportableErrorProxyAgentNotFoundrr�rr�r�&ReportableErrorProxyAgentStatusFailure)r�r��out�errr�report_error�reportable_errors       r5�_check_azure_proxy_agent_status�/DataSourceAzure._check_azure_proxy_agent_status1s���%	7��C��y�y��~�H�C�#�14�c�3�@��I�I�
��
�)�)�	7��%�,�,�(9�:�:��	�	�2�� &�G�G�I���$�$�\�2�2�'�
�	�	�����������!$�	�	���A�A�%�H�!��$�$�%5�6�6��1	7�s �AA�D7�AD2�6A7D2�2D7c	�2
�0nURSnSnSS0nSSSS000nSn0n[URU5H�nURS5(a][R
"5(a[R"U[S	S
9upFpWO[R"U[5upFpWX�lO[U5upFpWUn[SU-[RS9  O Sn	[U	[RS9 [UR5=(d USLn
U
(aSOSnUR!US9 0nUR%5(a5UR'S5(aUR)5 UR+SS9nU(d&Uc#Sn	[U	5 [,R."U	5eUR1X\5n
U
[2R4:wGa�[R
"5(a0Sn	[U	[R6S9 [,R."U	5eUR%5(d0Sn	[U	[R6S9 [,R."U	5eU
[2R8:XaUR;5 OZU
[2R<:XaUR?5 O5U
[2R@:XaURC5 OURE5 URG5upFpWUR'S5(aUR)5 UR+SS9nURIU5nUS[2R4RJ4;a$URM[NRP"SUS95 URSUS9 U=(d SUl*URWUU[RX"USU0/5US.5 [[U5n[]U5n[_U5nU(a [RSU5 X�SSS'U(a[RS U5 UUS!S'Ub#[RS"U5 U(+US#S$'URTS:XaUS%(d[aUUUS&9nS'U0US%'U(d^[eU5nU(aL[RS)5 [fRh"SRkURm555US*'X2:Xa[S,U-[RS9 [o5nU(aUUS!S-'URq5US!S.'URrS/LakUR%5(aVURuX\S09nURwUS19n[RS2U5 U(aUUS!S3'URy5 U$U$![a  [S
U-[RS9 GM�[Ra  [SU-[RS9 GM�f=f!["a GN�f=f![ba&n[S(U-[RS9 SnAGN�SnAff=f![ba [S+[RS9 GN�f=f![ba U$f=f)4z�Walk 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�N�local-hostnamer��system_info�default_userr�r��udf)�mtypez!Found provisioning metadata in %srz$Did not find Azure data source in %sz%s was not mountablez�Unable to find provisioning media, falling back to IMDS metadata. Be aware that IMDS metadata does not support admin passwords or custom-data (user-data only).�r��r��ProvisionGuestProxyAgentT)�report_failurezNo OVF or IMDS availablez%Free BSD is not supported for PPS VMszDHCP failed while in source PPSzextended.compute.ppsType)�key�value)�imds_md�IMDSr)r��files�metadata�userdata_rawz Username retrieved from IMDS: %sz Hostname retrieved from IMDS: %sr@z(Disable password retrieved from IMDS: %sr��
ssh_pwauthr?)�username�hostname�
disableSshPwd�ovf-env.xmlz)Failed to construct OVF from IMDS data %szRetrieved userdata from IMDSrAzBad userdata in IMDSzusing files cached in %s�random_seedr8F)r�r=��pubkey_infoznegotiating returned %s�public-keys)=r��list_possible_azure_dsr�r[r�
is_FreeBSD�mount_cb�load_azure_ds_dirr�r*r�r�r!�MountFailedErrorr��boolrrr#�getr/�get_metadata_from_imdsr�InvalidMetaDataException�_determine_pps_typer;rGrrI�_wait_for_pps_running_reuserJ�_wait_for_pps_savable_reuserH�_wait_for_pps_os_disk_shutdown�_wait_for_pps_unknown_reuse�_reprovision�_ppstype_from_imdsr<rr�"ReportableErrorImdsInvalidMetadata�validate_imds_network_metadatar��updater��_username_from_imds�_hostname_from_imds�_disable_password_from_imdsr%�	Exception�_userdata_from_imds�base64�	b64decodervrY�_get_random_seed�_iid�_negotiated�!_determine_wireserver_pubkey_info�
_report_ready�_cleanup_markers)r��crawled_data�ddir�
ovf_source�mdr�rAr?�src�msg�requires_imds_metadatar�r=�pps_type�imds_ppstype�
imds_username�
imds_hostname�imds_disable_password�contents�e�
imds_userdatar�rI�ssh_keyss                        r5�crawl_metadata�DataSourceAzure.crawl_metadatags0�����{�{�:�&���
���
#���~���|�<�=������)�$�-�-��>�C�
��>�>�'�*�*����(�(�7;�}�}��!2�%�8�4��#�u�8<�}�}��!2�8�4��#�%(�M�3D�S�3I�0�B�c� �
�'�7�*�D� #�	�	���+?�FC�
�

$�C�S�[�[�A�"&�d�m�m�!4�!J�
�d�8J�� 6�"�A��	��,�,�_�,�M����+�+�-�-��w�w�1�2�2��4�4�6��1�1��1�F�G��:�-�,�C�#�C�(��2�2�3�7�7��+�+�C�9���w�|�|�#���� � �=��'�����C��6�6�s�;�;��3�3�5�5�7��'�����C��6�6�s�;�;��7�?�?�*��0�0�2��W�_�_�,��0�0�2��W�_�_�,��3�3�5��0�0�2�+/�+<�+<�+>�(�B�c��w�w�1�2�2��4�4�6��1�1��1�F�G� �2�2�7�;�L��D�'�,�,�*<�*<�#=�=��$�$��=�=�6�l���	
�+�+�G�+�<��(�&��	������ �.�.��V�W�4E�/F�G� ,�	
�	
�,�G�4�
�+�G�4�
� ;�G� D����I�I�8�-�H�9F�
��~�.�v�6���I�I�8�-�H�9F�L��$�%5�6� �,��I�I�:�%�
�5J�0I�L����-��9�9���|�G�'<�
�,�*�*�"7���
*7��(A��W�%��/��8�M���	�	�8�9��39�3C�3C����
� 3� 3� 5�6�4�L��0���#�*�T�1�s�y�y�
� �!���6:�L��$�]�3�26�)�)�+��Z� ��/����u�$��)I�)I�)K�)K��@�@��A��K�

(��-�-�+�-�F��
�	�	�3�X�>��>F�L��,�]�;��%�%�'���|���Q&�
�'�:�S�@� #�	�	����(�(�
�'�*�S�0�c�i�i���	
��, �	��	��x�
�'�?�!�C� #�	�	����
�� !��+�.�C�K�K����,�
����
�sf�BV<�&X�:X,�;6Y�4Z�<%X�%.X�X�
X)�(X)�,
Y�6Y�Y�"Z�Z�
Z�Zr:c�B�[5nUS-nUR(dSnOSnSnSn[R"UUS9$![arn[U5n[5U-
n[R"XxS9nUR(d+[UR[R5(aSnSnAO9SnAf[a)n[U5n[R"US9nSnAOSnAff=fURXa(+S9 [SU-[ R"S	9 0$)
Ni,�)�max_connection_errors�retry_deadline)�	exceptionrF)r�rz!Ignoring IMDS metadata due to: %sr)rr�r� fetch_metadata_with_api_fallbackr-r�r�ReportableErrorImdsUrlErrorr'�cause�requests�ConnectionError�
ValueError�+ReportableErrorImdsMetadataParsingExceptionrr*r�r�)	r�r:rr�r�error_string�error_reportrrs	         r5rR�&DataSourceAzure.get_metadata_from_imds?s���[�
�#�c�)���.�.�$&�!�$(�!�&*��9=��	��8�8�&;�-��
���
	'��u�:�L� �{�Z�/�H�!�=�=���L��2�2�z����X�5�5�8�8�"'�����	��u�:�L�!�M�M���L��	��	
���\�5G��H��/�,�>����	
��	s$�A�
C-�
A(B7�7
C-�C(�(C-c�V>�[[U]U5 [RUlg)z.Reset any cached class attributes to defaults.N)r�r��clear_cached_attrsr�UNSET�_metadata_imds)r��
attr_defaultsr�s  �r5r��"DataSourceAzure.clear_cached_attrsms���
�o�t�7�
�F�%�m�m��r6c��[RR5nUbgURcg[	URS5R5$)zACheck platform environment to report if this datasource may
run.
TFrF)r�ChassisAssetTag�query_systemr�r�exists)r��chassis_tags  r5�	ds_detect�DataSourceAzure.ds_detectrsJ��
�.�.�;�;�=���"���=�=� ���D�M�M�=�1�8�8�:�:r6c���[5 [	5 UR5nUR5 UR(aDURRS:Xa*URRS5(a
[5 [ n["R$R'U5(a@[)SU-[R*S9 [,R."US	[0/5UlO%[)S
U-[R*S9 US	UlUSSUl[,R."US[6/5UlUS
Ul[=URSUSSS9 g![a!n[RSU5 SnAGN�SnAff=f![a!n[RSU5 SnAGN�SnAff=f![Ra+nURU5 SnAUR5 gSnAf[aAn[R"U5nURU5 SnAUR5 gSnAff=f!UR5 f=f)z�Crawl and process datasource metadata caching metadata as attrs.

@return: True on success, False on error, invalid or disabled
    datasource.
z Failed to get boot telemetry: %sNz$Failed to get system information: %sF�ubuntur�zXEphemeral resource disk '%s' exists. Merging default Azure cloud ephemeral disk configs.rr�zdEphemeral resource disk '%s' does not exist. Not merging default Azure cloud ephemeral disk configs.r@rrAr�r?i�)�dirmodeT)r'rar�r�r)r{r�ReportableErrorrr �!ReportableErrorUnhandledExceptionr�r�r�rQ�*maybe_remove_ubuntu_network_config_scripts�RESOURCE_DISK_PATHr�r�r�r*r�rr��#BUILTIN_CLOUD_EPHEMERAL_DISK_CONFIGr�r��DEFAULT_METADATAr@rA�write_files)r�rxrkrr.�devpaths      r5�	_get_data�DataSourceAzure._get_data�s'��	?�� �	C���
	2��.�.�0�L�
�/�/�1�
�K�K���� � �H�,������ 6�7�7�6�8�%��
�7�7�>�>�'�"�"�#�F��� �I�I�	
��)�)��e�$�&I�J��D�H�
$�J��� �I�I�	
�$�E�*�D�H�*�:�6�v�>����*�*�
�*�
%�'7�8�
��
�)��8���	��K�K�
�#�\�'�%:�E�	
���}�	?��K�K�:�A�>�>��	?��
�	C��K�K�>��B�B��	C��
�%�%�	�� � ��'��
�/�/�1���	�%�G�G��N��� � �!1�2���/�/�1��	��

�/�/�1�si�
E4�
F"�G�4
F�>F�F�"
G
�,G�G
�I�$H
�5I�

I�'I�>I�I�I�I-c��UR(aSUR;aUR5$[URS5$)Nr8)r@rfr�rs r5�get_instance_id�DataSourceAzure.get_instance_id�s4���}�}�
�T�]�]� B��9�9�;���4�=�=��/�0�0r6c�>�URSRU5$)Nr�)r�rQ)r�r�s  r5�device_name_to_device�%DataSourceAzure.device_name_to_device�s���{�{�>�*�.�.�t�4�4r6c��URURS5$![[4a UR	5$f=f)z
Retrieve public SSH keys.
r)�_get_public_keys_from_imdsr@�KeyErrorr��_get_public_keys_from_ovfrs r5�get_public_ssh_keys�#DataSourceAzure.get_public_ssh_keys�sG��
	��2�2�4�=�=��3H�I�I���*�%�	���-�-�/�/�	�s� �A�Ar=c�v�USSVs/sHnUSPM
 nn[	SU55(a%Sn[U[RS9 [U5eSR
[U55n[U[RS9 U$s snf![a Sn[U[RS9 ef=f)	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.
�compute�
publicKeys�keyDataz"No SSH keys found in IMDS metadatarc3�># �UHn[US9(+v� M g7f))r;N)�_key_is_openssh_formatted)�.0r;s  r5�	<genexpr>�=DataSourceAzure._get_public_keys_from_imds.<locals>.<genexpr>�s���J��#�,��5�5�5��s�zKey(s) not in OpenSSH formatzRetrieved {} keys from IMDS)r�r*r�r��anyr�r�rZ)r�r=�
public_keyrz�log_msgs     r5r��*DataSourceAzure._get_public_keys_from_imds�s���	�#*�)�"4�\�"B��"B�J��9�%�"B�
���J��J�J�J�4�G�#�G����C��W�%�%�/�6�6�s�8�}�E����S�Y�Y�?����!���	�:�G�#�G����C��	�s�
B�B
�B�
B�&B8c���/nURSnSR[U55n[U[R
S9 U$![a Sn[U[R
S9 U$f=f)zIGet SSH keys that were fetched from wireserver.

:returns: List of keys.
rJzRetrieved {} keys from OVFrzNo keys available from OVF)r@r�rZr*r�r�r�)r�rzr�s   r5r��)DataSourceAzure._get_public_keys_from_ovf�sq��
��	D��}�}�]�3�H�2�9�9�#�h�-�H�G�#�G����C�
���	�	D�2�G�#�G����C���		D�s�AA�$A/�.A/c��UR$�N�r�rs r5�get_config_obj�DataSourceAzure.get_config_obj	s���x�x�r6c�J�[R"UR55$r�)r�instance_id_matches_system_uuidr�)r�r�s  r5�check_instance_id�!DataSourceAzure.check_instance_ids���6�6�t�7K�7K�7M�N�Nr6c��[RRURR	S5S5n[
R"5n[RRU5(aQ[R"U5R5n[
R"U5nUR5X44;aU$U$)Nr�r8)
r�r�rvr��	get_cpathr�query_system_uuidr�r�load_text_file�strip�byte_swap_system_uuidrw)r��previous�
prev_iid_path�system_uuid�
swapped_ids     r5rf�DataSourceAzure._iids���������J�J� � ��(�-�
�
��0�0�2��
�7�7�>�>�-�(�(��*�*�=�9�?�?�A�H�!�7�7��D�J��~�~��K�#<�<����r6c�x�Sn[R"SS[S9 [R"U5nSSS5 UcSn[U[RS9 g[SU-[RS9 g!,(df   NH=f![a'n[[U5[RS9 eSnAff=f)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.rz%The preprovisioned nic %s is detached)rr
r#r�wait_for_nic_detach_eventr*r�r�r��AssertionErrorr�r)r��nl_sock�ifnamerprs     r5�_wait_for_nic_detach�$DataSourceAzure._wait_for_nic_detach!s���	��F��(�(�*�1�(��
!�:�:�7�C����~�2��(�����E�'�;�f�D� #�	�	�����"�	�#�C��J�C�I�I�F���	�s3�B�A7�%B�B�7
B�B�
B9�"B4�4B9r��retriesc� �[U5H`nURRRU5(a[	SU-[
RS9  gUS-U:dMU[U5 Mb [	SXU-4-[
RS9 g)NzThe link %s is up.rrTz;The link %s is not up after %f seconds, continuing anyways.)�ranger��
networking�try_set_link_upr*r��infor)r�r�r�r�r�s     r5�wait_for_link_up� DataSourceAzure.wait_for_link_upAs����w��A��{�{�%�%�5�5�f�=�=�'�(�6�1�s�x�x����A��� ��k�"� �
$�M��[�0�1�2��H�H�
r6c��URn[RSU5 [R"USR[R"5[5S95 [S[RS9 g)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�r�r�
write_filer�r��getpidrr*r�)r�r�s  r5�_create_report_ready_marker�+DataSourceAzure._create_report_ready_markerUs\���/�/�����=�t�D�����#�*�*�r�y�y�{���*�H�	
�	 �
1��	�	�	
r6)�
create_marker�expect_url_errorr�r�c�j�UR5 SUlU(aUR5 gg![avnU(a9[U[5(a$[	S[
RS9 SUlSnANjSn[	U[
RS9 [R"U5UeSnAff=f)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.rNz9Failed reporting ready while in the preprovisioning pool.F)
rirar'r-r*r�r�r�rrrSrgr�)r�r�r�rrps     r5�_report_ready_for_pps�%DataSourceAzure._report_ready_for_ppsbs���	G���� �,!�����,�,�.���/�	G� �J�u�h�$?�$?�'�B� #�	�	��
!%��
�
�P��(�����C��6�6�s�;��F��%	G�s�2�
B2�;B-�<1B-�-B2c��[RS5 /nSnSn[R"SS[	U5-[
S9 [R"X5nSSS5 URU5 [SU-[RS9 URU5 U(d'[RS	U5 URUS
SS9nU(a[RS5 gUR5 M�!,(df   N�=f![a+n[[U5[RS9 SnAgSnAff=f)
z6Wait until the primary nic for the vm is hot-attached.z*Waiting for primary nic to be hot-attachedFNzwait-for-nic-attachz4wait for nic attach after %d nics have been attachedr�zDetected nic %s attached.rz!Checking if %s is the primary nicr7)r�r�r�zFound primary nic for this VM.)r�r�rr
rZr#r�wait_for_nic_attach_event�appendr*r�rr r�r�r)r�r��
nics_found�primary_nic_foundr�rs      r5�"_wait_for_hot_attached_primary_nic�2DataSourceAzure._wait_for_hot_attached_primary_nic�s-��	���=�>�3	G��J� %������,�,�.�N��j�/�*�-�
�%�>�>���F���!�!�&�)�'�/�&�8�c�h�h���%�%�f�-�
)��H�H�@�&�I�(,�(H�(H�$�(*�6;�)I�)�%�%��H�H�=�>���7�7�9�Q����P�	G�#�C��J�C�I�I�F��	G�s6�-D�C=�BD�+D�=
D�D�
E�!D>�>Ec��[R"5$![Ra!n[SU3[R
S9 eSnAff=f)Nz!Failed to create netlink socket: r)r�create_bound_netlink_socket�NetlinkCreateSocketErrorr*r�r)r�rs  r5�_create_bound_netlink_socket�,DataSourceAzure._create_bound_netlink_socket�sJ��	��6�6�8�8���/�/�	�#�3�E�7�;��I�I�
�
��	�s��A�A�Ac��URSS9 [S[RS9 [	S5 [
R"5e)z4Report ready and wait for host to initiate shutdown.F)r�z"Waiting for host to shutdown VM...ri�3�)r�r*r�r�rr�ReportableErrorOsDiskPpsFailurers r5rW�.DataSourceAzure._wait_for_pps_os_disk_shutdown�s?��	
�"�"��"�7��0����	
�	�h���4�4�6�6r6c�`�UR5nURbURRc[S5eURRnUR	5 [
R
SU5 [R"SS[S9 [R"X5 SSS5 UR5 UR!5 g![a%n[SU-[
RS9 SnANSSnAff=f!,(df   Na=f!UR5 f=f)	z9Report ready and wait for nic link to switch upon re-use.Nzmissing 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)r�r�r�rr�r�r�rr
r#r�!wait_for_media_disconnect_connectr�r*r�closer )r�r�r�rxs    r5rU�+DataSourceAzure._wait_for_pps_running_reuse�s����3�3�5��	��(�(�0��+�+�1�1�9�"�#>�?�?��,�,�2�2�E��&�&�(��I�I�5��
��(�(�8�2�(��
��=�=�g�M�
�
�M�M�O�	
�+�+�-��&��+�A�A�E�$'�I�I��������
�M�M�O�sH�BD�D
�C�/D�
D�"D�=D
�D�D
�

D�D�D-c�z�UR5nURSS9 UR5 URU5 URU5 UR5 g![Ra,n[SU-[RS9 SUlSnANnSnAff=f!UR5 f=f)z@Report ready and wait for nic(s) to be hot-attached upon re-use.T)r�zLIgnoring failure while tearing down networking, NIC was likely unplugged: %rrN)r�r�r rr�r*r�r�r�r�r�r)r�r�rxs   r5rV�+DataSourceAzure._wait_for_pps_savable_reuse�s����3�3�5��	��&�&��&�=�
0��3�3�5�
�%�%�g�.��3�3�G�<��M�M�O���-�-�
0�'�3�56�7� #����
,0��(�(��

0��
�M�M�O�s3�B(�A%�"B(�%B%�9"B �B(� B%�%B(�(B:c��[RRUR5(agUR	5 UR5 g)z0Report ready if needed for unknown/recovery PPS.N)r�r��isfiler�r�r rs r5rX�+DataSourceAzure._wait_for_pps_unknown_reuses:���7�7�>�>�$�:�:�;�;���"�"�$�	
�+�+�-r6c���SnSnU(dmUR5(dUS-
nURSS9 [R"SS[
S9 [R"5nSSS5 U(dMm[S	U-[RS
9 U$![a M�f=f![a UR5 SSS5 M�f=f!,(df   Nn=f)z0Poll IMDs for reprovisiondata XML document data.rNrTr�r8zget-reprovision-data-from-imdszget reprovision data from imdsr�z#attempted dhcp %d times after reuser)
r#rrrr
r#r�fetch_reprovision_datar-r r*r�r�)r��
dhcp_attempts�reprovision_datas   r5�
_poll_imds�DataSourceAzure._poll_imds s����
�,0��"��3�3�5�5���"�
���4�4�Q�4�G��(�(�5�<�(��
�'+�'B�'B�'D�$�
�#�"�&	 �1�M�A��	�	�	
� ���%(����� ���7�7�9��������s;�B�C�B'�
B$�#B$�'C
�C�C
�
C�
Crrc���[SUR53[RS9 [	5 [
R"U5nU(aU$UR5(a5[S[RS9 [URUS9 SUlg[S[RS9 UR5 URS	S
9 [URUS9 SUlg![a%n[SU-[RS9 SnANSnAff=f![a NZf=f![a%n[SU-[RS9 SnAgSnAff=f)
a�Report failure to Azure host and fabric.

For errors that may be recoverable (e.g. DHCP), host_only provides a
mechanism to report the failure that can be updated later with success.
DHCP will not be attempted if host_only=True and networking is down.

@param error: Error to report.
@param host_only: Only report to host (error may be recoverable).
@return: The success status of sending the failure signal.
z#Azure datasource failure occurred: rz>Using cached ephemeral dhcp context to report failure to Azure)�endpointrTz@Failed to report failure using cached ephemeral dhcp context: %sNz3Using new ephemeral dhcp to report failure to Azurer7r8z5Failed to report failure using new ephemeral dhcp: %sF)r*�as_encoded_reportr�rr+r�report_failure_to_hostr#r�r,r�rgrar rr)r�rr�reportedrxs     r5r�DataSourceAzure._report_failure>s\��	 �1�%�2I�2I�2K�1L�M��	�	�	
�	���-�-�e�4����O��+�+�-�-�
�'�1� #�	�	��
)�!�6�6�e��$(�� ��	�#�E��I�I�
�
�/�/�1�
��0�0��0�D�
%��2�2�%�
� $�D����-�
�'�8�:;�<� #�	�	���
��$�
��
���	�#�G�!�K��I�I�
�
��
	�sT�)3C2�(D4�D$�D4�2
D!�<D�D!�$
D1�.D4�0D1�1D4�4
E#�>E�E#rHrIc��[5 [R"5 [URUR
URUS9nSUlSUlU$![a!n[SU-[RS9 eSnAff=f)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.
)rr��iso_devrIzQError communicating with Azure fabric; You may experience connectivity issues: %srNT)r+r�report_success_to_hostr(r�r�r�rar*r�r�rg)r�rIr�rxs    r5ri�DataSourceAzure._report_ready�s���	���"�"�$�
	�+��2�2��{�{��
�
�'�	�D���
��������	�#�*�,-�.��K�K�
�

��
	�s�*A�
B�%B�Bc�~�USSS$![a%n[SU-[RS9 SnAgSnAff=f)N�extendedr��ppsTypez2Could not retrieve pps configuration from IMDS: %sr)rar*r�r�)r�r=rxs   r5rZ�"DataSourceAzure._ppstype_from_imds�sH��	��:�&�y�1�)�<�<���	�#�D�q�H��I�I�
���	�s�

�
<�7�<�ovf_cfgc��[RRUR5(a[R
nGOhUR
SS5[RR:Xd-URU5[RR:Xa[RnO�UR
SS5[RR:Xd-URU5[RR:Xa[RnO�UR
S5SLd[UR
SS5[RR:Xd-URU5[RR:Xa[RnO[Rn[SUR-[RS9 U$)z@Determine PPS type using OVF, IMDS data, and reprovision marker.�PreprovisionedVMTypeN�PreprovisionedVmTzPPS type: %sr)r�r�rr�r;rKrQrJr<rZrHrIrGr*r�r�)r�rr=rrs    r5rT�#DataSourceAzure._determine_pps_type�s/��
�7�7�>�>�$�:�:�;�;����H��K�K�.��5����9N�9N�N��&�&�w�/�7�?�?�3H�3H�H����H��K�K�.��5����9N�9N�N��&�&�w�/�7�?�?�3H�3H�H����H��K�K�*�+�t�3��{�{�1�4�8����$�$�%��&�&�w�/�7�?�?�3H�3H�H����H��|�|�H���X�^�^�+����	
��r6c��UR5n[R"SS[S9 [	U5up#nX#USU04sSSS5 $!,(df   g=f)zbInitiate the reprovisioning workflow.

Ephemeral networking is up upon successful reprovisioning.
zreprovisioning-read-azure-ovfz$read azure ovf during reprovisioningr�rFN)rrr
r#�read_azure_ovf)r�rwrn�udr�s     r5rY�DataSourceAzure._reprovision�sV���?�?�$��
�
$�
$�0�>�$�
�
)��2�K�B�C��C�-��!:�;�

�
�
�s�A
�

Ar�c���SnURU5 U$![[4aM URSS5nSR	Ub[U5OS5n[
U[RS9 U$f=f)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�rQr�rZr*r�r�)r�r�r=rIr�s     r5rh�1DataSourceAzure._determine_wireserver_pubkey_info�s���,0��	D��+�+�G�4����
�*�%�	D��'�'�*�d�3�K�:�A�A�$/�$;��K� ���G�
$�G����C���
	D�s��AA4�3A4c�D�[R"UR5 g)zCleanup any marker files.N)r�del_filer�rs r5rj� DataSourceAzure._cleanup_markers�s���
�
�d�6�6�7r6c��URR5n[UUURR	[
S5S9 [
5 g![
5 f=f)NF)�is_new_instance�
preserve_ntfs)r��
get_ipath_cur�address_ephemeral_resizer�rQ�DS_CFG_KEY_PRESERVE_NTFSr+)r�r�r+�instance_dirs    r5�activate�DataSourceAzure.activate�sO���z�z�/�/�1��	"�$�� /�"�k�k�o�o�.F��N�
�
 �!���
 �!�s�)A�Ac�x�URRS05RS05RS5$)Nrr��platformFaultDomain�r@rQrs r5�availability_zone�!DataSourceAzure.availability_zone�s4��
�M�M���f�b�)�
�S��B�
�
�S�&�
'�	
r6c���UR(aoUR[R:waQURR	S5(a1[URSURR	S5S9$[5$![a)n[RS[U55 SnAN9SnAff=f![a*n[RS[U55 SnA0$SnAff=f)z:Generate network configuration according to configuration.r��networkr�)r�z?Failed generating network config from IMDS network metadata: %sNz-Failed generating fallback network config: %s)r�rr�r�rQ�6generate_network_config_from_instance_network_metadatarar�rr��-_generate_network_config_from_fallback_config)r�rxs  r5�_generate_network_config�(DataSourceAzure._generate_network_configs���

����#�#�w�}�}�4������ 6�7�7�
�M��'�'�	�2�;?�;�;�?�?�@�<���	O�@�B�B���
��	�	�5���F����
���	O��I�I�E�s�1�v�N�N��	��	O�s0�/B�	C�
B?�B:�:B?�
C6�C1�1C6c��UR(a*UR[R:waUR$UR5UlUR$)z,Provide network configuration v2 dictionary.)r�rr�r<rs r5�network_config�DataSourceAzure.network_config$sG�����D�$8�$8�G�M�M�$I��'�'�'�#�<�<�>����#�#�#r6c�x�URRS05RS05RS5$)Nrr��locationr5rs r5�region�DataSourceAzure.region.s1���}�}� � ���,�0�0��B�?�C�C�J�O�Or6c��[5nUSnUSVs/sHn[US5PM nnUVs/sHofU;dM
UPM nnU(dg[SU<S	U<3[
RS9 UR(aURR(dg[R"URR5nU(a[U[5(dg[U5nX�;a [S
U<S	U<3[
RS9 gs snf![a- [SUR	S5-[
RS9 gf=fs snf)z=Validate IMDS network config and report telemetry for errors.r9r�
macAddressz6IMDS network metadata has incomplete configuration: %rrFTz8IMDS network metadata is missing configuration for NICs r�z-IMDS network metadata is missing primary NIC )
r}rxr�r*rQr�r�r�r�r�get_interface_macr'r�)	r�r=�
local_macsr?r��	imds_macs�m�missing_macs�primary_macs	         r5r\�.DataSourceAzure.validate_imds_network_metadata2sA��3�4�
�	�$�Y�/�N�(��4��4�A�&�a��o�6�4�
��$.�D�:�a�)�1C��:��D�����^�
-����	
��'�'�t�/G�/G�/M�/M���+�+�D�,D�,D�,J�,J�K���*�[�#�">�">��+�K�8���&�#���0��K�K�
���O���	�#�H��+�+�i�(�)��K�K�
�
�
	��Es,�D�D�D�	E�E�D�4E�E)r�r�r�rgr�r�r�r�r�r�r�r@r�r�rA)rhN)rBr�)r�g�������?)F)PrCrDrErF�dsnamer�NETWORKr�BOOT_NEW_INSTANCE�BOOT�default_update_eventsrgrr�r��_ci_pkl_versionr��intr�r�r�r$rrPr�rr�rr r#r/r{r	rRr�r�r�r�r�r
r��dictr�r�r�r�rfr��floatr�r�r�r��socketr�rWrUrVrX�bytesrrr�rrirZr;rTrYrhrjr1�propertyr6r<r?rCr\rL�
__classcell__)r�s@r5r�r�8s����
�F�����'�'��N�N�
����K��]�]�N��O�
�$

��

��

�2�
9�!�
�)=�
�$�
�!�
�*!� $�.2�� �
T���}�T�(,�	T�
�T��
T�
�T�!�T�l!�(�!�(�
�T�
�47�l!�U�!�U�n!�+�T�+�d�+�!�+�Z,�
!�;�!�;�!�F�!�F�P1�
5�!�	0�T�#�Y�	0�!�	0��$��4��9��6�4��9�� �O��"!��!��>!�DG����$'��<A��!��&!�

�!�

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

�$/�!�$/�L!�6G�!�6G�p!��f�m�m��!��!�	7�!�	7�!�".�!�".�H!��!��*!�	.�!�	.�!� �E� �!� �:!�?D�?��+�+�?�8<�?�	
�?�!�?�B!�48� �&�t�C�y�1� �	�$�s�)�	� �!� �D�$��8�C�=���4��$��7��:!�<�!�<�!����%)��	�$�s�)�	��!��$8�!�
�!�
��
��
�!��!��<�$��$��P��P�!�-�d�-�t�-�!�-r6r�c�:�USSS$![a gf=f)Nr��	osProfile�
adminUsername�r���	imds_datas r5r^r^cs.�����#�K�0��A�A��������

�
�c�4�USS$![a gf=f)Nr��userDatar^r_s r5rbrbjs)�����#�J�/�/������s�
�
�c�:�USSS$![a gf=f)Nr�r\�computerNamer^r_s r5r_r_qs.�����#�K�0��@�@������rac�@�USSSS:H$![a gf=f)Nr�r\�disablePasswordAuthentication�truer^r_s r5r`r`xs;����i� ��-�.M�N��
�	
������s�
�
�c��SUR5;ag[R"5nURU5nUR
SL$![a gf=f)z7
Validate whether or not the key is OpenSSH-formatted.
z
FN)r�r�AuthKeyLineParser�parse�	TypeError�keytype)r;�parser�akls   r5r�r��s[��
�������
�
'�
'�
)�F���l�l�3����;�;�d�"�"������s�A�
A�Ac�$�SH�n/n[SU5HinX-[U5-n[RR	U5(dM9URU[RR
U545 Mk U(dM�Us $ /$)N)z-part�pr�rT)r�r�r�r�r�r��realpath)r��maxnum�suff�found�pnum�ppaths      r5�_partitions_on_devicerx�sx��"�����!�V�$�D��N�S��Y�.�E��w�w�~�~�e�$�$����d�B�G�G�$4�$4�U�$;�<�=�%��5��L�#��Ir6c��[R"SSS9n[RSU5 [R
R
U5U;$)Nz	TYPE=ntfsT)�no_cachezntfs_devices found = %s)r�find_devs_withr�r�r�r�rr)r��ntfs_devicess  r5�_has_ntfs_filesystemr}�s=���&�&�{�T�B�L��I�I�'��6�
�7�7���G�$��4�4r6c
��U(a&SSR[5<S[<S3nSU4$[RRU5(dSSU-4$[RSU[RRU55 [U5nU(dSSU-4$[U5nUS:�a0S	U<S
SRUVs/sHoUSPM	 sn5<3nSU4$US:XaUSupgOUS
upg[U5(dSU<SU<SU<S3nSU4$[S5nSU<SU<SU<S3n	[R"SS[S9n
[ R""UUSSS0SS9nUS
:waKS!U-U
l[R+S"SR[5[5 SU	S#U--4sSSS5 $SSS5 SU	S$-4$s snf![ R$aMnSU
lS[)U5;aSU	S-4sSnAsSSS5 $SU	SU<S U<3-4sSnAsSSS5 $SnAff=f!,(df   N~=f)%acDetermine 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 (rUz), skipping checksFzdevice %s does not existzResolving realpath of %s -> %szdevice %s was not partitionedrQzdevice z had 3 or more partitions: r�rTrz
partition r�z) on device z was not ntfs formattedc��[SS/5n[[R"U5Vs/sHo"R	5U;dMUPM sn5$s snf)Nzdataloss_warning_readme.txtzsystem volume information)�setrZr��listdirrw)�mp�ignored�fs   r5�count_files�+can_dev_be_reformatted.<locals>.count_files�sG���
*�,G�H�
���r�z�z�"�~�J�~�!����'�1I�A�~�J�K�K��Js�A�Az was ntfs formattedzmount-ntfs-and-countr��ntfs�LANG�C)r6�update_env_for_mount�	log_errorzcannot 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.)rvr�r/r�r�r�r�r�rrrxrZr}r$rr
r#rrMrOrr�r�)
r�r,rp�
partitions�
partition_lenrq�	cand_part�	cand_pathr��bmsg�evt�
file_countrxs
             r5�can_dev_be_reformattedr��s���&��H�H�[�!�$�
���c�z��
�7�7�>�>�'�"�"��0�7�:�:�:��I�I�(�'�2�7�7�3C�3C�G�3L��'�w�/�J���5��?�?�?��
�O�M��q����H�H�J�/�J�q��d�J�/�0�
���c�z�����)�!�}��	�9�)�!�}��	��	�*�*����
��
�c�z�� �L�!�L�	����D�
�	 �	 �
#�*� �
�

�	P�������&,�c�]���J�(��?�<�z�I�C�O��K�K�'�����%�(�
��$�!;�j�!H�H�H�G
�
�4�5
�J��M�M�M�M��G0��V�$�$�	P�1�C�O�/�3�q�6�9��� /�/���!
�
�0�$�)�Q�!O�O�O�O�1
�
��	P��
�
�sU�G�H:�G�0AH:�H7�*H2�H7�H:�H2�#H7�$H:�2H7�7H:�:
IFr0r�r+r,c���[RRU5(d[SU-[R
S9 g[SU-[R
S9 SnSnU(aSupEO
[
X5upE[RSXE5 U(dgSH�n[RRUSS	U-5nS
U<SU<S3n[RRU5(a/[R"U5 [RS
U5 M�[RSU5 M� g![a!n	[RSX�5 Sn	A	M�Sn	A	ff=f)Nz,Ephemeral resource disk '%s' does not exist.rz$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�r�rv�unlinkrr�)
r0r�r+r,�resultrp�mod�sempathr�rxs
          r5r.r.s ���7�7�>�>�'�"�"��:�W�D��	�	�	
�	��2�W�<��	�	�	
�
�F�
�C��4����,�W�D����I�I�$�f�2���'���'�'�,�,�|�U�I��O�D��07��=��
�7�7�>�>�'�"�"�
@��	�	�'�"��	�	�-��.�
�I�I�)�4�0�(���	%�
@����5�t�?�?��
@�s�0,D9�9
E$�E�E$c��SnU(dgU(d0n[R"X5 UR5HGupE[RRX5nSU;aU"XV5n[R"XeSS9 MI g)Nc�@�[R"U5nUR5H6nSUR;dMUR[
:wdM+[
UlM8 [R"U5$![a [RSU5 Us$f=f)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�tostringrar��critical)�cnt�fnamer��elems    r5�_redact_password�%write_files.<locals>._redact_passwordFsy��	��=�=��%�D��	�	���"�d�h�h�.��	�	�%9�9� 4�D�I�$��;�;�t�$�$���	��L�L�>��F��J�	�s�7A8�A8�$A8�8"B�BrFi�)�filename�content�mode)r�
ensure_dirrer�r�rvr�)�datadirr?r�r�r�r�r�s       r5r�r�Dsg��
�������O�O�G�%�����
�������W�+���D� �&�w�6�G�����e�D�	'r6c�t�[R"U5n0n0nUR=(d SnUR(aURUS'UR(aURUS'UR
bUR
(+US'OUR(aSUS'0nUR(aURUS'UR(a1SUS'[UR:wa[UR5US	'U(aS
U0US'URUS'[S
UR-[RS9 URUS'[SUR-[RS9 URUS'[SUR-[RS9 X$U4$)z�Parse OVF XML contents.

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

:raises NonAzureDataSource: if XML is not in Azure's format.
:raises errors.ReportableError: if XML is unparsable or invalid.
r�r2r%rBTr�F�lock_passwd�
hashed_passwdr4r3rzPreprovisionedVm: %srrzPreprovisionedVMType: %sr9zProvisionGuestProxyAgent: %s)r"�
parse_text�custom_datarD�public_keys�disable_ssh_password_auth�passwordrCr��encrypt_pass�preprovisioned_vmr*r�r��preprovisioned_vm_type�provision_guest_proxy_agent)rw�ovf_envrnr�r"�defusers      r5r!r!as����"�"�8�,�G��B�
�C�	�	�	�	"��B����&�/�/�������!�-�-��J���(�(�4� '� A� A�A��L��	�	�	� ��L���G����!�*�*�������!&��
���7�#3�#3�3�'3�G�4D�4D�'E�G�O�$��,�g�6��M��%�7�7�C������!:�!:�:��H�H��
#*�"@�"@�C����"�W�%C�%C�C��H�H��
'.�&I�&I�C�"�#��&��)L�)L�L��H�H��
�C�=�r6c��[U5$r�)r1)r�s r5r�r��s
����"�"r6c��[U5nURS5 SSS5 g!,(df   g=f![a [R	SU5 gf=f)z;Return boolean indicating path to cdrom device has content.iNTzcdrom (%s) is not configuredF)�open�read�IOErrorr�r�)�	cdrom_dev�fps  r5�_check_freebsd_cdromr��sO��=�
�)�_���G�G�D�M���_�_�
���=��	�	�0�)�<��=�s#�:�)�:�
7�:�:� A�Ac�|�Ucg[R"USS9n[R"U5R	5$)zEReturn content random seed file if available, otherwise,
return None.NT)�quiet)r�load_binary_filerc�	b64encode�decode)�sourcer�s  r5rere�s:���~��� � ��t�4�D����D�!�(�(�*�*r6c#�# �Uv� [v� [R"5(aSn[U5(aUv� O*SH$n[R"SU-5Shv�N M& U(aUv� ggN7f)Nz/dev/cd0)�iso9660r5zTYPE=%s)�DEFAULT_PROVISIONING_ISO_DEVrrLr�r{)r��	cache_dirr��fstypes    r5rKrK�sh���
�J�
&�&�������	��	�*�*��O��(�F��*�*�9�v�+=�>�>�>�)�����
?�s�AA9�!A7�"A9c��[RRUS5n[RRU5(d[	S5e[
R"S5 [US5nUR5nSSS5 SSS5 [W5upEnXEUSU04$!,(df   N+=f!,(df   N4=f)NrFzNo ovf-env file foundzReading ovf-env.xml�rb)
r�r�rvrr!r
�Timedr�r�r!)�
source_dir�ovf_filer�rwrnr"r�s       r5rNrN�s����w�w�|�|�J�
�6�H�
�7�7�>�>�(�#�#� �!8�9�9�	�	�	�0�	1�4��$�3G�2��7�7�9��4H�	1�!��*�K�B�C��C�-��2�3�3�	4H�3G��	1�	1�s$�&
B:�3B)�B:�)
B7	�3B:�:
C�network_metadatar�c
�@�S0S.n[US5GH�up4SnSRUS9nSUS-S	-0nUS
:�aSUS'SUSS
.nSH�n	URU	05RS/5n
U
(d[R	SX�5 MDSnU	S:XaSnOSnU
(a	SUS'XxS'U(dMjU
SSH^nXISS
RSU5n
USnURS5(d/US'USRSRX�S95 M` M� U(a]U(aV[
US5nURSUR50US.5 [U5nU(aUUS S!'X�S"U'GMm[R	S#UUU5 GM� U$)$z�Convert imds network metadata dictionary to network v2 configuration.

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

:return: Dictionary containing network version 2 standard configuration.
rQ)�version�	ethernetsrFzeth{idx})�idxzroute-metricrTr�rzuse-dnsT)�dhcp4zdhcp4-overrides�dhcp6)�ipv4�ipv6�	ipAddresszNo %s addresses found for: %rr��24�128r�zdhcp6-overridesN�subnet�prefix�privateIpAddress�	addressesz
{ip}/{prefix})�ipr�rF�
macaddress)�matchzset-namer�r	r�z<No configuration for: %s (dev_config=%r) (has_ip_address=%r))
�	enumerater�rQr�r�r�rxr]rwr�)r�r��	netconfigr��intf�has_ip_address�nicname�
dhcp_override�
dev_config�	addr_typer��default_prefix�addr�	netPrefix�	privateIprnr	s                 r5r:r:�s���-.�B� ?�I��/��<�=�	�����#�#��#�,��'�#��'�S��9�
���7�',�M�)�$��,��&
�
�
*�I�����B�/�3�3�K��D�I���	�	�9�9�K��!�N��F�"�!%��!&���*.�J�w�'�5B�0�1�9��!�!�"�
�� �O�H�5�a�8�<�<��n��	�!�!3�4�	�!�~�~�k�2�2�.0�J�{�+��;�'�.�.�#�*�*�i�*�J��&�-*�B�.�'��\�(:�;�C����'�����5�7�K�
�5�S�9�F��06�
�7�#�H�-�.8�k�"�7�+���	�	�J����		
�w>�B�r6c�8�[R"SS9nUc0$U$)zlGenerate fallback network config.

@return: Dictionary containing network version 2 standard configuration.
T)�
config_driver)r�generate_fallback_configr�s r5r;r;,s#���
&�
&�T�
:�C�
�{��	��Jr6c���U(d[nSnUH�n[RRU5(dM)U(dJ[RS[RR[RR/5 Sn[RRU5(a[R"U5 M�[R"U5 M� g)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�r�rrQr<�BOOT_LEGACY�isdirr�del_dirr()r��loggedr�s   r5r�r�8s���&�/��
�F���
�7�7�>�>�$�������-��^�^�)�)�9�+@�+@�+F�+F�G�	����w�w�}�}�T�"�"����T�"��
�
�d�#�r6c�8�[R"U[5$r�)r�list_from_depends�datasources)�dependss r5�get_datasource_listrhs���$�$�W�k�:�:r6r�)r.)�rc�	functools�loggingr��os.pathrWrW�xml.etree.ElementTree�etree�ElementTreer��enumr�pathlibrrrr�typingrr	r
rr��	cloudinitrr
rrrr�cloudinit.eventrr�
cloudinit.netr�cloudinit.net.dhcprrr�cloudinit.net.ephemeralrr�cloudinit.reportingr�cloudinit.sources.azurerrrr�cloudinit.sources.helpersr�cloudinit.sources.helpers.azurer r!r"r#r$r%r&r'r(r)r*r+r,�cloudinit.url_helperr-�crypt�partial�rand_strr1�__annotations__r3�AttributeError�passlib.hash�passlib�hash�sha512_crypt�	getLoggerrCr��DS_NAMEr�r��
DEFAULT_FS�AGENT_SEED_DIRr�r;rMr�r�rarfrmrxr}r�r�r�r�r�r�rL�res_diskr�r�r�r�r/r�r�r�r^rbr_r`r�rxr}r�rPr.r�r!r�r�rerKrNrUr:r;r��DataSourceAzureNet�DEP_FILESYSTEMrrrBr6r5�<module>r(sp�����	��	�
�"�"���'�'�,�,��E�E�1�'���
J�&�?�?�-�����*���"�*�*�
���C��
�
�R� 8�9�:��M�3��(����!��
��!�#3�4��6��
�
�#��)���d��*J���#��I�#���,�&���c��h�s�m��"�s��s����t�C�y���������#�����4�C��D�=�7�'�X�c�]�'�V�?�?����J�+�A�.�H����	�	�-�.�$�x�/���	�	�)�*�"���!�#5�6� �.2�	��	���e��
��!+�n�E�F�	'�#��W�%��/��"��h�g�(�(�h�V)����#�"
��5��5��mN��mN�`�&�!��	(��(�
�(��(��	(��(�V�E��E�8�4��4�n#������3�+��+�(�����
4��
4��M��M�-1�M�
�	M��M�`��t�����"$��"$�L%���w�-�-�/�0���;��_A	�^�$��
�����1�1�6�6�
���	�	�	���s*�:5J4�4K6�=$K$�$	K2�-K6�1K2�2K6

Filemanager

Name Type Size Permission Actions
DataSourceAkamai.cpython-313.pyc File 12.33 KB 0644
DataSourceAliYun.cpython-313.pyc File 18.33 KB 0644
DataSourceAltCloud.cpython-313.pyc File 9.85 KB 0644
DataSourceAzure.cpython-313.pyc File 79.75 KB 0644
DataSourceBigstep.cpython-313.pyc File 2.86 KB 0644
DataSourceCloudCIX.cpython-313.pyc File 7.22 KB 0644
DataSourceCloudSigma.cpython-313.pyc File 5.18 KB 0644
DataSourceCloudStack.cpython-313.pyc File 13.11 KB 0644
DataSourceConfigDrive.cpython-313.pyc File 14.2 KB 0644
DataSourceDigitalOcean.cpython-313.pyc File 6.2 KB 0644
DataSourceEc2.cpython-313.pyc File 43.31 KB 0644
DataSourceExoscale.cpython-313.pyc File 8.9 KB 0644
DataSourceGCE.cpython-313.pyc File 16.12 KB 0644
DataSourceHetzner.cpython-313.pyc File 6.46 KB 0644
DataSourceIBMCloud.cpython-313.pyc File 18.43 KB 0644
DataSourceLXD.cpython-313.pyc File 20.3 KB 0644
DataSourceMAAS.cpython-313.pyc File 18.29 KB 0644
DataSourceNWCS.cpython-313.pyc File 6.76 KB 0644
DataSourceNoCloud.cpython-313.pyc File 17.26 KB 0644
DataSourceNone.cpython-313.pyc File 1.88 KB 0644
DataSourceOVF.cpython-313.pyc File 15.34 KB 0644
DataSourceOpenNebula.cpython-313.pyc File 18.96 KB 0644
DataSourceOpenStack.cpython-313.pyc File 13.1 KB 0644
DataSourceOracle.cpython-313.pyc File 21.77 KB 0644
DataSourceRbxCloud.cpython-313.pyc File 10.25 KB 0644
DataSourceScaleway.cpython-313.pyc File 17.07 KB 0644
DataSourceSmartOS.cpython-313.pyc File 38.32 KB 0644
DataSourceUpCloud.cpython-313.pyc File 7.11 KB 0644
DataSourceVMware.cpython-313.pyc File 35.8 KB 0644
DataSourceVultr.cpython-313.pyc File 5.79 KB 0644
DataSourceWSL.cpython-313.pyc File 15.48 KB 0644
__init__.cpython-313.pyc File 47.24 KB 0644
Filemanager