a 'Dg@sddlZddlZddlZddlmZddlmZddlmZm Z m Z m Z m Z ddl mZddlmZeeZed$ddZd d Zd d Zd dZddZddZddZeddZddZddZd%ddZddZd d!Z d"d#Z!dS)&N) lru_cache) exceptions)dminetsubp url_helperutil)NoDHCPLeaseError)EphemeralDHCPv4c Cstd}tD]}zdt||d|igd<t|||||} t| } t| | WdWS1sj0YWqttj tt j fy} zt d| | }WYd} ~ qd} ~ 00q|dS)NzFailed to DHCPurl)ifaceZconnectivity_urls_datazDHCP Exception: %s) RuntimeErrorget_interface_listr read_metadatajsonloadsrefactor_metadatar rZProcessExecutionErrorrZRequestExceptionLOGerror) Zdistror timeoutretries sec_betweenagentZtmp_dir exceptionr Zv1metadataexcrC/usr/lib/python3.9/site-packages/cloudinit/sources/helpers/vultr.py get_metadatas*  ,  rcCsL|d|d<|d|d<|dd}d|dvr<|dd}||d<dS)Nzinstance-v2-idz instance-idhostnamezlocal-hostnameregionZ regioncodeZ countrycode)lower)rr rrrr5s      rc Csg}zRd}tj|rTtj|ddd}|jD]"}|}t|dkr0||q0Wn0t y}zt d|WYd}~n d}~00t|dkrt D]}d|vrq||q|S)Nz!/opt/vultr/find_candidate_nics.shT)Zcaptureshellrz(find_candidate_nics script exception: %sZdummy)ospathexistsrstdout splitlinesstriplenappend ExceptionrrrZfind_candidate_nics)ZifacesZ nic_scriptoutliner errrr?s"  "   rcCstdtddS)Nzsystem-manufacturerzsystem-serial-number) manufacturerZsubid)rZ read_dmi_datarrrr get_sysinfo\sr0cCstddkrdSdS)Nr/VultrTF)r0rrrr is_baremetaldsr2cCs.t}|ddkrdSdtvr*dSdS)Nr/r1TZvultrF)r0rZ get_cmdlinesplit)Zsysinforrris_vultrks  r4cCsHd|}d|d}tj|||||d}|s>td||j|jS)Nz %s/v1.json cloudinit)zMetadata-Tokenz User-Agent)rrheadersrz!Failed to connect to %s: Code: %s)rZreadurlokr codecontentsdecode)r rrrrr6Zresponserrrrzs  rcCstSN)rZget_interfaces_by_macrrrrget_interface_mapsr<cCst}||vrdS||Sr;)r<get)macZ macs_to_nicrrrget_interface_namesr?cCsddddgdgd}t|dkr@t|ddd }|d |tdt|D].}||}|d rfqNt|}|d |qN|S) NZ nameserverz 108.61.10.10z2001:19f0:300:1704::6)typeaddress)versionconfigrT)primaryrDZ unconfigured)r)generate_interfacer*ranger=)Z interfacesnetworkZpublici interfaceZprivaterrrgenerate_network_configs   rKFcCst|d}|s td|d|d|dd}|rTd|d<ddd d dd g|d <|s|d d|d d|d ddg|d <t||t|||S)Nr>.Interface: %s could not be found on the systemphysical)namerA mac_addressr@ accept-raZdhcpauto)rAcontrolZ ipv6_slaacsubnetsstaticipv4rBnetmaskrArRrBrV)r?r generate_interface_routes'generate_interface_additional_addresses)rJrEinterface_namenetcfgrrrrFs0      rFcCsHd|vr|d|d<d|vr(|d|d<d|vrD|d|ddd<dS)NZmturProutesrSrr)rJr[rrrrXs   rXcCst|dd}d|vrj|dkrj|ddD]<}dd|d|dd}d |vrZ|d |d <|d |q,t|d d}d |vr|dkr|d dD]B}d dd |d|dfd}d |vr|d |d <|d |qdS)NrU additionalrrTrQrBrVrWr\rSZipv6Zstatic6z%s/%srHprefix)rArRrB)r)r*)rJr[Zadditional_countr]addrrrrYs.  rYcCsH|dD]:}|ddkrqt|d}|s:td|d||d<qdS)NrDrArMrOrLrN)r?r )r[rJrZrrradd_interface_namess   r`)N)F)"rZloggingr# functoolsrZrequestsrr5rrrrrZcloudinit.net.dhcpr Zcloudinit.net.ephemeralr Z getLogger__name__rrrrr0r2r4rr<r?rKrFrXrYr`rrrrs2          % #