~f[. ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z dZ dZdZdZd d d d dd dddZe e efZdZdZdZdedefdZdZdZdedefdZdeddfdZd3dZd3deded efd!Z d"Z!d#Z"d$Z#d%Z$d&Z%d'Z&d(Z'd)Z(d3d*Z)d+Z*d,efd-Z+d.edefd/Z,de-fd0Z.Gd1d2ej^Z0y)4N)ConfigurationError) NetDefinitionNetplanExceptionzNetworkManager.servicez+snap.network-manager.networkmanager.servicez/etc/iproute2/rt_tablesz/usr/share/iproute2/rt_tablesunspecdefaultmainlocal)rr r r rrr r cBtjjddS)NNETPLAN_GENERATE_PATHz/usr/libexec/netplan/generate)osenvironget+/usr/share/netplan/netplan_cli/cli/utils.pyget_generator_pathr*s ::>>13R SSrcbtjdddtgtjdk(S)N systemctl--quiet is-enabled)stderrr) subprocesscallNM_SNAP_SERVICE_NAMEDEVNULLrrris_nm_snap_enabledr .s* ??KLBVW`j`r`r swx xxrcttjdg|ztjtjy)Nnmclistdoutrr check_callrargss rr"r"2s)7)d*:3E3EjN`N`arr(returnc8tjdg|zdS)Nr"Ttext)r check_outputr's r nmcli_outr.8s  " "G9t#3$ ??rc\ tdgy#ttjf$rYywxYw)z"Check if NetworkManager is runninggeneralTF)r"OSErrorrSubprocessErrorrrr nm_runningr3>s1 yk Z// 0s ++c Ftjd}t}|D]p}t|d5}|D]T}|j |}|s|j tt j||jdndddr|S#1swY~xYw)Nz^interface-name=(.*)$r) recompilesetopenmatchupdatefnmatchfiltergroup)pathsdevicespat interfacespathflinems r nm_interfacesrHHs **, -CJ $_  IIdO%%c'..!''!**M&NO       sB ABB interfacec tdddddd|g}|jjd}|d}|d k7r|Sd S) Nz-mtabularz-fzGENERAL.CONNECTIONdeviceshow r6z--)r.stripsplit)rIoutputlines connections rnm_get_connection_for_interfacerUVsN i/CXvW`a bF LLN  &EqJ#t+:33rrTcT tdd|gy#tj$rYywxYw)NrTup)r"rCalledProcessError)rTs rnm_bring_interface_uprY]s.  |T:./  ( (   s ''c^trt|tg|St|tg|SN)r rrNM_SERVICE_NAME)actionsyncs rsystemctl_network_managerr_ds/"6!7>> Vo. 55rr]servicesr^ct|dk\r>d|g}|s|jd|j|tj|yy)Nr6rz --no-block)lenappendextendrr&)r]r`r^commands rrrlsF 8}' NN< (x g&rct}tjgdd}|jD]Q}|j j d}|dj s6|ddvs>|j|dS|S)N) networkctlz --no-pagerz --no-legendTr+ r) unmanagedlinger)r9rr- splitlinesrPrQ isnumericadd)rCoutrFss rnetworkd_interfacesrqxs{J  ! !"MTX YC ! JJL  s # Q4>> "-D D NN1Q4 ! rc2tjddgy)Nrgreloadrr&rrrnetworkctl_reloadrus<23rcht|dk\r$tjddgt|zyy)Nr6rg reconfigure)rbrr&list)rCs rnetworkctl_reconfigurerys0 :!|];d:>NNOrc>tjddd|gdk(ryy)z4Return True if at least one matching unit is runningrrz is-activerTF)rr) unit_patterns rsystemctl_is_activer|s" Y \JKqP rctjdd|gtjtjd}|jdkDrd|jvryy)z5Return True if output is "masked" or "masked-runtime"rrTr$rr,rmaskedF)rrunPIPE returncoder$r{ress rsystemctl_is_maskedrsH ..+|\B * " $C ~~h#**4 rctjdd|gtjtjd}|jdk7ryy)z7Return True if returncode is other than "not-found" (4)rrTr~F)rrrrrs rsystemctl_is_installedrs= ..+|\B * " $C ~~ rc2tjgdy)zEReload systemd unit files from disk and re-calculate its dependencies)rz daemon-reloadz--no-ask-passwordNrtrrrsystemctl_daemon_reloadrsMNrcttjddd|gtjtjy)z8Flush all IP addresses of a given interface via iproute2ipaddrflushr#Nr%)ifaces r ip_addr_flushrs*4%8ASAS\f\n\norc tjjd|}|rx ttjj|d5}|j j }|dk7r!t jd|| dddy ddd tjjtjj|dd}tjj|}|S#1swYixYw#t$r*}t jd|t|Yd}~yd}~wwxYw#t$r+}t jd||t|Yd}~yd}~wwxYw) Nz/sys/class/net operstatedownz'device %s operstate is %s, not changingz$Cannot determine operstate of %s: %srLdriverz0Cannot replug %s: cannot read link %s/device: %s) rrDjoinr:readrPloggingdebugIOErrorerrorstrrealpathbasename)rI only_downdevdirrEstateer driver_names rget_interface_driver_namers' WW\\*I 6F bggll6;78 A(F?MM"KYX]^   " !!"'',,vx"JKgg&&v. !    MM@)SQRV T   H)U[]`ab]cdsN)D z%find_matching_iface..s*f&=&=237.s3'>'5rr6r) isinstancer _has_matchrxr>rbrinfo)rCrmatchess ` rfind_matching_ifacersg fm ,, ,    657ABCG  7|q W 1:r macaddressc6d}tj||duS)NzT^[a-fA-F0-9][a-fA-F0-9](:[a-fA-F0-9][a-fA-F0-9]){5}((:[a-fA-F0-9][a-fA-F0-9]){14})?$)r7r;)r MAC_PATTERNs ris_valid_macaddressrshK 88K ,D 88rci}t}tjj|st} t |d5}|D]]}|j }t|dk(s"|djs6|d|t|d<t|d||d<_ ddd|S#1swY|SxYw#t$r"tjd|dtcYSwxYw)Nr5rrr6z Cannot open 'z ' for reading)NEW_RT_TABLES_PATHrrDexistsOLD_RT_TABLES_PATHr:rQrbrmint ExceptionrrRT_TABLES_DEFAULT) lookup_tablerD rt_tablesrF split_lines rroute_table_lookuprsL D 77>>$ ! ! $_ E ! E!ZZ\ z?a'JqM,C,C,E7A!}LZ]!3425jm2DLA/  E E  E  ! tfN;<  !s: B6$B) B)4*B)B6)B3.B63B66(C! C!c8eZdZd dZdZdZdZdZdZdZ y) NetplanCommandcX||_||_||_||_d|_d|_d|_d|_i|_d|_ d|_ tjtjdd||d|_|jj!ddd |jj!d dtj" |s^|jj%d d d |_|j&j)ddd}|j+|j,yy)NFrrhT)prog descriptionadd_helpz--debug store_truezEnable debug messages)r]helpz --breakpointzAvailable commandsrO subcommand)titlemetavardestrzShow this help message)rr)func) command_idr leaf_commandtesting_argsr breakpoint commandclass subcommandsrrargparseArgumentParsersysargvparser add_argumentSUPPRESSadd_subparsers subparsers add_parser set_defaults print_usage)selfrrleafrp_helps r__init__zNetplanCommand.__init__s%$&      --chhqk:3V:E7;=    <&= ! ?    &.&7&7 ! 9"kk88?SAC,9XDO__//!#*.w'-5z*   ::>>"8$? OO & &x':':3;3G3G,4,@,@05 ' 7 HLLx@+,x(rcddl}|j|D]:\}}|j|st|ts)|j ||<y)Nr)inspect getmembersisclass issubclassrr)r submodulesrrobjs r_import_subcommandsz"NetplanCommand._import_subcommandsBsH ++J7 :ID#s# 3(G..tS9 :rN)TF) __name__ __module__ __qualname__rr<rrrrr rrrrrs%78 -$:rr)F)1rrrrrrr=r7 configmanagerrnetplanrrr\rrrr RuntimeError config_errorsrr r"rxrr.r3rHrUrYr_boolrrqruryr|rrrrrrrrdictr NamespacerrrrrsS$  .3+D.4 yvG S#M$%5|D Tyb @D@S@  4s4s4 c d 6 'c 'T ' '4P O p . D  9C9D9 D,N:X''N:r