x[hdZddlZddlmcmcmZddlmZm Z mZm Z ddl m Z ddl mZejeZdZedzedzd Zd Zd Zd ZGd d ej.ZdZeej4ffgZdZy)z;Hetzner Cloud API Documentation https://docs.hetzner.cloud/N)dminetsourcesutil)NoDHCPLeaseError)EphemeralDHCPv4z!http://169.254.169.254/hetzner/v1z /metadataz /userdata) metadata_url userdata_url<c2eZdZdZdZdZdZedZy)DataSourceHetznerHetznercrtjj||||||_t |_t jt j|ddgitg|_ |jd|_ |jd|_ |jjdt|_|jjdt |_|jjdt$|_tj(|_tj,|_d|_y)N datasourcerr r retriestimeout wait_retry)r DataSource__init__distrodictmetadatar mergemanydictget_cfg_by_pathBUILTIN_DS_CONFIGds_cfgmetadata_addressuserdata_addressget MD_RETRIESr MD_TIMEOUTr MD_WAIT_RETRYrUNSET_network_configDSMODE_NETWORKdsmode metadata_full)selfsys_cfgrpathss E/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceHetzner.pyrzDataSourceHetzner.__init__"s##D'65A  (($$W|Y.GL!   !% N ; $ N ;{{y*= {{y*= ++//, F&}},, !c|t\}}|sy t|jtjdt dzig5t j|j|j|j|j}t j|j|j|j|j}dddt#j$|_|_|d|j*d<|d|j*d <|j-d d|j*d <|j-d d|j*d <|j-d d|_|j1|k7r t3d y#1swYxYw#t$r}tj!d|d}~wwxYw)NFurlz/metadata/instance-id)ifaceconnectivity_urls_data)r sec_betweenrzBailing, DHCP Exception: %sz instance-idhostnamezlocal-hostnamenetwork-configz public-keys vendor_dataz6SMBIOS serial does not match instance ID from metadataT)get_hcloud_datarrrfind_fallback_nic BASE_URL_V1 hc_helper read_metadatarrrr read_userdatarrLOGerrorrmaybe_b64decode userdata_rawr(rr vendordata_rawget_instance_id RuntimeError)r) on_hetznerserialmdudes r, _get_datazDataSourceHetzner._get_data5s.0V   ++-{-DD( ,,)) LL $ LL  ,,)) LL $ LL  @!004 (*-'8 m$*,Z. &'*,&&1A4*H &'')vvmT'B m$ ff]D9    !V +H e  *   II3Q 7  s04FBF  F FF F;F66F;cJtj|jdS)Nsystem-serial-number)rinstance_id_matches_system_uuidrA)r)r*s r,check_instance_idz#DataSourceHetzner.check_instance_idps$66  "$:  r-c<|j9tjdtjtj|_|jtjk7r |jS|j d}|s t d||_|jS)zConfigure the networking. This needs to be done each boot, since the IP information may have changed due to snapshot and/or migration. z5Found None as cached _network_config. Resetting to %sr4z'Unable to get meta-data from server....)r%r<warningrr$rrB)r) _net_configs r,network_configz DataSourceHetzner.network_configus    ' KKG  $+==D   7== 0'' 'mm$45 HI I*###r-N) __name__ __module__ __qualname__dsnamerrHrLpropertyrPr-r,rrs+ F"&9v $$r-rctjd}|dk7rytjd}|rtjd|d|fSt d)Nzsystem-manufacturerr)FNrJz#Running on Hetzner Cloud: serial=%sz+Hetzner Cloud detected, but no serial foundT)r read_dmi_datar<debugrB) vendor_namerDs r,r6r6s[##$9:Ki   5 6F  7@ &>HIIr-c6tj|tS)N)rlist_from_depends datasources)dependss r,get_datasource_listr_s  $ $Wk ::r-)__doc__logging!cloudinit.sources.helpers.hetznerrhelpershetznerr9 cloudinitrrrcloudinit.net.dhcprcloudinit.net.ephemeralr getLoggerrQr<r8rr!r"r#rrr6DEP_FILESYSTEMr]r_rVr-r,rjs 55--/3g!1  +-+-    n$**n$b  //12 ;r-