x[h(ddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z ddlmZddlmZej&eZdZd eiZd Zd ZeegZd Zd ZdZdZeZeeeeegz ZGddej@ejBZ"Gdde"Z#ddZ$e#ejJffe"ejJejLffgZ'dZ(y)N)dmisources url_helperutil) EventScope EventType)NoDHCPLeaseError)EphemeralDHCPv4)DataSourceOracle) openstackziid-dsopenstackz instance-idzOpenStack NovazOpenStack ComputeOpenTelekomCloudz SAP CCloud VM HUAWEICLOUDzSamsung Cloud PlatformceZdZdZej ZdZeje je je je jhiZfdZdZdZdZedZdZd Zd ZxZS) DataSourceOpenStack OpenStackFctt| |||d|_t j |j |_d|_i|_ tj|_ tj|_ yN)superr__init__metadata_addressrfetch_ssl_detailspaths ssl_detailsversionfilesrUNSET ec2_metadata network_json)selfsys_cfgdistror __class__s G/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOpenStack.pyrzDataSourceOpenStack.__init__>s\ !41'65I $11$**=  #MM#MMctjj|}|d|jd|jd}|S)Nz [z,ver=])r DataSource__str__dsmoder)rrootmstrs r#r(zDataSourceOpenStack.__str__Gs1!!))$/#'dllC r$c dj|jjdg}|jj d|}|Dcgc]}t j |s|}}t|t|k7r4tjdtt|t|z t|r|}ntjd|}g}i}|D].}tj|d}|j||||<0|j!} t#j$} tj&|| j(| j*d \} } | rtjd || n5tjd |t-t#j$| z |j | |_t1| Scc}w) Nz"http://[fe80::a9fe:a9fe%25{iface}])ifacezhttp://169.254.169.254 metadata_urlsz,Removed the following from metadata urls: %sz+Empty metadata url list! using default listr F)urlsmax_waittimeoutconnect_synchronouslyzUsing metadata source: '%s'z2Giving up on OpenStack md from %s after %s seconds)formatr!fallback_interfaceds_cfggetris_resolvable_urlsetLOGdebuglistlenwarningr combine_urlappendget_url_paramstime monotonic wait_for_urlmax_wait_secondstimeout_secondsintrbool) r DEF_MD_URLSr/xfilteredmd_urlsurl2baseurlmd_url url_params start_time avail_url _responses r#wait_for_metadata_servicez-DataSourceOpenStack.wait_for_metadata_serviceLs 0 7 7kk44 8  %  {{ <#A!t'='=a'@AAA x=CI % II>c$i#h-/1  x=D KKE FD #C++C=F NN6 ""HV  # ((* ^^% )6600.."'   9  II3Xi5H I IIDDNN$z12  !) Y 7IKBs G$GcHtj|jSr)rinstance_id_matches_system_uuidget_instance_id)rr s r#check_instance_idz%DataSourceOpenStack.check_instance_id{s66t7K7K7MNNr$c|jtjk7r |jStj|j j ddrd|_|jS|jtjk(rtjdytjdtj|jd|_|jS)z@Return a network config dict for rendering ENI or netplan files.apply_network_configTNz#G99G>I#H<<I I4 I//I47 J'J""J'cp |jstjd |j } t|j|j|j|j}|S#t$r3}tjdj t |d}~wwxYw#tj$r#}tjt |d}~wtjtf$r7}dj |j}tj||d}~wwxYw)zCrawl metadata service when available. @returns: Dictionary with all metadata discovered for this datasource. @raise: InvalidMetaDataException on unreadable or broken metadata. z No active metadata service foundz,IOError contacting metadata service: {error})errorN)rretriesr1zBroken metadata address {addr})addr)rSrrgIOErrorr3rir@read_metadata_servicerr num_retriesrEr NonReadableBrokenMetadata)rrurOresultmsgs r#rfz#DataSourceOpenStack._crawl_metadatas+ 1136664((*  ?*%% ,,".."22 F / 22>EEa&F   $$ ;223q6: :(('2 ?299**:C2237Q >  ?s:%A27B12 B.;.B))B.1D5C""D5>2D00D5cbd|jjdv}tjsyt j d}|t vryt j dtvry|rtjrytjdjdtk(ryy) z? 2 2   2 37K K v99;   q ! % %n 59I Ir$)__name__ __module__ __qualname__dsnamerrr[rerNETWORKrBOOT_NEW_INSTANCEBOOT BOOT_LEGACYHOTPLUGsupported_update_eventsrr(rSrWpropertyr^ryrfr __classcell__)r"s@r#rr,s FmmO   ' ' NN  ! !     * -^O$$03j#Jr$rceZdZdZdZy)DataSourceOpenStackLocalauRun in init-local using a dhcp discovery prior to metadata crawl. In init-local, no network is available. This subclass sets up minimal networking with dhclient on a viable nic so that it can talk to the metadata service. If the metadata service provides network configuration then render the network configuration for that instance based on metadata. TN)rrr__doc__rer$r#rrsr$rcTtj||||}|jS)N)rr1r|)r MetadataReaderread_v2)base_urlrr1r|readers r#rrs*  % %k7GF >> r$c6tj|tSr)rlist_from_depends datasources)dependss r#get_datasource_listr s  $ $Wk ::r$)Nr))loggingrA cloudinitrrrrcloudinit.eventrrcloudinit.net.dhcpr cloudinit.net.ephemeralr cloudinit.sourcesr rcloudinit.sources.helpersr getLoggerrr9 DEFAULT_IIDrmrDMI_PRODUCT_COMPUTErDMI_ASSET_TAG_OPENTELEKOMDMI_ASSET_TAG_SAPCCLOUDDMI_ASSET_TAG_HUAWEICLOUD"DMI_ASSET_TAG_SAMSUNGCLOUDPLATFORMr SourceMixinr'rrrDEP_FILESYSTEM DEP_NETWORKrrrr$r#rs 441/38/g! ; $)+-@A.*)%=".& V)//1C1CVr 2  6 68971173F3FGH ;r$