]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Make the API for getting dependency graph edges public
authorZane Bitter <zbitter@redhat.com>
Thu, 22 Aug 2013 11:01:21 +0000 (13:01 +0200)
committerZane Bitter <zbitter@redhat.com>
Thu, 22 Aug 2013 13:02:08 +0000 (15:02 +0200)
This will allow us to build new dependency graphs from combinations of
existing graphs.

Change-Id: I6da62607fa1e361d4d2e1581fd286c62f0d9470a

heat/engine/dependencies.py
heat/tests/test_dependencies.py

index 8abd86c692a588de42a229cd55ffdab87f520992..cd5aed99188233979dacd9dc75f4363b146e4059 100644 (file)
@@ -112,6 +112,17 @@ class Graph(collections.defaultdict):
         '''Return a copy of the graph with the edges reversed.'''
         return Graph(self.map(lambda n: n.reverse_copy()))
 
+    def edges(self):
+        '''Return an iterator over all of the edges in the graph.'''
+        def outgoing_edges(rqr, node):
+            if node.disjoint():
+                yield (rqr, None)
+            else:
+                for rqd in node:
+                    yield (rqr, rqd)
+        return itertools.chain.from_iterable(outgoing_edges(*i)
+                                             for i in self.iteritems())
+
     def __delitem__(self, key):
         '''Delete the node given by the specified key from the graph.'''
         node = self[key]
@@ -213,20 +224,10 @@ class Dependencies(object):
         '''
         return str(self._graph)
 
-    def _edges(self):
-        '''Return an iterator over all of the edges in the graph.'''
-        def outgoing_edges(rqr, node):
-            if node.disjoint():
-                yield (rqr, None)
-            else:
-                for rqd in node:
-                    yield (rqr, rqd)
-        return itertools.chain.from_iterable(outgoing_edges(*i)
-                                             for i in self._graph.iteritems())
-
     def __repr__(self):
         '''Return a string representation of the object.'''
-        return 'Dependencies([%s])' % ', '.join(repr(e) for e in self._edges())
+        edge_reprs = (repr(e) for e in self._graph.edges())
+        return 'Dependencies([%s])' % ', '.join(edge_reprs)
 
     def graph(self, reverse=False):
         '''Return a copy of the underlying dependency graph.'''
index 9196eae3e1a4f4f6e9c0c70c31f721d3ecb4cc02..ac2b25d0334fde099f2cd6eab245366e7044e825 100644 (file)
@@ -48,6 +48,11 @@ class dependenciesTest(testtools.TestCase):
                             '"%s" is not greater than "%s"' % (str(a), str(b)))
         self._dep_test(reversed, assertGreater, deps)
 
+    def test_edges(self):
+        input_edges = [('1', None), ('2', '3'), ('2', '4')]
+        dp = Dependencies(input_edges)
+        self.assertEqual(set(dp.graph().edges()), set(input_edges))
+
     def test_repr(self):
         dp = Dependencies([('1', None), ('2', '3'), ('2', '4')])
         s = "Dependencies([('1', None), ('2', '3'), ('2', '4')])"