3 \me@stddlZddljjjZddlmZmZeje Z ddiZ dZ dZ dZdZGdd d ejZeejffgZd d ZdS) N)sourcesutil metadata_urlz'http://169.254.169.254/metadata/v1.jsonTcs\eZdZdZddZeddfdd Zdd Zd d Zd d Z ddZ e ddZ Z S)DataSourceDigitalOcean DigitalOceancCstjj||||||_t|_tjtj|ddgit g|_ |j |j d|_ |j j dt|_|j j dt|_|j j dt|_|j j dt|_d|_dS)NZ datasourcerrretriestimeout use_ip4LL wait_retry)r DataSource__init__distrodictmetadatarZ mergemanydictZget_cfg_by_pathBUILTIN_DS_CONFIGZds_cfg _deprecatemetadata_addressget MD_RETRIESr MD_TIMEOUTr MD_USE_IPV4LLr MD_WAIT_RETRYr _network_config)selfsys_cfgrpathsr,/usr/lib/python3.6/DataSourceDigitalOcean.pyr s   zDataSourceDigitalOcean.__init__N)ci_pkl_versionreturncstj||jdS)N)super _unpickler)rr ) __class__rrr#4s z DataSourceDigitalOcean._unpicklecCstjdddddS)Nrz23.2z.Deprecated in favour of DataSourceConfigDrive.)Z deprecatedZdeprecated_versionZ extra_message)rZ deprecate)rrrrr8sz!DataSourceDigitalOcean._deprecatecCstjS)N) do_helperZ read_sysinfo)rrrr _get_sysinfo?sz#DataSourceDigitalOcean._get_sysinfocCs|j\}}|sdStjd|d}|jr6tj|j}tj|j|j |j |j d}||_ |j d||jd<|j d||jd<|j d|jd<|j d |jd <|j d d |jd <|j dd|_|j dd|_|rtj|dS)NFz&Running on DigitalOcean. droplet_id=%s)r Z sec_betweenr droplet_idz instance-idZhostnamezlocal-hostname interfacesZ public_keysz public-keysZregiondefaultZavailability_zoneZ vendor_dataZ user_dataT)r&LOGinfor r%Zassign_ipv4_link_localrZ read_metadatarr r r metadata_fullrrZvendordata_rawZ userdata_rawZdel_ipv4_link_local)rZis_dor'Z ipv4LL_nicZmdrrr _get_dataBs.     z DataSourceDigitalOcean._get_datacCstj|jdS)Nzsystem-serial-number)rZinstance_id_matches_system_uuidZget_instance_id)rrrrrcheck_instance_iddsz(DataSourceDigitalOcean.check_instance_idcCsP|jr |jS|jjd}tj||s.td|jdd}tj|||_|jS)zConfigure 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) rrrr*debug RuntimeErrorr,r%Zconvert_network_configuration)rr(r/rrrnetwork_configis   z%DataSourceDigitalOcean.network_config)__name__ __module__ __qualname__Zdsnamerintr#rr&r-r.propertyr2 __classcell__rr)r$rrs"rcCs tj|tS)N)rZlist_from_depends datasources)Zdependsrrrget_datasource_listsr:)ZloggingZ&cloudinit.sources.helpers.digitaloceanrZhelpersZ digitaloceanr%Z cloudinitrZ getLoggerr3r*rrrrrr rZDEP_FILESYSTEMr9r:rrrr s e