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_install_hotplug.cpython-310.pyc
o

�Ad=�@s�UdZddlZddlmZddlmZddlmZmZm	Z	ddl
mZddlm
Z
ddlmZmZdd	lmZdd
lmZmZddlmZdd
ded�egeed�ed�ggd�Zeed<ee�ZdZdZdede
dedededdfdd�ZdS)z3Install hotplug udev rules if supported and enabled�N)�Logger)�dedent)�stages�subp�util)�Cloud)�Config)�
MetaSchema�get_meta_doc)�ALL_DISTROS)�
EventScope�	EventType)�PER_INSTANCE�cc_install_hotplugzInstall Hotplugas        This module will install the udev rules to enable hotplug if
        supported by the datasource and enabled in the userdata. The udev
        rules will be installed as
        ``/etc/udev/rules.d/10-cloud-init-hook-hotplug.rules``.

        When hotplug is enabled, newly added network devices will be added
        to the system by cloud-init. After udev detects the event,
        cloud-init will referesh the instance metadata from the datasource,
        detect the device in the updated metadata, then apply the updated
        network configuration.

        Currently supported datasources: Openstack, EC2
    z�            # Enable hotplug of network devices
            updates:
              network:
                when: ["hotplug"]
        z�            # Enable network hotplug alongside boot event
            updates:
              network:
                when: ["boot", "hotplug"]
        )�id�name�title�description�distros�	frequency�examples�activate_by_schema_keys�metaz2/etc/udev/rules.d/10-cloud-init-hook-hotplug.rulesz�# Installed by cloud-init due to network hotplug userdata
ACTION!="add|remove", GOTO="cloudinit_end"
LABEL="cloudinit_hook"
SUBSYSTEM=="net", RUN+="{libexecdir}/hook-hotplug"
LABEL="cloudinit_end"
r�cfg�cloud�log�args�returnc	Cs d|vod|dvod|ddvod|dddv}tj|j�tjg��tjt��v}tj	|j|tjtjd�}|r=|sft
j�t
�rV|�d�t�t
�t�gd��dS|r_|�d�dS|�d	�dSt�d
�sr|�d�dSd}t
j�|�s|d
}tjt
tj|d�d�t�gd��dS)N�updates�network�when�hotplug)�
datasourcer�event_source_type�scopez!Uninstalling hotplug, not enabled)�udevadm�controlz--reload-ruleszOHotplug is unsupported by current datasource. Udev rules will NOT be installed.z%Skipping hotplug install, not enabledr%z+Skipping hotplug install, udevadm not foundz/usr/libexec/cloud-initz/usr/lib/cloud-init)�
libexecdir)�filename�content)r
�HOTPLUGr"�get_supported_events�getr�NETWORK�setr�update_event_enabled�os�path�exists�HOTPLUG_UDEV_PATH�debugr�del_filer�warning�which�
write_file�HOTPLUG_UDEV_RULES_TEMPLATE�format)	rrrrr�network_hotplug_enabled�hotplug_supported�hotplug_enabledr'�r>�E/usr/lib/python3/dist-packages/cloudinit/config/cc_install_hotplug.py�handleGsT
������

��
�


�r@)�__doc__r0�loggingr�textwrapr�	cloudinitrrr�cloudinit.cloudr�cloudinit.configr�cloudinit.config.schemar	r
�cloudinit.distrosr�cloudinit.eventrr
�cloudinit.settingsrr�__annotations__r3r9�str�listr@r>r>r>r?�<module>sX�����+	������