def test_riak(): events = { 'riak_service1': [ evapi.React('riak_service1', 'run', 'success', 'riak_service2', 'run'), evapi.React('riak_service1', 'run', 'success', 'riak_service3', 'run') ], 'riak_service3': [ evapi.React('riak_service3', 'join', 'success', 'riak_service1', 'commit'), evapi.React('riak_service3', 'run', 'success', 'riak_service3', 'join') ], 'riak_service2': [ evapi.React('riak_service2', 'run', 'success', 'riak_service2', 'join'), evapi.React('riak_service2', 'join', 'success', 'riak_service1', 'commit') ], } changes_graph = nx.MultiDiGraph() changes_graph.add_node('riak_service1.run') evapi.build_edges(changes_graph, events) assert set(changes_graph.predecessors('riak_service1.commit')) == { 'riak_service2.join', 'riak_service3.join' }
def test_riak(): events = { 'riak_service1': [ evapi.React('riak_service1', 'run', 'success', 'riak_service2', 'run'), evapi.React('riak_service1', 'run', 'success', 'riak_service3', 'run') ], 'riak_service3': [ evapi.React('riak_service3', 'join', 'success', 'riak_service1', 'commit'), evapi.React('riak_service3', 'run', 'success', 'riak_service3', 'join') ], 'riak_service2': [ evapi.React('riak_service2', 'run', 'success', 'riak_service2', 'join'), evapi.React('riak_service2', 'join', 'success', 'riak_service1', 'commit') ], } for name in events: res = Resource.from_dict({'key': name, 'name': name}) res.save() res.inputs.add_new('location_id', '1') evapi.add_events(name, events[name]) changes_graph = nx.MultiDiGraph() changes_graph.add_node('riak_service1.run') evapi.build_edges(changes_graph, events) assert set(changes_graph.predecessors('riak_service1.commit')) == { 'riak_service2.join', 'riak_service3.join' }
def test_nova_api_run_after_nova(nova_deps): changes_graph = nx.DiGraph() changes_graph.add_node('nova.run') changes_graph.add_node('nova_api.run') evapi.build_edges(changes_graph, nova_deps) assert changes_graph.successors('nova.run') == ['nova_api.run']
def send_to_orchestration(): dg = nx.MultiDiGraph() staged = {r.name: r.args_show() for r in resource.load_all().values()} commited = data.CD() events = {} changed_nodes = [] for res_uid in staged.keys(): commited_data = commited.get(res_uid, {}) staged_data = staged.get(res_uid, {}) df = create_diff(staged_data, commited_data) if df: events[res_uid] = evapi.all_events(res_uid) changed_nodes.append(res_uid) action = guess_action(commited_data, staged_data) state_change = evapi.StateChange(res_uid, action) state_change.insert(changed_nodes, dg) evapi.build_edges(changed_nodes, dg, events) # what it should be? dg.graph['name'] = 'system_log' return graph.create_plan_from_graph(dg)
def test_nova_api_react_on_update(nova_deps): """Test that nova_api:update will be called even if there is no changes in nova_api""" # NOQA changes_graph = nx.DiGraph() changes_graph.add_node('nova.update') evapi.build_edges(changes_graph, nova_deps) assert changes_graph.successors('nova.update') == ['nova_api.update']
def test_nova_api_run_after_nova(nova_deps): changed = ['nova', 'nova_api'] changes_graph = nx.DiGraph() changes_graph.add_node('nova.run') changes_graph.add_node('nova_api.run') evapi.build_edges(changed, changes_graph, nova_deps) assert changes_graph.successors('nova.run') == ['nova_api.run']
def test_nova_api(nova_deps): changes_graph = nx.DiGraph() changes_graph.add_node('nova.run') changes_graph.add_node('nova_sch.run') evapi.build_edges(changes_graph, nova_deps) assert set(changes_graph.successors('nova.run')) == { 'nova_sch.run', 'nova_api.update'} assert changes_graph.successors('nova_api.update') == ['nova.reboot']
def test_nova_api_react_on_update(nova_deps): """Test that nova_api:update will be called even if there is no changes in nova_api """ changed = ['nova'] changes_graph = nx.DiGraph() changes_graph.add_node('nova.update') evapi.build_edges(changed, changes_graph, nova_deps) assert changes_graph.successors('nova.update') == ['nova_api.update']
def test_rmq(rmq_deps): changes_graph = nx.DiGraph() changes_graph.add_node('rmq.1.run') changes_graph.add_node('rmq.2.run') changes_graph.add_node('rmq.3.run') changes_graph.add_node('rmq_cluster.1.create') changes_graph.add_node('rmq_cluster.2.join') changes_graph.add_node('rmq_cluster.3.join') evapi.build_edges(changes_graph, rmq_deps) assert set(changes_graph.successors('rmq_cluster.1.create')) == { 'rmq_cluster.2.join', 'rmq_cluster.3.join' }
def test_mandatory_revisit(): events = { 'e1': [evapi.Dep('e1', 'run', 'success', 'e2', 'run'), evapi.React('e1', 'run', 'success', 'e2', 'start')], 'e2': [evapi.React('e2', 'start', 'success', 'e2', 'run')]} for name in events: r = Resource.from_dict(dict(key=name, name=name)) r.inputs.add_new('location_id', '1') r.save() evapi.add_events(name, events[name]) changes_graph = nx.DiGraph() changes_graph.add_node('e1.run') evapi.build_edges(changes_graph, events) assert set(changes_graph.predecessors('e2.run')) == {'e1.run', 'e2.start'}
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']
def send_to_orchestration(): dg = nx.MultiDiGraph() events = {} changed_nodes = [] for logitem in data.SL(): events[logitem.res] = evapi.all_events(logitem.res) changed_nodes.append(logitem.res) state_change = evapi.StateChange(logitem.res, logitem.action) state_change.insert(changed_nodes, dg) evapi.build_edges(dg, events) # what `name` should be? dg.graph['name'] = 'system_log' return graph.create_plan_from_graph(dg)
def send_to_orchestration(tags=None): dg = nx.MultiDiGraph() events = {} changed_nodes = [] if tags: staged_log = LogItem.log_items_by_tags(tags) else: staged_log = data.SL() for logitem in staged_log: events[logitem.resource] = evapi.all_events(logitem.resource) changed_nodes.append(logitem.resource) state_change = StateChange(logitem.resource, logitem.action) state_change.insert(changed_nodes, dg) evapi.build_edges(dg, events) # what `name` should be? dg.graph['name'] = 'system_log' return graph.create_plan_from_graph(dg)