o x[h@sddlZddlZddlZddlmZddlmZddlmZm Z m Z m Z m Z ddl mZddlmZeeZe d$ddZd d Zd d Zd dZddZddZddZeddZddZddZd%ddZddZd d!Z d"d#Z!dS)&N) lru_cache) exceptions)dminetsubp url_helperutil)NoDHCPLeaseError)EphemeralDHCPv4c Cstd}tD]T}z2t||d|igdt|||||} t| } t| | WdWS1s5wYWqttj tt j fy[} zt d| | }WYd} ~ qd} ~ ww|)NzFailed to DHCPurl)ifaceconnectivity_urls_datazDHCP Exception: %s) RuntimeErrorget_interface_listr read_metadatajsonloadsrefactor_metadatar rProcessExecutionErrorrRequestExceptionLOGerror) distror timeoutretries sec_betweenagenttmp_dir exceptionr v1metadataexcr"A/usr/lib/python3/dist-packages/cloudinit/sources/helpers/vultr.py get_metadatas0  *  r$cCsL|d|d<|d|d<|dd}d|dvr|dd}||d<dS)Nzinstance-v2-idz instance-idhostnamezlocal-hostnameregion regioncode countrycode)lower)r r&r"r"r#r5s     rc Csg}z)d}tj|r*tj|ddd}|jD]}|}t|dkr)||qWnt yC}z t d|WYd}~nd}~ww|sWt D] }d|vrQqJ||qJ|S)Nz!/opt/vultr/find_candidate_nics.shT)captureshellrz(find_candidate_nics script exception: %sdummy)ospathexistsrstdout splitlinesstriplenappend Exceptionrrrfind_candidate_nics)ifaces nic_scriptoutliner er"r"r#r?s(     rcCstdtddS)Nzsystem-manufacturerzsystem-serial-number) manufacturersubid)r read_dmi_datar"r"r"r# get_sysinfo\sr?cCstddkr dSdS)Nr<VultrTF)r?r"r"r"r# is_baremetaldsrAcCs.t}|ddkr dSdtvrdSdS)Nr<r@TvultrF)r?r get_cmdlinesplit)sysinfor"r"r#is_vultrks  rFcCsHd|}d|d}tj|||||d}|std||j|jS)Nz %s/v1.json cloudinit)zMetadata-Tokenz User-Agent)rrheadersrz!Failed to connect to %s: Code: %s)rreadurlokrcodecontentsdecode)r rrrrrHresponser"r"r#rzs   rcCstSN)rget_interfaces_by_macr"r"r"r#get_interface_mapsrQcCst}||vr dS||SrO)rQget)mac macs_to_nicr"r"r#get_interface_names rUcCsddddgdgd}t|dkr t|ddd }|d |tdt|D]}||}|d r3q't|}|d |q'|S) N nameserverz 108.61.10.10z2001:19f0:300:1704::6)typeaddress)versionconfigrT)primaryr[ unconfigured)r3generate_interfacer4rangerR) interfacesnetworkpublici interfaceprivater"r"r#generate_network_configs   rfFcCst|d}|std|d|d|dd}|r*d|d<ddd d dd g|d <|s>d d|d d|d ddg|d <t||t|||S)NrS.Interface: %s could not be found on the systemphysical)namerX mac_addressrV accept-radhcpauto)rXcontrol ipv6_slaacsubnetsstaticipv4rYnetmaskrXrnrYrs)rUrgenerate_interface_routes'generate_interface_additional_addresses)rdr\interface_namenetcfgr"r"r#r^s0     r^cCsLd|vr |d|d<d|vr|d|d<d|vr$|d|ddd<dSdS)Nmturkroutesrprr")rdrxr"r"r#rus  rucCst|dd}d|vr5|dkr5|ddD]}dd|d|dd}d |vr-|d |d <|d |qt|d d}d |vrm|dkro|d dD]%}d dd |d|dfd}d |vre|d |d <|d |qKdSdSdS)Nrr additionalrrqrmrYrsrtrzrpipv6static6z%s/%sraprefix)rXrnrY)r3r4)rdrxadditional_countr{addr"r"r#rvs2  rvcCsH|dD]}|ddkr qt|d}|std|d||d<qdS)Nr[rXrhrjrgri)rUr)rxrdrwr"r"r#add_interface_namess    rrO)F)"rloggingr- functoolsrrequestsrrGrrrrrcloudinit.net.dhcpr cloudinit.net.ephemeralr getLogger__name__rr$rrr?rArFrrQrUrfr^rurvrr"r"r"r#s4          % #