3 \me @sddlZddlmZddljjjZddlmZmZm Z m Z ej e Z ddddde je jd e jd fd ZGd d d ejZeejffgZddZe dkr ddlZejsedejdejddjZejeedededededZedZejZ dS)N)Tuple)sourcesstagesutilversionzhttp://169.254.169.254 z"Cloud-Init/%s - OS: %s Variant: %ssystemZvariant)urlretriestimeoutwaitz user-agentcs~eZdZUdZejjdZeedffddZ e ddZ dd Z d d Z d d ZddZeddZeddZZS)DataSourceVultrVultrstartup-script.cs6tt|j|||tjtj|ddgitg|_dS)NZ datasourcer)superr__init__rZ mergemanydictZget_cfg_by_pathBUILTIN_DS_CONFIGds_cfg)selfsys_cfgdistropaths) __class__%/usr/lib/python3.6/DataSourceVultr.pyr%szDataSourceVultr.__init__cCstjS)N)vultris_vultrrrrr ds_detect.szDataSourceVultr.ds_detectcCsTtjd|j|_|jd|_|j|jtjd|jdtjd|jddS)NzMachine is a Vultr instancez user-dataz SUBID: %sz instance-idz Hostname: %szlocal-hostnameT)LOGdebug get_metadatametadata userdata_rawget_datasource_data)rrrr _get_data3s    zDataSourceVultr._get_datacCsrd|kr"tj|d|d|_ntj|d|_|d|_|jddkrTd|jd<|d|_|jdkrnd|_dS)NZcloud_interfacesZ interfacesz vendor-datazlocal-hostnameZguestz user-data)rZadd_interface_namesnetcfgZgenerate_network_configZvendordata_rawr#r$)rmdrrrr%Es     z#DataSourceVultr.get_datasource_datac Cs>tj|j|jd|jd|jd|jd|jd|jjdS)Nr r r rz user-agent)Ztmp_dir)rr"rrZget_tmp_exec_path)rrrrr"ZszDataSourceVultr.get_metadatacCs.tjs dStjrdStjd}tj|S)NFsubid)rrZ is_baremetal get_sysinforZinstance_id_matches_system_uuid)rrr*rrrcheck_instance_idfs  z!DataSourceVultr.check_instance_idcCsdS)Nr)rrrr launch_indexrszDataSourceVultr.launch_indexcCs|jS)N)r()rrrrnetwork_configvszDataSourceVultr.network_config)r)__name__ __module__ __qualname__Zdsnamer DataSourceZsensitive_metadata_keysrstrr staticmethodrr&r%r"r,propertyr-r. __classcell__rr)rrrs    rcCs tj|tS)N)rZlist_from_depends datasources)Zdependsrrrget_datasource_listsr8__main__zMachine is not a Vultr instanceT)Zreporterr r r rz user-agentz vendor-data)!ZloggingZtypingrZcloudinit.sources.helpers.vultrrZhelpersrZ cloudinitrrrZ getLoggerr/r Zversion_stringZ system_inforr2rZDEP_FILESYSTEMr7r8sysrprintexitZInitrr"r)configr+Zsysinforrrrs<   `