a '¡DgÌã@s‚ddlZddlmmmZddlmZmZmZe  e ¡Z ddiZ dZ dZdZdZGdd „d ejƒZeejffgZd d „ZdS) éN)Ú lifecycleÚsourcesÚutilÚ metadata_urlz'http://169.254.169.254/metadata/v1.jsonééTcs\eZdZdZdd„Zeddœ‡fdd„ Zdd „Zd d „Zd d „Z dd„Z e dd„ƒZ ‡Z S)ÚDataSourceDigitalOceanÚ DigitalOceancCs¢tj ||||¡||_tƒ|_t t |ddgi¡t g¡|_ |  ¡|j d|_ |j   dt¡|_|j   dt¡|_|j   dt¡|_|j   dt¡|_d|_d|_dS)NZ datasourcer rÚretriesÚtimeoutÚ use_ip4LLÚ wait_retry)rÚ DataSourceÚ__init__ÚdistroÚdictÚmetadatarZ mergemanydictZget_cfg_by_pathÚBUILTIN_DS_CONFIGZds_cfgÚ _deprecateÚmetadata_addressÚgetÚ MD_RETRIESr Ú MD_TIMEOUTr Ú MD_USE_IPV4LLr Ú MD_WAIT_RETRYr Ú_network_configÚ metadata_full)ÚselfÚsys_cfgrÚpaths©r úL/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceDigitalOcean.pyr s$ ÿüÿ zDataSourceDigitalOcean.__init__N)Úci_pkl_versionÚreturncstƒ |¡| ¡dS©N)ÚsuperÚ _unpickler)rr"©Ú __class__r r!r&5s z DataSourceDigitalOcean._unpicklecCstjdddd�dS)Nrz23.2z.Deprecated in favour of DataSourceConfigDrive.)Z deprecatedZdeprecated_versionZ extra_message)rZ deprecate©rr r r!r9s ýz!DataSourceDigitalOcean._deprecatecCst ¡Sr$)Ú do_helperZ read_sysinfor)r r r!Ú _get_sysinfo@sz#DataSourceDigitalOcean._get_sysinfocCsÞ| ¡\}}|sdSt d|¡d}|jr6t |j¡}tj|j|j |j |j d�}||_ |  d|¡|jd<|  d|¡|jd<|  d¡|jd<|  d ¡|jd <|  d d ¡|jd <|  dd¡|_|  dd¡|_|rÚt |j|¡dS)NFz&Running on DigitalOcean. droplet_id=%s)r Z sec_betweenr Ú droplet_idz instance-idÚhostnamezlocal-hostnameÚ interfacesZ public_keysz public-keysZregionÚdefaultZavailability_zoneZ vendor_dataZ user_dataT)r+ÚLOGÚinfor r*Zassign_ipv4_link_localrZ read_metadatarr r r rrrZvendordata_rawZ userdata_rawZdel_ipv4_link_local)rZis_dor,Z ipv4LL_nicZmdr r r!Ú _get_dataCs0   üz DataSourceDigitalOcean._get_datacCst | ¡d¡S)Nzsystem-serial-number)rZinstance_id_matches_system_uuidZget_instance_id)rrr r r!Úcheck_instance_idesÿz(DataSourceDigitalOcean.check_instance_idcCsP|jr |jS|j d¡}t |¡|s.tdƒ‚|jdd}t ||¡|_|jS)zŸConfigure the networking. This needs to be done each boot, since the IP information may have changed due to snapshot and/or migration. r.z'Unable to get meta-data from server....ZdnsÚ nameservers) rrrr0ÚdebugÚ RuntimeErrorrr*Zconvert_network_configuration)rr.r4r r r!Únetwork_configjs  ÿz%DataSourceDigitalOcean.network_config)Ú__name__Ú __module__Ú __qualname__ZdsnamerÚintr&rr+r2r3Úpropertyr7Ú __classcell__r r r'r!rs"rcCs t |t¡Sr$)rZlist_from_dependsÚ datasources)Zdependsr r r!Úget_datasource_list‡sr?)ZloggingZ&cloudinit.sources.helpers.digitaloceanrZhelpersZ digitaloceanr*Z cloudinitrrZ getLoggerr8r0rrrrrrrZDEP_FILESYSTEMr>r?r r r r!Ú s ÿf ÿ