x[h. UddlZddlmZmZddlmZddlmZmZm Z m Z m Z m Z m Z ddlmZmZddlmZmZmZmZddlmZddlmZej4eZGd d eZ d$d ed e d e!de!fdZ" d$ded e!de!fdZ#GddeZ$Gdde$Z%Gdde$Z&Gdde$Z'Gdde$Z(Gdde$Z)gdZ*e%e(e'e)e&dZ+ee e e$fe,d<d e e d!e e dfde e e$fd"Z- d%d e e e d!e e de e$fd#Z.y)&N)ABCabstractmethod)partial)CallableDictIterableListOptionalTypeUnion)subputil)eninetplannetwork_managernetworkd)Iproute2) NetworkStatec eZdZy)NoActivatorExceptionN)__name__ __module__ __qualname__:/usr/lib/python3/dist-packages/cloudinit/net/activators.pyrrsrrcmd device_namewarn_on_stderrreturncJtttj||S)z2Attempt to alter an interface using a command list)_alter_interface_callablerr )rrrs r_alter_interfacer#s %WTYY%FsAAB%BBceZdZeed deedefdZeededefdZ eededefdZ e de edefd Z e d edefd Zedd Zy)NetworkActivatorNtargetr ct)z>Return True if activator is available, otherwise return False.NotImplementedErrorr2s r availablezNetworkActivator.available.s "##rrct)zWBring up interface. Return True is successful, otherwise return False r4rs rbring_up_interfacez#NetworkActivator.bring_up_interface4 "##rct)zYBring down interface. Return True is successful, otherwise return False r4r9s rbring_down_interfacez%NetworkActivator.bring_down_interface=r;r device_namesc,tfd|DS)zjBring up specified list of interfaces. Return True is successful, otherwise return False c3@K|]}j|ywNr:.0deviceclss r z7NetworkActivator.bring_up_interfaces..LsMf3))&1M)all)rFr>s` rbring_up_interfacesz$NetworkActivator.bring_up_interfacesFs M MMMr network_statecl|j|jDcgc]}|d c}Scc}w)z\Bring up all interfaces. Return True is successful, otherwise return False name)rJiter_interfaces)rFrKis rbring_up_all_interfacesz(NetworkActivator.bring_up_all_interfacesNs5 && - = = ? @1QvY @  @s 1ct)zWait for network to come up.r4rrrwait_for_networkz!NetworkActivator.wait_for_networkXs "##rrAr N)rrr staticmethodrr strboolr7r:r= classmethodrrJrrPrRrrrr1r1-s$(3-$4$$$$$$$#$$$$Nx}NNN L T  $$rr1cbeZdZeddeedefdZededefdZededefdZ y) IfUpDownActivatorNr2r c.tj|Sz3Return true if ifupdown can be used on this system.r6)rr7r6s rr7zIfUpDownActivator.availablecs}}F++rrc"d|g}t||S)bBring up interface using ifup. Return True is successful, otherwise return False ifupr#rrs rr:z$IfUpDownActivator.bring_up_interfacehs {#[11rc"d|g}t||S)r]ifdownr_r`s rr=z&IfUpDownActivator.bring_down_interfaceqs %[11rrA) rrrrTr rUrVr7r:r=rrrrYrY^sl ,(3-,4,,22222#2$22rrYcXeZdZeddefdZededefdZededefdZy)IfConfigActivatorNr cNd}dg}ttj|||S)z3Return true if ifconfig can be used on this system.ifconfigz/sbin)searchr2)rVr which)r2expectedrgs rr7zIfConfigActivator.available|s(DJJxvFGGrrc$d|dg}t||S)zoBring up interface using ifconfig up. Return True is successful, otherwise return False rfupr_r`s rr:z$IfConfigActivator.bring_up_interfaces ;-[11rc$d|dg}t||S)zqBring up interface using ifconfig down. Return True is successful, otherwise return False rfdownr_r`s rr=z&IfConfigActivator.bring_down_interfaces ;/[11rrA) rrrrTrVr7rUr:r=rrrrdrd{sbH$HH 22222#2$22rrdcxeZdZed defdZededefdZededefdZe de edefdZ y) NetworkManagerActivatorNr c.tj|S)z9Return true if NetworkManager can be used on this system.r6)rr7r6s rr7z!NetworkManagerActivator.availables((77rrcddlm}||}|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 connectionloadrkfilename)rsrtreloadifname)cloudinit.net.network_managerrrr'r(r#)rrrrvrs 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 rsrE disconnectr_r`s rr=z,NetworkManagerActivator.bring_down_interfaces , <[11rr>ctjgdjj}d|k7rtj d|t gddxrt fd|DS)z9Activate network Return True on success ) systemctlshowz--property=SubStateNetworkManager.servicezSubState=runningz:Expected NetworkManager SubState=running, but detected: %s)r}ztry-reload-or-restartrrIc3@K|]}j|ywrArBrCs rrGz>NetworkManagerActivator.bring_up_interfaces..sLV#((0LrH)r stdoutrstripr'r(r#rI)rFr>states` rrJz+NetworkManagerActivator.bring_up_interfacessp     &   & KKL  L  ML|LL MrrA) rrrrTrVr7rUr:r=rWrrJrrrroros8$882222.2#2$22Mx}MMMrroceZdZddgZeddefdZededefdZede edefd Z ed e defd Z ededefd Z edd Zy)NetplanActivatorrapplyNr c.tj|S)z2Return true if netplan can be used on this system.r6)rr7r6s rr7zNetplanActivator.availables  //rrcdtjdttjddSYApply netplan config. Return True is successful, otherwise return False zBCalling 'netplan apply' rather than altering individual interfacesrIFrr'r)r#r NETPLAN_CMDr9s rr:z#NetplanActivator.bring_up_interface1  -   ( (%  rr>cdtjdttjddSrr)r>s rrJz$NetplanActivator.bring_up_interfacesrrrKc:ttjddS)rrIFr)r#rr)rKs rrPz(NetplanActivator.bring_up_all_interfacess   ( (%  rcdtjdttjddSrrr9s rr=z%NetplanActivator.bring_down_interfacerrctjrtjdytj y)z:On networkd systems, wait for systemd-networkd-wait-onlinez1NetworkManager is enabled, skipping networkd waitN)rr7r'r)NetworkdActivatorrRrrrrRz!NetplanActivator.wait_for_networks,  $ $ & III J **,rrArS)rrrrrTrVr7rUr:rrJrrPr=rRrrrrrsg&K0$00          (3-  D     |     #  $    --rrceZdZed defdZededefdZededefdZ ededefdZ ed d Z y) rNr c.tj|Sr[)rr7r6s rr7zNetworkdActivator.availables!!00rrcHtttj|S1Return True is successful, otherwise return False)r"rrlink_upr9s rr:z$NetworkdActivator.bring_up_interface"s!) H$$k 2  rrKc"gd}t|dS)r)r}restartzsystemd-networkdzsystemd-resolvedrIr_)rKrs rrPz)NetworkdActivator.bring_up_all_interfaces)sOU++rcHtttj|Sr)r"rr link_downr9s rr=z&NetworkdActivator.bring_down_interface/s!) H&& 4  rc2tjgdy)z&Wait for systemd-networkd-wait-online.)r}startz$systemd-networkd-wait-online.serviceN)r rrrrRz"NetworkdActivator.wait_for_network6s J rrArS) rrrrTrVr7rUr:rrPr=rRrrrrrs1$11    ,|,,,  # $    rr)rrznetwork-managerrrfNAME_TO_ACTIVATORpriorityr2c|Dcgc] }|tvs |}}|rtd||Dcgc] }t| }}tfd|DdScc}wcc}w)zEReturns the first available activator from the priority list or None.z.Unknown activators provided in priority list: c3DK|]}|jr|ywrA)r7)rD activator_clsr2s rrGz#search_activator..\s' &&v.  s N)DEFAULT_PRIORITY ValueErrorrnext)rr2rOunknownrMactivator_classess ` rsearch_activatorrQs#@Qa/?&?q@G@FFT*40FF  !2   A Gs AAAc|t}t||}|s|r |dk7rd|nd}td|d|tj d|||S)N/z in target=z%No available network activators foundz. Searched through list: z.Using selected activator: %s from priority: %s)rrrr'r))rr2selectedtmsgs rselect_activatorress#&1H )/FcMVH%r"3D6:&&.Z 1  II8(H Or)T)NN)/loggingabcrr functoolsrtypingrrrr r r r cloudinitr r cloudinit.netrrrrcloudinit.net.netops.iproute2rcloudinit.net.network_stater getLoggerrr' ExceptionrlistrUrVr#r"r1rYrdrorrrr__annotations__rrrrrrs#HHH AA24g! 9 9=N NN15N N04(, &.$s.$b2(2:2(26=M.=M@C-'C-L ( H .!! 84T"23343i!&sDy!1 d#$%*CGtCy!2:3- r