Ejemplo n.º 1
0
    def _create_vitrage_neighbors(self, event):
        event_type = event[EVALUATOR_EVENT_TYPE]

        timestamp = transformer_base.convert_timestamp_format(
            '%Y-%m-%d %H:%M:%S.%f', event[VProps.UPDATE_TIMESTAMP])

        if event_type in [ADD_EDGE, REMOVE_EDGE]:

            relation_edge = graph_utils.create_edge(
                source_id=event[TFields.SOURCE],
                target_id=event[TFields.TARGET],
                relationship_type=event[EProps.RELATIONSHIP_TYPE],
                update_timestamp=timestamp)

            return [Neighbor(None, relation_edge)]

        if event_type == ADD_VERTEX:
            result = []

            relation_edge = graph_utils.create_edge(
                source_id=TransformerBase.uuid_from_deprecated_vitrage_id(
                    self._create_entity_key(event)),
                target_id=event[TFields.TARGET],
                relationship_type=EdgeLabel.ON,
                update_timestamp=timestamp)

            neighbor_props = {
                VProps.VITRAGE_IS_PLACEHOLDER:
                True,
                VProps.UPDATE_TIMESTAMP:
                timestamp,
                VProps.VITRAGE_SAMPLE_TIMESTAMP:
                event[VProps.VITRAGE_SAMPLE_TIMESTAMP],
                VProps.IS_REAL_VITRAGE_ID:
                True,
                VProps.VITRAGE_TYPE:
                event.get(VProps.VITRAGE_RESOURCE_TYPE),
                VProps.VITRAGE_CATEGORY:
                EntityCategory.RESOURCE,
            }
            result.append(
                Neighbor(Vertex(event[TFields.TARGET], neighbor_props),
                         relation_edge))
            if event.get(TFields.CAUSING_ALARM):
                relation_edge = graph_utils.create_edge(
                    source_id=event[TFields.CAUSING_ALARM],
                    target_id=TransformerBase.uuid_from_deprecated_vitrage_id(
                        self._create_entity_key(event)),
                    relationship_type=EdgeLabel.CAUSES,
                    update_timestamp=timestamp)
                result.append(
                    Neighbor(
                        Vertex(
                            event[TFields.CAUSING_ALARM], {
                                VProps.UPDATE_TIMESTAMP: timestamp,
                                VProps.VITRAGE_IS_PLACEHOLDER: True,
                            }), relation_edge))
            return result

        return []
Ejemplo n.º 2
0
 def test_scenario_0(self):
     observed_scenarios = self._load_scenarios('valid_actions.yaml')
     expected_scenario = Scenario(
         'valid actions-scenario0',
         '3',
         None,
         [
             ActionSpecs(
                 'valid actions-scenario0-action0',
                 'set_state',
                 {'target': 'host'},
                 {'state': 'ERROR'}),
             ActionSpecs(
                 'valid actions-scenario0-action1',
                 'raise_alarm',
                 {'target': 'host'},
                 {'severity': 'WARNING', 'alarm_name': 'ddd'}),
             ActionSpecs(
                 'valid actions-scenario0-action2',
                 'mark_down',
                 {'target': 'host'},
                 {}),
             ActionSpecs(
                 'valid actions-scenario0-action3',
                 'execute_mistral',
                 {'target': 'host'},
                 {'input': {'farewell': 'get_attr(host, name) bla bla'},
                  'workflow': 'wf_1234'}),
         ],
         [
             NXGraph(
                 vertices=[
                     Vertex('host_ssh_alarm',
                            {
                                'rawtext': 'host ssh is down',
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'zabbix',
                                'vitrage_is_deleted': False,
                            }),
                     Vertex('host',
                            {
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'nova.host',
                                'vitrage_is_deleted': False,
                            })
                 ],
                 edges=[
                     Edge('host_ssh_alarm', 'host', 'on',
                          {
                              'vitrage_is_deleted': False,
                              'negative_condition': False
                          })
                 ])
         ],
         TemplateLoaderV3Test.expected_entities,
         TemplateLoaderV3Test.expected_relationships)
     self._assert_scenario_equal(
         expected_scenario,
         observed_scenarios[0])
Ejemplo n.º 3
0
 def test_scenario_1(self):
     observed_scenarios = self._load_scenarios('valid_actions.yaml')
     expected_scenario = Scenario(
         'valid actions-scenario1',
         '3',
         None,
         [
             ActionSpecs(
                 'valid actions-scenario1-action0',
                 'add_causal_relationship',
                 {
                     'target': 'host_ssh_alarm',
                     'source': 'host_network_alarm',
                 },
                 {}),
         ],
         [
             NXGraph(
                 vertices=[
                     Vertex('host_ssh_alarm',
                            {
                                'rawtext': 'host ssh is down',
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'zabbix',
                                'vitrage_is_deleted': False,
                            }),
                     Vertex('host_network_alarm',
                            {
                                'rawtext': 'host network interface is down',
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'zabbix',
                                'vitrage_is_deleted': False,
                            }),
                     Vertex('host',
                            {
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'nova.host',
                                'vitrage_is_deleted': False,
                            })
                 ],
                 edges=[
                     Edge('host_ssh_alarm', 'host', 'on',
                          {
                              'vitrage_is_deleted': False,
                              'negative_condition': False
                          }),
                     Edge('host_network_alarm', 'host', 'on',
                          {
                              'vitrage_is_deleted': False,
                              'negative_condition': False
                          })
                 ])
         ],
         TemplateLoaderV3Test.expected_entities,
         TemplateLoaderV3Test.expected_relationships)
     self._assert_scenario_equal(
         expected_scenario,
         observed_scenarios[1])
Ejemplo n.º 4
0
 def test_scenario_5(self):
     observed_scenarios = self._load_scenarios('valid_actions.yaml')
     expected_scenario = Scenario(
         'valid actions-scenario5',
         '3',
         None,
         [
             ActionSpecs(
                 'valid actions-scenario5-action0',
                 'mark_down',
                 {'target': 'host'},
                 {}),
         ],
         [
             NXGraph(
                 vertices=[
                     Vertex('host_ssh_alarm',
                            {
                                'rawtext': 'host ssh is down',
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'zabbix',
                                'vitrage_is_deleted': False,
                            }),
                     Vertex('instance',
                            {
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'nova.instance',
                                'vitrage_is_deleted': False,
                            }),
                     Vertex('host',
                            {
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'nova.host',
                                'vitrage_is_deleted': False,
                            }),
                 ],
                 edges=[
                     Edge('host_ssh_alarm', 'host', 'on',
                          {
                              'vitrage_is_deleted': True,
                              'negative_condition': True
                          }),
                     Edge('host', 'instance', 'contains',
                          {
                              'vitrage_is_deleted': True,
                              'negative_condition': True
                          })
                 ]
             ),
         ],
         TemplateLoaderV3Test.expected_entities,
         TemplateLoaderV3Test.expected_relationships)
     self._assert_scenario_equal(
         expected_scenario,
         observed_scenarios[5])
Ejemplo n.º 5
0
    def setUpClass(cls):

        cls.target_vertex = Vertex('RESOURCE:nova.host:test_target')
        cls.source_vertex = Vertex('RESOURCE:nova.host:test_source')

        targets = {
            TField.TARGET: cls.target_vertex,
            TField.SOURCE: cls.source_vertex
        }

        cls.action_spec = ActionSpecs(ActionType.ADD_CAUSAL_RELATIONSHIP,
                                      targets, {})
    def setUpClass(cls):
        super(AddCausalRelationshipTest, cls).setUpClass()
        cls.target_vertex = Vertex('RESOURCE:nova.host:test_target')
        cls.source_vertex = Vertex('RESOURCE:nova.host:test_source')

        targets = {
            TField.TARGET: cls.target_vertex,
            TField.SOURCE: cls.source_vertex
        }

        cls.action_spec = ActionSpecs(0, ActionType.ADD_CAUSAL_RELATIONSHIP,
                                      targets, {})
 def test_scenario_2(self):
     observed_scenarios = self._load_scenarios('valid_actions.yaml')
     expected_scenario = Scenario(
         'valid actions-scenario2', '3', None, [
             ActionSpecs(
                 'valid actions-scenario2-action0', 'raise_alarm',
                 {'target': 'instance'}, {
                     'severity': 'WARNING',
                     'alarm_name': 'instance is down',
                     'causing_alarm':
                     'get_attr(host_ssh_alarm, vitrage_id)',
                 }),
             ActionSpecs('valid actions-scenario2-action1', 'set_state',
                         {'target': 'instance'}, {'state': 'SUBOPTIMAL'}),
         ], [
             NXGraph(vertices=[
                 Vertex(
                     'host_ssh_alarm', {
                         'rawtext': 'host ssh is down',
                         'vitrage_is_placeholder': False,
                         'vitrage_type': 'zabbix',
                         'vitrage_is_deleted': False,
                     }),
                 Vertex(
                     'instance', {
                         'vitrage_is_placeholder': False,
                         'vitrage_type': 'nova.instance',
                         'vitrage_is_deleted': False,
                     }),
                 Vertex(
                     'host', {
                         'vitrage_is_placeholder': False,
                         'vitrage_type': 'nova.host',
                         'vitrage_is_deleted': False,
                     }),
             ],
                     edges=[
                         Edge(
                             'host_ssh_alarm', 'host', 'on', {
                                 'vitrage_is_deleted': False,
                                 'negative_condition': False
                             }),
                         Edge(
                             'host', 'instance', 'contains', {
                                 'vitrage_is_deleted': False,
                                 'negative_condition': False
                             })
                     ])
         ], TemplateLoaderV3Test.expected_entities,
         TemplateLoaderV3Test.expected_relationships)
     self._assert_scenario_equal(expected_scenario, observed_scenarios[2])
Ejemplo n.º 8
0
def _build_equivalent_relationship(relationship, template_id, entity_props):
    source = relationship.source
    target = relationship.target
    if relationship.edge.source_id == template_id:
        source = Vertex(vertex_id=source.vertex_id,
                        properties={k: v
                                    for k, v in entity_props})
    elif relationship.edge.target_id == template_id:
        target = Vertex(vertex_id=target.vertex_id,
                        properties={k: v
                                    for k, v in entity_props})
    return EdgeDescription(source=source,
                           target=target,
                           edge=relationship.edge)
Ejemplo n.º 9
0
        def build_equivalent_scenario(cls, scenario, template_id,
                                      entity_props):
            entities = scenario.entities.copy()
            entities[template_id] = Vertex(
                vertex_id=entities[template_id].vertex_id,
                properties={k: v
                            for k, v in entity_props})
            relationships = {
                rel_id:
                cls.build_equivalent_relationship(rel, template_id,
                                                  entity_props)
                for rel_id, rel in scenario.relationships.items()
            }

            def extract_var(symbol_name):
                if symbol_name in entities:
                    return entities[symbol_name], ENTITY
                elif symbol_name in relationships:
                    return relationships[symbol_name], RELATIONSHIP
                else:
                    raise VitrageError(
                        'invalid symbol name: {}'.format(symbol_name))

            subgraphs = TemplateData.SubGraph.from_condition(
                scenario.condition, extract_var)

            return Scenario(id=scenario.id + '_equivalence',
                            condition=scenario.condition,
                            actions=scenario.actions,
                            subgraphs=subgraphs,
                            entities=entities,
                            relationships=relationships)
Ejemplo n.º 10
0
 def _file_to_vertex(self, filename, index=0):
     props = self._load_resource_file(filename, 'vertices')
     if props.get(VProps.ID):
         props[VProps.ID] = self.generate_mock_uuid()
     props[VProps.NAME] = "%s-%s" % (props[VProps.VITRAGE_TYPE], index)
     props[VProps.VITRAGE_ID] = self.generate_mock_uuid()
     return Vertex(props[VProps.VITRAGE_ID], props)
    def _create_vertex(self, event):

        event_type = event[EVALUATOR_EVENT_TYPE]

        update_timestamp = transformer_base.convert_timestamp_format(
            '%Y-%m-%d %H:%M:%S.%f', event[VProps.UPDATE_TIMESTAMP])

        if event_type == UPDATE_VERTEX:
            properties = {
                VProps.VITRAGE_STATE: event[VProps.VITRAGE_STATE],
                VProps.UPDATE_TIMESTAMP: update_timestamp,
                VProps.SAMPLE_TIMESTAMP: event[VProps.SAMPLE_TIMESTAMP],
                VProps.IS_PLACEHOLDER: False
            }
            return Vertex(event[VProps.VITRAGE_ID], properties)

        if event_type in [ADD_VERTEX, REMOVE_VERTEX]:

            metadata = {
                VProps.NAME: event[TFields.ALARM_NAME],
                VProps.SEVERITY: event[TFields.SEVERITY],
                VProps.STATE: event[VProps.STATE]
            }
            return graph_utils.create_vertex(
                self._create_entity_key(event),
                entity_category=EntityCategory.ALARM,
                entity_type=VITRAGE_TYPE,
                sample_timestamp=event[VProps.SAMPLE_TIMESTAMP],
                update_timestamp=update_timestamp,
                metadata=metadata)

        return None
Ejemplo n.º 12
0
 def test_scenario_4(self):
     observed_scenarios = self._load_scenarios('valid_actions.yaml')
     expected_scenario = Scenario(
         'valid actions-scenario4',
         '3',
         None,
         [
             ActionSpecs(
                 'valid actions-scenario4-action0',
                 'mark_down',
                 {'target': 'host'},
                 {}),
         ],
         [
             NXGraph(
                 vertices=[
                     Vertex('host',
                            {
                                'vitrage_is_placeholder': False,
                                'vitrage_type': 'nova.host',
                                'vitrage_is_deleted': False,
                            }),
                 ]),
         ],
         TemplateLoaderV3Test.expected_entities,
         TemplateLoaderV3Test.expected_relationships)
     self._assert_scenario_equal(
         expected_scenario,
         observed_scenarios[4])
    def _create_neighbors(self, event):

        event_type = event[EVALUATOR_EVENT_TYPE]

        timestamp = transformer_base.convert_timestamp_format(
            '%Y-%m-%d %H:%M:%S.%f', event[VProps.UPDATE_TIMESTAMP])

        if event_type in [ADD_EDGE, REMOVE_EDGE]:

            relation_edge = graph_utils.create_edge(
                source_id=event[TFields.SOURCE],
                target_id=event[TFields.TARGET],
                relationship_type=event[EProps.RELATIONSHIP_TYPE],
                update_timestamp=timestamp)

            return [Neighbor(None, relation_edge)]

        if event_type == ADD_VERTEX:

            relation_edge = graph_utils.create_edge(
                source_id=self._create_entity_key(event),
                target_id=event[TFields.TARGET],
                relationship_type=EdgeLabels.ON,
                update_timestamp=timestamp)

            neighbor_props = {
                VProps.IS_PLACEHOLDER: True,
                VProps.UPDATE_TIMESTAMP: timestamp,
                VProps.SAMPLE_TIMESTAMP: event[VProps.SAMPLE_TIMESTAMP]
            }
            neighbor = Vertex(event[TFields.TARGET], neighbor_props)
            return [Neighbor(neighbor, relation_edge)]

        return []
Ejemplo n.º 14
0
    def setUpClass(cls):

        cls.target_vertex = Vertex('RESOURCE:nova.host:test1')
        cls.targets = {TFields.TARGET: cls.target_vertex}
        cls.props = {TFields.ALARM_NAME: 'VM_CPU_SUBOPTIMAL_PERFORMANCE'}

        cls.action_spec = ActionSpecs(ActionType.SET_STATE, cls.targets,
                                      cls.props)
Ejemplo n.º 15
0
 def _file_to_vertex(self, relative_path, index=0):
     full_path = RESOURCES_PATH + "/vertices/"
     props = utils.load_specs(relative_path, full_path)
     if props.get(VProps.ID):
         props[VProps.ID] = uuidutils.generate_uuid()
     props[VProps.NAME] = "%s-%s" % (props[VProps.VITRAGE_TYPE], str(index))
     props[VProps.VITRAGE_ID] = uuidutils.generate_uuid()
     return Vertex(props[VProps.VITRAGE_ID], props)
Ejemplo n.º 16
0
    def setUpClass(cls):

        cls.target_vertex = Vertex('RESOURCE:nova.host:test1')

        targets = {TFields.TARGET: cls.target_vertex}
        cls.props = {TFields.STATE: 'SUBOPTIMAL'}

        cls.action_spec = ActionSpecs(ActionType.SET_STATE, targets, cls.props)
Ejemplo n.º 17
0
    def setUpClass(cls):
        super(SetStateRecipeTest, cls).setUpClass()

        cls.target_vertex = Vertex('RESOURCE:nova.host:test1')

        targets = {TFields.TARGET: cls.target_vertex}
        cls.props = {TFields.STATE: OperationalResourceState.SUBOPTIMAL}

        cls.action_spec = ActionSpecs(0, ActionType.SET_STATE, targets,
                                      cls.props)
Ejemplo n.º 18
0
    def setUpClass(cls):
        super(RaiseAlarmRecipeTest, cls).setUpClass()
        cls.target_props = {VProps.VITRAGE_TYPE: NOVA_HOST_DATASOURCE}
        cls.target_vertex = Vertex('RESOURCE:nova.host:test1',
                                   cls.target_props)
        cls.targets = {TFields.TARGET: cls.target_vertex}
        cls.props = {TFields.ALARM_NAME: 'VM_CPU_SUBOPTIMAL_PERFORMANCE'}

        cls.action_spec = ActionSpecs(
            0, ActionType.SET_STATE, cls.targets, cls.props)
Ejemplo n.º 19
0
    def _build_entities(self, entities_defs):
        entities = {}
        for entity_def in entities_defs:

            entity_dict = entity_def[TFields.ENTITY]
            template_id = entity_dict[TFields.TEMPLATE_ID]
            properties = PropsConverter.convert_props_with_dictionary(
                self._extract_properties(entity_dict))
            entities[template_id] = Vertex(template_id, properties)

        return entities
Ejemplo n.º 20
0
def topology_to_graph(topology):
    graph = NXGraph()
    nodes = topology['nodes']
    for n in nodes:
        graph.add_vertex(Vertex(n['vitrage_id'], n))

    edges = topology['links']
    for i in range(len(edges)):
        s_id = nodes[edges[i]['source']]['vitrage_id']
        t_id = nodes[edges[i]['target']]['vitrage_id']
        graph.add_edge(Edge(s_id, t_id, edges[i]['relationship_type']))
    return graph
Ejemplo n.º 21
0
 def setUpClass(cls):
     cls.resource_props = {
         VProps.IS_DELETED: common.false_,
         VProps.IS_PLACEHOLDER: common.false_
     }
     cls.props = {
         VProps.IS_DELETED: common.false_,
         VProps.NAME: common.name_,
         VProps.RESOURCE: cls.resource_props,
         VProps.CATEGORY: common.category_,
         VProps.OPERATIONAL_SEVERITY: common.critical_
     }
     cls.alarm_vertex = Vertex('RESOURCE:nova.instance:test1', cls.props)
Ejemplo n.º 22
0
    def _create_graph_from_graph_dictionary(api_graph):
        graph = NXGraph()

        nodes = api_graph['nodes']
        for i in xrange(len(nodes)):
            graph.add_vertex(Vertex(str(i), nodes[i]))

        edges = api_graph['links']
        for i in xrange(len(edges)):
            graph.add_edge(
                Edge(str(edges[i]['source']), str(edges[i]['target']),
                     edges[i]['relationship_type']))

        return graph
Ejemplo n.º 23
0
 def setUpClass(cls):
     cls.resource_props = {
         VProps.VITRAGE_IS_DELETED: common.false_,
         VProps.VITRAGE_IS_PLACEHOLDER: common.false_
     }
     cls.props = {
         VProps.VITRAGE_IS_DELETED: common.false_,
         VProps.NAME: common.name_,
         VProps.RESOURCE: cls.resource_props,
         VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,
         VProps.VITRAGE_OPERATIONAL_SEVERITY:
         OperationalAlarmSeverity.CRITICAL
     }
     cls.alarm_vertex = Vertex('RESOURCE:nova.instance:test1', cls.props)
Ejemplo n.º 24
0
    def _create_graph_from_graph_dictionary(self, api_graph):
        self.assertIsNotNone(api_graph)
        graph = NXGraph()

        nodes = api_graph['nodes']
        for i in range(len(nodes)):
            graph.add_vertex(Vertex(str(i), nodes[i]))

        edges = api_graph['links']
        for i in range(len(edges)):
            graph.add_edge(Edge(str(edges[i]['source']),
                                str(edges[i]['target']),
                                edges[i][EdgeProperties.RELATIONSHIP_TYPE]))

        return graph
Ejemplo n.º 25
0
    def test_basic_regex_with_no_match(self):

        event_properties = {
            "time": 121354,
            "vitrage_type": "zabbix",
            "vitrage_category": "ALARM",
            "rawtext": "No Match",
            "host": "some_host_kukoo"
        }
        event_vertex = Vertex(vertex_id="test_vertex",
                              properties=event_properties)
        relevant_scenarios = \
            self.scenario_repository.get_scenarios_by_vertex(
                event_vertex)
        self.assertThat(relevant_scenarios, IsEmpty())
Ejemplo n.º 26
0
    def test_regex_with_exact_match(self):

        event_properties = {
            "time": 121354,
            "vitrage_type": "zabbix",
            "vitrage_category": "ALARM",
            "rawtext": "Public interface host43 down",
            "host": "some_host_kukoo"
        }
        event_vertex = Vertex(vertex_id="test_vertex",
                              properties=event_properties)
        relevant_scenarios = \
            self.scenario_repository.get_scenarios_by_vertex(
                event_vertex)
        self.assertThat(relevant_scenarios, matchers.HasLength(1))
        relevant_scenario = relevant_scenarios[0]
        self.assertEqual("exact_match", relevant_scenario[0].vertex_id)
Ejemplo n.º 27
0
    def test_basic_regex(self):

        event_properties = {
            "time": 121354,
            "vitrage_type": "zabbix",
            "vitrage_category": "ALARM",
            "rawtext": "Interface virtual-0 down on {HOST.NAME}",
            "host": "some_host_kukoo"
        }
        event_vertex = Vertex(vertex_id="test_vertex",
                              properties=event_properties)
        relevant_scenarios = \
            self.scenario_repository.get_scenarios_by_vertex(
                event_vertex)
        self.assertThat(relevant_scenarios, matchers.HasLength(1))
        relevant_scenario = relevant_scenarios[0]
        self.assertEqual("zabbix_alarm_pass", relevant_scenario[0].vertex_id)
Ejemplo n.º 28
0
    def _create_vertex(self, event):

        event_type = event[EVALUATOR_EVENT_TYPE]

        update_timestamp = transformer_base.convert_timestamp_format(
            '%Y-%m-%d %H:%M:%S.%f', event[VProps.UPDATE_TIMESTAMP])

        if event_type == UPDATE_VERTEX:
            properties = {
                VProps.UPDATE_TIMESTAMP: update_timestamp,
                VProps.VITRAGE_IS_PLACEHOLDER: False,
                VProps.RESOURCE_ID: event.get(TFields.TARGET)
            }
            if VProps.IS_REAL_VITRAGE_ID in event:
                properties[VProps.IS_REAL_VITRAGE_ID] = \
                    event.get(VProps.IS_REAL_VITRAGE_ID)
            if VProps.VITRAGE_STATE in event:
                properties[VProps.VITRAGE_STATE] = \
                    event.get(VProps.VITRAGE_STATE)
            if VProps.IS_MARKED_DOWN in event:
                properties[VProps.IS_MARKED_DOWN] = \
                    event.get(VProps.IS_MARKED_DOWN)

            return Vertex(event[VProps.VITRAGE_ID], properties)

        if event_type in [ADD_VERTEX, REMOVE_VERTEX]:

            metadata = {
                VProps.NAME: event[TFields.ALARM_NAME],
                VProps.SEVERITY: event[TFields.SEVERITY],
                VProps.STATE: event[VProps.STATE],
                VProps.RESOURCE_ID: event.get(TFields.TARGET)
            }
            return graph_utils.create_vertex(
                self._create_entity_key(event),
                vitrage_category=EntityCategory.ALARM,
                vitrage_type=VITRAGE_DATASOURCE,
                vitrage_sample_timestamp=event[
                    VProps.VITRAGE_SAMPLE_TIMESTAMP],
                update_timestamp=update_timestamp,
                metadata=metadata)

        return None
Ejemplo n.º 29
0
    def do_replay_events(db, graph, event_id):
        events = db.events.get_replay_events(event_id=event_id)

        for event in events:
            if event.is_vertex:
                v_id = event.payload['vertex_id']
                del event.payload['vertex_id']
                v = Vertex(v_id, event.payload)
                graph.update_vertex(v)
            else:
                source_id = event.payload['source_id']
                target_id = event.payload['target_id']
                label = event.payload['label']
                del event.payload['source_id']
                del event.payload['target_id']
                del event.payload['label']
                e = Edge(source_id, target_id, label, event.payload)
                graph.update_edge(e)
        return len(events)
Ejemplo n.º 30
0
    def _build_entities_from_def_templates(self, includes, def_templates,
                                           entities):

        for def_template_dict in includes:

            name = def_template_dict[TFields.NAME]
            def_template = evaluator_utils.find_def_template(
                name, def_templates)
            defs = def_template[TFields.DEFINITIONS]
            entities_defs = defs[TFields.ENTITIES]

            for entity_def in entities_defs:

                entity_dict = entity_def[TFields.ENTITY]
                template_id = entity_dict[TFields.TEMPLATE_ID]
                if template_id not in entities:

                    properties = self._convert_properties_with_dictionary(
                        self._extract_properties(entity_dict))
                    entities[template_id] = Vertex(template_id, properties)