Example #1
0
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'
    }
Example #2
0
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'
    }
Example #3
0
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']
Example #4
0
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)
Example #5
0
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']
Example #6
0
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']
Example #7
0
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']
Example #8
0
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']
Example #9
0
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'
    }
Example #10
0
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'}
Example #11
0
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']
Example #12
0
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)
Example #13
0
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)
Example #14
0
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)