܍~c/',UddlZddlmZmZddlmZmZmZmZm Z m Z ddl m Z m Z ddlmZddlmZddlmZddlmZddlmZejeZGddeZd efd ZGd d eZ Gd de Z!Gdde Z"Gdde Z#Gdde Z$gdZ%e!e#e"e$dZ&ee'e e fe(d<dee'de e'dfd ee e fdZ) ddeee'dee'd e e fdZ*dS)N)ABCabstractmethod)DictIterableListOptionalTypeUnion)subputil available) NetworkStateceZdZdS)NoActivatorExceptionN)__name__ __module__ __qualname__:/usr/lib/python3/dist-packages/cloudinit/net/activators.pyrrsDrrreturnc&td|| tj|\}}t|rtd||dS#tj$rt jtd|YdSwxYw)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$sII3S+FFFinn s s88 N KKBC M M Mt  % C>DDDuusAA""*BBcDeZdZeeddeedefdZeededefdZ eededefdZ e de edefd Z e d edefd Ze de edefd Ze d edefd ZdS)NetworkActivatorNtargetrct)z>Return True if activator is available, otherwise return False.NotImplementedErrorr's rrzNetworkActivator.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 c3BK|]}|VdSN)r..0deviceclss r z7NetworkActivator.bring_up_interfaces..?s1MMf3))&11MMMMMMrallr9r2s` rbring_up_interfacesz$NetworkActivator.bring_up_interfaces9s( MMMM MMMMMMr network_statecd|d|DS)z\Bring up all interfaces. Return True is successful, otherwise return False cg|] }|d Snamerr7is r z.H @ @ @1QvY @ @ @r)r>iter_interfacesr9r?s rbring_up_all_interfacesz(NetworkActivator.bring_up_all_interfacesAs9 && @ @ = = ? ? @ @ @   rc:tfd|DS)zlBring down specified list of interfaces. Return True is successful, otherwise return False c3BK|]}|VdSr5)r1r6s rr:z9NetworkActivator.bring_down_interfaces..Qs1OO3++F33OOOOOOrr;r=s` rbring_down_interfacesz&NetworkActivator.bring_down_interfacesKs( OOOO,OOOOOOrcd|d|DS)z^Bring down all interfaces. Return True is successful, otherwise return False cg|] }|d SrBrrDs rrFz>NetworkActivator.bring_down_all_interfaces..ZrGr)rMrHrIs rbring_down_all_interfacesz*NetworkActivator.bring_down_all_interfacesSs9 (( @ @ = = ? ? @ @ @   rr5)rrr staticmethodrrstrboolrr.r1 classmethodrr>rrJrMrPrrrr&r& s$$(3-$4$$$^\$$$$$$^\$$#$$$$$^\$Nx}NNNN[N L T   [ P#P4PPP[P l t   [   rr&cpeZdZeddedefdZededefdZededefdZdS) IfUpDownActivatorNr'rc"t|Sz3Return true if ifupdown can be used on this system.r+) eni_availabler+s rrzIfUpDownActivator.availablecsF++++rr!c*d|g}t||S)bBring up interface using ifup. Return True is successful, otherwise return False ifupr$r!r s rr.z$IfUpDownActivator.bring_up_interfacehs {#[111rc*d|g}t||S)r[ifdownr]r^s rr1z&IfUpDownActivator.bring_down_interfaceqs %[111rr5) rrrrQrRrSrr.r1rrrrVrV^s ,,#,,,,\,22222\22#2$222\222rrVcleZdZeddefdZededefdZededefdZdS)NetworkManagerActivatorNrc"t|S)z9Return true if NetworkManager can be used on this system.r+) nm_availabler+s rrz!NetworkManagerActivator.available|s6****rr!cddlm}||}ddd|g}t||rdddd|g}ntgd|dddd |g}t||S) zdBring up connection using nmcli. Return True is successful, otherwise return False r) conn_filenamenmcli connectionloadupfilename)rgrhreloadifname)cloudinit.net.network_managerrfr$)r!rfrkr s rr.z*NetworkManagerActivator.bring_up_interfaces @????? =-- fh7 C - - GL$ HECC >>> L L LL$+FC[111rc.ddd|g}t||S)zeBring down interface using nmcli. Return True is successful, otherwise return False rgr8 disconnectr]r^s rr1z,NetworkManagerActivator.bring_down_interfaces" , <[111rr5) rrrrQrSrrRr.r1rrrrbrb{s++$+++\+22222\2 2#2$222\222rrbc eZdZddgZeddefdZededefdZede edefd Z ed e defd Z ededefd Z ede edefd Zed e defdZdS)NetplanActivatornetplanapplyNrc"t|S)z2Return true if netplan can be used on this system.r+)netplan_availabler+s rrzNetplanActivator.availables!////rr!cjtdttjdSYApply netplan config. Return True is successful, otherwise return False zBCalling 'netplan apply' rather than altering individual interfacesr<rrr$rr NETPLAN_CMDr-s rr.z#NetplanActivator.bring_up_interface5  -    0 z$NetplanActivator.bring_up_interfacesr|rr?c6ttjdSryr<r$rrr{r?s rrJz(NetplanActivator.bring_up_all_interfaces  0 rrJr1rMrPrrrrrrrsg&K00$000\0 E E E E E\ E E(3- ED E E E\ EE|EEEE\E E# E$ E E E\ E EHSM Ed E E E\ EEE$EEE\EEErrrceZdZed defdZededefdZededefdZ ededefdZ dS) NetworkdActivatorNrc"t|SrX)networkd_availabler+s rrzNetworkdActivator.availables"0000rr!c0dddd|g}t||S)1Return True is successful, otherwise return Falseiplinksetrjr]r^s rr.z$NetworkdActivator.bring_up_interfaces$VUD+6[111rr?c*gd}t|dS)r) systemctlrestartzsystemd-networkdzsystemd-resolvedr<r])r?r s rrJz)NetworkdActivator.bring_up_all_interfacess ONNU+++rc0dddd|g}t||S)rrrrdownr]r^s rr1z&NetworkdActivator.bring_down_interfaces$VUFK8[111rr5) rrrrQrSrrRr.rrJr1rrrrrs11$111\122222\2 ,|,,,,\, 2#2$222\222rr)enirsznetwork-managernetworkdNAME_TO_ACTIVATORpriorityr'cxd|D}|rtd|zd|D}fd|DS)Nc$g|] }|tv |Sr)DEFAULT_PRIORITYrDs rrFz$search_activator..s#@@@Qa/?&?&?q&?&?&?rz0Unknown activators provided in priority list: %sc(g|]}t|Sr)r)r7rCs rrFz$search_activator..sFFFT*40FFFrc>g|]}||Srr )r7 activator_clsr's rrFz$search_activator..s=      " "6 * *    r) ValueError)rr'unknownactivator_classess ` rsearch_activatorrs}A@(@@@G  > H   GFXFFF    .   rc|t}t||}|s$d}|r |dkrd|z}td|d||d}td|||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_activatorrs# Xv . .E    ,fmm"V+D"""&$$ 2   QxHII8(H Or)NN)+loggingabcrrtypingrrrrr r cloudinitr r cloudinit.net.enirrYcloudinit.net.netplanrvrnrdcloudinit.net.network_statercloudinit.net.networkdr getLoggerrr ExceptionrrSr$r&rVrbrrrrrrR__annotations__rrrrrrs########>>>>>>>>>>>>>>>> 888888@@@@@@CCCCCC444444BBBBBBg!!     9    $    ; ; ; ; ; s; ; ; |22222(222:22222.222BFEFEFEFEFE'FEFEFER22222(2226 .! 884T"2334 3i !&sDy!1  $ !    "CGtCy!2:3- r