+
    ˜qgjÕ>  ã                   ó  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIHtHtHtH	t	 ^ RI
Ht ]P                  ! ]4      t ! R R]P                  4      tRR ltRR ltRR	 ltR
 t ! R R]4      t]]P,                  33]]P,                  ]P.                  33.tR t]R8X  dr   ^ RIHt ]P8                  ! ]P:                  R7       ]^,          t]	P>                  ! ]4      w  t t!t"t#]$! R]  24       ]$! R]! 24       ]$! R]" 24       ]$! R]# 24       R# R# )é    N)Úpartial)ÚdmiÚ	lifecycleÚsourcesÚutil)Úenic                   óŒ   a a€ ] tR t^t oRtR tV 3R ltR tR t]	R 4       t
V3R lR ltR	 tR
 tR t]	R 4       tRtVtV ;t# )ÚDataSourceNoCloudÚNoCloudc                ó>  € \         P                  P                  WW#4       R V n        \        P
                  P                  VP                  R4      \        P
                  P                  VP                  R4      .V n        R V n        RV n	        R V n
        R V n        R # )NÚnocloudúnocloud-net)Ú/úfile://)r   Ú
DataSourceÚ__init__ÚseedÚosÚpathÚjoinÚseed_dirÚ	seed_dirsÚsupported_seed_startsÚ_network_configÚ_network_eni©ÚselfÚsys_cfgÚdistroÚpathss   &&&&ÚE/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNoCloud.pyr   ÚDataSourceNoCloud.__init__   su   € Ü×Ñ×#Ñ# D°6ÔAØˆŒ	ä�G‰G�L‰L˜Ÿ™¨Ó3Ü�G‰G�L‰L˜Ÿ™¨Ó7ð
ˆŒð ˆŒØ%5ˆÔ"Ø#ˆÔØ ˆÖó    c                óø   <€ \         SV `  4       R,           V P                  '       d   RV P                   R2MR,           V P                  \        P
                  8w  d   RV P                   R2,           # R,           # )z@append seed and dsmode info when they contain non-default valuesÚ z[seed=Ú]Ú z[dsmode=)ÚsuperÚ__str__r   Údsmoder   ÚDSMODE_NETWORK)r   Ú	__class__s   &€r!   r)   ÚDataSourceNoCloud.__str__&   su   ø€ ô ‰G‰OÓØõà(,¯	¯	¨	�˜Ÿ	™	�{ !Ñ$°rõ;ð
 —;‘;¤'×"8Ñ"8Ô8ð ˜4Ÿ;™;˜- qÐ)õ	ð		
ð õð		
r#   c                ó
  € \         P                  ! R 4      pVP                  \         P                  ! R4      4       \         P                  ! RVP                  4       ,          4      pVP                  \         P                  ! RVP	                  4       ,          4      4       VP                  \         P                  ! RV,          4      4       \        \        V4      \        V4      ,          4      pVP                  RR7       V# )z	TYPE=vfatzTYPE=iso9660zLABEL=%szLABEL_FATBOOT=%sT)Úreverse)r   Úfind_devs_withÚextendÚupperÚlowerÚlistÚsetÚsort)r   ÚlabelÚfslistÚ
label_listÚdevlists   &&   r!   Ú_get_devicesÚDataSourceNoCloud._get_devices3   s±   € Ü×$Ò$ [Ó1ˆØ�‰”d×)Ò)¨.Ó9Ô:ä×(Ò(¨°e·k±k³mÕ)CÓDˆ
Ø×Ñœ$×-Ò-¨j¸5¿;¹;»=Õ.HÓIÔJØ×Ñœ$×-Ò-Ð.@À5Õ.HÓIÔJä”s˜6“{¤S¨£_Õ4Ó5ˆØ�‰˜TˆÔ"Øˆr#   c                óv
  € R RRV P                   /p. pR/ RRRRRR/p / p\        P                  ! R	4      pV'       d1   \        WE4      '       d    VP	                  R
4       \        VRV/4      p / p\        T4      '       d    TP	                  R4       \        TRT/4      pRRR.RRR./pT P                   FM  p \        P                  ! T3/ TB pTP	                  T4       \        P                  RT4       \        Y84      p M	  T P                  P                  R4      '       d/   TP	                  R4       T P                  R,          TR,          R&   RT P                  9   d8   RT P                  9   d'   \        Y0P                  4      pTP	                  R4       R p	T P                  P                  RR4      p
T
ez   T P!                  T
4       Fd  p \        P                  RT4        \        P"                  ! Y¹T4      p\        Y84      p\        P                  RT4       TP	                  T4        M	  T'       g   R# RTR,          9   dç   TR,          R,          pRpT P.                   F  pTP1                  T4      '       g   K  Tp M	  T'       g   T P3                  T4       R# \        P4                  ! T4      p\        P6                  ! TRR7      w  pppp\        P                  RT4       \        P8                  ! TR,          T.4      TR&   TTR&   TTR&   TTR&   TP	                  T4       \        P8                  ! TR,          T.4      TR&   T P;                  TR,          P                  R4      .4      T n         T P                   \<        P>                  8X  d#   \        P                  RY P                   4       R# RPA                  T4      T n!        TR,          T n"        TR,          T n#        TR,          T n$        TR,          T n%        TR,          P                  R 4      T n&        R!#   \         d     \        P                  ! \        R4        R# i ; i  \         d     \        P                  ! \        R4        R# i ; i  \         d     EKè  i ; i  \         d    \        P%                  RTT
4        EKö  i ; i  \&         d-   pTP(                  \(        P*                  8w  d   h  Rp?EK,  Rp?i\        P,                   d"    \        P                  ! \        RT4        EKd  i ; i)"úinstance-idr   r*   ú	meta-dataú	user-datar'   úvendor-dataúnetwork-configNúsystem-serial-numberr   zUnable to parse dmi dataFÚcmdlinez!Unable to parse command line dataÚrequiredÚoptionalzUsing seeded data from %sÚseedfromÚds_config_seedfromÚ	ds_configc                 ó0   € \         P                  ! V 3/ VB # ©N)r   Úpathprefix2dict)ÚmpÚdatas   &&r!   Ú_pp2d_callbackÚ3DataSourceNoCloud._get_data.<locals>._pp2d_callback€   s   € Ü×'Ò'¨Ñ3¨dÑ3Ð3r#   Úfs_labelÚcidatazAttempting to use data from %sz)device %s with label=%s not a valid seed.zUsing data from %sz(Failed to mount %s when looking for data)ÚtimeoutzUsing seeded cache data from %sz&%s: not claiming datasource, dsmode=%sÚ,znetwork-interfacesT)'r*   r   Úread_dmi_dataÚload_cmdline_dataÚappendÚ_merge_new_seedÚ	Exceptionr   ÚlogexcÚLOGr   rL   ÚdebugÚ
ValueErrorÚds_cfgÚgetr;   Úmount_cbÚwarningÚOSErrorÚerrnoÚENOENTÚMountFailedErrorr   Ú
startswithÚ_log_unusable_seedfromÚsub_dmi_varsÚread_seededÚmergemanydictÚ_determine_dsmoder   ÚDSMODE_DISABLEDr   r   ÚmetadataÚuserdata_rawÚvendordata_rawr   r   )r   ÚdefaultsÚfoundÚmydataÚmdÚserialÚpp2d_kwargsr   ÚseededrO   r7   ÚdevÚerG   Ú	seedfoundÚprotoÚmd_seedÚudÚvdÚnetworks   &                   r!   Ú	_get_dataÚDataSourceNoCloud._get_data?   sÃ  € à˜9Ø�d—k‘kð
ˆð
 ˆà˜Ø˜Ø˜2Ø˜dð	
ˆð
	ð ˆBÜ×&Ò&Ð'=Ó>ˆFßÔ+¨B×7Ò7Ø—‘˜UÔ#Ü(¨°+¸rÐ1BÓC�ð
	àˆBÜ  ×$Ò$Ø—‘˜YÔ'Ü(¨°+¸rÐ1BÓC�ð ˜ kÐ2Ø˜Ð(8Ð9ð
ˆð
 —N”NˆDðÜ×-Ò-¨dÑB°kÑB�Ø—‘˜TÔ"Ü—	‘	Ð5°tÔ<Ü(¨Ó8�Ùñ #ð �;‰;�?‰?˜:×&Ò&Ø�L‰LÐ-Ô.Ø.2¯k©k¸*Õ.EˆF�;Õ 
Ñ+ð ˜$Ÿ+™+Ô%¨+¸¿¹Ô*DÜ$ V¯[©[Ó9ˆFØ�L‰L˜Ô%ò	4ð —‘—‘ 
¨HÓ5ˆØÒØ×(Ñ(¨Ö/�ðÜ—I‘IÐ>ÀÔDð
!Ü!%§¢Ø°ó"˜ô -¨VÓ<�Fä—I‘IÐ2°CÔ8Ø—L‘L Ô%Ùñ) 0÷> Ùð ˜ Õ,Ô,Ø˜kÕ*¨:Õ6ˆHØˆIØ×3Ô3�Ø×&Ñ& u×-Ô-Ø %�IÙñ 4÷ Ø×+Ñ+¨HÔ5Ùô ×'Ò'¨Ó1ˆHô (,×'7Ò'7¸È$Ô'OÑ$ˆG�R˜˜WÜ�I‰IÐ7¸ÔBô #'×"4Ò"4Ø˜Õ$ gÐ.ó#ˆF�;Ñð #%ˆF�;ÑØ$&ˆF�=Ñ!Ø'.ˆFÐ#Ñ$Ø�L‰L˜Ô"ô #×0Ò0Ø�KÕ  (Ð+ó
ˆˆ{Ñð ×,Ñ,Ø�KÕ ×$Ñ$ XÓ.Ð/ó
ˆŒð �;‰;œ'×1Ñ1Ô1Ü�I‰IØ8¸$ÇÁôñ à—H‘H˜U“OˆŒ	Ø˜{Õ+ˆŒØ" ;Õ/ˆÔØ$ ]Õ3ˆÔØ%Ð&6Õ7ˆÔØ" ;Õ/×3Ñ3Ð4HÓIˆÔÙøôO ô 	Ü�KŠKœÐ7Ô8Úð	ûô ô 	Ü�KŠKœÐ@ÔAÚð	ûô" ô Ûðûô: &ô !ÜŸ™ØGØØ!ôó
 !ð!ûô ô Ø—w‘w¤%§,¡,Ô.Øö /ûä×,Ñ,ô Ü—K’KÜÐGÈ÷ð ðúsƒ   žP6 ¾0P6 Á/2Q# Â;A	RÇSÇ.R#È2SÐ6&Q ÑQ Ñ#&RÒRÒR ÒR Ò#"S
ÓSÓ	S
Ó
SÓT8Ó S?Ó?T8ÔT8Ô7T8c                ó†   € V P                   '       g%   \        P                  ! 4       '       d   R MRV n         V P                   # )Úlxdr   )Ú_platform_typer   Úis_lxd©r   s   &r!   Úplatform_typeÚDataSourceNoCloud.platform_typeÞ   s.   € à×"×"Ð"Ü+/¯;ª;¯=ª=¡%¸iˆDÔØ×"Ñ"Ð"r#   c                ó    <€ V ^8„  d   QhRS[ /# ©é   rG   ©Ústr)ÚformatÚ__classdict__s   "€r!   Ú__annotate__ÚDataSourceNoCloud.__annotate__ä   s   ø€ ÷ 
ñ 
©sñ 
r#   c                óJ   € \         P                  RV V P                  V4       R# )ú!Stage-specific level and message.zN%s only uses seeds starting with %s - will try to use %s in the network stage.N)r[   Úinfor   ©r   rG   s   &&r!   rg   Ú(DataSourceNoCloud._log_unusable_seedfromä   s"   € ä�‰ð$àØ×&Ñ&Øö	
r#   c                ó"   € \         P                  # )z=Return unknown when 'cloud-name' key is absent from metadata.)r   ÚMETADATA_UNKNOWNr…   s   &r!   Ú_get_cloud_nameÚ!DataSourceNoCloud._get_cloud_nameî   s   € ä×'Ñ'Ð'r#   c                óv   € V P                   P                  R4      '       d   RpMRpV: RV P                   : R2# )z/Return the subplatform metadata source details.z/devzconfig-diskzseed-dirz (Ú))r   rf   )r   Úsubplatform_types   & r!   Ú_get_subplatformÚ"DataSourceNoCloud._get_subplatformò   s2   € à�9‰9×Ñ ×'Ò'Ø,Ñà)ÐÛ,¨d¯i¬iÐ8Ð8r#   c                óš   € V P                  4       pV'       g   R # \        V RV P                  .4      p\        VR7      pV'       g   R # WB8H  # )Nr   )Údirs)Úget_instance_idÚgetattrr   Ú_quick_read_instance_id)r   r   Úcurrentr    Úquick_ids   &&   r!   Úcheck_instance_idÚ#DataSourceNoCloud.check_instance_idú   sG   € ð ×&Ñ&Ó(ˆßÙô �t˜[¨4¯=©=¨/Ó:ˆÜ*°Ô5ˆßÙØÑ"Ð"r#   c                óÎ   € V P                   fM   V P                  e?   \        P                  ! RRRR7       \        P
                  ! V P                  4      V n         V P                   # )Nz$Eni network configuration in NoCloudz24.3z,You can use network v1 or network v2 instead©Ú
deprecatedÚdeprecated_versionÚextra_message)r   r   r   Ú	deprecater   Úconvert_eni_datar…   s   &r!   Únetwork_configÚ DataSourceNoCloud.network_config	  sX   € à×ÑÒ'Ø× Ñ Ò,Ü×#Ò#ØEØ'-àFõ	ô (+×';Ò';¸D×<MÑ<MÓ'N�Ô$Ø×#Ñ#Ð#r#   )r   r   rƒ   r*   rm   r   r   r   r   rn   ro   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Údsnamer   r)   r;   r   Úpropertyr†   rg   r˜   r�   r¦   r¯   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r,   rŽ   s   @@r!   r
   r
      sf   ù‡ € à€Fò
!õ
ò
ò]ð~ ñ#ó ð#÷

ð 
ò(ò9ò#ð ñ$ó ÷$ð $r#   r
   c                 ó<  € V f   . p Rp/ p\        V4      '       d   W9   d	   W!,          # V  FZ  pVf   K	   \        P                  ! VR.R7      p\        P                  ! VR,          4      pV'       d   W9   d   WQ,          u # KZ  K\  	  R #   \         d     Kn  i ; i)Nr>   r?   )rE   )rV   r   rL   Ú	load_yamlr]   )r    Úiid_keyÚfillÚdrN   rs   s   &     r!   r£   r£     sš   € Ø‚|Øˆà€GØ€DÜ˜×Ò 7¤?Ø�}ÐãˆØŠ9Ùð	Ü×'Ò'¨°[°MÔBˆDÜ—’  [Õ 1Ó2ˆBß�g”mØ•{Ò"ñ $‰rñ ñ øô ô 	Úð	ús   ¶=BÁ4BÂBÂBc                 ó�  € R \         P                  3R\         P                  3.pV F›  w  r4\        W0V4      '       g   K  RV 9   d    R# V P	                  R4      pV'       d[   VP                  R4      '       d   \         P                  V R&    R# VP                  R4      '       d   \         P                  V R&    R# W@R&    R# 	  R# )z
ds=nocloudzds=nocloud-netr*   TrG   F©úhttp://zhttps://zftp://zftps://)r   r   )r   ÚDSMODE_LOCALr+   Úparse_cmdline_datar_   rf   )r½   rD   ÚpairsÚidstrr*   rG   s   &&    r!   rV   rV   /  sÆ   € à	”w×+Ñ+Ð,Ø	œ7×1Ñ1Ð2ð€Eó ‰ˆÜ! %¨w×7Ò7ÙØ�tÔò à—8‘8˜JÓ'ˆßØ×"Ñ"Ø<÷ò ô ")×!7Ñ!7��X‘ò ð ×$Ñ$Ð%5×6Ò6Ü!(×!5Ñ!5��X‘ò ð $�‰Nâñ' ñ( r#   c                 ó"  € Vf   \         P                  ! 4       pRV,          pRV ,          V9   g   RV ,          V9   g   R# RpVP                  4        F.  pVP                  V 4      '       g   K  VP                  R^4      pK0  	  V^,          P                  R4      p\	        V4      ^8”  d   VR,          pMRpRR	R
RRR/pV F3  pVR8X  d   K   VP                  R^4      w  ršW—9   d	   Wy,          p	W¡V	&   K5  	  R#   \
         d    Tp	R p
 L)i ; i)Nz %s z %s;Fr'   Ú=Ú;:é   NNÚhzlocal-hostnameÚir>   ÚsrG   T© )r   Úget_cmdlineÚsplitrf   ÚlenrY   )Úds_idr½   rD   ÚarglineÚtokÚtmpÚkvpairsÚs2lÚitemÚkÚvs   &&&        r!   rÃ   rÃ   P  s  € Ø‚Ü×"Ò"Ó$ˆØ�wÕ€Gà�U�N˜gÔ%¨°%­¸7Ô)BÙà€Gð �}‰}ŽˆØ�>‰>˜%× Ô Ø—i‘i  QÓ'ŠGñ ð �!�*×
Ñ
˜3Ó
€CÜ
ˆ3ƒx�!„|Ø�b•'‰àˆð Ð  # }°c¸:Ð
F€CÛˆØ�2Œ:Ùð	Ø—Z‘Z  QÓ'‰FˆQð Œ8Ø•ˆAØˆQ‹ñ ñ øô ô 	ØˆAØŠAð	ús   ÃC<Ã<DÄDc                 óÌ  € V P                  4       pVP                  R / 4      p\        VR ,          \        4      '       g   \        P
                  ! VR ,          4      p\        P                  ! V R ,          V.4      VR &   VP                  R4      '       d)   \        P
                  ! VP                  R4      4      VR&   RV9   d   VR,          VR&   RV9   d   VR,          VR&   V# )r?   rB   r@   rA   )Úcopyr_   Ú
isinstanceÚdictr   r»   rj   )Úcurrv   ÚretÚnewmds   &&  r!   rX   rX   x  sÂ   € Ø
�(‰(‹*€Cà�J‰J�{ BÓ'€EÜ�f˜[Õ)¬4×0Ò0Ü—’˜v kÕ2Ó3ˆÜ×)Ò)¨3¨{Õ+;¸UÐ*CÓD€CˆÑà‡z�zÐ"×#Ò#Ü $§¢¨v¯z©zÐ:JÓ/KÓ LˆÐÑà�fÔØ! +Õ.ˆˆKÑØ˜ÔØ# MÕ2ˆˆMÑØ€Jr#   c                   ó>   a € ] tR tRt o R tV 3R lR ltR tRtV tR# )ÚDataSourceNoCloudNetiŠ  c                ó@   € \         P                  WW#4       RV n        R# )rÁ   NrÀ   )r
   r   r   r   s   &&&&r!   r   ÚDataSourceNoCloudNet.__init__‹  s   € Ü×"Ñ" 4°&Ô@ð&
ˆÖ"r#   c                ó    <€ V ^8„  d   QhRS[ /# r‰   r‹   )r�   rŽ   s   "€r!   r�   Ú!DataSourceNoCloudNet.__annotate__”  s   ø€ ÷ 
ñ 
©sñ 
r#   c                óJ   € \         P                  RV V P                  V4       R# )r’   z6%s only uses seeds starting with %s - %s is not valid.N)r[   ra   r   r”   s   &&r!   rg   Ú+DataSourceNoCloudNet._log_unusable_seedfrom”  s    € ä�‰ØDØØ×&Ñ&Øö		
r#   c                óH  € \        \        P                  RRRR7      pR\        P                  ! 4       8X  d
   V! 4        R# \        P
                  ! \        P                  ! R4      ;'       g    R4      P                  4       pW P                  P                  4       R39   d'   \        P                  R	V 4       VR8X  d   V! 4        R# V P                  P                  R
/ 4      P                  R/ 4      P                  R4      '       d   \        P                  RV 4       R# R# )zÚCheck dmi and kernel command line for dsname

NoCloud historically used "nocloud-net" as its dsname
for network timeframe (DEP_NETWORK), which supports http(s) urls.
For backwards compatibility, check for that dsname.
z!The 'nocloud-net' datasource namez24.1zhUse 'nocloud' instead, which uses the seedfrom protocolscheme (http:// or file://) to decide how to run.r©   r   TrC   r'   zJMachine is configured by dmi serial number to run on single datasource %s.Ú
datasourcer   rG   zMMachine is configured by system configuration to run on single datasource %s.F)r   r   r­   r   Úparse_cmdlineÚparse_cmdline_or_dmir   rU   r3   rµ   r[   r\   r   r_   )r   Úlog_deprecatedrt   s   &  r!   Ú	ds_detectÚDataSourceNoCloudNet.ds_detect�  sý   € ô !Ü×ÑØ:Ø%ðDô
ˆð œG×1Ò1Ó3Ô3ÙÔÙä×-Ò-Ü×ÒÐ4Ó5×;Ð;¸ó
ç
‰%‹'ð 	ð —k‘k×'Ñ'Ó)¨=Ð9Ô9Ü�I‰Ið(àôð
 ˜Ô&ÙÔ Ùà�L‰L×Ñ˜\¨2Ó.ß‰S�˜BÓß‰S�‹_öô �I‰Ið(àôñ
 Ùr#   )r   N)	r±   r²   r³   r´   r   rg   rî   r·   r¸   )rŽ   s   @r!   râ   râ   Š  s   ø‡ € ò
÷
ð 
÷-ð -r#   râ   c                 ó8   € \         P                  ! V \        4      # rK   )r   Úlist_from_dependsÚdatasources)Údependss   &r!   Úget_datasource_listrô   Õ  s   € Ü×$Ò$ W¬kÓ:Ð:r#   Ú__main__)Úargv)Úlevelzseeded: zud: zvd: z	network: rK   )%rc   Úloggingr   Ú	functoolsr   Ú	cloudinitr   r   r   r   Úcloudinit.netr   Ú	getLoggerr±   r[   r   r
   r£   rV   rÃ   rX   râ   ÚDEP_FILESYSTEMÚDEP_NETWORKrò   rô   Úsysrö   ÚbasicConfigÚDEBUGrG   ri   r{   r|   r}   r~   ÚprintrÍ   r#   r!   Ú<module>r     s  ðó Û Û 	Ý ç 3Ó 3Ý à×Ò˜Ó!€ô$˜×*Ñ*ô $ôDô.ôB%òPô$@Ð,ô @ðJ ˜×/Ñ/Ð1Ð2Ø˜G×2Ñ2°G×4GÑ4GÐHÐIð€ò;ð ˆzÔÝà×Ò˜gŸm™mÕ,Ø�A�w€HØ#×/Ò/°Ó9Ñ€GˆR��WÙ	ˆH�W�IÐ
ÔÙ	ˆD��ˆ+ÔÙ	ˆD��ˆ+ÔÙ	ˆI�g�YÐ
Ö ñ r#   