File: //usr/lib/python3.6/site-packages/cloudinit/config/__pycache__/cc_install_hotplug.cpython-36.pyc
3
\�me@ � @ s� U d Z ddlZddlZddlmZ ddlmZmZmZ ddl m
Z
ddlmZ ddl
mZmZ ddlmZ dd lmZmZ dd
lmZ ddd ed
�egeed�ed�gg d�Zeee�Z eje�ZdZdZeee
edd�dd�ZdS )z3Install hotplug udev rules if supported and enabled� N)�dedent)�stages�subp�util)�Cloud)�Config)�
MetaSchema�get_meta_doc)�ALL_DISTROS)�
EventScope� EventType)�PER_INSTANCEZcc_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�descriptionZdistrosZ frequencyZexamplesZactivate_by_schema_keysz2/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�args�returnc C s d|ko6d|d ko6d|d d ko6d|d d d k}t j|jjt jg�jtjt� �k}tj |j|t jtjd�}|ox|s�t
jjt
�r�tjd� tjt
� tjddd g� n|r�tjd
� n
tjd� d S tjd�s�tjd� d S d
}t
jj|�s�d}tjt
tj|d�d� tjddd g� d S )NZupdatesZnetworkZwhenZhotplug)�
datasourcer Zevent_source_typeZscopez!Uninstalling hotplug, not enabledZudevadmZcontrolz--reload-ruleszOHotplug is unsupported by current datasource. Udev rules will NOT be installed.z%Skipping hotplug install, not enabledz+Skipping hotplug install, udevadm not foundz/usr/libexec/cloud-initz/usr/lib/cloud-init)�
libexecdir)�filenameZcontent)r ZHOTPLUGr Zget_supported_events�getr ZNETWORK�setr Zupdate_event_enabled�os�path�exists�HOTPLUG_UDEV_PATH�LOG�debugr Zdel_filer ZwarningZwhichZ
write_file�HOTPLUG_UDEV_RULES_TEMPLATE�format)r r r r Znetwork_hotplug_enabledZhotplug_supportedZhotplug_enabledr � r# �(/usr/lib/python3.6/cc_install_hotplug.py�handleH s@
r% ) �__doc__Zloggingr �textwrapr Z cloudinitr r r Zcloudinit.cloudr Zcloudinit.configr Zcloudinit.config.schemar r Zcloudinit.distrosr
Zcloudinit.eventr r Zcloudinit.settingsr
�metaZ getLogger�__name__r r r! �str�listr% r# r# r# r$ �<module> s6