fL+dZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z m Z ddl mZddlmZmZddlmZddlmZddlmZdd lmZmZdd lmZej:eZd Z dd Z!Gd dejDZ#Gdde#Z$de$ejJfiZ&dZ'dede(fdZ)defdZ*dede+fdZ,dZ-edk(re!j]Z/e-e e/yy)z)Handle reconfiguration on hotplug events.N)log reportingstagesutil)install_hotplug) EventScope EventType)read_sys_net_safe)parse_net_config_data)events) DataSourceDataSourceNotFoundException)Initz hotplug-hookc|stjtt}t|_|j dddddg|j dd }d|_|jd d |jdd }|j ddddd|j ddddddg|jdd |S)aBuild or extend an arg parser for hotplug-hook utility. @param parser: Optional existing ArgumentParser instance representing the subcommand which will be extended to support the args of this utility. @returns: ArgumentParser with proper argument configuration. )prog descriptionz-sz --subsystemTzsubsystem to act onnet)requiredhelpchoiceszHotplug Actionhotplug_action)titledestqueryz0Query if hotplug is enabled for given subsystem.)rhandlezHandle the hotplug event.z-dz --devpathPATHzSysfs path to hotplugged device)rmetavarrz-uz --udevactionzSpecify action to take.addremoveenablez%Enable hotplug for a given subsystem.) argparseArgumentParserNAME__doc__r add_argumentadd_subparsersr add_parser)parser subparsers parser_handles B/usr/lib/python3/dist-packages/cloudinit/cmd/devel/hotplug_hook.py get_parserr,s ((dH F   " &&%5'JJH))2*M  .   &! > MceZdZdZej dZeej dZej de fdZ dZ dZ dZ y ) UeventHandlercJ||_||_||_||_||_yN)id datasourcedevpathaction success_fn)selfr2r3r4r5r6s r+__init__zUeventHandler.__init__Qs%&0  $r-ctr1NotImplementedErrorr7s r+applyzUeventHandler.applyX !##r-ctr1r:r<s r+configzUeventHandler.config\s "##r-returnctr1r:r<s r+device_detectedzUeventHandler.device_detectedar>r-cd}|jdk(rd}n*|jdk(rd}ntd|jz||jk7rtd|jzy)NrTrFzUnknown action: %sz'Failed to detect %s in updated metadata)r5 ValueErrorrC RuntimeErrorr2)r7detect_presences r+detect_hotplugged_devicez&UeventHandler.detect_hotplugged_deviceesm ;;% "O [[H $#O1DKK?@ @ d224 49DGGC  5r-c"|jSr1)r6r<s r+successzUeventHandler.successss  r-c|jjtjg}|s)t d|jdtj|S)Nz Datasource z not updated for event )r3update_metadata_if_supportedr HOTPLUGrF)r7results r+update_metadatazUeventHandler.update_metadatavsO==     ??I$5$57  r-N)__name__ __module__ __qualname__r8abcabstractmethodr=propertyr@boolrCrHrJrOr-r+r/r/Pss% $$$$ $$$ ! r-r/c@eZdZfdZdZedZdefdZxZ S) NetHandlerc~ttjj|d}t||||||y)Naddress)r ospathbasenamesuperr8)r7r3r4r5r6r2 __class__s r+r8zNetHandler.__init__s3 rww//8) D Z&*Er-c|jjj|jdtj j |j}|jjj}|jdk(r6|j|s$tdj|jy|jdk(r6|j|s$tdj|jyy)NF)bring_uprzFailed to bring up device: {}rzFailed to bring down device: {})r3distroapply_network_configr@r\r]r^r4network_activatorr5bring_up_interfacerFformatbring_down_interface)r7interface_name activators r+r=zNetHandler.applys 33 KK 4 ))$,,7OO**<<> ;;% //?"3::4<<H@[[H $11.A"5< ? > J lI . Ll&&'l&&&&&|'7'7';';K'HIII J   '4/T!T) t '& ""g-  !6$dnn"J:i:>$$0!- LL"nn# 99;!#JJ$$#HHQK%!-HHQK!!% 02A'RII'( G3 #HHQK  <  MMF G  K''sC%I.'I 7H CI )II II  I++I..I7__main__r1)0r$rSr!rloggingr\rr cloudinitrrrr#cloudinit.config.cc_install_hotplugrcloudinit.eventrr cloudinit.netr cloudinit.net.network_stater cloudinit.reportingr cloudinit.sourcesr rcloudinit.stagesr getLoggerrPrqr#r,ABCr/rYNETWORKr}rstrrrrVrr parse_argsrrWr-r+rs0   22?1+=&E!g!3l/CGG/d$$P J ** + $   %%P  T FBJ z < " " $Ddr-