3 \meT)@s ddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z ddlmZddlmZejeZdd gZd Zd eiZd Zd ZeegZdZdZdZeZeeeeg7ZGdddej ej!Z"Gddde"Z#dddZ$e#ej%ffe"ej%ej&ffgZ'ddZ(dS)N)dmisources url_helperutil) EventScope EventType)NoDHCPLeaseError)EphemeralDHCPv4)DataSourceOracle) openstackzhttp://[fe80::a9fe:a9fe]zhttp://169.254.169.254ziid-dsopenstackz instance-idzOpenStack NovazOpenStack ComputeZOpenTelekomCloudz SAP CCloud VMZ HUAWEICLOUDcseZdZdZejZdZej e j e j e j e jhiZfddZddZddZd d Zed d Zd dZddZddZZS)DataSourceOpenStackZ OpenStackFcsHtt|j|||d|_tj|j|_d|_i|_ t j |_ t j |_ dS)N)superr __init__metadata_addressrZfetch_ssl_detailspaths ssl_detailsversionfilesrUNSET ec2_metadata network_json)selfsys_cfgdistror) __class__)/usr/lib/python3.6/DataSourceOpenStack.pyr=szDataSourceOpenStack.__init__cCs"tjj|}d||j|jf}|S)Nz%s [%s,ver=%s])r DataSource__str__dsmoder)rrootZmstrrrrrFs zDataSourceOpenStack.__str__c Cs|jjdt}dd|D}t|t|krHtjdtt|t|t|rV|}ntjdt}g}i}x*|D]"}t j |d}|j ||||<qrW|j }t j }t j||j|jdd\} } | rtjd || ntjd |tt j ||j| |_t| S) NZ metadata_urlscSsg|]}tj|r|qSr)rZis_resolvable_url).0xrrr MszADataSourceOpenStack.wait_for_metadata_service..z,Removed the following from metadata urls: %sz+Empty metadata url list! using default listr F)urlsZmax_waittimeoutZconnect_synchronouslyzUsing metadata source: '%s'z2Giving up on OpenStack md from %s after %s seconds)ds_cfgget DEF_MD_URLSsetLOGdebuglistlenwarningrZ combine_urlappendget_url_paramstimeZ wait_for_urlZmax_wait_secondstimeout_secondsintrbool) rr$ZfilteredZmd_urlsZurl2baseZurlZmd_url url_paramsZ start_timeZ avail_urlZ _responserrrwait_for_metadata_serviceKs>       z-DataSourceOpenStack.wait_for_metadata_servicecCstj|jS)N)rZinstance_id_matches_system_uuidZget_instance_id)rrrrrcheck_instance_idtsz%DataSourceOpenStack.check_instance_idcCsn|jtjkr|jStj|jjddr2d|_|jS|jtjkrLtj ddStj dt j |jdd|_|jS)z@Return a network config dict for rendering ENI or netplan files.Zapply_network_configTNzr*r+read_metadata_servicerrZ num_retriesr2r Z NonReadableZBrokenMetadata)rrFr5resultr:rrrr?s2   z#DataSourceOpenStack._crawl_metadatacCspd|jjdk}tjsdStjd}|tkr2dStjdtkrDdS|rTtj rTdStj djdt krldSdS) zs:     ]