Ë œfBãóø—dZddlZddlmcmcmZddlmZm Z mZm Z ddl m Z ddl mZeje«ZdZedzedzd œZd Zd Zd ZGd „d ej.«Zd„Zeej4ffgZd„Zy)z>Hetzner Cloud API Documentation https://docs.hetzner.cloud/éN)ÚdmiÚnetÚsourcesÚutil)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4z!http://169.254.169.254/hetzner/v1z /metadataz /userdata)Ú metadata_urlÚ userdata_urlé<écó2—eZdZdZd„Zd„Zd„Zed„«Zy)ÚDataSourceHetznerÚHetznercód—tjj||||«||_t «|_t jt j|ddgi«tg«|_ |jd|_ |jd|_ |jjdt«|_|jjdt «|_|jjdt$«|_tj(|_tj,|_y)NÚ datasourcerr r ÚretriesÚtimeoutÚ wait_retry)rÚ DataSourceÚ__init__ÚdistroÚdictÚmetadatarÚ mergemanydictÚget_cfg_by_pathÚBUILTIN_DS_CONFIGÚds_cfgÚmetadata_addressÚuserdata_addressÚgetÚ MD_RETRIESrÚ MD_TIMEOUTrÚ MD_WAIT_RETRYrÚUNSETÚ_network_configÚDSMODE_NETWORKÚdsmode)ÚselfÚsys_cfgrÚpathss úE/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceHetzner.pyrzDataSourceHetzner.__init__"sÜ€Ü×Ñ×#Ñ# D¨'°6¸5ÔA؈Œ Ü›ˆŒ Ü×(Ñ(ä×$Ñ$ W¨|¸YÐ.GÈÓLÜ!ð ó ˆŒ ð !%§ ¡ ¨NÑ ;ˆÔØ $§ ¡ ¨NÑ ;ˆÔØ—{‘{—‘ y´*Ó=ˆŒ Ø—{‘{—‘ y´*Ó=ˆŒ ØŸ+™+Ÿ/™/¨,¼ ÓFˆŒÜ&Ÿ}™}ˆÔÜ×,Ñ,ˆ ócóz—t«\}}|sy t|jtj«dt dzi¬«5t j|j|j|j|j¬«}t j|j|j|j|j¬«}ddd«t#j$«|_|_|d|j*d<|d|j*d <|j-d d«|j*d <|j-d d«|j*d <|j-d d«|_|j1«|k7r t3d «‚y#1swYŒÂxYw#t$r}tj!d|«‚d}~wwxYw)NFÚurlz/metadata/instance-id)ÚifaceÚconnectivity_url_data)rÚ sec_betweenrzBailing, DHCP Exception: %sz instance-idÚhostnamezlocal-hostnameúnetwork-configz public-keysÚ vendor_dataz6SMBIOS serial does not match instance ID from metadataT)Úget_hcloud_datarrrÚfind_fallback_nicÚ BASE_URL_V1Ú hc_helperÚ read_metadatarrrrÚ read_userdatarrÚLOGÚerrorrÚmaybe_b64decodeÚ userdata_rawÚ metadata_fullrr Úvendordata_rawÚget_instance_idÚ RuntimeError)r(Ú on_hetznerÚserialÚmdÚudÚes r+Ú _get_datazDataSourceHetzner._get_data4s’€Ü.Ó0шVáØð Ü Ø— ‘ Ü×+Ñ+Ó-àœ;Ð)@Ñ@ð'ôñ ô×,Ñ,Ø×)Ñ)Ø ŸL™LØ $§¡Ø ŸL™Lô ô ×,Ñ,Ø×)Ñ)Ø ŸL™LØ $§¡Ø ŸL™Lô ÷ ô<!×0Ñ0°Ó4ˆÔ؈Ôð (*¨-Ñ'8ˆ ‰ mÑ$Ø*,¨Z©.ˆ ‰ Ð&Ñ'Ø*,¯&©&Ð1AÀ4Ó*Hˆ ‰ Ð&Ñ'Ø')§v¡v¨m¸TÓ'Bˆ ‰ mÑ$Ø Ÿf™f ]°DÓ9ˆÔð × Ñ Ó ! VÒ +ÜØHóð ð÷a ð ûô&!ò Ü I‰IÐ3°QÔ 7Ø ûð ús0’3FÁBF ÃFÆ FÆFÆ F:ÆF5Æ5F:cóJ—tj|j«d«S)Núsystem-serial-number)rÚinstance_id_matches_system_uuidrA)r(r)s r+Úcheck_instance_idz#DataSourceHetzner.check_instance_idms$€Ü×6Ñ6Ø × Ñ Ó "Ð$:ó ð r,có<—|j€9tjdtj«tj|_|jtjk7r |jS|j d}|s t d«‚||_|jS)zŸConfigure 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 %sr3z'Unable to get meta-data from server....)r%r;Úwarningrr$rrB)r(Ú _net_configs r+Únetwork_configz DataSourceHetzner.network_configrs„€ð × Ñ Ð 'Ü K‰KØGÜ— ‘ ô ô$+§=¡=ˆDÔ à × Ñ ¤7§=¡=Ò 0Ø×'Ñ'Ð 'à—m‘mÐ$4Ñ5ˆ ÙÜÐHÓIÐ Ià*ˆÔà×#Ñ#Ð#r,N) Ú__name__Ú __module__Ú __qualname__ÚdsnamerrHrLÚpropertyrP©r,r+rrs+„à €Fò-ò$7òr ð ñ$óñ$r,rcó°—tjd«}|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+r5r5Œs[€Ü×#Ñ#Ð$9Ó:€KØiÒØä × Ñ Ð5Ó 6€FÙ Ü ‰ Ð7¸Ô@ð &ˆ>ÐôÐHÓIÐIr,có6—tj|t«S)N)rÚlist_from_dependsÚ datasources)Údependss r+Úget_datasource_listr_¡s€Ü × $Ñ $ W¬kÓ :Ð:r,)Ú__doc__ÚloggingÚ!cloudinit.sources.helpers.hetznerrÚhelpersÚhetznerr8Ú cloudinitrrrÚcloudinit.net.dhcprÚcloudinit.net.ephemeralrÚ getLoggerrQr;r7rr!r"r#rrr5ÚDEP_FILESYSTEMr]r_rVr,r+úrjsœðñ "óç5Ó5ß-Ó-Ý/Ý3à€g×јÓ!€à1€ ð  +Ñ-Ø +Ñ-ñÐð € Ø € Ø€ ôk$˜×*Ñ*ôk$ò\ ð ˜×/Ñ/Ð1Ð2ð€ ó ;r,