ó oBú]c@sëddlmZmZddlZddlmZddlmZddlmZddl m Z ej ƒZ igd6gd6d d 6e d 6Zd „Zd „Zd d„Zd„Zd„Zd„Zd„Zd„Zdd„ZdS(iÿÿÿÿ(tcopytdeepcopyN(tlog(tnet_prefix_to_ipv4_mask(tutil(t SimpleTabletipv4tipv6tthwaddrtupc Csri}d}x_t|jƒƒD]K\}}tjd|ƒ}|r¾|jdƒjƒjdƒd}|jdƒjdƒ}igd6gd6d d 6td |ko­d |kƒd 6||[^:]+):\s+<(?P\S+)>\s+.*tdevt@itflagst,RRRR tUPtLOWER_UPR tinet6s/\s+inet6\s(?P\S+)\sscope\s(?P\S+).*s*Could not parse ip addr show: (line:%d) %stinetsH\s+inet\s(?P\S+)(\sbrd\s(?P\S+))?\sscope\s(?P\S+).*tcidr4t/t32tiptbcasttmasktscopetlinks-\s+link/(?P\S+)\s(?P\S+).*t link_typetetherN(tNonet enumeratet splitlinestretmatchtgrouptlowertsplittbooltLOGtwarningtappendt groupdicttpopt partitionR( t ipaddr_outtdevstdev_nametnumtlinetmR R!Rtaddrt_tprefix((s5/usr/lib/python2.7/site-packages/cloudinit/netinfo.pyt_netdev_info_iproutes` ")            cCsãi}xÖ|jƒD]È}t|ƒdkr1qn|ddkr|jƒd}|jdƒrm|d }n||krttƒ||(s R6(RtlenR$tendswithRtDEFAULT_NETDEV_INFOR#tstriptTrueR tsearchtrangeR(tlstript startswithR!R"(t ifconfig_dataR-R0tcurdevttokstitaddr6tres((s5/usr/lib/python2.7/site-packages/cloudinit/netinfo.pyt_netdev_info_ifconfig^sZ  "&!&! ''&&")csßi}tjdƒrBtjdddgƒ\}}t|ƒ}nRtjdƒr‡tjddgdddgƒ\}}t|ƒ}n tjd ƒ|d kr¤|Sttt f‰d d ‡‡fd †‰ˆ|d |ƒ|S(NRR2tshowtifconfigs-atrcsiis>Could not print networks: missing 'ip' and 'ifconfig' commandsRcs¡t|tƒr|jƒ}n0t|ttfƒrBt|ƒ}n tdƒ‚xL|D]D\}}||krz|||R tsub( t route_dataRxRyR0RHR{t route_data6R~R((s5/usr/lib/python2.7/site-packages/cloudinit/netinfo.pyt_netdev_route_info_netstatsp     "            .   "        cCs¡i}tjdƒrEtjddddgƒ\}}t|ƒ}nXtjdƒrtjddddgd d d gƒ\}}t|ƒ}n tjd ƒ|S( NRs-oRnRTR‰s--routes --numerics--extendROiis;Could not print routes: missing 'ip' and 'netstat' commands(RR^R_R€RR&R'(Rxt iproute_outRat route_out((s5/usr/lib/python2.7/site-packages/cloudinit/netinfo.pyt route_infoXs!'c Csg}d}ytd|ƒ}WnAtk rb}|jtjdjdt|ƒƒddƒƒn¢X|smdSdd d d d d g}t|ƒ}xt|j ƒƒD] \}}xR|j dƒD]A}|j ||d|d|d|j d|ƒ|dfƒqÀWxN|j dƒD]=}|j ||d|d||j d|ƒ|dfƒqWt |j dƒƒt |j dƒƒdkr¤|j ||d||||dfƒq¤q¤W|j ƒ} t t| jƒdt ƒƒ} tjdd| ƒ} |j| | gƒdj|ƒdS(Nt.R`s Net device info failed ({error})terrort!iPs tDevicetUptAddresstMasktScopes Hw-AddressRR RRRR RR;iRZsNet device infot+(Rct ExceptionR(RtcentertformattstrRtsortedRRtgettadd_rowR=t get_stringtmaxRtextendRu( tlinesR`tnetdevRstfieldsttblR RVR2tnetdev_stmax_lentheader((s5/usr/lib/python2.7/site-packages/cloudinit/netinfo.pytnetdev_pformatis< !!. c Csbg}y tƒ}WnUtk rj}|jtjdjdt|ƒƒddƒƒtjtd|ƒnçX|j dƒrXddd d d d g}t |ƒ}xbt |j dƒƒD]K\}}t|ƒ}|j ||d |d|d|d|dgƒq´W|j ƒ}tt|jƒdtƒƒ} tjdd| ƒ} |j| |gƒn|j dƒrQddd d d g} t | ƒ} xqt |j dƒƒD]Z\}}t|ƒ}|ddkrÌqžn| j ||d |d|d|dgƒqžW| j ƒ}tt|jƒdtƒƒ} tjdd| ƒ} |j| |gƒndj|ƒdS(NsRoute info failed ({error})R•R–iPsRoute info failed: %sRtRouteR‚tGatewaytGenmaskt InterfacetFlagsRdReRfRgR RZsRoute IPv4 infoRœRRŒsRoute IPv6 infos (R“RR(RRžRŸR tlogexcR&R¢RRR£R¤R=R¥RR¦Ru( R§RxRst fields_v4ttbl_v4tntrtroute_idtroute_sR¬R­t fields_v6ttbl_v6((s5/usr/lib/python2.7/site-packages/cloudinit/netinfo.pyt route_pformat‹sJ    "     "   s ci-info: cCs­g}tƒjƒ}|rFx5|D]}|jd||fƒq"Wn |j|ƒtƒjƒ}|r“x5|D]}|jd||fƒqoWn |j|ƒdj|ƒS(Ns%s%ss (R®RR(R¦R½Ru(R4R§t netdev_linesR0t route_lines((s5/usr/lib/python2.7/site-packages/cloudinit/netinfo.pyt debug_info´s    (RRR t cloudinitRtloggingtcloudinit.net.network_stateRRtcloudinit.simpletableRt getLoggerR&tFalseR?R5RLRcR€RR“R®R½RÀ(((s5/usr/lib/python2.7/site-packages/cloudinit/netinfo.pyt s(    ? 8 ' R I  " )