
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me@              	   @   s   U d Z ddlZddlZddlm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mZ ddlmZ dd	lmZmZ dd
lmZ ddd edegeededgg dZeeeZ ejeZdZdZeee
eddddZdS )z3Install hotplug udev rules if supported and enabled    N)dedent)stagessubputil)Cloud)Config)
MetaSchemaget_meta_doc)ALL_DISTROS)
EventScope	EventType)PER_INSTANCEZcc_install_hotplugzInstall 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descriptionZdistrosZ	frequencyZexamplesZactivate_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|ko6d|d ko6d|d d ko6d|d d d k}t j|jjt jgjtjt k}tj	|j|t jtjd}|ox|st
jjtrtjd tjt tjddd	g n|rtjd
 n
tjd d S tjdstjd d S d}t
jj|sd}tjttj|dd tjddd	g d S )NZupdatesZnetworkZwhenZhotplug)
datasourcer   Zevent_source_typeZscopez!Uninstalling hotplug, not enabledZudevadmZcontrolz--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)filenameZcontent)r   ZHOTPLUGr   Zget_supported_eventsgetr   ZNETWORKsetr   Zupdate_event_enabledospathexistsHOTPLUG_UDEV_PATHLOGdebugr   Zdel_filer   ZwarningZwhichZ
write_fileHOTPLUG_UDEV_RULES_TEMPLATEformat)r   r   r   r   Znetwork_hotplug_enabledZhotplug_supportedZhotplug_enabledr    r#   (/usr/lib/python3.6/cc_install_hotplug.pyhandleH   s@    





r%   ) __doc__Zloggingr   textwrapr   Z	cloudinitr   r   r   Zcloudinit.cloudr   Zcloudinit.configr   Zcloudinit.config.schemar   r	   Zcloudinit.distrosr
   Zcloudinit.eventr   r   Zcloudinit.settingsr   metaZ	getLogger__name__r   r   r!   strlistr%   r#   r#   r#   r$   <module>   s6   
