3
\me@ @ s U d Z ddlZddlZddlmZ ddlmZmZmZ ddl m
Z
ddlmZ ddl
mZmZ ddlmZ dd lmZmZ dd
lmZ ddd ed
egeededgg dZeeeZ ejeZdZdZeee
eddddZdS )z3Install hotplug udev rules if supported and enabled N)dedent)stagessubputil)Cloud)Config)
MetaSchemaget_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"]
)idnametitledescriptionZdistrosZ 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 cfgcloudargsreturnc C s d|ko6d|d ko6d|d d ko6d|d d d k}t j|jjt jgjtjt k}tj |j|t jtjd}|ox|st
jjt
rtjd tjt
tjddd g n|rtjd
n
tjd d S tjdstjd d S d
}t
jj|sd}tjt
tj|dd 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_eventsgetr ZNETWORKsetr Zupdate_event_enabledospathexistsHOTPLUG_UDEV_PATHLOGdebugr Zdel_filer ZwarningZwhichZ
write_fileHOTPLUG_UDEV_RULES_TEMPLATEformat)r r r r Znetwork_hotplug_enabledZhotplug_supportedZhotplug_enabledr r# (/usr/lib/python3.6/cc_install_hotplug.pyhandleH 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! strlistr% r# r# r# r$