܍~cdZddlmcmcmZddlmZddlmZ ddlm Z mZm Z ddl m Z ddlmZe jeZdZed zed zd Zd Zd Zd ZGddejZdZeejffgZdZdS)z>Hetzner Cloud API Documentation https://docs.hetzner.cloud/N)dmi)log)netsourcesutil)NoDHCPLeaseError)EphemeralDHCPv4z!http://169.254.169.254/hetzner/v1z /metadataz /userdata) metadata_url userdata_url<c:eZdZdZdZdZdZedZdS)DataSourceHetznerHetznercTtj||||||_t |_t jt j|ddgitg|_ |j d|_ |j d|_ |j dt|_|j dt |_|j dt$|_tj|_tj|_dS)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)selfsys_cfgrpathss E/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceHetzner.pyrzDataSourceHetzner.__init__"s##D'65AAA  ($W|Y.GLL!    !% N ; $ N ;{y*== {y*== +//, FF&}, ctt\}}|sdS ttjdtdzi|j5tj|j |j |j |j }tj |j|j |j |j }dddn #1swxYwYn.#t$r!}t d|d}~wwxYwtj||_||_|d|jd<|d|jd <|d d|jd <|d d|jd <|d d|_||krt3d dS)NFurlz/metadata/instance-id)ifaceconnectivity_url_datatmp_dir)r sec_betweenrzBailing, DHCP Exception: %sz instance-idhostnamezlocal-hostnamenetwork-configz public-keys vendor_dataz6SMBIOS serial does not match instance ID from metadataT)get_hcloud_datar rfind_fallback_nic BASE_URL_V1rget_tmp_exec_path hc_helper read_metadatarrrr read_userdatar rLOGerrormaybe_b64decode userdata_raw metadata_fullrr!vendordata_rawget_instance_id RuntimeError)r) on_hetznerserialmdudes r, _get_datazDataSourceHetzner._get_data4s.00V 5  +--;)@@' 5577   ,) L $ L  ,) L $ L                &!    II3Q 7 7 7  &5b99 (*-'8 m$*,Z. &'*,&&1A4*H*H &'')vvmT'B'B m$ ff]D99    ! !V + +H ts=AC AC4 C CC CC C7C22C7cPtj|dS)Nsystem-serial-number)rinstance_id_matches_system_uuidrD)r)r*s r,check_instance_idz#DataSourceHetzner.check_instance_idms)6  " "$:   r-c |j6tdtjtj|_|jtjkr|jS|jd}|st 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. Nz5Found None as cached _network_config. Resetting to %sr5z'Unable to get meta-data from server....)r&r>warningrr%r Exception)r) _net_configs r,network_configz DataSourceHetzner.network_configrs   ' KKG    $+=D  7= 0 0' 'm$45  GEFF F*##r-N) __name__ __module__ __qualname__dsnamerrKrOpropertyrTr-r,rrsb F---$777r   $$X$$$r-rctjd}|dkrdStjd}|rtd|nt dd|fS)Nzsystem-manufacturerr)FNrMz#Running on Hetzner Cloud: serial=%sz+Hetzner Cloud detected, but no serial foundT)r read_dmi_datar>debugrE) vendor_namerGs r,r7r7sn#$9::Ki}  5 6 6F J 7@@@@HIII &>r-c6tj|tS)N)rlist_from_depends datasources)dependss r,get_datasource_listrcs  $Wk : ::r-)__doc__!cloudinit.sources.helpers.hetznerrhelpershetznerr; cloudinitrrloggingrrcloudinit.net.dhcprcloudinit.net.ephemeralr getLoggerrUr>r9rr"r#r$rrr7DEP_FILESYSTEMrarcrZr-r,rnsW ""655555555555$$$$$$((((((((((//////333333g!!1  +-+-    k$k$k$k$k$*k$k$k$\    /12 ;;;;;r-