o
    x[hÕ  ã                
   @   sº   U d Z ddlZddl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dlmZ d	eged
gdœZeed< e e¡ZG dd„ dƒZdede
dededdf
dd„ZdS )z&Salt Minion: Setup and run salt minioné    N)ÚsafeyamlÚsubpÚutil)ÚCloud)ÚConfig)Ú
MetaSchema)ÚALL_DISTROS)ÚPER_INSTANCEÚcc_salt_minionÚsalt_minion)ÚidÚdistrosÚ	frequencyÚactivate_by_schema_keysÚmetac                   @   s   e Zd ZdZdd„ ZdS )ÚSaltConstantsz>
    defines default distribution specific salt variables
    c                 C   sh   t  ¡ rd| _d| _d| _n	d| _d| _d| _t  |d| j¡| _t  |d| j¡| _t  |d| j¡| _d S )	Nzpy-saltr   z/usr/local/etc/saltzsalt-minionz	/etc/saltÚpkg_nameÚ
config_dirÚservice_name)r   Ú
is_FreeBSDr   Úsrv_nameÚconf_dirÚget_cfg_option_str)ÚselfÚcfg© r   úA/usr/lib/python3/dist-packages/cloudinit/config/cc_salt_minion.pyÚ__init__#   s   ÿ
ÿzSaltConstants.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      s    r   Únamer   ÚcloudÚargsÚreturnc                 C   sÐ  d|vrt  d| ¡ d S |d }t|d�}|j |jg¡ t |j¡ d }d|v r?t	j
 |jd¡}| d¡}t |t |¡¡ d|v rYt	j
 |jd¡}t | d¡¡}	t ||	¡ d|v rµd|v rµt	j
 |jd	¡}
t	j
 |
¡swt	j
 |jd
¡}
| d|
¡}t d¡�+ t |¡ t	j
 |d¡}t	j
 |d¡}t ||d ¡ t ||d ¡ W d   ƒ n1 s°w   Y  t|o¾| d¡dkƒ }|j |rÈdnd|j¡ |j |rÔdnd|j¡ |sætjg d¢dd� d S d S )Nr   z?Skipping module named %s, no 'salt_minion' key in configuration)r   ÚconfÚminionÚgrainsÚ
public_keyÚprivate_keyz
pki/minionÚpkiÚpki_diré?   z
minion.pubz
minion.pemÚfile_clientÚlocalÚenableÚdisableÚrestartÚstop)z	salt-callz--localzstate.applyF)Úcapture)ÚLOGÚdebugr   ÚdistroÚinstall_packagesr   r   Ú
ensure_dirr   ÚosÚpathÚjoinÚgetÚ
write_filer   ÚdumpsÚisdirÚumaskÚboolÚmanage_servicer   r   )r"   r   r#   r$   Ús_cfgÚconstÚminion_dataÚminion_configÚgrains_configÚgrains_dataÚpki_dir_defaultr,   Úpub_nameÚpem_nameÚminion_daemonr   r   r   Úhandle9   sV   þ


ûÿÿÿürN   )r!   Úloggingr:   Ú	cloudinitr   r   r   Úcloudinit.cloudr   Úcloudinit.configr   Úcloudinit.config.schemar   Úcloudinit.distrosr   Úcloudinit.settingsr	   r   Ú__annotations__Ú	getLoggerr   r5   r   ÚstrÚlistrN   r   r   r   r   Ú<module>   s"   ü
"