o x[h@sddlZddlmmmZddlmZmZmZe e Z ddiZ dZ dZdZdZGdd d ejZeejffgZd d ZdS) N) lifecyclesourcesutil metadata_urlz'http://169.254.169.254/metadata/v1.jsonTcs^eZdZdZddZdeddffdd Zd d Zd d Zd dZ ddZ e ddZ Z S)DataSourceDigitalOcean DigitalOceancCstj||||||_t|_tt|ddgit g|_ | |j d|_ |j dt|_|j dt|_|j dt|_|j dt|_d|_d|_dS)N datasourcer rretriestimeout use_ip4LL wait_retry)r DataSource__init__distrodictmetadatar mergemanydictget_cfg_by_pathBUILTIN_DS_CONFIGds_cfg _deprecatemetadata_addressget MD_RETRIESr MD_TIMEOUTr MD_USE_IPV4LLr MD_WAIT_RETRYr_network_config metadata_full)selfsys_cfgrpathsr$J/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceDigitalOcean.pyr s$   zDataSourceDigitalOcean.__init__ci_pkl_versionreturnNcst||dSN)super _unpickler)r!r& __class__r$r%r*5s  z DataSourceDigitalOcean._unpicklecCstjdddddS)Nrz23.2z.Deprecated in favour of DataSourceConfigDrive.) deprecateddeprecated_version extra_message)r deprecater!r$r$r%r9s  z!DataSourceDigitalOcean._deprecatecCstSr() do_helper read_sysinfor1r$r$r% _get_sysinfo@sz#DataSourceDigitalOcean._get_sysinfocCs|\}}|s dStd|d}|jrt|j}tj|j|j |j |j d}||_ | d||jd<| d||jd<| d|jd<| d |jd <| d d |jd <| dd|_| dd|_|rmt|j|dS)NFz&Running on DigitalOcean. droplet_id=%s)r sec_betweenr droplet_idz instance-idhostnamezlocal-hostname interfaces public_keysz public-keysregiondefaultavailability_zone vendor_data user_dataT)r4LOGinfor r2assign_ipv4_link_localr read_metadatarr rr r rrvendordata_raw userdata_rawdel_ipv4_link_local)r!is_dor6 ipv4LL_nicmdr$r$r% _get_dataCs0   z DataSourceDigitalOcean._get_datacCst|dS)Nzsystem-serial-number)rinstance_id_matches_system_uuidget_instance_id)r!r"r$r$r%check_instance_idesz(DataSourceDigitalOcean.check_instance_idcCsP|jr|jS|jd}t||std|jdd}t|||_|jS)zConfigure the networking. This needs to be done each boot, since the IP information may have changed due to snapshot and/or migration. r8z'Unable to get meta-data from server....dns nameservers) rrrr?debug RuntimeErrorr r2convert_network_configuration)r!r8rNr$r$r%network_configjs  z%DataSourceDigitalOcean.network_config)__name__ __module__ __qualname__dsnamerintr*rr4rIrLpropertyrR __classcell__r$r$r+r%rs"rcCs t|tSr()rlist_from_depends datasources)dependsr$r$r%get_datasource_lists r])logging&cloudinit.sources.helpers.digitaloceanrhelpers digitaloceanr2 cloudinitrr getLoggerrSr?rrrrrrrDEP_FILESYSTEMr[r]r$r$r$r%s  f