+
    ˜qgjO3  ã                   óh  € R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIH	t	H
t
Ht ]P                  ! ]4      t ! R R]	P                  4      t ! R R]4      tRR ltR	 tR
 tRR ltR tR tR tR tR t ! R R]4      t]]	P:                  33]]	P:                  ]	P<                  333tR t R t!R# )zZCloud-Init DataSource for OVF

This module provides a cloud-init datasource for OVF data.
N)Úminidom)ÚsourcesÚsubpÚutilc                   óX   a € ] tR t^t o RtR tR tR tR tR t	R t
]R 4       tR	tV tR
# )ÚDataSourceOVFÚOVFc                óê   € \         P                  P                  WW#4       R V n        \        P
                  P                  VP                  R4      V n        R V n        / V n	        RV n
        R V n        R # )NÚovf)Ú/zfile://)r   Ú
DataSourceÚ__init__ÚseedÚosÚpathÚjoinÚseed_dirÚenvironmentÚcfgÚsupported_seed_startsÚ_network_config©ÚselfÚsys_cfgÚdistroÚpathss   &&&&ÚA/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOVF.pyr   ÚDataSourceOVF.__init__    sX   € Ü×Ñ×#Ñ# D°6ÔAØˆŒ	ÜŸ™Ÿ™ U§^¡^°UÓ;ˆŒØˆÔØˆŒØ%5ˆÔ"Ø#ˆÖó    c                óh   € \         P                  P                  V 4      pV: R V P                  : R2# )z [seed=Ú])r   r   Ú__str__r   )r   Úroots   & r   r!   ÚDataSourceOVF.__str__)   s'   € Ü×!Ñ!×)Ñ)¨$Ó/ˆÛ!% t§y¤yÐ1Ð1r   c                óX  € . p/ pR pR pRR/p\        V P                  P                  4      w  rgV'       d[   \        P                  P                  V P                  P                  V4      p\        V4      w  r#p	Wpn        VP                  V4       M€R\        3R\        3.p
RpV
 F  w  r¼V! 4       pV'       g   K   M	  V'       dK   \        VR4      w  r#p	Wpn        RV9   d   VR,          '       d   VR,          V n        VP                  V4       V'       g   R# R	V9   dÄ   VR	,          '       dµ   VR	,          pRpV P                   F  pVP                  V4      '       g   K  Tp M	  V'       g   \        P                  R
WÐ4       R# \         P"                  ! VRR7      w  pr4p\        P                  RV4       \         P$                  ! VV.4      pVP                  V4       \         P$                  ! W%.4      pRP                  V4      V n        W n        W0n        W@n        X	V n        R# )Ú úinstance-idz	iid-dsovfzcom.vmware.guestInfoÚisoNTúnetwork-configFÚseedfromz Seed from %s not supported by %s)ÚtimeoutzUsing seeded cache data from %sÚ,)Úget_ovf_envr   r   r   r   r   Úread_ovf_environmentr   ÚappendÚtransport_vmware_guestinfoÚtransport_iso9660r   r   Ú
startswithÚLOGÚdebugr   Úread_seededÚmergemanydictr   ÚmetadataÚuserdata_rawÚvendordata_rawr   )r   ÚfoundÚmdÚudÚvdÚdefaultsÚseedfileÚcontentsr   r   ÚnpÚnameÚ	transfuncr)   Ú	seedfoundÚprotoÚmd_seedÚ_s   &                 r   Ú	_get_dataÚDataSourceOVF._get_data-   sï  € ØˆØˆØˆØˆð ˜;ð
ˆô  +¨4¯:©:×+>Ñ+>Ó?Ñˆçä—7‘7—<‘< §
¡
× 3Ñ 3°XÓ>ˆDÜ0°Ó:‰MˆR�SØ'ÔØ�L‰L˜Õð (Ô)CÐDØÔ)Ð*ðˆBð ˆDÛ#%‘�Ù$›;�ß‘8Ùñ $&÷ Ü 4°X¸tÓ D‘�˜Ø#+Ô Ø# rÔ)¨bÐ1A×.BÔ.BØ+-Ð.>Õ+?�DÔ(Ø—‘˜TÔ"÷ Ùà˜Ô  :§¤Ø˜*•~ˆHØˆIØ×3Ô3�Ø×&Ñ& u×-Ô-Ø %�IÙñ 4÷ Ü—	‘	Ð<¸hÔMÙä#'×#3Ò#3°HÀdÔ#KÑ ˆW�b˜aÜ�I‰IÐ7¸ÔBä×#Ò# R¨ MÓ2ˆBØ�L‰L˜Ô"ô ×Ò  Ó/ˆà—H‘H˜U“OˆŒ	ØŒØÔØ ÔØˆŒÙr   c                ó(   € R V P                   ,          # )zovf (%s))r   ©r   s   &r   Ú_get_subplatformÚDataSourceOVF._get_subplatformo   s   € Ø˜DŸI™IÕ%Ð%r   c                ó„   € R V P                   9  d   . # V P                   R ,          p\        V\        4      '       d   V# V.# )úpublic-keys)r6   Ú
isinstanceÚlist)r   Úpkss   & r   Úget_public_ssh_keysÚ!DataSourceOVF.get_public_ssh_keysr   s:   € Ø §¡Ô-ØˆIØ�m‰m˜MÕ*ˆÜ�cœD×"Ò"ØˆJà�5ˆLr   c                ó   € V P                   # ©N)r   rJ   s   &r   Úget_config_objÚDataSourceOVF.get_config_obj~   s   € Ø�x‰xˆr   c                ó   € V P                   # rU   )r   rJ   s   &r   Únetwork_configÚDataSourceOVF.network_config�   s   € à×#Ñ#Ð#r   )	r   r   r   r6   r   r   r   r7   r8   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Údsnamer   r!   rG   rK   rR   rV   ÚpropertyrY   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s>   ø‡ € Ø€Fò$ò2ò@òD&òòð ñ$ó ö$r   r   c                   ó&   a € ] tR t^†t o R tRtV tR# )ÚDataSourceOVFNetc                óž   € \         P                  WW#4       \        P                  P	                  VP
                  R 4      V n        RV n        R# )zovf-netN)zhttp://zhttps://)r   r   r   r   r   r   r   r   s   &&&&r   r   ÚDataSourceOVFNet.__init__‡   s4   € Ü×Ñ˜t¨fÔ<ÜŸ™Ÿ™ U§^¡^°YÓ?ˆŒØ%<ˆÖ"r   )r   r   N)r[   r\   r]   r^   r   ra   rb   rc   s   @r   rf   rf   †   s   ø‡ € ÷=ð =r   rf   c                 óD  € \        V 4      p/ p/ pR pR.p. ROpR.pVP                  4        F¥  w  ršV	R8X  d   Rp	W—9   d   W£V	&   K  W–9   d   W¤V	&   K&  W˜9   dL   V'       dD    \        P                  ! V
P	                  4       4      p\        V4      P                  R4      W9&   Kw  V	R8X  g   K€   \        P                  ! V
P	                  4       4      pK§  	  W5V3#   \         d    \        P                  R4        KÐ  i ; i  \         d    T
P	                  4       p Kò  i ; i)	NÚpasswordúlocal-hostnamer(   ÚhostnameÚnetworkz%Ignore network-config in wrong formatz	user-data)r)   rk   rN   r&   )
Úget_propertiesÚitemsÚbase64Ú	b64decodeÚencodeÚsafeload_yaml_or_dictÚgetÚ	Exceptionr2   r3   )r?   Úread_networkÚpropsr:   r   r;   Ú	cfg_propsÚmd_propsÚnetwork_propsÚpropÚvalrY   s   &&          r   r-   r-   �   s  € Ü˜8Ó$€EØ	€BØ
€CØ	€BØ�€IÚK€HØ%Ð&€MØ—[‘[–]‰	ˆØ�:ÔØ#ˆDØÔØˆt‹HØÔØ�‹IØÔ"§|ðCÜ!'×!1Ò!1°#·*±*³,Ó!?�Ü0°Ó@×DÑDÀYÓO�“ð �[Ö ð"Ü×%Ò% c§j¡j£lÓ3’ñ #ð$ �Cˆ=Ðøô ô CÜ—	‘	ÐA×BðCûô
 ô "Ø—Z‘Z“\“ð"ús%   Á!A CÂ-$D Ã C=Ã<C=Ä DÄDc                 ó8  € RpV Fc  p\         P                  P                  W4      p\         P                  P                  V4      '       g   KI   \        P
                  ! V4      pW$3u # 	  R#   \         d!    \        P                  ! \        RT4        K“  i ; i)úovf-env.xmlzFailed loading ovf file %s)r~   zovf_env.xmlzOVF_ENV.XMLzOVF-ENV.XML)NF)	r   r   r   Úisfiler   Úload_text_fileru   Úlogexcr2   )ÚdirnameÚ	env_namesÚfnameÚfull_fnr?   s   &    r   r,   r,   ®   s�   € ØL€IÛˆÜ—'‘'—,‘,˜wÓ.ˆÜ�7‰7�>‰>˜'×"Ô"ðHÜ×.Ò.¨wÓ7�ØÐ(Ò(ñ ð Ðøô ô HÜ—’œCÐ!=¸w×GðHús   ÁA.Á.'BÂBc                ó<  € V '       g   R# \        V \        4      '       g   \        RV ,          4      h\        P                  P                  V 4      p V P                  R4      '       d   V P                  R4      R,          p V P                  R4      '       d   V P                  R4      R,          p MV P                  R4      ^ 8”  d   R# V '       g   R# Rp\        P                  P                  RV4      p\        P                  ! V4      pVP                  V 4      RJ# )	zëTest if devname matches known list of devices which may contain iso9660
   filesystems.

Be helpful in accepting either knames (with no leading /dev/) or full path
names, but do not allow paths outside of /dev/, like /dev/foo/bar/xxx.
Fz Unexpected input for devname: %sz/dev/r   z^(sr[0-9]+|hd[a-z]|xvd.*)ÚCLOUD_INIT_CDROM_DEV_REGEXNéÿÿÿÿ)rO   ÚstrÚ
ValueErrorr   r   Únormpathr1   Ú	partitionÚsplitÚcountÚenvironrt   ÚreÚcompileÚmatch)ÚdevnameÚdefault_regexÚdevname_regexÚcdmatchs   &   r   Úmaybe_cdrom_devicer—   »   sæ   € ÷ ÙÜ˜¤×%Ò%ÜÐ;¸gÕEÓFÐFô �g‰g×Ñ˜wÓ'€Gð ×Ñ˜'×"Ò"à×#Ñ# GÓ,¨RÕ0ˆð ×Ñ˜#×ÒØ—-‘- Ó$ RÕ(‰Ø	�‰�sÓ	˜aÔ	Ù÷ Ùð 1€MÜ—J‘J—N‘NÐ#?ÀÓO€MÜ�jŠj˜Ó'€Gà�=‰=˜Ó!¨Ð-Ð-r   c                 ó|  € \         P                  ! 4       pVP                  4        FR  w  r#VR ,          pVR8w  d   V '       d   K  \        V4      '       g   K2  VR,          p\	        V4      w  rgVRJg   KP  Vu # 	  V '       d   RpMRp\         P
                  ! V'       d
   RV,          MR4       Uu. uF  p\        V4      '       g   K  VNK  	  p	pV	 F-  p \         P                  ! V\        VR7      w  rgTRJg   K+  Tu # 	  R# u upi   \         P                   d    \        P                  RT4        Kf  i ; i)ÚfstypeÚiso9660Ú
mountpointFNzTYPE=%s)Úmtypez%s not mountable as iso9660)
r   Úmountsro   r—   r,   Úfind_devs_withÚmount_cbÚMountFailedErrorr2   r3   )
Úrequire_isor�   ÚdevÚinfor™   ÚmpÚ_fnamer?   rœ   Údevss
   &         r   r0   r0   ä   s  € ä�[Š[‹]€FØ—\‘\–^‰	ˆØ�h•ˆØ�YÔ§;ÙÜ! #×&Ò&ÙØ�,ÕˆÜ(¨›_ÑˆØ˜5Õ ØŠOñ $÷ Ø‰àˆô
 ×&Ò&¿E y°5Ö'8ÀtÔLóáLˆCÜ˜c×"÷ 	ˆÙLð 	ð ó
 ˆð	Ü!%§¢¨s´KÀuÔ!MÑˆVð
 ˜5Õ ØŠOñ ñ ùòøô ×$Ñ$ô 	Ü�I‰IÐ3°SÔ9Úð	ús   Â2DÃ
DÃDÄ+D;Ä:D;c                 ó@   € W.p\         P                   ! V4      w  r4W#V3# rU   ©r   ©ÚrpctoolÚargÚcmdÚstdoutÚstderrs   &&   r   Úexec_vmware_rpctoolr¯   
  s$   € Øˆ.€CÜ—y’y “~Ñ€VØ˜Ð Ð r   c                 óD   € V R V.p\         P                   ! V4      w  r4W#V3# )z--cmdr¨   r©   s   &&   r   Úexec_vmtoolsdr±     s)   € Ø�G˜SÐ
!€CÜ—y’y “~Ñ€VØ˜Ð Ð r   c                  óT  € R R r\         P                  ! R4      p\         P                  ! R4      pV'       d   T\        r\        P	                  RV4       V'       d&   V'       g   T\
        r\        P	                  RV4       V '       g   \        P	                  R4       R # R p V! W4      #   \         P                   dæ   pT'       d:   Y8X  d4   TP                  ^8w  d   \        P                  ! \        RT4        R p?R # T'       g   \        P                  R4        R p?R #  \        P                  R	4       T! T\
        4      u R p?#   \         P                   d=   pTP                  ^8w  d   \        P                  ! \        RT4        R p? R p?R # R p?ii ; iR p?ii ; i)
NÚvmtoolsdzvmware-rpctoolzdiscovered vmware-rpctool: %szdiscovered vmtoolsd: %szno rpctool discoveredc                 ó,  € \         P                  R V 4        V! V R4      w  r#pV'       d   V# \         P                  RV4       R#   \        P                   d9   pTP
                  ^8w  d!   \         P                  RYP
                  4       ThRp?ii ; i)zquery guestinfo.ovfEnv with %szinfo-get guestinfo.ovfEnvz!cmd %s exited 0 with empty stdoutNz%s exited with code %d)r2   r£   r3   r   ÚProcessExecutionErrorÚ	exit_codeÚwarning)rª   Ú
rpctool_fnr¬   r­   rF   Úerrors   &&    r   Úquery_guestinfoÚ3transport_vmware_guestinfo.<locals>.query_guestinfo-  s{   € Ü�‰Ð1°7Ô;ð		Ù'¨Ð1LÓM‰NˆC˜ßØ�Ü�I‰IÐ9¸3Ô?ÙøÜ×)Ñ)ô 	Ø�‰ !Ô#Ü—‘Ð4°g¿¹ÔOØˆKûð	ús   ˜A ®A ÁBÁ3BÂBz+vmtoolsd failed to get guestinfo.ovfEnv: %sz$vmtoolsd fallback option not presentzfallback to vmtoolsd)r   Úwhichr¯   r2   r3   r±   rµ   r¶   r   r�   r£   )rª   r¸   r³   Úvmware_rpctoolrº   r¹   s         r   r/   r/     s>  € Ø ˆZÜ�zŠz˜*Ó%€HÜ—Z’ZÐ 0Ó1€N÷ Ø,Ô.A�Ü�	‰	Ð1°>ÔBç÷ Ø"*¬M�ZÜ�	‰	Ð+¨XÔ6÷ Ü�	‰	Ð)Ô*Ùòðñ ˜wÓ3Ð3øÜ×%Ñ%ô ÷ ˜Ô+à�‰ !Ô#Ü—’ÜÐFÈôõ çÜ�H‰HÐ;Ô<Ýð	Ü�H‰HÐ+Ô,Ù" 8¬]Ó;Õ;øÜ×)Ñ)ô 	à�‰ !Ô#Ü—’ÜÐFÈôÿñ ûð	þð+úsN   Â%B- Â-F'Ã;F"ÄF"ÄF"Ä'!EÅF'ÅFÅ#-FÆF"ÆFÆF"Æ"F'c                 ó¢   € . pV P                  4       '       g   V# V P                   F$  pV! V4      '       g   K  VP                  V4       K&  	  V# rU   )ÚhasChildNodesÚ
childNodesr.   )ÚnodeÚfilter_funcÚretÚchilds   &&  r   Ú
find_childrÅ   ]  sG   € Ø
€CØ×Ñ×ÒØˆ
Ø—”ˆÙ�u×ÔØ�J‰J�uÖñ !ð €Jr   c                 ó
  € \         P                  ! V 4      pVP                  P                  R 8w  d   \	        R4      hVP                  P                  4       '       g   \	        R4      hRp\        VP                  R 4      pV'       g   \	        R4      h/ p\        V^ ,          R 4      pV FS  pVP                  P                  VR4      P                  pVP                  P                  VR4      P                  pW„V&   KU  	  V# )	ÚEnvironmentzNo Environment NodezNo Child Nodesz)http://schemas.dmtf.org/ovf/environment/1c                 ó    € V P                   R 8H  # )ÚPropertySection©Ú	localName©Úns   &r   Ú<lambda>Ú get_properties.<locals>.<lambda>t  s   €  q§{¡{Ð6GÒ'Gr   zNo 'PropertySection'sc                 ó    € V P                   R 8H  # )ÚPropertyrÊ   rÌ   s   &r   rÎ   rÏ   |  s   €  A§K¡K°:Ò$=r   ÚkeyÚvalue)
r   ÚparseStringÚdocumentElementrË   ÚXmlErrorr¿   rÅ   Ú
attributesÚgetNamedItemNSrÓ   )	r?   ÚdomÚenvNsURIÚpropSectionsrw   Ú	propElemsÚelemrÒ   r|   s	   &        r   rn   rn   g  sì   € Ü
×
Ò
˜hÓ
'€CØ
×Ñ×$Ñ$¨Ô5ÜÐ,Ó-Ð-à×Ñ×,Ñ,×.Ò.ÜÐ'Ó(Ð(à:€Hô Ø×ÑÑGó€L÷ ÜÐ.Ó/Ð/à€EÜØ�Q�Ñ=ó€Ió ˆØ�o‰o×,Ñ,¨X°uÓ=×CÑCˆØ�o‰o×,Ñ,¨X°wÓ?×EÑEˆØˆc‹
ñ ð
 €Lr   c                   ó   € ] tR tRtRtR# )rÖ   i‡  © N)r[   r\   r]   r^   ra   rß   r   r   rÖ   rÖ   ‡  s   † Ûr   rÖ   c                 ó8   € \         P                  ! V \        4      # rU   )r   Úlist_from_dependsÚdatasources)Údependss   &r   Úget_datasource_listrä   “  s   € Ü×$Ò$ W¬kÓ:Ð:r   c                óB   € V '       g   / # \         P                  ! V 4      # )z¦
The meta data could be JSON or YAML. Since YAML is a strict superset of
JSON, we will unmarshal the data as YAML. If data is None then a new
dictionary is returned.
)ÚyamlÚ	safe_load)Údatas   &r   rs   rs   —  s   € ÷ Øˆ	Ü�>Š>˜$ÓÐr   )F)T)"Ú__doc__rp   Úloggingr   r�   Úxml.domr   ræ   Ú	cloudinitr   r   r   Ú	getLoggerr[   r2   r   r   rf   r-   r,   r—   r0   r¯   r±   r/   rÅ   rn   ru   rÖ   ÚDEP_FILESYSTEMÚDEP_NETWORKrâ   rä   rs   rß   r   r   Ú<module>rð      sÐ   ðñó
 Û Û 	Û 	Ý ã ç )Ñ )à×Ò˜Ó!€ôf$�G×&Ñ&ô f$ôR=�}ô =ôò>
ò$.ôR#òL!ò!òDòNòô@	ˆyô 	ð �W×+Ñ+Ð-Ð.Ø˜×.Ñ.°×0CÑ0CÐDÐEð€ò;ô r   