~milner/cloud-init/lint-cleanups

« back to all changes in this revision

Viewing changes to cloudinit/netinfo.py

  • Committer: Mike Milner
  • Date: 2012-01-18 01:23:09 UTC
  • mfrom: (502.2.5 trunk)
  • Revision ID: mike.milner@canonical.com-20120118012309-aqzzfh04frni7q0y
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import subprocess
2
2
 
 
3
 
3
4
def netdev_info():
4
 
    fields = ( "hwaddr", "addr", "bcast", "mask" )
5
 
    ifcfg_out = subprocess.check_output(["ifconfig", "-a"])
6
 
    devs = { }
 
5
    fields = ("hwaddr", "addr", "bcast", "mask")
 
6
    ifcfg_out = str(subprocess.check_output(["ifconfig", "-a"]))
 
7
    devs = {}
7
8
    for line in ifcfg_out.splitlines():
8
9
        if len(line) == 0:
9
10
            continue
10
11
        if line[0] not in ("\t", " "):
11
12
            curdev = line.split()[0]
12
 
            devs[curdev] = { "up": False }
 
13
            devs[curdev] = {"up": False}
13
14
            for field in fields:
14
15
                devs[curdev][field] = ""
15
16
        toks = line.lower().strip().split()
23
24
        for i in range(len(toks)):
24
25
            if toks[i] == "hwaddr":
25
26
                try:
26
 
                    devs[curdev]["hwaddr"] = toks[i+1]
 
27
                    devs[curdev]["hwaddr"] = toks[i + 1]
27
28
                except IndexError:
28
29
                    pass
29
30
            for field in ("addr", "bcast", "mask"):
30
31
                target = "%s%s" % (field, fieldpost)
31
 
                if devs[curdev].get(target,""): 
 
32
                if devs[curdev].get(target, ""):
32
33
                    continue
33
34
                if toks[i] == "%s:" % field:
34
35
                    try:
35
 
                        devs[curdev][target] = toks[i+1]
 
36
                        devs[curdev][target] = toks[i + 1]
36
37
                    except IndexError:
37
38
                        pass
38
39
                elif toks[i].startswith("%s:" % field):
39
 
                    devs[curdev][target] = toks[i][len(field)+1:]
 
40
                    devs[curdev][target] = toks[i][len(field) + 1:]
40
41
    return(devs)
41
42
 
 
43
 
42
44
def route_info():
43
 
    route_out = subprocess.check_output(["route", "-n"])
44
 
    routes = [ ]
 
45
    route_out = str(subprocess.check_output(["route", "-n"]))
 
46
    routes = []
45
47
    for line in route_out.splitlines()[1:]:
46
48
        if not line:
47
49
            continue
51
53
        routes.append(toks)
52
54
    return(routes)
53
55
 
 
56
 
54
57
def getgateway():
55
58
    for r in route_info():
56
59
        if r[3].find("G") >= 0:
57
 
            return("%s[%s]" % (r[1],r[7]))
 
60
            return("%s[%s]" % (r[1], r[7]))
58
61
    return(None)
59
62
 
 
63
 
60
64
def debug_info(pre="ci-info: "):
61
 
    lines = [ ]
 
65
    lines = []
62
66
    try:
63
67
        netdev = netdev_info()
64
68
    except Exception:
66
70
        netdev = {}
67
71
    for (dev, d) in netdev.iteritems():
68
72
        lines.append("%s%-6s: %i %-15s %-15s %s" %
69
 
            (pre, dev, d["up"], d["addr"],d["mask"], d["hwaddr"]))
 
73
            (pre, dev, d["up"], d["addr"], d["mask"], d["hwaddr"]))
70
74
    try:
71
75
        routes = route_info()
72
76
    except Exception:
76
80
    for r in routes:
77
81
        lines.append("%sroute-%d: %-15s %-15s %-15s %-6s %s" %
78
82
            (pre, n, r[0], r[1], r[2], r[7], r[3]))
79
 
        n = n+1
 
83
        n = n + 1
80
84
    return('\n'.join(lines))
81
85
 
 
86
 
82
87
if __name__ == '__main__':
83
88
    print debug_info()