f&UddlZddlmZmZddlmZmZmZmZm Z m Z ddl m Z m Z ddlmZddlmZddlmZddlmZddlmZej2eZGddeZd efd ZGd d eZ Gd de Z!Gdde Z"Gdde Z#Gdde Z$Gdde Z%gdZ&e!e$e#e%e"dZ'ee(e e fe)d<dee(de e(dfd ee e fdZ* ddeee(dee(d e e fdZ+y)N)ABCabstractmethod)DictIterableListOptionalTypeUnion)subputil) available) NetworkStatec eZdZy)NoActivatorExceptionN)__name__ __module__ __qualname__:/usr/lib/python3/dist-packages/cloudinit/net/activators.pyrrsrrreturnctjd|| tj|\}}t|rtj d||y#tj $rt jtd|YywxYw)Nz#Attempting command %s for device %sz(Running %s resulted in stderr output: %sTz#Running interface command %s failedF)LOGdebugr lenwarningProcessExecutionErrorr logexc)cmd device_name_outerrs r_alter_interfacer#smII3S+Fiin s s8 KKBC M  % % C>Ds:A.BBceZdZeed deedefdZeededefdZ eededefdZ e de edefd Z e d edefd Zy) NetworkActivatorNtargetrct)z>Return True if activator is available, otherwise return False.NotImplementedErrorr&s rr zNetworkActivator.available!s "##rr ct)zWBring up interface. Return True is successful, otherwise return False r(r s rbring_up_interfacez#NetworkActivator.bring_up_interface' "##rct)zYBring down interface. Return True is successful, otherwise return False r(r,s rbring_down_interfacez%NetworkActivator.bring_down_interface0r.r device_namesc,tfd|DS)zjBring up specified list of interfaces. Return True is successful, otherwise return False c3@K|]}j|ywN)r-).0deviceclss r z7NetworkActivator.bring_up_interfaces..?sMf3))&1Ms)all)r7r1s` rbring_up_interfacesz$NetworkActivator.bring_up_interfaces9s M MMMr network_statecl|j|jDcgc]}|d c}Scc}w)z\Bring up all interfaces. Return True is successful, otherwise return False name)r:iter_interfaces)r7r;is rbring_up_all_interfacesz(NetworkActivator.bring_up_all_interfacesAs5 && - = = ? @1QvY @  @s 1r4)rrr staticmethodrrstrboolr r-r0 classmethodrr:rr@rrrr%r% s$(3-$4$$$$$$$#$$$$Nx}NNN L T  rr%cbeZdZeddeedefdZededefdZededefdZ y) IfUpDownActivatorNr&rct|Sz3Return true if ifupdown can be used on this system.r*) eni_availabler*s rr zIfUpDownActivator.availableQsF++rr c"d|g}t||S)bBring up interface using ifup. Return True is successful, otherwise return False ifupr#r rs rr-z$IfUpDownActivator.bring_up_interfaceVs {#[11rc"d|g}t||S)rKifdownrMrNs rr0z&IfUpDownActivator.bring_down_interface_s %[11rr4) rrrrArrBrCr r-r0rrrrFrFLsl ,(3-,4,,22222#2$22rrFcXeZdZeddefdZededefdZededefdZy)IfConfigActivatorNrc<d}dg}tj|||S)z3Return true if ifconfig can be used on this system.ifconfigz/sbin)searchr&)r which)r&expectedrUs rr zIfConfigActivator.availablejs#zz(6&AArr c$d|dg}t||S)zoBring up interface using ifconfig up. Return True is successful, otherwise return False rTuprMrNs rr-z$IfConfigActivator.bring_up_interfaceqs ;-[11rc$d|dg}t||S)zqBring up interface using ifconfig down. Return True is successful, otherwise return False rTdownrMrNs rr0z&IfConfigActivator.bring_down_interfacezs ;/[11rr4 rrrrArCr rBr-r0rrrrRrRisbB$BB 22222#2$22rrRcXeZdZeddefdZededefdZededefdZy)NetworkManagerActivatorNrct|S)z9Return true if NetworkManager can be used on this system.r*) nm_availabler*s rr z!NetworkManagerActivator.availables6**rr cddlm}||}|tjdyddd|g}t ||rdddd |g}nt gd |dddd |g}t ||S) zdBring up connection using nmcli. Return True is successful, otherwise return False r) conn_filenamezFUnable to find an interface config file. Unable to bring up interface.Fnmcli connectionloadrYfilename)rcrdreloadifname)cloudinit.net.network_managerrbrrr#)r rbrfrs rr-z*NetworkManagerActivator.bring_up_interfaces~ @ -   KK0  fh7 C -L$ HEC > LL$+FC[11rc&ddd|g}t||S)zeBring down interface using nmcli. Return True is successful, otherwise return False rcr6 disconnectrMrNs rr0z,NetworkManagerActivator.bring_down_interfaces , <[11rr4r\rrrr^r^s_+$++2222.2#2$22rr^ceZdZddgZed defdZededefdZede edefd Z ed e defd Z ededefd Z y)NetplanActivatornetplanapplyNrct|S)z2Return true if netplan can be used on this system.r*)netplan_availabler*s rr zNetplanActivator.availables!//rr c`tjdttjdSYApply netplan config. Return True is successful, otherwise return False zBCalling 'netplan apply' rather than altering individual interfacesr9rrr#rm NETPLAN_CMDr,s rr-z#NetplanActivator.bring_up_interface+  -  0 <  H  >FFT*40FF/    " "6 *   A G s A A A%A*c|t}t||}|sd}|r |dk7rd|z}td|d||d}tj d|||S)N/z in target=%sz%No available network activators foundz. Searched through list: rz.Using selected activator: %s from priority: %s)rrrrr)rr&foundtmsgselecteds rselect_activatorrsr# Xv .E  fm"V+D""& 2  QxHII8(H Or)NN),loggingabcrrtypingrrrrr r cloudinitr r cloudinit.net.enir rIcloudinit.net.netplanrqrir`cloudinit.net.network_statercloudinit.net.networkdr~ getLoggerrr ExceptionrrCr#r%rFrRr^rmr|rrrB__annotations__rrrrrrsC#>> 8@C4Bg! 9  $ ) s) X2(2:2(26%2.%2P2E'2Ej2(26 .!! 84T"2334 3i !&sDy!1  $ ! "CGtCy!2:3- r