1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

minor fixes + cleanup + update manpage

Ticket: CM-1438
Reviewed By:
Testing Done:

- simplified the dot generator
This commit is contained in:
roopa
2014-02-15 21:39:13 -08:00
parent 0ff44a76ac
commit 83c1f241fd
7 changed files with 58 additions and 54 deletions

2
TODO
View File

@@ -1,6 +1,6 @@
TODO:
====
- support old ifupdown state file /run/network/ifstate. B
- support old ifupdown state file /run/network/ifstate. Because some app's seem to use it
- support -i interfaces file
- support for debian ifupdown methods: tunnel, v4tunnel, 6to4, ppp, wvdial, ipv4ll
- support for debian ifupdown ipv6 auto method

View File

@@ -117,7 +117,7 @@ start)
set -f
exclusions=$(process_exclusions)
log_action_begin_msg "Configuring network interfaces"
if ifup -a $verbose --perfmode --force
if ifup -a $verbose --perfmode
then
log_action_end_msg $?
else
@@ -135,7 +135,7 @@ stop)
check_network_swap
log_action_begin_msg "Deconfiguring network interfaces"
if ifdown -a --exclude=lo $verbose --perfmode --force; then
if ifdown -a --exclude=lo $verbose --perfmode; then
log_action_end_msg $?
else
log_action_end_msg $?
@@ -160,7 +160,7 @@ force-reload)
ifupdown_init
log_action_begin_msg "Reloading network interfaces configuration"
if ifreload -a --force
if ifreload -a
then
log_action_end_msg $?
else
@@ -176,7 +176,7 @@ restart)
ifupdown_init
log_action_begin_msg "Reconfiguring network interfaces"
ifdown -a --exclude=lo $verbose --perfmode --force || true
ifdown -a --exclude=lo $verbose --perfmode || true
set -f
exclusions=$(process_exclusions)
if ifup -a --exclude=lo $verbose --perfmode

View File

@@ -85,6 +85,19 @@ EXAMPLES
ifquery --running --with-depends br0
ifquery --running -a
# print dependency info in list format
ifquery --print-dependency=list -a
ifquery --print-dependency=list br2000
# print dependency info in dot format
ifquery --print-dependency=dot -a
ifquery --print-dependency=dot br2000
# Create an image (png) from the dot format.
ifquery --print-dependency=dot -a > interfaces.dot
dot -Tpng interfaces.dot > interfaces.png
SEE ALSO
========
ifup(8)

View File

@@ -76,6 +76,9 @@ DESCRIPTION
These options come from addon modules. see interfaces-addons(5) for
these options.
ifupdown2 supports python-mako style templates in the interfaces file.
See examples section for details.
METHODS
=======
Both inet and inet6 address family interfaces can use the following
@@ -119,8 +122,14 @@ EXAMPLES
source /etc/network/interfaces.d/*
For more examples with addon config
# Using mako style templates
% for v in [11,12]:
auto vlan${v}
iface vlan${v} inet static
address 10.20.${v}.3/24
% endfor
For more examples see interfaces-addons(5)
FILES
=====

View File

@@ -98,46 +98,17 @@ class graph():
return sorted_graphs_list
@classmethod
def add_to_dot_old(cls, dependency_graph, gvgraph, v, parentgvitem):
dependents = dependency_graph.get(v, [])
if dependents is None:
return
if len(dependents) > 1:
# if more than one dependents .., add them to a box
box = gvgraph.newItem(v)
for d in dependents:
dnode = gvgraph.newItem(d, box)
cls.add_to_dot(dependency_graph, gvgraph, d, dnode)
if parentgvitem is not None: gvgraph.newLink(parentgvitem,
dnode)
else:
for d in dependents:
dnode = gvgraph.newItem(d)
cls.add_to_dot(dependency_graph, gvgraph, d, dnode)
if parentgvitem is not None: gvgraph.newLink(parentgvitem,
dnode)
@classmethod
def add_to_dot(cls, dependency_graph, gvgraph, v, parentgvitem):
vnode = gvgraph.newItem(v)
if parentgvitem is not None: gvgraph.newLink(parentgvitem, vnode)
dependents = dependency_graph.get(v, [])
if dependents is None:
return
for d in dependents:
cls.add_to_dot(dependency_graph, gvgraph, d, vnode)
@classmethod
def generate_dot(cls, dependency_graph, v):
gvgraph = GvGen()
cls.add_to_dot(dependency_graph, gvgraph, v, None)
gvgraph.dot(name=v)
@classmethod
def generate_dots(cls, dependency_graph, indegrees):
roots = [k for k, v in indegrees.items() if v == 0]
if roots is None:
return
map(lambda r: cls.generate_dot(dependency_graph, r), roots)
gvgraph = GvGen()
graphnodes = {}
for v in dependency_graph.keys():
graphnodes[v] = gvgraph.newItem(v)
for i, v in graphnodes.items():
dlist = dependency_graph.get(i, [])
if not dlist:
continue
for d in dlist:
gvgraph.newLink(v, graphnodes.get(d))
gvgraph.dot()

View File

@@ -110,11 +110,19 @@ class ifaceState():
class ifaceJsonEncoder(json.JSONEncoder):
def default(self, o):
retconfig = {}
if o.config:
for k, v in o.config.items():
if len(v) == 1:
retconfig[k] = v[0]
else:
retconfig[k] = v
return OrderedDict({'name' : o.name,
'addr_method' : o.addr_method,
'addr_family' : o.addr_family,
'auto' : o.auto,
'config' : o.config})
'config' : retconfig})
class iface():
""" config flags """

View File

@@ -68,13 +68,6 @@ def run_query(args):
iflist = args.iflist
if len(args.iflist) == 0:
iflist = None
logger.debug('creating ifupdown object ..')
cachearg=(False if (iflist or args.nocache or
args.perfmode or args.syntaxhelp) else True)
ifupdown_handle = ifupdownMain(withdepends=args.withdepends,
perfmode=args.perfmode,
njobs=args.jobs,
cache=cachearg)
if args.checkcurr:
qop='query-checkcurr'
elif args.running:
@@ -91,6 +84,16 @@ def run_query(args):
else:
qop='query'
cachearg=(False if (iflist or args.nocache or
args.perfmode or args.syntaxhelp or
(qop != 'query-checkcurr' and
qop != 'query-running')) else True)
logger.debug('creating ifupdown object ..')
ifupdown_handle = ifupdownMain(withdepends=args.withdepends,
perfmode=args.perfmode,
njobs=args.jobs,
cache=cachearg)
ifupdown_handle.query([qop], args.all, args.CLASS, iflist,
excludepats=args.excludepats,
printdependency=args.printdependency,