+
    i6              	          ^ 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                  YT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 yyC ..t}}=E
  !MM009E  		3T99E "" 	&.CIIc%% 	&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    ##D6A &==gNU070G0G0N-T(($$W|U.CR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6N(N:%%&?@%%a)BCII:NKN#q(EDE(!/"1KK'#(%")(,(=(=+5#C )$ y>>5BKK2II6F7 "08 {{--5> $"7"7JOCwwy!!ww-..CGGH-.  		#''(+,,GGK0?  ) %II N - !
 % )% ) ( II> 	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$    ==);<!"24E4E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.    !MM*+11#6q95
 	
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!4Q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''NN
<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    ,.?
JC  )ID wwyy		:HE		Dh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!4R8
 ::h'
 !*%J&J''00H
   !2!2!6!67+EE1 '     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:aSVc\: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..|C7H7H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  rxrpR pV F  pVP                  WV4      pVf   K  TpK  	  V	'       d   Vf   RpW,          VR&   Vu # WV&   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"8Cc"899-H
 !!'**		('287BH
G -'')G)G 
B8?4XD(224,OI$!  =CJCMJ4 9@ JJr/2::d;M::b088D9L##I.0A0A*0MNJ!%%&>CIIKM}'8'8'C'C,**:67,**956yy!C#s##!CD-88:B	
"$%8"9"?"?"DR"Hm#;'..w7 $$%9:x2BKKBHMK (B &B~C	NJ3 "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''5H+< 56??%F((II@% r   c                 8    \         P                  ! V \        4      # r   )r   list_from_dependsdatasources)dependss   &r   get_datasource_listr   e  s    $$Wk::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8G&& o8d P FD(Pf$ '0023W++W-@-@AB; z $$1MNF
/	   +   D4==9L9LMDd	J $[ 1 8 8 :D 
$**T!t
LMG 6 " 	JJJB [!$-d;.?$@$G$G$ID!	Js   F AGG