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:
2
TODO
2
TODO
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
=====
|
||||
|
51
pkg/graph.py
51
pkg/graph.py
@@ -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()
|
||||
|
10
pkg/iface.py
10
pkg/iface.py
@@ -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 """
|
||||
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user