Ejemplo n.º 1
0
    def test_process_event(self):
        # check create instance event
        processor = proc.Processor(self.conf, InitializationStatus())
        event = self._create_event(spec_type=self.INSTANCE_SPEC,
                                   sync_mode=SyncMode.INIT_SNAPSHOT)
        processor.process_event(event)
        self._check_graph(processor, self.NUM_VERTICES_AFTER_CREATION,
                          self.NUM_EDGES_AFTER_CREATION)

        # check update instance even
        event[DSProps.SYNC_MODE] = SyncMode.UPDATE
        event[DSProps.EVENT_TYPE] = 'compute.instance.volume.attach'
        event['hostname'] = 'new_host'
        event['instance_id'] = event['id']
        event['state'] = event['status']
        event['host'] = event['OS-EXT-SRV-ATTR:host']
        processor.process_event(event)
        self._check_graph(processor, self.NUM_VERTICES_AFTER_CREATION,
                          self.NUM_EDGES_AFTER_CREATION)

        # check delete instance event
        event[DSProps.SYNC_MODE] = SyncMode.UPDATE
        event[DSProps.EVENT_TYPE] = 'compute.instance.delete.end'
        processor.process_event(event)
        self._check_graph(processor, self.NUM_VERTICES_AFTER_DELETION,
                          self.NUM_EDGES_AFTER_DELETION)
Ejemplo n.º 2
0
def main():
    """Starts all the Entity graph services

    1. Starts the Entity graph service
    2. Starts the api_handler service
    3. Starts the datasource service
    4. Starts the Consistency service
    """

    conf = service.prepare_service()
    init_status = InitializationStatus()
    mp_queue, evaluator_queue, evaluator, e_graph = init(conf)
    launcher = os_service.ServiceLauncher(conf)
    datasources = datasource_launcher.Launcher(
        conf, datasource_launcher.create_send_to_queue_callback(mp_queue))

    launcher.launch_service(
        entity_graph_svc.VitrageGraphService(conf, mp_queue, evaluator_queue,
                                             evaluator, e_graph, init_status))

    launcher.launch_service(
        api_handler_svc.VitrageApiHandlerService(conf, e_graph,
                                                 evaluator.scenario_repo))

    datasources.launch()

    launcher.launch_service(
        consistency_svc.VitrageGraphConsistencyService(conf, evaluator_queue,
                                                       evaluator, e_graph,
                                                       init_status))

    launcher.wait()
Ejemplo n.º 3
0
    def create_processor_with_graph(self):
        conf = cfg.ConfigOpts()
        conf.register_opts(self.PROCESSOR_OPTS, group='entity_graph')
        events = self._create_mock_events()
        processor = proc.Processor(conf, InitializationStatus())

        for event in events:
            processor.process_event(event)

        return processor
Ejemplo n.º 4
0
    def _create_processor_with_graph(self, conf, processor=None):
        events = self._create_mock_events()

        if not processor:
            processor = proc.Processor(conf, InitializationStatus())

        for event in events:
            processor.process_event(event)

        return processor
Ejemplo n.º 5
0
def init():
    conf = service.prepare_service()
    event_queue = multiprocessing.Queue()
    e_graph = entity_graph.EntityGraph(
        'Entity Graph', '%s:%s' % (EntityCategory.RESOURCE, OPENSTACK_CLUSTER))
    scenario_repo = ScenarioRepository(conf)
    evaluator = ScenarioEvaluator(conf, e_graph, scenario_repo, event_queue)
    initialization_status = InitializationStatus()

    return conf, event_queue, evaluator, e_graph, initialization_status
Ejemplo n.º 6
0
    def test_state_on_update(self):
        # setup
        processor = proc.Processor(self.conf, InitializationStatus())
        event = self._create_event(spec_type='INSTANCE_SPEC',
                                   sync_mode=SyncMode.INIT_SNAPSHOT)

        # action
        processor.process_event(event)

        # test assertions
        instance_transformer = InstanceTransformer({})
        vitrage_id = instance_transformer._create_entity_key(event)
        vertex = processor.entity_graph.get_vertex(vitrage_id)
        self.assertEqual(NormalizedResourceState.RUNNING,
                         vertex[VProps.AGGREGATED_STATE])
Ejemplo n.º 7
0
    def test_state_on_update(self):
        # setup
        processor = proc.Processor(self.conf,
                                   InitializationStatus(),
                                   uuid=True)
        event = self._create_event(spec_type='INSTANCE_SPEC',
                                   datasource_action=DSAction.INIT_SNAPSHOT)

        # action
        processor.process_event(event)

        # test assertions
        entity = processor.transformer_manager.transform(event)
        processor._find_and_fix_graph_vertex(entity.vertex, [])
        vertex = processor.entity_graph.get_vertex(entity.vertex.vertex_id)
        self.assertEqual('ACTIVE', vertex[VProps.AGGREGATED_STATE])
        self.assertEqual(OperationalResourceState.OK,
                         vertex[VProps.OPERATIONAL_STATE])
Ejemplo n.º 8
0
    def setUpClass(cls):
        super(TestConsistencyFunctional, cls).setUpClass()
        cls.initialization_status = InitializationStatus()
        cls.conf = cfg.ConfigOpts()
        cls.conf.register_opts(cls.CONSISTENCY_OPTS, group='consistency')
        cls.conf.register_opts(cls.PROCESSOR_OPTS, group='entity_graph')
        cls.conf.register_opts(cls.EVALUATOR_OPTS, group='evaluator')
        cls.conf.register_opts(cls.DATASOURCES_OPTS, group='datasources')
        cls.load_datasources(cls.conf)

        cls.processor = Processor(cls.conf, cls.initialization_status)
        cls.event_queue = queue.Queue()
        scenario_repo = ScenarioRepository(cls.conf)
        cls.evaluator = ScenarioEvaluator(cls.conf, cls.processor.entity_graph,
                                          scenario_repo, cls.event_queue)
        cls.consistency_enforcer = ConsistencyEnforcer(
            cls.conf, cls.event_queue, cls.evaluator,
            cls.processor.entity_graph, cls.initialization_status)
Ejemplo n.º 9
0
    def _create_entity(self,
                       processor=None,
                       spec_type=None,
                       sync_mode=None,
                       event_type=None,
                       properties=None):
        # create instance event with host neighbor
        event = self._create_event(spec_type=spec_type,
                                   sync_mode=sync_mode,
                                   event_type=event_type,
                                   properties=properties)

        # add instance entity with host
        if processor is None:
            processor = proc.Processor(self.conf, InitializationStatus())

        vertex, neighbors, event_type = processor.transformer_manager\
            .transform(event)
        processor.create_entity(vertex, neighbors)

        return vertex, neighbors, processor