]> git.proxmox.com Git - mirror_ifupdown2.git/commitdiff
minor fixes + cleanup + update manpage
authorroopa <roopa@cumulusnetworks.com>
Sun, 16 Feb 2014 05:39:13 +0000 (21:39 -0800)
committerroopa <roopa@cumulusnetworks.com>
Sun, 16 Feb 2014 05:39:13 +0000 (21:39 -0800)
Ticket: CM-1438
Reviewed By:
Testing Done:

- simplified the dot generator

TODO
init.d/networking
man.rst/ifquery.8.rst
man.rst/interfaces.5.rst
pkg/graph.py
pkg/iface.py
sbin/ifupdown

diff --git a/TODO b/TODO
index 017e5b4ab80a93e587972cc9187f360dfb364efa..00032f6d37570ea48518d6841b957d91c1bf752e 100644 (file)
--- a/TODO
+++ b/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
index 92ddf9db85ed39c9c45e61613998d681354d80d3..d428fcdf67f6392988f4f9b37c14383bead431ba 100644 (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
index 6de2d4ed7794602aeb2efc396a8ae1621a400da3..6cb71650bfb786bd58f5133ffc561db5189b525b 100644 (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)
index 82671a3ba04e029c27c3e5b2bb335373386d975b..2317b322055d02f6558e6dfeffd7ec835dc42aa5 100644 (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
 =====
index bfbc95782568ac1b2e1989cc0e14369c93354f29..9d2c2381e780ddb05f1edabd940eeff094609428 100644 (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()
index 045096c1159f8a62a7a6b6d9ebbd4ccaba162297..ee5a4c7f6ba0007aea8919230f99ca0f6b74ec7c 100644 (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 """
index 5880bf4725e791b4a2f93b3e23e596860d7121d9..77f6d7cb2673b758c0686623eb00e1ef856f6e9e 100755 (executable)
@@ -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,