x[h. UddlZddlZddlZddlZddlZddlZddlZddlmcm Z ddl m Z ddl mZddlmZmZmZddlmZmZmZmZddlZddlmZmZmZmZmZmZddlm Z m!Z!ddl"m#Z#dd l$m%Z%m&Z&m'Z'dd l(m)Z)m*Z*dd l+m,Z,dd l-m.Z.m/Z/m0Z0m1Z1dd l2m3Z3ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAddlBmCZC ddlDZDejeDjdejdZGeeHd<ejePZQdZRddiZSdZTdZUdZVdZWGdde ZXdZYeeZeHd <gd!Z[d"Z\d#Z]d$eZd%eZd&eeZfd'Z^d(eZd&eZfd)Z_e9d&eeZfd*Z`e9d(eZd&eeZfd+Zad_d&eZfd,Zbd-Zcd.Zdd/Zed&eeZfd0Zfejr6d1ZUefd2ZheheQjd3d4ehzZTneQjd5dZYeVd6eTid7d7d8Zjd6d9d:gd7d;ieUdZkd?eRgZld@ZmdAZnGdBdCejZpdDZqdEZrdFZsdGZtdHZud`dIZve9dJZwe9dKZxe9eTdLdLfdMeZdNeZdOeydPeyfdQZze9d_dRZ{e9dSZ|dTZ}e9dUZ~e9eYfdVZe9dWZe9dXZe9dYedZeyd&efd[Ze9d&efd\Ze9d_d]ZepZepejffgZd^Zy#eIeJf$r8 ddlKZLeLjjjZGn#eI$rdZGYnwxYwYwxYw)aN)Enum)Path) monotonicsleeptime)AnyDictListOptional)net performancesourcesssh_utilsubputil) EventScope EventType) device_driver)NoDHCPLeaseErrorNoDHCPLeaseInterfaceErrorNoDHCPLeaseMissingDhclientError)EphemeralDHCPv4EphemeralIPv4Network)events)errorsidentityimdskvp)netlink) DEFAULT_WIRESERVER_ENDPOINTNonAzureDataSource OvfEnvXmlazure_ds_reporterazure_ds_telemetry_reporterbuild_minimal_ovf dhcp_log_cbget_boot_telemetryget_metadata_from_fabricget_system_inforeport_diagnostic_eventreport_dmesg_to_kvpreport_failure_to_fabric)UrlErrorz$6$)strlen)salt blowfish_hashctd)zRaise 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_resourceext4z/var/lib/waagentz/dev/sr0c eZdZdZdZdZdZdZy)PPSTypeNonePreprovisionedOSDiskRunningSavableUnknownN)__name__ __module__ __qualname__NONEOS_DISKRUNNINGSAVABLEUNKNOWNr6r5r;r;Ws D$GGGGr6r;z/sys/firmware/acpi/tables/OEM0PLATFORM_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.dcP|jD]}tjd|s|j}t |dk\s9|djd}t |dk\s\|ddk(se|dj |sz|djd}|dcSy ) z dev.storvsc.1.%pnpinfo: classid=32412632-86cb-44a2-9b5c-50d1417354f5 deviceid=00000000-0001-8899-0000-000000000000 pnpinfo=rdeviceid.N) splitlinesresearchsplitlen startswith) sysctl_outrPlinefieldscolumnscompss r5"find_storvscid_from_sysctl_pnpinfor^ks%%' $ 99Z &ZZ\F6{a )//#.LA% j0 --h7"1IOOC0E 8O $ r6c|jD]/}tj||s|j}|dcSy)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)rSrTrUrV)camcontrol_outdisk_drvrZitemss r5find_busdev_from_diskrcsC))+ 99Xt $JJLE8O r6r`busdevreturnc|jD]S}tj||s|jd}t |dk(s:|djd}|dcSy)z at scbus1 target 0 lun 0 (cd0,pass0) at scbus2 target 0 lun 0 (da0,pass1) at scbus3 target 1 lun 0 (da1,pass2) (rNrQ,rN)rSrTrUrVrW)r`rdrZrbdev_passs r5find_dev_from_busdevrjsc))+# 99VT "JJsOE5zQ 8>>#.{" # r6macc t|dk(r)dj|dd|dd|dd|dd|dd|ddg}|jS) z1Normalize mac address with colons and lower-case. :rrN )rWjoinlower)rks r5normalize_mac_addressrus] 3x2~hh 1Xs1QxQq3q8S2YBr K  99;r6cxtjDcgc]}|ddk(rt|dc}Scc}w)z-Get Hyper-V NICs as normalized MAC addresses.rN hv_netvscrQ)r get_interfacesru)ns r5get_hv_netvsc_macs_normalizedrzsB ##%  Q4;  ad#  s7c,tjDcgc]}|t|dk(r|d}}d|vryt|dk(r&t d|d|t j |dSt d|d|t jy cc}w) z0Determine the device driver to match on, if any.rQrNrwz'Assuming driver for interface with mac=z drivers= logger_funcrz0Unable to specify driver for interface with mac=N)r rxrurWr*LOGdebugwarning)rkidriverss r5determine_device_driver_for_macrs ##% '!- - !G g 7|qG   qz  KK +sBc tj|jS#tj$r*tj ddj ||cYSwxYw)NzFailed to execute: %s )rstdoutProcessExecutionErrorr~rrs)cmdfail_rets r5execute_or_debugrsLyy~$$$  % % )388C=9s!:AAc tddgdS)Nsysctlz dev.storvsc)rrrIr6r5get_dev_storvsc_sysctlrs X}5 CCr6ctgdS)N) camcontroldevlistz-brrIr6r5get_camcontrol_dev_busrs ; < ? II- .!!),G "#3W =F &~v> ? II- . r6z freebsd-ufsrQzresource disk is not None/dev/zresource disk is None ephemeral0T)data_dir disk_aliasesapply_network_config&apply_network_config_for_secondary_ipsgptd) table_typelayout overwritez ephemeral0.1) filesystemdevice) disk_setupfs_setup datasourcenever_destroy_ntfsREDACTEDc eZdZdZej ejejhiZ dZ e jZ dZdZdeddffd Zd Zd Zed edefd Zedd ddddeededededef dZedJdZdefdZdJdZedZededefdZ dKfd Z!edZ"edZ#dZ$dZ%ede&efd Z'd!e(de&efd"Z)de&efd#Z*d$Z+d%Z,dLd&Z-ed'Z.e dMd(ed)ede/fd*Z0ed+Z1ed dd,d-ed.eddfd/Z2ed0Z3ede4jhfd1Z5ed2Z6edJd3Z7ed4Z8ed5Z9ede:fd6Z;e dNd7eedd:d;ee&edee&efd<Z?d!e(deefd=Z@d>e(d!e(deAfd?ZBed@ZCedAe(d!e(dee&efdBZDdCZEedDZFeGdEZHedFZIeGdGZJeGdHZKed!e(defdIZLxZMS)ODataSourceAzurer7FrQctjj||||tjj |j d|_i|_d|_tjtj|titg|_d|_d|_d|_d|_d|_t(|_tjj |j,dd|_y)NazureFdatareported_ready)r DataSource__init__ospathrsseed_dircfgseedr mergemanydictget_cfg_by_path DS_CFG_PATHBUILTIN_DS_CONFIGds_cfg_iso_dev_network_config_ephemeral_dhcp_ctx_route_configured_for_imds _route_configured_for_wireserverr _wireserver_endpoint cloud_dir_reported_ready_marker_file)selfsys_cfgdistropathss r5rzDataSourceAzure.__init__Ds##D'65A U^^W=  ((  ! !'; ;=N O   #>B */'05-$?!+-77<< OOV%5, (r6ci_pkl_versionreNct||d|_d|_d|_d|_t |_tjj|jjdd|_ y)NFrr)super _unpicklerrrrr rrrrsrrr)rr __class__s r5rzDataSourceAzure._unpickleVs^ .)#'  */'05-$?!+-77<< JJ &*:, (r6cdtjj|}|d|jdS)Nz [seed=])rr__str__r)rroots r5rzDataSourceAzure.__str__bs'!!))$/!%tyy11r6c|jd}n@|jjdrd}n"|jjdk(rd}nd}|d|jdS)z/Return the subplatform metadata source details.unknownz/devz config-diskrzseed-dir ())rrXrt)rsubplatform_types r5_get_subplatformz DataSourceAzure._get_subplatformfsX 99 (  YY ! !& ),  YY__ & (% ) ,dii88r6ephipv4c|jsy|jDcgc]}|djdd}}d|v|_|j|v|_|jxs |jScc}w)NFr/z169.254.169.254) static_routesrVrrr)rrrrouted_networkss r5_check_if_primaryz!DataSourceAzure._check_if_primaryrs$$7>7L7LM!1Q4::c?1-MM+<*N'  % % 8 -  + + 544 NsA2T)ifacereport_failure_if_not_primary retry_sleeptimeout_minutesrrrrc|j tdtd|dtjt j t|j|t|_d}t}||dzz}tjdd t 5|= |jj}|t|z|kr t?|nn|=|d|_t-|d}||j_ d|vr |d|_!tE|} |jjF} | td|jI| } td|d| d| d| jJd| jLd|d |jNd!|jPd"t j |rA| s?|j#t%jR|| | jJ| jL|#d | cdddS#t$rQtd t j |j#t%j&t|z d Yt($r$tdt j*d|_t,$rUtd|zt j*|j#t%j.t|z |d Y"t0$r)}td|zt j*Yd}~Nd}~wt2j4$rZ}td|j6d|j8d|j:d|j<t j*Yd}~d}~wwxYw#1swYyxYw)$aSetup 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 leasename descriptionparentzInterface 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=rz unknown-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)rdriverrouterrlease)*r RuntimeErrorr*r rxr~rrrr&rrReportEventStackr# obtain_leaserr_report_failurer$ReportableErrorDhcpInterfaceNotFoundrerrorrReportableErrorDhcpLeaseFileNotFoundErrorrrrstderrr exit_coderrrr_ephipv4rrrrr(ReportableErrorDhcpOnNonPrimaryInterface) rrrrrr start_timedeadliner rrprimarys r5_setup_ephemeral_networkingz+DataSourceAzure._setup_ephemeral_networkingsU*  # # /A  c((* ,  $3 KK%$  +/[ " 44  $ $$+$ m  -1 44AACEf=Y[;%>%I+&q-t}+/(&((+&E-2D $ $ *%,1-,@)"5)F..77G"#ABB,,W5G # NN))3399  II "-W$$CC"'%&~~&-&;&;# #% [m m 1 +6CKK((CC%.[:%=#' ) 7+7SYY04D,' +@5H$'II((77%.[:%=#' ) )+7%?$'II11 +"II!LL!LL!OO %(II   Wm m sjM; G<:!M;DM;' BC >>'*(7;}}!2%84L#u8<}}!284L#u%(DM3DS3I0B c5 '7*D # +' BFC  $CS[[ A"&dmm!4!J d8J 6"A   , ,_ , M  + + -ww12446111FG:-,C #C (2237 7++C9 w|| # ='C66s;;3357'C66s;;7??*002W__,002W__,335002+/+<+<+> (B c5ww12446111FG 227;LD',,*<*<#==$$==6l ++G+<(&  ..VW4E/FG ,   ,G4 +G4 ;G D  II8- H9FC ~ .v 6  II8- H9FL $%5 6 , II:% 5J0IL  - 99 |G'< ,**"7 *7(A W%/8M 89393C3C 3 3 564L0   #*T1syy  ! 6:L $] 326))+ Z /   u $)I)I)K@@AK (--+-F  3X>>FL,];%%'|Q& ':S@ # (( '*S0cii  ,    x '?!C #   !+.CKK,  sfBU:WW+5X 4Y :'W$0WW W('W(+ X4XX $YY YYr.c4t}|dz}|jsd}nd}d}d} tj||S#t$rk}t |}t|z }t j||}|js&t|jtjrd}Yd}~n:d}~wt$r+}t |}t j|}Yd}~nd}~wwxYw|j|| td|zt j" iS) Ni, )max_connection_errorsretry_deadline) exceptionrF)rtrz!Ignoring IMDS metadata due to: %sr|)rrr fetch_metadata_with_api_fallbackr-rrReportableErrorImdsUrlErrorrcauserequestsConnectionError ValueError+ReportableErrorImdsMetadataParsingExceptionrr*r~r) rr.rrsrr error_string error_reportr rs r5rFz&DataSourceAzure.get_metadata_from_imds?s[ #c)..$& !$( !&* 9=  88&;-  'u:L {Z/H!==(L22z X558"' u:L!MML  \5GH /, >   s"= C#A!B,, C#8!CC#cVtt| |tj|_y)z.Reset any cached class attributes to defaults.N)rrclear_cached_attrsrUNSET_metadata_imds)r attr_defaultsrs r5rz"DataSourceAzure.clear_cached_attrsms ot7 F%mmr6ctjj}|y|jyt |jdj S)zQCheck platform environment to report if this datasource may run. TFr:)rChassisAssetTag query_systemrrexists)r chassis_tags r5 ds_detectzDataSourceAzure.ds_detectrsJ ..;;=  " == DMM=188::r6c t t  |j } |j|jr>|jjdk(r%|jjdr tt }t"j$j'|rBt)d|ztj*t-j.|d t0g|_n(t)d |ztj*|d |_|d d |_t-j.|d t6g|_|d |_t=|jd|ddy#t$r!}tjd|Yd}~d}~wwxYw#t$r!}tjd|Yd}~d}~wwxYw#t j$r+}|j|Yd}~|jyd}~wt$r@}t j|}|j|Yd}~|jyd}~wwxYw#|jwxYw)zCrawl 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: %sFubunturzXEphemeral resource disk '%s' exists. Merging default Azure cloud ephemeral disk configs.r|rzdEphemeral resource disk '%s' does not exist. Not merging default Azure cloud ephemeral disk configs.r4rr5rr3i)dirmodeT)r'rUr~rr)rorReportableErrorrr!ReportableErrorUnhandledExceptionrrrrE*maybe_remove_ubuntu_network_config_scriptsRESOURCE_DISK_PATHrrrr*rrr#BUILTIN_CLOUD_EPHEMERAL_DISK_CONFIGrrDEFAULT_METADATAr4r5 write_files)rrlr_r r#devpaths r5 _get_datazDataSourceAzure._get_datas! ?   C   2..0L  / / 1 KK   H,  67 6 8 % 77>>' " #F II   ))e$&IJDH $J II   $E*DH*:6v>** * %'7 8  )8  KK #\'%:E } ? KK:A > > ?  C KK> B B C %%    '  / / 1  %GGN   !1 2  / / 1    / / 1si E+ FG+ F4FF G!F==GI G>)I > I  &I0I I  I Ic|jrd|jvr|jSt|jdS)Nr8)r4rZrrs r5get_instance_idzDataSourceAzure.get_instance_ids4}} T]] B99; 4==/00r6c>|jdj|S)Nr)rrE)rrs r5device_name_to_devicez%DataSourceAzure.device_name_to_devices{{>*..t44r6c |j|jdS#ttf$rY|j SwxYw)z+ Retrieve public SSH keys. r)_get_public_keys_from_imdsr4KeyErrorrz_get_public_keys_from_ovfrs r5get_public_ssh_keysz#DataSourceAzure.get_public_ssh_keyssG  224==3HI I*%  --// s AAr1cv |ddDcgc]}|d }}t d|Dr(d}t|tjt |dj t|}t|tj|Scc}w#t$rd}t|tjwxYw) zGet 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 publicKeyskeyDataz"No SSH keys found in IMDS metadatar|c36K|]}t| yw))r/N)_key_is_openssh_formatted).0r/s r5 z=DataSourceAzure._get_public_keys_from_imds..sJ#,55JszKey(s) not in OpenSSH formatzRetrieved {} keys from IMDS)rr*r~ranyrzrrW)rr1 public_keyrnlog_msgs r5rz*DataSourceAzure._get_public_keys_from_imdss #*)"4\"B9%H JJ J4G #G CW% %/66s8}ESYY?! :G #G C  s B B B B(B8cg} |jd}djt|}t|tj |S#t $r!d}t|tj Y|SwxYw)zYGet SSH keys that were fetched from wireserver. :returns: List of keys. r>zRetrieved {} keys from OVFr|zNo keys available from OVF)r4rrWr*r~rr)rrnrs r5rz)DataSourceAzure._get_public_keys_from_ovfsq  D}}]3H299#h-HG #G C   D2G #G C  DsAA &A43A4c|jSNrrs r5get_config_objzDataSourceAzure.get_config_obj s xxr6cHtj|jSr)rinstance_id_matches_system_uuidr)rrs r5check_instance_idz!DataSourceAzure.check_instance_id s66t7K7K7MNNr6cztjj|jj dd}t j }tjj|rNtj|j}t j|}|j||fvr|S|S)Nrr8) rrrsr get_cpathrquery_system_uuidrrload_text_filestripbyte_swap_system_uuidrt)rprevious prev_iid_path system_uuid swapped_ids r5rZzDataSourceAzure._iids JJ  (- 002 77>>- (**=9??AH!77 DJ ~~K#<<r6c~ d}tjddt5tj|}ddd|d}t |t jyt d|zt jy#1swYHxYw#t$r*}t t|t jd}~wwxYw)zUse 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 detachrzHPreprovisioned nic not detached as expected. Proceeding without failing.r|z%The preprovisioned nic %s is detached) rrr#rwait_for_nic_detach_eventr*r~rrAssertionErrorrr )rnl_sockifnamerdr s r5_wait_for_nic_detachz$DataSourceAzure._wait_for_nic_detach!s  F((*1( D !::7C  D ~2(E';fD #  D D"  #CJCII F  s3B A='B B =BB B<%B77B<rretriesct|D][}|jjj|r t d|zt j y|dz|ksQt|]t d|||zfzt j y)NzThe link %s is up.r|rQz;The link %s is not up after %f seconds, continuing anyways.)ranger networkingtry_set_link_upr*r~infor)rrrrrs r5wait_for_link_upz DataSourceAzure.wait_for_link_upAsw A{{%%55f='(61sxxA k"  $M7[012HH r6c|j}tjd|tj|dj t jttdtjy)Nz*Creating a marker file to report ready: %sz{pid}: {time} )pidrzRSuccessfully created reported ready marker file while in the preprovisioning pool.r|) rr~rr write_filerrgetpidrr*r)rrs r5_create_report_ready_markerz+DataSourceAzure._create_report_ready_markerUs\// =tD  #**ryy{*H   1  r6) create_markerexpect_url_errorrrcV |jd|_ |r|jyy#t$rr}|r3t|tr#t dt j d|_n3d}t |t jtj||Yd}~d}~wwxYw)zReport 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.F) r]rUrr-r*r~rrr rrGr[r)rrrr rds r5_report_ready_for_ppsz%DataSourceAzure._report_ready_for_ppsbs G    ,!   , , . / G  Juh$?'B #  !% P(C66s;F  Gs- B(A(B##B(ctjd g}d} d}tjddt |zt 5t j||}ddd|j|td|ztj|j||s*tjd ||j|d d }|rtjd y|j#1swYxYw#t$r.}tt|tjYd}~yd}~wwxYw) 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 attachedrzDetected nic %s attached.r|z!Checking if %s is the primary nicr+)rrrzFound primary nic for this VM.)r~rrrrWr#rwait_for_nic_attach_eventappendr*rrrrrr )rr nics_foundprimary_nic_foundrr s r5"_wait_for_hot_attached_primary_nicz2DataSourceAzure._wait_for_hot_attached_primary_nics7 =>3 GJ %  ,,.Nj/*-  %>>F !!&)'/&8chh %%f- )HH@&I(,(H(H$(*6;)I)%%HH=>779Q  P G #CJCII F F Gs6/DC:B D)D:D?D D=$D88D=c tjS#tj$r$}td|tj d}~wwxYw)Nz!Failed to create netlink socket: r|)rcreate_bound_netlink_socketNetlinkCreateSocketErrorr*r~r )rr s r5_create_bound_netlink_socketz,DataSourceAzure._create_bound_netlink_socketsJ 668 8//  #3E7;II    sA AA c|jdtdtjt dt j )z4Report ready and wait for host to initiate shutdown.F)rz"Waiting for host to shutdown VM...r|i3)rr*r~rrrReportableErrorOsDiskPpsFailurers r5rKz.DataSourceAzure._wait_for_pps_os_disk_shutdowns? """7 0  h4466r6cZ|j} |j|jj td|jj}|j t j d|tjddt5 tj||ddd|j|j!y#t$r(}td|zt jYd}~Ud}~wwxYw#1swY^xYw#|jwxYw) 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 switchrz'Error while waiting for vnet switch: %sr|)rrrrrr~rrrr#r!wait_for_media_disconnect_connectrr*r closer)rrrrls r5rIz+DataSourceAzure._wait_for_pps_running_reuses335 ((0++119"#>??,,22E  & & ( II5 ((82(  ==guM  MMO ++-&+AAE$'II   MMOsHBDD C/D D !D?D D  D  DDD*c|j} |jd |j|j||j||jy#tj$r/}t d|zt jd|_Yd}~pd}~wwxYw#|jwxYw)z@Report ready and wait for nic(s) to be hot-attached upon re-use.T)rzLIgnoring failure while tearing down networking, NIC was likely unplugged: %rr|N) rrrrrr*r~rrrrr)rrrls r5rJz+DataSourceAzure._wait_for_pps_savable_reuses335   & & & = 0335  % %g .  3 3G < MMO-- 0'3567 # ,0((  0 MMOs3B-A("B-(B*;%B% B-%B**B--B?ctjj|jry|j |j y)z0Report ready if needed for unknown/recovery PPS.N)rrisfilerrrrs r5rLz+DataSourceAzure._wait_for_pps_unknown_reuses7 77>>$:: ;  ""$ ++-r6cd}d}|sf|js|dz } |jdtjddt 5 t j} ddd|sftd |ztj |S#t$rYwxYw#t$r|jYdddwxYw#1swYbxYw) z0Poll IMDs for reprovisiondata XML document data.rNrQrr,zget-reprovision-data-from-imdszget reprovision data from imdsrz#attempted dhcp %d times after reuser|) rrrrrr#rfetch_reprovision_datar-rr*r~r)r dhcp_attemptsreprovision_datas r5 _poll_imdszDataSourceAzure._poll_imds s ,0"335" 44Q4G((5<(  '+'B'B'D$ #& 1M A   %( 779    s;B C B BBC5C?CCC r rctd|jtjt t j |}|r|S|jr; tdtjt|j|d|_ y tdtj|j |jd t|j|d|_ y#t$r(}td|ztjYd}~d}~wwxYw#t$rY^wxYw#t$r(}td |ztjYd}~y d}~wwxYw) aReport 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: r|z>Using cached ephemeral dhcp context to report failure to Azure)endpointr Tz@Failed to report failure using cached ephemeral dhcp context: %sNz3Using new ephemeral dhcp to report failure to Azurer+r,z5Failed to report failure using new ephemeral dhcp: %sF)r*as_encoded_reportr~r r+rreport_failure_to_hostrrr,rr[rUrrr)rr rreportedrls r5rzDataSourceAzure._report_failure>sc 1%2I2I2K1L M   --e4 O  + + - '1 #  )!66e$(   #EII   / / 1 000D %22%  $D - '8:;< #  $    #G!KII     sT!9C9+D<D-D<9 D*D%%D*- D96D<8D99D<< E-E((E-r<r=cttj t|j|j |j |}d|_d|_ |S#t$r$}td|ztjd}~wwxYw)zTells 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. )rriso_devr=zQError communicating with Azure fabric; You may experience connectivity issues: %sr|NT) r+rreport_success_to_hostr(rrrrUr*r~rr[)rr=rrls r5r]zDataSourceAzure._report_readys  ""$ +22{{ ' D    #*,-.KK    s-A B &BB c |dddS#t$r(}td|ztjYd}~yd}~wwxYw)NextendedrppsTypez2Could not retrieve pps configuration from IMDS: %sr|)rUr*r~r)rr1rls r5rNz"DataSourceAzure._ppstype_from_imdssH :&y1)< <  #DqHII   s >9>ovf_cfgctjj|jrtj }na|j ddtjjk(s,|j|tjjk(rtj}n|j ddtjjk(s,|j|tjjk(rtj}n|j ddusY|j ddtjjk(s,|j|tjjk(rtj}ntj}td|jztj|S)z@Determine PPS type using OVF, IMDS data, and reprovision marker.PreprovisionedVMTypeNPreprovisionedVmTz PPS type: %sr|)rrrrr;rHrErGr0rNrErFrDr*r~r)rrr1rfs r5rHz#DataSourceAzure._determine_pps_types, 77>>$:: ;H KK. 59N9N N&&w/7??3H3HHH KK. 59N9N N&&w/7??3H3HHH KK* +t 3{{148$$%&&w/7??3H3HHH||H X^^ + r6c|j}tjddt5t |\}}}|||d|ifcdddS#1swYyxYw)zrInitiate the reprovisioning workflow. Ephemeral networking is up upon successful reprovisioning. zreprovisioning-read-azure-ovfz$read azure ovf during reprovisioningrr:N)rrrr#read_azure_ovf)rrkrbudrs r5rMzDataSourceAzure._reprovisions_ ??$  $ $0>$  < )2KBCC-!:;  < < ###r6cx|jjdijdijdS)Nrrlocationrrs r5regionzDataSourceAzure.region.s1}}  ,00B?CCJOOr6czt} |d}|dDcgc]}t|d}}|Dcgc] }||vs| }}|sytd|d |t j |jr|jjsytj|jj}|rt|tsyt|}||vr!td |d |t j ycc}w#t$r0td|j dzt j YywxYwcc}w) z=Validate IMDS network config and report telemetry for errors.r r macAddressz6IMDS network metadata has incomplete configuration: %rr|FTz8IMDS network metadata is missing configuration for NICs rz-IMDS network metadata is missing primary NIC ) rzrurr*rEr~rrrr get_interface_macrr) rr1 local_macsrr imds_macsm missing_macs primary_macs r5rPz.DataSourceAzure.validate_imds_network_metadata2s>34  $Y/N( 4&a o6I$.Da)1CD D^ -  ''t/G/G/M/M++D,D,D,J,JK *[#">+K8 , & #0KK  O  #H++i()KK    Es+ C<C7C< D8D87C<<6D54D5)reN)rIr)rg?)F)NrArBrCdsnamerNETWORKrBOOT_NEW_INSTANCEBOOTdefault_update_eventsr[rrr_ci_pkl_versionrintrrrr$rrDrr rrrrr$ror rFrrrrrr rdictrrrrrZrfloatrrrrsocketrrKrIrJrLbytesrrrrr]rNr;rHrMr\r^rpropertyr rrrrP __classcell__)rs@r5rr8s F  ' ' NN  K]]NO $      2 9! )= $ ! *! $.2 T}T(, T  T  T T!Tl!(!( T 47l!U!Un!+T+d+!+Z, ! ;! ;!F!FP1 5! 0T#Y 0! 0$49649 O"!!>!DG$' |ddddk(S#t$rYywxYw)Nrr*disablePasswordAuthenticationtruer,r-s r5rTrTxs; i  -.M N   s  cd|jvrytj} |j|}|j duS#t$rYywxYw)z? Validate whether or not the key is OpenSSH-formatted. z FN)rrAuthKeyLineParserparse TypeErrorkeytype)r/parserakls r5rrs[   ' ' )Fll3 ;;d "" sA AAcdD]|}g}td|D]c}||zt|z}tjj |s4|j |tjj |fe|sz|cSgS)N)z-partprrQ)rrrrrrrealpath)rmaxnumsufffoundpnumppaths r5_partitions_on_devicerFs"!V$ >DdNSY.Eww~~e$ dBGG$4$4U$;<= > L Ir6ctjdd}tjd|tj j ||vS)Nz TYPE=ntfsT)no_cachezntfs_devices found = %s)rfind_devs_withr~rrrr@)r ntfs_devicess r5_has_ntfs_filesystemrKs=&&{TBLII'6 77  G $ 44r6c H|r$ddjtdtd}d|fStjj |sdd|zfSt jd|tjj|t|}|sdd|zfSt|}|dkDr,d |d d j|Dcgc]}|d  c}}d|fS|dk(r |d \}}n|d \}}t|sd|d|d|d}d|fStd}d|d|d|d} tjddt5} t!j"||dddid} | d k7rKd!| z| _t j+d"djttd| d#| zzfcdddS dddd| d$zfScc}w#t j$$rI} d| _dt)| vrd| dzfcYd} ~ cdddSd| d|d | zfcYd} ~ cdddSd} ~ wwxYw#1swYtxYw)%aDetermine 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 (rRz), skipping checksFzdevice %s does not existzResolving realpath of %s -> %szdevice %s was not partitionedrNzdevice z had 3 or more partitions: rrQrz partition rz ) on device z was not ntfs formattedctddg}ttj|Dcgc]}|j |vs|c}Scc}w)Nzdataloss_warning_readme.txtzsystem volume information)setrWrlistdirrt)mpignoredfs r5 count_filesz+can_dev_be_reformatted..count_filessE *,G H rzz"~J!'1IAJKKJs A A z was ntfs formattedzmount-ntfs-and-countrntfsLANGC)r*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.)rsrrrrrr~rr@rFrWrKr$rrr#rrArCrrr) rrrd partitions partition_lenr? cand_part cand_pathrSbmsgevt file_countrls r5can_dev_be_reformattedr`s& HH[ ! $ cz 77>>' "07:::II('2773C3CG3L 'w/J 5??? OMq  HHJ/qad/ 0 cz)!} 9)!} 9  *     cz L!L  D  #*  #I  P&,c] J( ?>' " :W D    2W <  F C4 ,WmD II$fc2 ' 1'',,|UIOD07= 77>>' " @ '" -. II)4 0 1 % @ 5tQ?? @s$+D)) E2EEcd}|sy|si}tj|||jD]J\}}tjj ||}d|vr |||}tj ||dLy)Nc, tj|}|jD]0}d|jvs|jt k7s&t |_2tj |S#t$rtjd||cYSwxYw)z>Azure provides the UserPassword in plain text. So we redact it UserPasswordz#failed to redact userpassword in %s) ET fromstringitertagtextDEF_PASSWD_REDACTIONtostringrUr~critical)cntfnamerelems r5_redact_passwordz%write_files.._redact_passwordFs~ ==%D  5"dhh. %99 4DI  5 ;;t$ $  LL> FJ s6A/A/ !A//!BBr:i)filenamecontentmode)r ensure_dirrbrrrsr)datadirr3rrxrrzrvs r5rrDsx   OOGW%E g Wd+ D &w6G eD Er6c4tj|}i}i}|jxsd}|jr|j|d<|jr|j|d<|j |j |d<n|j rd|d<i}|jr|j|d<|j r0d|d<t|j k7rt|j |d <|rd |i|d <|j|d <td |jztj|j|d<td|jztj|j|d<td|jztj|||fS)zParse 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. rr&rr6TrF lock_passwd hashed_passwdr(r'rzPreprovisionedVm: %sr|rzPreprovisionedVMType: %sr-zProvisionGuestProxyAgent: %s)r" parse_text custom_datar8 public_keysdisable_ssh_password_authpasswordr7rr encrypt_passpreprovisioned_vmr*r~rpreprovisioned_vm_typeprovision_guest_proxy_agent)rkovf_envrbrrdefusers r5rras""8,GB C    "B&// !--J((4 ' A AAL    LG!**!&  7#3#3 3'3G4D4D'EGO $,g6M%77C!:!::HH #*"@"@C"W%C%CCHH '.&I&IC"#&)L)LLHH C=r6ct|Sr)r1)rs r5rrs  ""r6c t|5}|jd dddy#1swYyxYw#t$rtj d|YywxYw)z;Return boolean indicating path to cdrom device has content.iNTzcdrom (%s) is not configuredF)openreadIOErrorr~r) cdrom_devfps r5_check_freebsd_cdromrsZ= )_  GGDM     = 0)< =s# 5)5255AAc||ytj|d}tj|j S)zIReturn content random seed file if available, otherwise, return None.NT)quiet)rload_binary_filerW b64encodedecode)sourcers r5rYrYs: ~  t 4D   D ! ( ( **r6c#K|ttjrd}t|r,|n'dD]"}tjd|zEd{$|r|yy7w)Nz/dev/cd0)iso9660r)zTYPE=%s)DEFAULT_PROVISIONING_ISO_DEVrr@rrI)r cache_dirrfstypes r5r?r?sg J &&   *O( ?F**9v+=> > > ? ?sAA&A$A&cztjj|d}tjj|s t dt j d5t|d5}|j}ddddddt\}}}|||d|ifS#1swY(xYw#1swY,xYw)Nr:zNo ovf-env file foundzReading ovf-env.xmlrb) rrrsrr!r Timedrrr) source_dirovf_filerrkrbrrs r5rBrBsww||J 6H 77>>( # !899   0 14$3G2779!*KBC C-2 33 s$ B1-B%>B1%B. *B11B:network_metadatarc did}t|dD]d\}}d}dj|}d|dzd zi}|d kDrd|d <d |dd }dD]} |j| ijdg} | stj d| |?d }| dk(rd} nd} | r d |d<||d<|sZ| ddD]]} || dd jd| } | d}|jdsg|d<|dj dj|| _|rS|rQt |d}|jd|ji|dt|}|r||d d!<||d"|<Mtj d#|||g|S)$zConvert 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. rN)version ethernetsrFzeth{idx})idxz route-metricrQrrzuse-dnsT)dhcp4zdhcp4-overridesdhcp6)ipv4ipv6 ipAddresszNo %s addresses found for: %rr24128rzdhcp6-overridesNsubnetprefixprivateIpAddress addressesz {ip}/{prefix})iprr macaddress)matchzset-namerrrz>$ -^^))9+@+@+F+FG  ww}}T" T" d# $r6c6tj|tSr)rlist_from_depends datasources)dependss r5get_datasource_listrhs  $ $Wk ::r6r)r.)rW functoolsloggingros.pathrTr%xml.etree.ElementTreeetree ElementTreermenumrpathlibrrrrtypingrr r r rx cloudinitr r rrrrcloudinit.eventrr cloudinit.netrcloudinit.net.dhcprrrcloudinit.net.ephemeralrrcloudinit.reportingrcloudinit.sources.azurerrrrcloudinit.sources.helpersrcloudinit.sources.helpers.azurer r!r"r#r$r%r&r'r(r)r*r+r,cloudinit.url_helperr-cryptpartialrand_strr1__annotations__r3AttributeError passlib.hashpasslibhash sha512_crypt getLoggerrAr~DS_NAMErr DEFAULT_FSAGENT_SEED_DIRrr;rJrrr^rcrjrurzrrrrrrr@res_diskrrrrrrrrrrRrVrSrTrrFrKr`rDrrrrrrYr?rBr#r r rDataSourceAzureNetDEP_FILESYSTEMrrrIr6r5rsu  ""'',,EE1' J&??-**** C  R 89:M3(g! !#346  #)d*J#I#,&chsm"sstCy#4CD=7'Xc]'V4??J+A.H -.$x/ )*"!#56 .2  e !+nEF '#W% /"hg((hV)#" 55 mNmN`&! ( ( ( (  ( ( VEE844n#3++(   4 4MM-1M MM`t"$"$L%w--/0 ;_A ^$  1166     s6:;J%%K$-$KK$KK$KK$#K$