܍~cM*ddlZddlmZddlmZddlmZddlmZddlmZm Z m Z m Z m Z ddl mZddlmZejeZedd Zd Zd Zd Zd ZdZdZedZdZdZddZdZdZ dZ!dS)N) lru_cache) exceptions)dmi)log)netnetinfosubp url_helperutil)NoDHCPLeaseError)EphemeralDHCPv4c td}tD]} t|d|i|5t|s ddd4t |||||}t j|cdddcS#1swxYwYu#ttj ttj f$r'} t d| | }Yd} ~ d} ~ wwxYw|)NzFailed to DHCPurl)ifaceconnectivity_url_datatmp_dirzDHCP Exception: %s) RuntimeErrorget_interface_listr check_route read_metadatajsonloadsr r ProcessExecutionErrorrRequestExceptionLOGerror) rtimeoutretries sec_betweenagentr exceptionrv1excs A/usr/lib/python3/dist-packages/cloudinit/sources/helpers/vultr.py get_metadatar%su-..I$%%  ',cl & & #3'' & & & & & & &#3+uMMz"~~ & & & & & & & & & & & & & & & & & & &   &   '      II*C 0 0 0IIIIII  OsFBB B&B8 BB BB B'C!:CC!cjg}tjD]}d|vr|||S)Ndummy)rfind_candidate_nicsappend)ifacesrs r$rr5sG F(** e    e Mctj}d|vrdS|dD]}|dd|vrdSdS)Nipv4F destinationT)r route_infoget)rroutesroutes r$rrBsc   ! !FVu 99]D ) )S 0 044 1 5r+cTtjdtjddS)Nzsystem-manufacturerzsystem-serial-number) manufacturersubid)r read_dmi_datar+r$ get_sysinfor8Ss/)*?@@"#9::  r+c:tddkrdSdS)Nr4VultrTF)r8r7r+r$ is_baremetalr;[s }}^$//t 5r+ct}|ddkrdSdtjvrdSdS)Nr4r:TvultrF)r8r get_cmdlinesplit)sysinfos r$is_vultrrAbsLmmG~'))t$"$$**,,,,t 5r+cd|z}d|d}tj|||||}|std|z|j|jS)Nz %s/v1.json cloudinit)zMetadata-Tokenz User-Agent)rrheadersrz!Failed to connect to %s: Code: %s)r readurlokrcodecontentsdecode)rrrrr rDresponses r$rrqs  C"-EBBG!  H ;;==  /# 5x}      # # % %%r+c(tjSN)rget_interfaces_by_macr7r+r$get_interface_maprNs  $ & &&r+cTt}||vrdS||SrL)rNr0)mac macs_to_nics r$get_interface_namerRs/#%%K +t ??3  r+cvddddgdgd}t|dkr2t|dd }|d |tdt|D]J}||}|d r t|}|d |K|S) N nameserverz 108.61.10.10z2001:19f0:300:1704::6)typeaddress)versionconfigrT)primaryrY unconfigured)lengenerate_interfacer)ranger0) interfacesnetworkpublici interfaceprivates r$generate_network_configres%*,CD   G :#JqM4@@@  (((1c*oo & &**qM  == ( (  $Y//  )))) Nr+Fc.t|d}|std|dz|d|dd}|rd|d<ddd d dd g|d <|s#d d|d d|d ddg|d <t||t|||S)NrP.Interface: %s could not be found on the systemphysical)namerV mac_addressrT accept-radhcpauto)rVcontrol ipv6_slaacsubnetsstaticr-rWnetmaskrVrnrWrr)rRrgenerate_interface_routes'generate_interface_additional_addresses)rcrZinterface_namenetcfgs r$r]r]s' %(899N   >> Mr+c|d|vr |d|d<d|vr |d|d<d|vr|d|ddd<dSdS)Nmturkr1rprr7)rcrws r$rtrtsg !%(u i' 4{9)28)<y!X&&&r+ct|dd}d|vrT|dkrN|ddD]?}dd|d|dd}d |vr |d |d <|d |@t|d d}d |vrX|dkrT|d dD]G}d d|d d|dd}d |vr |d |d <|d |DdSdSdS)Nr- additionalrrqrmrWrrrsr1rpipv6static6r`/prefix)rVrnrW)r\r))rcrwadditional_countr{adds r$rurusj9V,\:;; /!33#F+L9 * *J !%i0%i0 C:%% *8 4H 9  $ $S ) ) ) )9V,\:;; /!33#F+L9 * *J!!i(((*X*>*>@C:%% *8 4H 9  $ $S ) ) ) )33 * *r+cx|D]6}t|d}|std|dz||d<7|S)NrPrgri)rRr)r_rcrvs r$add_interface_namesr sb++ +Ie,<== @E"# + & r+rL)F)"r functoolsrrequestsrrCrrrrr r r cloudinit.net.dhcpr cloudinit.net.ephemeralr getLogger__name__rr%rrr8r;rArrNrRrer]rtrurr7r+r$rs   :::::::::::::://////333333cmH  @   "   &&&0 '' '    <""""J = = =***F     r+