a '¡Dgg(ã@sddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z ddlmZddlmZe e¡ZdZd eiZd Zd ZeegZd Zd ZdZeZeeeeg7ZGdd„dejej ƒZ!Gdd„de!ƒZ"ddd„Z#e"ej$ffe!ej$ej%ffgZ&dd„Z'dS)éN)ÚdmiÚsourcesÚ url_helperÚutil)Ú EventScopeÚ EventType)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4)ÚDataSourceOracle)Ú openstackziid-dsopenstackz instance-idzOpenStack NovazOpenStack ComputeZOpenTelekomCloudz SAP CCloud VMZ HUAWEICLOUDcs€eZdZdZejZdZej e j e j e j e jhiZ‡fdd„Zdd„Zdd„Zd d „Zed d „ƒZd d„Zdd„Zdd„Z‡ZS)ÚDataSourceOpenStackZ OpenStackFcsHtt|ƒ |||¡d|_t |j¡|_d|_i|_ t j |_ t j |_ dS©N)Úsuperr Ú__init__Úmetadata_addressrZfetch_ssl_detailsÚpathsÚ ssl_detailsÚversionÚfilesrÚUNSETÚ ec2_metadataÚ network_json)ÚselfÚsys_cfgÚdistror©Ú __class__©úI/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceOpenStack.pyr<szDataSourceOpenStack.__init__cCs"tj |¡}d||j|jf}|S)Nz%s [%s,ver=%s])rÚ DataSourceÚ__str__Údsmoder)rÚrootZmstrrrrr Es zDataSourceOpenStack.__str__c Csdj|jjddg}|j d|¡}dd„|Dƒ}t|ƒt|ƒkr\t dtt|ƒt|ƒƒ¡t |ƒrj|}nt  d¡|}g}i}|D]"}t   |d ¡}|  |¡|||<q„| ¡}t ¡} t j||j|jd d \} } | rèt d || ¡nt d |tt ¡| ƒ¡| | ¡|_t| ƒS)Nz"http://[fe80::a9fe:a9fe%25{iface}])Zifacezhttp://169.254.169.254Z metadata_urlscSsg|]}t |¡r|‘qSr)rZis_resolvable_url)Ú.0ÚxrrrÚ RózADataSourceOpenStack.wait_for_metadata_service..z,Removed the following from metadata urls: %sz+Empty metadata url list! using default listr F)ÚurlsZmax_waitÚtimeoutZconnect_synchronouslyzUsing metadata source: '%s'z2Giving up on OpenStack md from %s after %s seconds)ÚformatrÚfallback_interfaceÚds_cfgÚgetÚsetÚLOGÚdebugÚlistÚlenÚwarningrZ combine_urlÚappendÚget_url_paramsÚtimeÚ monotonicZ wait_for_urlZmax_wait_secondsÚtimeout_secondsÚintrÚbool) rZ DEF_MD_URLSr'ZfilteredZmd_urlsZurl2baseÚurlZmd_urlÚ url_paramsZ start_timeZ avail_urlZ _responserrrÚwait_for_metadata_serviceJsNÿüþ    ü ý z-DataSourceOpenStack.wait_for_metadata_servicecCst | ¡¡Sr )rZinstance_id_matches_system_uuidZget_instance_id)rrrrrÚcheck_instance_idysz%DataSourceOpenStack.check_instance_idcCsn|jtjkr|jSt |j dd¡¡r2d|_|jS|jtjkrLt  d¡dSt  d¡t j |jdd|_|jS)z@Return a network config dict for rendering ENI or netplan files.Zapply_network_configTNzrArZNETWORKrZBOOT_NEW_INSTANCEZBOOTZ BOOT_LEGACYZHOTPLUGZsupported_update_eventsrr r<r=Úpropertyr?rJrBrXÚ __classcell__rrrrr *s&üÿ / 5%r c@seZdZdZdZdS)Ú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)rYrZr[Ú__doc__rArrrrr^sr^écCstj||||d}| ¡S)N)rr(rL)r ZMetadataReaderZread_v2)Zbase_urlrr(rLÚreaderrrrrOsÿrOcCs t |t¡Sr )rZlist_from_dependsÚ datasources)ZdependsrrrÚget_datasource_listsrc)Nr`r`)(Zloggingr5Z cloudinitrrrrZcloudinit.eventrrZcloudinit.net.dhcprZcloudinit.net.ephemeralr Zcloudinit.sourcesr rVZcloudinit.sources.helpersr Z getLoggerrYr.Z DEFAULT_IIDrErWZDMI_PRODUCT_COMPUTErTZDMI_ASSET_TAG_OPENTELEKOMZDMI_ASSET_TAG_SAPCCLOUDZDMI_ASSET_TAG_HUAWEICLOUDrUZ SourceMixinrr r^rOZDEP_FILESYSTEMZ DEP_NETWORKrbrcrrrrÚs>     ÿýZ þ