o
    f                  
   @   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 rd|v rt	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 sw   Y  t|o|ddk }|j|rdnd|j |j|rdnd|j |st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"   
"