Last change
on this file since b06744b was
e8f2d4c,
checked in by Ted Faber <faber@…>, 11 years ago
|
Add this
|
-
Property mode set to
100644
|
File size:
1.1 KB
|
Rev | Line | |
---|
[e8f2d4c] | 1 | #!/usr/local/bin/python |
---|
| 2 | |
---|
| 3 | import topdl |
---|
| 4 | import StringIO |
---|
| 5 | |
---|
| 6 | def topology_to_route_file(top, filename=None, file=None): |
---|
| 7 | # Outfile will point to the output target, either a file or a string buffer |
---|
| 8 | outf = None |
---|
| 9 | closeit = True |
---|
| 10 | if all([filename, file]): return False |
---|
| 11 | elif file: |
---|
| 12 | closeit = False |
---|
| 13 | outf = file |
---|
| 14 | elif filename: outf = open(filename, 'w') |
---|
| 15 | else: outf = StringIO.StringIO() |
---|
| 16 | |
---|
| 17 | for e in top.elements: |
---|
| 18 | if not isinstance(e, topdl.Computer): continue |
---|
| 19 | myips = set() |
---|
| 20 | mylinks = { } |
---|
| 21 | for inf in e.interface: |
---|
| 22 | ip = inf.get_attribute('ip4_address') |
---|
| 23 | if ip: myips.add(ip) |
---|
| 24 | for sub in inf.subs: |
---|
| 25 | for oinf in sub.interfaces: |
---|
| 26 | dip = oinf.get_attribute('ip4_address') |
---|
| 27 | if dip is not None and dip not in myips: |
---|
| 28 | if ip not in mylinks: mylinks[ip] = [] |
---|
| 29 | mylinks[ip].append(dip) |
---|
| 30 | print >>outf, '%s: %s' % (e.name, ','.join(myips)) |
---|
| 31 | for ip, links in mylinks.items(): |
---|
| 32 | print >>outf, '%s: %s' % (ip, ','.join(links)) |
---|
| 33 | outf.flush() |
---|
| 34 | # If this routine built a string, return it |
---|
| 35 | if isinstance(outf, StringIO.StringIO): rv = outf.getvalue() |
---|
| 36 | else: rv = True |
---|
| 37 | if closeit: outf.close() |
---|
| 38 | return rv |
---|
Note: See
TracBrowser
for help on using the repository browser.