f)ddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z ddlmZddlmZej&eZdd gZd Zd eiZd Zd ZeegZdZdZdZeZeeeegz ZGddej@ejBZ"Gdde"Z#ddZ$e#ejJffe"ejJejLffgZ'dZ(y)N)dmisources url_helperutil) EventScope EventType)NoDHCPLeaseError)EphemeralDHCPv4)DataSourceOracle) openstackzhttp://[fe80::a9fe:a9fe]zhttp://169.254.169.254ziid-dsopenstackz instance-idzOpenStack NovazOpenStack ComputeOpenTelekomCloudz SAP CCloud VM HUAWEICLOUDceZdZdZej 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__Fs1!!))$/#'dllC r$c x|jjdt}|Dcgc]}tj|s|}}t |t |k7r4t jdtt |t |z t|r|}nt jdt}g}i}|D].}tj|d}|j||||<0|j}tj} tj ||j"|j$d\} } | rt jd|| n5t jd|t'tj| z |j| |_t+| Scc}w) N 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)ds_cfgget DEF_MD_URLSris_resolvable_urlsetLOGdebuglistlenwarningr combine_urlappendget_url_paramstime wait_for_urlmax_wait_secondstimeout_secondsintrbool) rr.xfilteredmd_urlsurl2baseurlmd_url url_params start_time avail_url _responses r#wait_for_metadata_servicez-DataSourceOpenStack.wait_for_metadata_serviceKsu{{ <#A!t'='=a'@AAA x=CI % II>c$i#h-/1  x=D KKE FD #C++C=F NN6 ""HV  # ((* YY[ )6600.."'   9  II3Xi5H I IIDDIIK*,-  !) Y 7IKBs F7F7cHtj|jSr)rinstance_id_matches_system_uuidget_instance_id)rr s r#check_instance_idz%DataSourceOpenStack.check_instance_idts66t7K7K7MNNr$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_configTNzJ%G#G&&H,?#H''H,/I/#I**I/2 J";JJ"% K.KKc  |jstjd |j } tjtjdt|jg|j|j|jd}|S#t$r3}tjdj t |d}~wwxYw#t j"$r#}tjt |d}~wt j$tf$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})errorNz#Crawl of openstack metadata service)rretriesr0)argskwargszBroken metadata address {addr})addr)rOrrhIOErrorformatrjr>rrfr7r8read_metadata_servicerr num_retriesrBr NonReadableBrokenMetadata)rrxrKresultr]s r#rgz#DataSourceOpenStack._crawl_metadatasD 1136664((*  ?]] 5%++,#'#3#3)55)99 F$ 9 22>EEa&F  *$$ ;223q6: :(('2 ?299**:C2237Q >  ?s;%BAC C.C  CE&DE 2EEcbd|jjdv}tjsyt j d}|t vryt j dtvry|rtjrytjdjdtk(ryy) z? 2 2   2 37K K v99;   q ! % %n 59I Ir$)__name__ __module__ __qualname__dsnamerrrWrdrNETWORKrBOOT_NEW_INSTANCEBOOT BOOT_LEGACYHOTPLUGsupported_update_eventsrr(rOrSpropertyrZr|rgr __classcell__)r"s@r#rr+s FmmO   ' ' NN  ! !     * 'RO$$09v(Tr$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__rdr$r#rr sr$rcTtj||||}|jS)N)rr0r)r MetadataReaderread_v2)base_urlrr0rreaders r#rrs*  % %k7GF >> r$c6tj|tSr)rlist_from_depends datasources)dependss r#get_datasource_listr$s  $ $Wk ::r$)Nr))loggingr? cloudinitrrrrcloudinit.eventrrcloudinit.net.dhcpr cloudinit.net.ephemeralr cloudinit.sourcesr rcloudinit.sources.helpersr getLoggerrr7r4 DEFAULT_IIDrnrDMI_PRODUCT_COMPUTErDMI_ASSET_TAG_OPENTELEKOMDMI_ASSET_TAG_SAPCCLOUDDMI_ASSET_TAG_HUAWEICLOUDr SourceMixinr'rrrDEP_FILESYSTEM DEP_NETWORKrrrr$r#rs 441/38/g!*+CD  ; $)+-@A.*).[)//1C1C[| 2  6 68971173F3FGH ;r$