HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/config/__pycache__/cc_resolv_conf.cpython-310.pyc
o

�Ad
�@s�UdZddlmZddlmZddlmZddlmZmZddl	m
Z
ddlmZddl
mZmZdd	lmZe�e�Zd
dd�Zd
Zdddegd�eed�gdgd�Zeed<ee�Zdd�Zdedede
dededdfdd �ZdS)!z"Resolv Conf: configure resolv.conf�)�Logger)�dedent)�log)�	templater�util)�Cloud)�Config)�
MetaSchema�get_meta_doc)�PER_INSTANCEzresolv.confzsystemd.resolved.conf)z/etc/resolv.confz/etc/systemd/resolved.confa�Unless manually editing :file:`/etc/resolv.conf` is the correct way to manage
nameserver information on your operating system, you do not want to use
this module. Many distros have moved away from manually editing ``resolv.conf``
so please verify that this is the preferred nameserver management method for
your distro before using this module.

Note that using :ref:`network_config` is preferred, rather than using this
module, when possible.

This module is intended to manage resolv.conf in environments where early
configuration of resolv.conf is necessary for further bootstrapping and/or
where configuration management such as puppet or chef own DNS configuration.

When using a :ref:`datasource_config_drive` and a RHEL-like system,
resolv.conf will also be managed automatically due to the available
information provided for DNS servers in the :ref:`network_config_v2` format.
For those that wish to have different settings, use this module.

In order for the ``resolv_conf`` section to be applied, ``manage_resolv_conf``
must be set ``true``.

.. note::
    For Red Hat with sysconfig, be sure to set PEERDNS=no for all DHCP
    enabled NICs.
�cc_resolv_confzResolv ConfzConfigure resolv.conf)�alpine�fedora�mariner�opensusez
opensuse-leapzopensuse-microoszopensuse-tumbleweed�photon�rhel�sle_hpcz	sle-micro�slesa�            manage_resolv_conf: true
            resolv_conf:
              nameservers:
                - 8.8.8.8
                - 8.8.4.4
              searchdomains:
                - foo.example.com
                - bar.example.com
              domain: example.com
              sortlist:
                - 10.0.0.1/255
                - 10.0.0.2
              options:
                rotate: true
                timeout: 1
            �manage_resolv_conf)�id�name�title�description�distros�	frequency�examples�activate_by_schema_keys�metacCs�g}g}d|vr%|d��D]\}}t|t�r$|r|�|�q|�|�q||D]}|d|=q)|�d�s:i|d<||d<t�d|�t�|||�dS)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�r0�A/usr/lib/python3/dist-packages/cloudinit/config/cc_resolv_conf.py�generate_resolv_conffs 

�
r2r�cfg�cloudr�args�returnNcCs�d|vr|�d|�dSt�|dd�s|�d|�dSd|vr&|�d�dSz|�t|jj�}Wnty@|�d�YdSwt	||d|jjd	�dS)
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
    rzFSkipping 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�get_cfg_option_bool�warning�get_template_filename�RESOLVE_CONFIG_TEMPLATE_MAP�distro�resolve_conf_fn�KeyErrorr2)rr3r4rr5r)r0r0r1�handle}s:��

�
��r?)�__doc__�loggingr�textwrapr�	cloudinitrrr�cloudinit.cloudr�cloudinit.configr�cloudinit.config.schemar	r
�cloudinit.settingsr�	getLogger�__name__r&r;�MODULE_DESCRIPTIONr�__annotations__r2�str�listr?r0r0r0r1�<module>sR
����,������