o
    f                  
   @   s   U d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ eeZdd	d
Zdg dedgdZe
ed< dd Zdededededdf
ddZdS )z"Resolv Conf: configure resolv.conf    N)	templaterutil)Cloud)Config)
MetaSchema)PER_INSTANCEzresolv.confzsystemd.resolved.conf)z/etc/resolv.confz/etc/systemd/resolved.confcc_resolv_conf)alpine
azurelinuxfedoramarineropensusezopensuse-leapzopensuse-microoszopensuse-tumbleweedphotonrhelsle_hpcz	sle-microsles	openeulermanage_resolv_conf)iddistros	frequencyactivate_by_schema_keysmetac                 C   s   g }g }d|v r%|d   D ]\}}t|tr$|r|| q|| q|| D ]}|d |= q)|ds:i |d< ||d< td|  t| || d S )Noptionsflagsz$Writing resolv.conf from template %s)	items
isinstanceboolappendgetLOGdebugr   render_to_file)template_fnparamstarget_fnamer   false_flagskeyvalflag r*   A/usr/lib/python3/dist-packages/cloudinit/config/cc_resolv_conf.pygenerate_resolv_conf1   s    


r,   namecfgcloudargsreturnc                 C   s   d|vrt d|  dS t|ddst d|  dS d|vr&t d dS z|t|jj }W n t	y@   t d Y dS w t
||d |jjd	 dS )
a[  
    Handler for resolv.conf

    @param name: The module name "resolv_conf" from cloud.cfg
    @param cfg: A nested dict containing the entire cloud config contents.
    @param cloud: The L{CloudInit} object in use.
    @param log: Pre-initialized Python logger object to use for logging.
    @param args: Any module arguments from cloud.cfg
    r   zFSkipping module named %s, no 'manage_resolv_conf' key in configurationNFzGSkipping module named %s, 'manage_resolv_conf' present but set to Falseresolv_confz3manage_resolv_conf True but no parameters provided!z0No template found, not rendering resolve configs)r#   r$   r%   )r    r!   r   get_cfg_option_boolwarningget_template_filenameRESOLVE_CONFIG_TEMPLATE_MAPdistroresolve_conf_fnKeyErrorr,   )r-   r.   r/   r0   r#   r*   r*   r+   handleH   s:   



r:   )__doc__logging	cloudinitr   r   cloudinit.cloudr   cloudinit.configr   cloudinit.config.schemar   cloudinit.settingsr   	getLogger__name__r    r6   r   __annotations__r,   strlistr:   r*   r*   r*   r+   <module>   s$   
"