+
    i(                        ^ RI t ^ RIt^ RIHtHtHtHt ^ RIHtH	t	 ^ RI
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]].tRtRtRtRt]t]]]]].,          t ! R R]P@                  ]PB                  4      t" ! R R]"4      t#RR lt$]#]PJ                  33]"]PJ                  ]PL                  33.t'R t(R# )    N)dmisources
url_helperutil)
EventScope	EventType)NoDHCPLeaseError)EphemeralDHCPv4)DataSourceOracle)	openstackziid-dsopenstackzinstance-idzOpenStack NovazOpenStack ComputeOpenTelekomCloudzSAP CCloud VMHUAWEICLOUDzSamsung Cloud Platformc                      a a ] tR t^,t oRt]P                  tRt]	P                  ]P                  ]P                  ]P                  ]P                  0/tV 3R ltR tR tR t]R 4       tR tR	 tR
 tRtVtV ;t# )DataSourceOpenStack	OpenStackFc                   < \         \        V `  WV4       R V n        \        P
                  ! V P                  4      V n        R V n        / V n	        \        P                  V n        \        P                  V n        R # N)superr   __init__metadata_addressr   fetch_ssl_detailspathsssl_detailsversionfilesr   UNSETec2_metadatanetwork_json)selfsys_cfgdistror   	__class__s   &&&&G/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOpenStack.pyr   DataSourceOpenStack.__init__>   sZ    !41'5I $11$**=
#MM#MM    c                    \         P                  P                  V 4      pV: R V P                  : RV P                  : R2pV# )z [z,ver=])r   
DataSource__str__dsmoder   )r   rootmstrs   &  r#   r)   DataSourceOpenStack.__str__G   s1    !!))$/#'dllCr%   c           	        R P                  V P                  P                  R7      R.pV P                  P	                  RV4      pV Uu. uF#  p\
        P                  ! V4      '       g   K!  VNK%  	  pp\        V4      \        V4      8w  d9   \        P                  R\        \        V4      \        V4      ,
          4      4       \        V4      '       d   TpM\        P                  R4       Tp. p/ pV F/  p\        P                  ! VR4      pVP                  V4       WvV&   K1  	  V P!                  4       p	\"        P$                  ! 4       p
\        P&                  ! VV	P(                  V	P*                  RR7      w  rV'       d   \        P                  R	Wk,          4       M:\        P                  R
V\-        \"        P$                  ! 4       V
,
          4      4       VP	                  V4      V n        \1        V4      # u upi )z"http://[fe80::a9fe:a9fe%25{iface}])ifacezhttp://169.254.169.254metadata_urlsz,Removed the following from metadata urls: %sz+Empty metadata url list! using default listr   F)urlsmax_waittimeoutconnect_synchronouslyzUsing metadata source: '%s'z2Giving up on OpenStack md from %s after %s seconds)formatr!   fallback_interfaceds_cfggetr   is_resolvable_urlsetLOGdebuglistlenwarningr   combine_urlappendget_url_paramstime	monotonicwait_for_urlmax_wait_secondstimeout_secondsintr   bool)r   DEF_MD_URLSr1   xfilteredmd_urlsurl2baseurlmd_url
url_params
start_time	avail_url	_responses   &            r#   wait_for_metadata_service-DataSourceOpenStack.wait_for_metadata_serviceL   s   077kk44 8  %	
 {{<#At!t'='=a'@AAtAx=CI%II>c$i#h-/1 x==DKKEFDC++C=FNN6""V 
 ((*
^^%
)6600.."'	 
	 II3X5HIIIDDNN$z12 !)Y 7IK Bs   	G>,G>c                J    \         P                  ! V P                  4       4      # r   )r   instance_id_matches_system_uuidget_instance_id)r   r    s   &&r#   check_instance_id%DataSourceOpenStack.check_instance_id{   s    66t7K7K7MNNr%   c                   V P                   \        P                  8w  d   V P                   # \        P                  ! V P
                  P                  RR4      4      '       d   RV n         V P                   # V P                  \        P                  8X  d   \        P                  R4       R# \        P                  R4       \        P                  ! V P                  RR7      V n         V P                   # )z@Return a network config dict for rendering ENI or netplan files.apply_network_configTNz<Unexpected call to network_config when network_json is None.z(network config provided via network_json)
known_macs)_network_configr   r   r   is_falser7   r8   r   r;   r?   r<   r   convert_net_json)r   s   &r#   network_config"DataSourceOpenStack.network_config   s     7==0'''
 ==)?FGG#'D '''-KKN 		<=(99$ 
 ###r%   c                   V P                   '       dN    \        V P                  V P                  P                  4      ;_uu_ 4        V P	                  4       pRRR4       M V P	                  4       pV P                  XP                  R4      .4      V n        V P                  \        P                  8X  d   R# VP                  R/ 4      p\        P                   ! V\"        .4      pW0n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VR,          V n        V P.                  P1                  VP                  R	/ 4      4       VP                  R
4      p \        P2                  ! V4      V n        VP                  R4      p \        P2                  ! V4      V n        R#   + '       g   i     ELc; i  \
        \        P                  3 d0   p\        P                  ! \        \        T4      4        Rp?R# Rp?ii ; i  \        P                   d0   p\        P                  ! \        \        T4      4        Rp?R# Rp?ii ; i  \6         d)   p\        P9                  RT4       RT n         Rp?ELRp?ii ; i  \6         d)   p\        P9                  RT4       RT n         Rp?R# Rp?ii ; i)zCrawl metadata, parse and persist that data for this instance.

@return: True when metadata discovered indicates OpenStack datasource.
    False when unable to contact metadata service or when metadata
    format is invalid or disabled.
NFr*   metadatazec2-metadatanetworkdatauserdatar   r   
vendordataz"Invalid content in vendor-data: %svendordata2z#Invalid content in vendor-data2: %sT)perform_dhcp_setupr
   r!   r6   _crawl_metadatar	   r   InvalidMetaDataExceptionr   logexcr;   str_determine_dsmoder8   r*   DSMODE_DISABLEDmergemanydictDEFAULT_METADATAre   r   r   userdata_rawr   r   updateconvert_vendordatavendordata_raw
ValueErrorr?   vendordata2_raw)r   resultsemdvdvd2s   &     r#   	_get_dataDataSourceOpenStack._get_data   s8    """$KK!?!?  #224G ..0
 ,,gkk(.C-DE;;'111[[R(%5 67#KK7#KK6#KK
3y)

'++gr23[[&	'")"<"<R"@D
 kk-(	(#*#=#=c#BD 
 Q   %g&F&FG CQ( 33 CQ(&  	'KK<a@"&D	'  	(KK=qA#'D  		(s}   2G GG !H$ 9I+ &J! G	G G H!2$HH!$I(9$I##I(+J6JJ!K,KKc                    V P                  4       '       g   \        P                  ! R4      h T P                  4       p \        T P                  T P                  TP                  TP                  R7      pT#   \         d5   p\        P                  ! RP	                  \        T4      R7      4      hRp?ii ; i  \        P                   d%   p\        P                  ! \        T4      4      hRp?i\        P                  \        3 d9   pRP	                  T P                  R7      p\        P                  ! T4      ThRp?ii ; i)zCrawl metadata service when available.

@returns: Dictionary with all metadata discovered for this datasource.
@raise: InvalidMetaDataException on unreadable or broken
    metadata.
z No active metadata service foundz,IOError contacting metadata service: {error})errorN)r   retriesr3   zBroken metadata address {addr})addr)rU   r   rl   IOErrorr5   rn   rB   read_metadata_servicer   r   num_retriesrG   r   NonReadableBrokenMetadata)r   rz   rQ   resultmsgs   &    r#   rk   #DataSourceOpenStack._crawl_metadata   s.   
	1133666  4 ((*
	?*%% ,,".."22	F /  	22>EEa& F  	  $$ 	;223q6::(('2 	?299** : C 2237Q>		?sF   A9 A9  7B; 9B8/B33B8;EC//EE3E  Ec                   RV P                   P                  R4      9   p\        P                  ! 4       '       g   R# \        P
                  ! R4      pV\        9   d   R# \        P
                  ! R4      \        9   d   R# V'       d   \        P                  ! 4       '       d   R# \        P                  ! ^4      P                  R4      \        8X  d   R# R# )z<Return True when a potential OpenStack platform is detected.Oracledatasource_listTzsystem-product-namezchassis-asset-tagproduct_nameF)r    r8   r   is_x86r   read_dmi_dataVALID_DMI_PRODUCT_NAMESVALID_DMI_ASSET_TAGSoracle_is_platform_viableget_proc_envDMI_PRODUCT_NOVA)r   accept_oracler   s   &  r#   	ds_detectDataSourceOpenStack.ds_detect   s     DLL$4$45F$GG{{}}(()>?22237KKv99;;q!%%n59IIr%   )r_   r*   r   r   re   r   r   r   rs   rx   rv   r   )__name__
__module____qualname____firstlineno__dsnamer   r   r_   rj   r   NETWORKr   BOOT_NEW_INSTANCEBOOTBOOT_LEGACYHOTPLUGsupported_update_eventsr   r)   rU   rZ   propertyrb   r~   rk   r   __static_attributes____classdictcell____classcell__)r"   __classdict__s   @@r#   r   r   ,   s     FmmO  	''NN!!	
*
-^O $ $03j#J r%   r   c                       ] tR tRtRtRtRtR# )DataSourceOpenStackLocali  aa  Run in init-local using a dhcp discovery prior to metadata crawl.

In init-local, no network is available. This subclass sets up minimal
networking with dhclient on a viable nic so that it can talk to the
metadata service. If the metadata service provides network configuration
then render the network configuration for that instance based on metadata.
T N)r   r   r   r   __doc__rj   r   r   r%   r#   r   r     s     r%   r   c                 R    \         P                  ! WW#R 7      pVP                  4       # ))r   r3   r   )r   MetadataReaderread_v2)base_urlr   r3   r   readers   &&&& r#   r   r     s&    %%7F >>r%   c                 8    \         P                  ! V \        4      # r   )r   list_from_dependsdatasources)dependss   &r#   get_datasource_listr      s    $$Wk::r%   )N   r   ))loggingrC   	cloudinitr   r   r   r   cloudinit.eventr   r   cloudinit.net.dhcpr	   cloudinit.net.ephemeralr
   cloudinit.sourcesr   r   cloudinit.sources.helpersr   	getLoggerr   r;   DEFAULT_IIDrr   r   DMI_PRODUCT_COMPUTEr   DMI_ASSET_TAG_OPENTELEKOMDMI_ASSET_TAG_SAPCCLOUDDMI_ASSET_TAG_HUAWEICLOUD"DMI_ASSET_TAG_SAMSUNGCLOUDPLATFORMr   SourceMixinr(   r   r   r   DEP_FILESYSTEMDEP_NETWORKr   r   r   r%   r#   <module>r      s     4 4 1 / 3 8 /!  ; 
 $ ) +-@A .  * ) %= ".  &	  V)//1C1C Vr	2 	  6 68971173F3FGH;r%   