+
    ˜qgj�6  ã            	       ó´  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIHtHtHtH	t	H
t
 ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ]P,                  ! ]4      tR	tR
]/tRtRtRR/tRt ! R R4      t ! R R]P@                  4      t! ! R R]!4      t"R t#R t$R/R lt%R0R lt&R t']"]PP                  33]!]PP                  ]PR                  33.t*R t+]R8X  d»   ^ RI,t,^ RI-t-^ RIH.t. ],P^                  ! RR 7      t0]0Pc                  R!R"R#]R$7       ]0Pc                  R%R&R'R(RR)7       ]0Pe                  4       t3]&! ]3Ph                  ]3Pj                  R*7      t6R+]69   d    ]6R+,          Po                  4       ]6R+&   ];! ]Px                  ! ]6^RR1R.7      4       R# R#   ]8 dB    ]-Pr                  Pu                  R,4       ]6R+ ].! ]6R+,          4      Po                  4       ]6R-&    Lgi ; i)2é    N)Ú	b64decode)ÚdmiÚnetÚsourcesÚ
url_helperÚutil)Úug_util)Ú
EventScopeÚ	EventType)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4)ÚDataSourceHostnamez3http://metadata.google.internal/computeMetadata/v1/Úmetadata_urlzLhttp://metadata.google.internal/computeMetadata/v1/instance/guest-attributesÚhostkeyszMetadata-FlavorÚGoogleÚens4c                   ó0   a € ] tR t^t o R tRR ltRtV tR# )ÚGoogleMetadataFetcherc                ó*   € Wn         W n        W0n        R # ©N©Úmetadata_addressÚnum_retriesÚsec_between_retries)Úselfr   r   r   s   &&&&ÚA/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceGCE.pyÚ__init__ÚGoogleMetadataFetcher.__init__   s   € Ø 0ÔØ&ÔØ#6Ö ó    c                ó"  € R p V P                   V,           pV'       d
   VR,          p\        P                  ! V\        V P                  V P
                  R7      pVP                  ^È8X  dI   V'       d#   \        P                  ! VP                  4      pV# VP                  P                  R4      p V# \        P                  RWP                  4        V#   \        P                   d$   pRp\        P                  Y�T4        R p?T# R p?ii ; i)Nz/?recursive=True)ÚurlÚheadersÚretriesÚsec_betweenúutf-8zurl %s returned code %szurl %s raised exception %s)r   r   ÚreadurlÚHEADERSr   r   Úcoder   Údecode_binaryÚcontentsÚdecodeÚLOGÚdebugÚUrlError)	r   ÚpathÚis_textÚis_recursiveÚvaluer!   ÚrespÚexcÚmsgs	   &&&&     r   Ú	get_valueÚGoogleMetadataFetcher.get_value$   së   € Øˆð	FØ×'Ñ'¨$Õ.ˆCßØÐ)Õ)�Ü×%Ò%ØÜØ×(Ñ(Ø ×4Ñ4ô	ˆDð �y‰y˜CÔßÜ ×.Ò.¨t¯}©}Ó=�Eð
 ˆð !ŸM™M×0Ñ0°Ó9‘Eð ˆô —	‘	Ð3°T¿9¹9ÕEØˆøô ×"Ñ"ô 	&Ø.ˆCÜ�I‰I�c ×%Ð%ð ˆûð	&ús   „C Ÿ;C ÃDÃ+D	Ä	Dr   N)F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r6   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € ò7÷
ò r   r   c                   óÈ   a € ] tR t^>t o RtRt]P                  ]P                  ]P                  0/tR tR t]R 4       tR tR tR tRR	 lt]R
 4       t]R 4       tRtV tR# )ÚDataSourceGCEÚGCEFc                ó�  € \         P                  P                  WW#4       R V n        V'       d7   \        P
                  ! W4      w  rE\        P                  ! V4      w  V n        p\        4       V n        \        P                  ! \        P                  ! VRR./ 4      \        .4      V n        V P                  R,          V n        R # )NÚ
datasourcerB   r   )r   Ú
DataSourcer   Údefault_userr	   Únormalize_users_groupsÚextract_defaultÚdictÚmetadatar   ÚmergemanydictÚget_cfg_by_pathÚBUILTIN_DS_CONFIGÚds_cfgr   )r   Úsys_cfgÚdistroÚpathsÚusersÚ_groupsÚ_user_configs   &&&&   r   r   ÚDataSourceGCE.__init__I   s›   € Ü×Ñ×#Ñ# D°6ÔAØ ˆÔßÜ&×=Ò=¸gÓNÑˆUÜ07×0GÒ0GÈÓ0NÑ-ˆTÔ Ü›ˆŒÜ×(Ò(ä×$Ò$ W¨|¸UÐ.CÀRÓHÜ!ðó
ˆŒð !%§¡¨NÕ ;ˆÖr   c           	     ó   € V P                  4       p/ pV P                  '       Ed6   \        P                  ! 4       p\        V9   d,   VP                  \        4       VP                  ^ \        4       \        P                  RV4       \        V4      ^8¼  g   Q R4       hV F~  p\        V P                  VR7      p T;_uu_ 4         \        V P                  VR7      p RRR4       TR,          '       g   KX  Y@P                  n        \        P                  R	T4        M	  V P                  P                   f!   \        P#                  R
V P$                  4       M\        V P                  VR7      pVP'                  R4      '       gd   VP'                  R4      '       d'   \        P#                  VP'                  R4      4       R# \        P                  VP'                  R4      4       R# VP'                  R4      V n        VP'                  R4      V n        R#   \         d,   p\        P                  RTT4        Rp?RRR4       EK«  Rp?ii ; i  + '       g   i     EL}; i  \         d    \        P                  RT4        EKì  i ; i)r   z"Looking for the primary NIC in: %sz3The instance has to have at least one candidate NIC)Úiface)ÚaddressÚ
url_paramsz,Error fetching IMD with candidate NIC %s: %sNz$Unable to obtain a DHCP lease for %sÚsuccesszPrimary NIC found: %s.z(Did not find a fallback interface on %s.Úplatform_reports_gceÚreasonFú	meta-dataú	user-dataT)Úget_url_paramsÚperform_dhcp_setupr   Úfind_candidate_nicsÚDEFAULT_PRIMARY_INTERFACEÚremoveÚinsertr,   r-   Úlenr   rP   Úread_mdr   Ú	Exceptionr   Úfallback_interfaceÚwarningÚ
cloud_nameÚgetrJ   Úuserdata_raw)r   rY   ÚretÚcandidate_nicsÚcandidate_nicÚnetwork_contextÚes   &      r   Ú	_get_dataÚDataSourceGCE._get_dataX   s
  € Ø×(Ñ(Ó*ˆ
ØˆØ×"×"Ñ"Ü ×4Ò4Ó6ˆNÜ(¨NÔ:Ø×%Ñ%Ô&?Ô@Ø×%Ñ% aÔ)BÔCÜ�I‰IÐ:¸NÔKä�NÓ# qÔ(ðEàDóEØ(ã!/�Ü"1Ø—K‘KØ'ô#�ðß(šð%Ü")Ø(,×(=Ñ(=Ø+5ô#™C÷ )ð$ �y—>–>Ø5B—K‘KÔ2Ü—I‘IÐ6¸ÔFÙñ7 "0ð8 �{‰{×-Ñ-Ò5Ü—‘Ø>ÀÇÁôøô  $×"7Ñ"7ÀJÔOˆCà�w‰w�y×!Ò!Ø�w‰wÐ-×.Ò.Ü—‘˜CŸG™G HÓ-Ô.ñ ô —	‘	˜#Ÿ'™' (Ó+Ô,ÙØŸ™ Ó,ˆŒØŸG™G KÓ0ˆÔÙøô?  )ô %ÜŸI™IØ NØ -Ø !ôó
 %÷ )šûð%ú÷ )Ÿ˜ûô (ô Ü—I‘IØ>Àôó ð	úsZ   Â;
I'ÃIÃHÃI'ÈI	È%I	È<IÉ I'ÉI	ÉIÉI$ÉI'É$I'É'!JÊJc                ó   € R # r   © ©r   s   &r   Úlaunch_indexÚDataSourceGCE.launch_index‘   s   € ñ r   c                ó(   € V P                   R ,          # )úinstance-id©rJ   rv   s   &r   Úget_instance_idÚDataSourceGCE.get_instance_id–   s   € Ø�}‰}˜]Õ+Ð+r   c                óR   € V P                   R ,          p\        WP                  4      # )úpublic-keys-data)rJ   Ú_parse_public_keysrF   )r   Úpublic_keys_datas   & r   Úget_public_ssh_keysÚ!DataSourceGCE.get_public_ssh_keys™   s$   € ØŸ=™=Ð);Õ<ÐÜ!Ð"2×4EÑ4EÓFÐFr   c                ó*   € V F  p\        V!   K  	  R # r   )Ú#_write_host_key_to_guest_attributes)r   r   Úkeys   && r   Úpublish_host_keysÚDataSourceGCE.publish_host_keys�   s   € ÛˆCÜ/°Ô5ó r   c                óh   € \        V P                  R ,          P                  R4      ^ ,          R4      # )úlocal-hostnameÚ.F)r   rJ   Úsplit)r   ÚfqdnÚ
resolve_ipÚmetadata_onlys   &&&&r   Úget_hostnameÚDataSourceGCE.get_hostname¡   s.   € ä!Ø�M‰MÐ*Õ+×1Ñ1°#Ó6°qÕ9¸5ó
ð 	
r   c                ó(   € V P                   R ,          # )úavailability-zoner{   rv   s   &r   Úavailability_zoneÚDataSourceGCE.availability_zone§   s   € à�}‰}Ð0Õ1Ð1r   c                óH   € V P                   P                  R ^4      ^ ,          # )Ú-)r”   Úrsplitrv   s   &r   ÚregionÚDataSourceGCE.region«   s    € à×%Ñ%×,Ñ,¨S°!Ó4°QÕ7Ð7r   )rF   rN   rJ   r   rl   N)FFF)r8   r9   r:   r;   Údsnamer`   r
   ÚNETWORKr   ÚBOOT_NEW_INSTANCEÚBOOTÚdefault_update_eventsr   rr   Úpropertyrw   r|   r‚   r‡   r�   r”   r™   r<   r=   r>   s   @r   rA   rA   >   s’   ø‡ € à€FØÐà×ÑØ×'Ñ'Ø�N‰Nð
ðÐò<ò7ðr ñó ðò,òGò6ô
ð ñ2ó ð2ð ñ8ó ö8r   rA   c                   ó   € ] tR t^°tRtRtR# )ÚDataSourceGCELocalTru   N)r8   r9   r:   r;   r`   r<   ru   r   r   r¢   r¢   °   s   † ØÔr   r¢   c                 ó  € \         : R \        : R V : 2pVP                  R4      p\        P                  ! VV\
        RRR7      pVP                  4       '       d   \        P                  RV 4       R# \        P                  RV 4       R# )Ú/r%   ÚPUTF)r!   Údatar"   Úrequest_methodÚcheck_statusz&Wrote %s host key to guest attributes.z0Unable to write %s host key to guest attributes.N)	ÚGUEST_ATTRIBUTES_URLÚHOSTKEY_NAMESPACEÚencoder   r&   r'   Úokr,   r-   )Úkey_typeÚ	key_valuer!   r3   s   &&  r   r…   r…   ´   si   € ß,×.?ÂÐ
J€CØ× Ñ  Ó)€IÜ×ÒØØÜØØô€Dð ‡w�w‡y‚yÜ�	‰	Ð:¸HÖEä�	‰	ÐDÀhÖOr   c                 óÎ  €  V P                  R ^4      R,          w  rTR8w  d   R#  \        P                  ! T4      pRT9  d   R# TR,          pRp \
        P
                  P                  YE4      p\
        P
                  P                  \
        P                  P                  4      T8„  #   \        \        3 d     R# i ; i  \         d     R# i ; i  \         d     R# i ; i)N:é   NNFz
google-sshÚexpireOnz%Y-%m-%dT%H:%M:%S%z)
rŒ   Ú
ValueErrorÚAttributeErrorÚjsonÚloadsÚdatetimeÚstrptimeÚnowÚtimezoneÚutc)Ú
public_keyÚschemaÚjson_strÚjson_objÚ
expire_strÚ
format_strÚexpire_times   &      r   Ú_has_expiredrÂ   Ä   sá   € ðà%×+Ñ+¨D°!Ó4°RÕ8Ñˆð
 �ÔÙðÜ—:’:˜hÓ'ˆð
 ˜Ô!Ùà˜*Õ%€JØ&€JðÜ×'Ñ'×0Ñ0°ÓHˆô
 ×Ñ× Ñ ¤×!2Ñ!2×!6Ñ!6Ó7¸+ÑEÐEøô1 œÐ'ô Úðûô ô Úðûô ô Úðús4   ‚B+ §C ÁC Â+C Â?C ÃCÃCÃC$Ã#C$c                 óf  € . pV '       g   V# V  Fž  pV'       d;   \         ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   KG  VP                  R^4      p\        V4      ^8w  d   Kk  Vw  rVVRV39   g   Kz  \        V4      '       d   K�  VP	                  V4       K   	  V# )c              3   ó>   "  € T F  p\        V4      ^€8  x € K  	  R# 5i)é€   N)Úord)Ú.0Úcs   & r   Ú	<genexpr>Ú%_parse_public_keys.<locals>.<genexpr>ï   s   é € Ð$F¹:°a¤S¨£V¨c¦\»:ùs   ‚FTÚ:Ú	cloudinit)ÚallrŒ   re   rÂ   Úappend)r�   rF   Úpublic_keysr»   Úsplit_public_keyÚuserr†   s   &&     r   r€   r€   æ   sš   € ð
 €KßØÐÛ&ˆ
ß§£Ñ$F¹:Ó$F§§¢Ñ$F¹:Ó$F×!FÒ!FÙØ%×+Ñ+¨C°Ó3ÐÜÐÓ  AÔ%ÙØ$‰	ˆØ�K Ð.Ö.´|ÀC×7HÔ7HØ×Ñ˜sÖ#ñ 'ð Ðr   Tc                 ó¬  € V f   \         p RR RR RRRR /p\        4       VR&   V'       d   VR,          '       g   RVR&   V# \        P                  ! V 4      '       g%   \        P                  RV 4       R	V ,          VR&   V# . ROp\        WP                  VP                  4      p/ pV FM  w  rxršpR pV F  pVP                  WÚV4      pVf   K  TpK  	  V	'       d   Vf   RpW÷,          VR&   Vu # WÆV&   KO  	  \        P                  ! VR,          ;'       g    R4      p\        P                  ! VR,          ;'       g    R4      pVP                  R4      VP                  R4      .pVP                  RR4      P                  4       pVR8w  dX   VP                  R4      '       gA   VP                  VP                  R4      4       VP                  VP                  R4      4       RP                  V Uu. uF  pV'       g   K  VNK  	  up4      pVP!                  4       VR&   VR,          '       d#   VR,          P#                  R4      R,          VR&   RV9   d`   VR,          P%                  R4      pVP                  R4      pVR8X  d   \'        V4      pMV'       d   \        P)                  RV4       VVR&   VVR&   VVR&   WcR&   R
VR&   V# u upi )Nr]   r^   rZ   Fr\   r[   zNot running on GCE.z%s is not resolvablezaddress "%s" is not resolvableTr“   úinstance-dataúproject-dataz)required key %s returned nothing. not GCEz{}ÚsshKeyszssh-keyszblock-project-ssh-keysÚ ÚtrueÚ
r   r¤   r%   zuser-data-encodingÚbase64z(unknown user-data-encoding: %s, ignoring))rz   )zinstance/idTTF)r“   )zinstance/zoneTTF)rŠ   )zinstance/hostnameTTF)rÓ   )zinstance/attributesFFT)rÔ   )zproject/attributesFFTéÿÿÿÿ)Ú	MD_V1_URLr[   r   Úis_resolvable_urlr,   r-   r   r   r   r6   r´   rµ   rk   ÚlowerrÎ   ÚjoinÚ
splitlinesrŒ   r«   r   ri   )rX   rY   Úplatform_checkrm   Úurl_mapÚmetadata_fetcherÚmdÚmkeyrQ   Úrequiredr0   r1   r2   r/   Ú	new_valuer5   Úinstance_dataÚproject_dataÚ
valid_keysÚblock_projectr†   r�   ÚudÚencodings   &&&                     r   rf   rf   ú   sÉ  € à‚Üˆð 	�TØ�TØ�5Ø�$ð	€Cô #7Ó"8€CÐÑç˜cÐ"8×9Ô9Ø-ˆˆH‰Øˆ
ô ×!Ò! '×*Ò*Ü�	‰	Ð(¨'Ô2Ø8¸7ÕBˆˆH‰Øˆ
ò€Gô -Ø×'Ñ'¨×)GÑ)GóÐð 
€Bã8?Ñ4ˆ�X¨ØˆÛˆDØ(×2Ñ2°4À,ÓOˆIØÔ$Ø!’ñ ÷ ˜šØ=ˆCØ�JˆC�‰MØŠJØˆ4‹ñ 9@ô —J’J˜r /Õ2×:Ð:°dÓ;€MÜ—:’:˜b Õ0×8Ð8°DÓ9€LØ×#Ñ# IÓ.°×0AÑ0AÀ*Ó0MÐN€JØ!×%Ñ%Ð&>ÀÓC×IÑIÓK€MØ˜Ô }×'8Ñ'8¸×'CÒ'CØ×Ñ˜,×*Ñ*¨:Ó6Ô7Ø×Ñ˜,×*Ñ*¨9Ó5Ô6Ø—y‘y±Ó!C±¨#¼s§# #±Ñ!CÓDÐØ-×8Ñ8Ó:€BÐÑà	Ð
×ÔØ"$Ð%8Õ"9×"?Ñ"?ÀÓ"DÀRÕ"HˆÐÑà�mÔ#à˜;Õ'×.Ñ.¨wÓ7ˆØ ×$Ñ$Ð%9Ó:ˆØ�xÔÜ˜2“‰BßÜ�K‰KÐBÀHÔMØˆˆKÑð (€B€Ñð &€B€~ÑàˆÑØ€Cˆ	�Nà€Jùò3 "Ds   Ç6
KÈKc                  ó  € \         P                  ! R 4      ;'       g    Rp V R8X  g   V R8X  d   R# \         P                  ! R4      ;'       g    RpVP                  R4      '       d   R# \        P	                  RW4       R# )	zsystem-product-namezN/AzGoogle Compute Enginer   Tzsystem-serial-numberzGoogleCloud-z6Not running on google cloud. product-name=%s serial=%sF)r   Úread_dmi_dataÚ
startswithr,   r-   )ÚpnameÚserials     r   r[   r[   M  ss   € Ü×ÒÐ3Ó4×=Ð=¸€EØÐ'Ô'¨5°HÔ+<Ùô ×ÒÐ5Ó6×?Ð?¸%€FØ×Ñ˜×(Ò(Ùä‡I�IØ@À%ôñ r   c                 ó8   € \         P                  ! V \        4      # r   )r   Úlist_from_dependsÚdatasources)Údependss   &r   Úget_datasource_liströ   e  s   € Ü×$Ò$ W¬kÓ:Ð:r   Ú__main__)Ú	b64encodezQuery GCE Metadata Service)Údescriptionz
--endpointÚURLz The url of the metadata service.)ÚmetavarÚhelpÚdefaultz--no-platform-checkrà   zIgnore smbios platform checkÚstore_false)Údestrü   Úactionrý   )rX   rà   r^   z/User-data cannot be decoded. Writing as base64
zuser-data-b64)ÚindentÚ	sort_keysÚ
separatorsr   )NNT)Ú,z: )=r¶   r´   ÚloggingrÙ   r   rÌ   r   r   r   r   r   Úcloudinit.distrosr	   Úcloudinit.eventr
   r   Úcloudinit.net.dhcpr   Úcloudinit.net.ephemeralr   Úcloudinit.sourcesr   Ú	getLoggerr8   r,   rÛ   rM   r©   rª   r'   rb   r   rE   rA   r¢   r…   rÂ   r€   rf   r[   ÚDEP_FILESYSTEMÚDEP_NETWORKrô   rö   ÚargparseÚsysrø   ÚArgumentParserÚparserÚadd_argumentÚ
parse_argsÚargsÚendpointrà   r¦   r+   ÚUnicodeDecodeErrorÚstderrÚwriteÚprintÚdumpsru   r   r   Ú<module>r     s  ðó
 Û Û Ý ç 9Õ 9Ý %ß 1Ý /Ý 3Ý 0à×Ò˜Ó!€àA€	Ø# YÐ/Ð ð#ð ð Ð Ø˜hÐ
'€Ø"Ð ÷ñ ô@o8�G×&Ñ&ô o8ôd˜ô òPò FôDô(Pòfð$ ˜'×0Ñ0Ð2Ð3Ø�W×+Ñ+¨W×-@Ñ-@ÐAÐBð€ò;ð ˆzÔÛÛÝ à×$Ò$Ð1MÔN€FØ
×ÑØØØ/Øð	 ô ð ×ÑØØØ+ØØð ô ð ×ÑÓ€DÙ˜4Ÿ=™=¸×9LÑ9LÔM€DØ�dÔð	JØ $ [Õ 1× 8Ñ 8Ó :ˆD�Ññ 
ˆ$�*Š*�T !¨tÀÔ
LÖMñG øð6 "ô 	JØ�J‰J×ÑØBôð �[Ð!á$-¨d°;Õ.?Ó$@×$GÑ$GÓ$IˆD�Ó!ð	Jús   ÅF ÆAGÇG