Merge branch 'events' of github.com:Mirantis/solar into jnowak/events_riak1

This commit is contained in:
Jedrzej Nowak 2015-08-14 16:10:48 +02:00
commit 9ad8956be6
2 changed files with 22 additions and 2 deletions

View File

@ -114,6 +114,7 @@ def build_edges(changed_resources, changes_graph, events):
:param events: {res: [controls.Event objects]}
"""
stack = changed_resources[:]
visited = []
while stack:
node = stack.pop()
@ -122,7 +123,9 @@ def build_edges(changed_resources, changes_graph, events):
else:
log.debug('No dependencies based on %s', node)
for ev in events.get(node, ()):
ev.insert(stack, changes_graph)
if node not in visited:
for ev in events.get(node, ()):
ev.insert(stack, changes_graph)
visited.append(node)
return changes_graph

View File

@ -66,3 +66,20 @@ def test_rmq(rmq_deps):
assert set(changes_graph.successors('rmq_cluster.1.create')) == {
'rmq_cluster.2.join', 'rmq_cluster.3.join'}
def test_riak():
events = {
'riak_service1': [evapi.React('riak_service1', 'run', 'success', 'riak_service2', 'join'),
evapi.React('riak_service1', 'run', 'success', 'riak_service3', 'join')],
'riak_service3': [evapi.React('riak_service3', 'join', 'success', 'riak_service1', 'commit')],
'riak_service2': [evapi.React('riak_service2', 'join', 'success', 'riak_service1', 'commit')],
}
changed = ['riak_service1']
changes_graph = nx.DiGraph()
changes_graph.add_node('riak_service1.run')
evapi.build_edges(changed, changes_graph, events)
assert nx.topological_sort(changes_graph) == [
'riak_service1.run', 'riak_service2.join', 'riak_service3.join', 'riak_service1.commit']