
    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kD*$$*F ))+6 %+ %
 	
 	LL!!#5"67 	J  #":.x8>>@Aq aiiS)*+Q/	
	J	+		EA3O		%z2Z?@ %% +;;!KK@A1!5CKK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 &c9%IIcNIIi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   