a '¡Dg¡ã@s°ddlZddlmZddlmZmZmZmZmZm Z ddl m Z ddl m Z e e¡ZdZdediZd Zd Zd ZGd d „d ejƒZd d„Zdd„Zddd„ZeejffgZdS)éN)Ú exceptions)ÚdmiÚnetÚsourcesÚsubpÚ url_helperÚutil)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4zhttp://169.254.169.254/api/v1Ú metadata_urlz /metadataéécsXeZdZdZdd„Zeddœ‡fdd„ Zdd „Zd d „Ze d d „ƒZ e dd„ƒZ ‡Z S)ÚDataSourceNWCSÚNWCScCs”tj ||||¡||_tƒ|_t t |ddgi¡t g¡|_ |j d|_ |j   dt ¡|_|j   dt¡|_|j   dt¡|_tj|_tj|_d|_dS)NZ datasourcerr ÚretriesÚtimeoutÚ wait_retry)rÚ DataSourceÚ__init__ÚdistroÚdictÚmetadatarZ mergemanydictZget_cfg_by_pathÚBUILTIN_DS_CONFIGZds_cfgÚmetadata_addressÚgetÚ MD_RETRIESrÚ MD_TIMEOUTrÚ MD_WAIT_RETRYrÚUNSETÚ_network_configZDSMODE_NETWORKZdsmodeÚ metadata_full)ÚselfZsys_cfgrÚpaths©r#úD/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceNWCS.pyrsþÿ zDataSourceNWCS.__init__N)Úci_pkl_versionÚreturncstƒ |¡|jstj|_dS©N)ÚsuperÚ _unpicklerrr)r!r%©Ú __class__r#r$r)0s zDataSourceNWCS._unpicklecCsv| ¡}|durtdƒ‚||_|d|jd<|d|jd<|d|jd<|d|jd<| dd¡|_| dd¡|_d S) Nzfailed to get metadataz instance-idz public-keysÚnetworkÚhostnamezlocal-hostnameZuserdataZ vendordataT)Ú get_metadataÚ RuntimeErrorr rrZ userdata_rawZvendordata_raw)r!Zmdr#r#r$Ú _get_data5szDataSourceNWCS._get_datac Csªzft d¡t|jt ¡dtdigd*t|j|j |j |j dWdƒWS1sZ0YWn>t t jttjfy¤}zt d|¡‚WYd}~n d}~00dS)Nz#Attempting to get metadata via DHCPÚurlz/metadata/instance-id)ZifaceZconnectivity_urls_data©rÚ sec_betweenrzDHCP failure: %s)ÚLOGÚinfor rrZfind_fallback_nicÚ BASE_URL_V1Ú read_metadatarrrrr rZProcessExecutionErrorr/rZRequestExceptionÚerror)r!Úer#r#r$r.Hs. ÿÿý ü*ü  zDataSourceNWCS.get_metadatacCs‚t d¡|jtjkr|jS|jdds2tdƒ‚|jddD].}t|dƒ}|r@t d|d|¡||d<q@|jd|_|jS)Nz Attempting network configurationr,Zconfigz"Unable to get metadata from serverZ mac_addresszOverriding %s with %sÚname) r4Údebugrrrrr/Úget_interface_namer5)r!ÚiZ iface_namer#r#r$Únetwork_configes     zDataSourceNWCS.network_configcCsdt d¡kS)Nrzsystem-manufacturer)rZ read_dmi_datar#r#r#r$Ú ds_detect{szDataSourceNWCS.ds_detect)Ú__name__Ú __module__Ú __qualname__ZdsnamerÚintr)r0r.Úpropertyr>Ú staticmethodr?Ú __classcell__r#r#r*r$rs rcCst ¡}||vrdS| |¡Sr')rZget_interfaces_by_macr)ZmacZ macs_to_nicr#r#r$r<€sr<cCs t |t¡Sr')rZlist_from_dependsÚ datasources)Zdependsr#r#r$Úget_datasource_listŠsrHécCs6tj||||d}| ¡s&td|ƒ‚t |j ¡¡S)Nr2zunable to read metadata at %s)rZreadurlÚokr/rZ load_jsonÚcontentsÚdecode)r1rr3rZresponser#r#r$r7Žs ÿ r7)rIrIr )ZloggingZrequestsrZ cloudinitrrrrrrZcloudinit.net.dhcpr Zcloudinit.net.ephemeralr Z getLoggerr@r4r6rrrrrrr<rHr7ZDEP_FILESYSTEMrGr#r#r#r$Ús"     ÿf  ÿ