Ë
    x[h;  ã            
       óæ   — U d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ d
ZddddddœiZddgedgdœZeed<    ej,                  e«      Zdededededdf
d„Zd„ Zy)z&install and configure landscape clienté    N)Úchain)Ú	ConfigObj)ÚsubpÚ
type_utilsÚutil)ÚCloud)ÚConfig)Ú
MetaSchema)ÚPER_INSTANCEz/etc/landscape/client.confÚclientÚinfoz.https://landscape.canonical.com/message-systemz#http://landscape.canonical.com/pingz/var/lib/landscape/client)Ú	log_levelÚurlÚping_urlÚ	data_pathÚcc_landscapeÚubuntuÚ	landscape)ÚidÚdistrosÚ	frequencyÚactivate_by_schema_keysÚmetaÚnameÚcfgÚcloudÚargsÚreturnc                 ó
  — |j                  di «      }t        |t        «      s.t        dj	                  t        j                  |«      ¬«      «      ‚|sy|j                  j                  dg«       t        t        |g}t        t        t        t        |«      d   j                  «       «      D ��cg c]  \  }}d|j!                  dd	«      › �|g‘Œ c}}Ž «      }	 t#        j"                  g d
¢dg¬«       t#        j"                  ddg|z   «       yc c}}w # t"        j$                  $ rZ}	|	j&                  dk(  rt(        j+                  d«       n+d|	› �}
t-        j.                  t(        |
«       t        |
«      |	‚Y d}	~	yd}	~	ww xY w)z¬
    Basically turn a top level 'landscape' entry with a 'client' dict
    and render it to ConfigObj format under '[client]' section in
    /etc/landscape/client.conf
    r   zR'landscape' key existed in config, but not a dictionary type, is a {_type} instead)Ú_typeNzlandscape-clientr   z--Ú_ú-)úlandscape-configú--silentz--is-registeredé   )Úrcsr#   r$   r   z&Client already registered to LandscapezFailure registering client:
)ÚgetÚ
isinstanceÚdictÚRuntimeErrorÚformatr   Úobj_nameÚdistroÚinstall_packagesÚLSC_BUILTIN_CFGÚLSC_CLIENT_CFG_FILEÚlistr   ÚsortedÚmerge_togetherÚitemsÚreplacer   ÚProcessExecutionErrorÚ	exit_codeÚLOGÚwarningr   Úlogexc)r   r   r   r   Úls_cloudcfgÚ
merge_dataÚkÚvÚ
cmd_paramsÚeÚmsgs              ú?/usr/lib/python3/dist-packages/cloudinit/config/cc_landscape.pyÚhandlerC   ,   sp  € ð —'‘'˜+ rÓ*€Kä�k¤DÔ*Üð$ß$*¡FÜ ×)Ñ)¨+Ó6ð %+ó %ó
ð 	
ñ ØØ	‡L�L×!Ñ!Ð#5Ð"6Ô7ô 	ÜØð€Jô Üô #Ü" :Ó.¨xÑ8×>Ñ>Ó@ó÷á�A�qð �a—i‘i  SÓ)Ð*Ð+¨QÒ/óð	
ó	€Jð	+Ü�	‰	ÒEÈAÈ3ÕOÜ�	‰	Ð% zÐ2°ZÑ?Õ@ùóøô ×%Ñ%ò +Ø�;‰;˜!ÒÜ�K‰KÐ@ÕAà1°!°Ð5ˆCÜ�K‰Kœ˜SÔ!Ü˜sÓ#¨Ð*ô	 Bûð+ús   Â/!DÃ4D ÄFÄ(AE=Å=Fc                 ó¨   — t        i «      }| D ]A  }|sŒt        |t         «      r|j                  |«       Œ(|j                  t        |«      «       ŒC |S )zu
    merge together ConfigObj objects or things that ConfigObj() will take in
    later entries override earlier
    )r   r(   Úmerge)Úobjsr   Úobjs      rB   r3   r3   ]   sN   € ô
 �B‹-€CØò &ˆÙØÜ�cœ9Ô%Ø�I‰I�c�Nà�I‰I”i “nÕ%ð&ð €Jó    )Ú__doc__ÚloggingÚ	itertoolsr   Ú	configobjr   Ú	cloudinitr   r   r   Úcloudinit.cloudr   Úcloudinit.configr	   Úcloudinit.config.schemar
   Úcloudinit.settingsr   r0   r/   r   Ú__annotations__Ú	getLoggerÚ__name__r8   Ústrr1   rC   r3   © rH   rB   ú<module>rW      sª   ðò -ã Ý å ç ,Ñ ,Ý !Ý #Ý .Ý +à2Ð ð ØØ?Ø9Ø0ñ	ð€ð ØˆzØØ +˜}ñ	€€jó ð €g×Ñ˜Ó!€ð.+�ð .+˜6ð .+¨%ð .+°tð .+Àó .+óbrH   