Ejemplo n.º 1
0
    def test_event_list_with_filters(self):
        e1 = event_mod.Event(timeutils.utcnow(),
                             50,
                             status='GOOD',
                             context=self.ctx)
        e1.store(self.ctx)
        e2 = event_mod.Event(timeutils.utcnow(),
                             40,
                             status='GOOD',
                             context=self.ctx)
        e2.store(self.ctx)
        e3 = event_mod.Event(timeutils.utcnow(),
                             60,
                             status='BAD',
                             context=self.ctx)
        e3.store(self.ctx)

        result = self.eng.event_list(self.ctx, filters={'level': 50})
        self.assertEqual(1, len(result))

        result = self.eng.event_list(self.ctx, filters={'level': 10})
        self.assertEqual(0, len(result))

        filters = {'status': 'GOOD'}
        result = self.eng.event_list(self.ctx, filters=filters)
        self.assertEqual(2, len(result))
Ejemplo n.º 2
0
    def test_event_init_with_entity(self):
        timestamp = timeutils.utcnow()
        x_cluster = cluster_mod.Cluster('fake-cluster',
                                        0,
                                        'fake-profile',
                                        id='FAKE_CLUSTER')

        event = EVENT.Event(timestamp,
                            logging.CRITICAL,
                            x_cluster,
                            action="FAKE_ACTION",
                            status="ACTIVE",
                            status_reason="Recovered just now",
                            user=self.context.user,
                            project=self.context.project)

        self.assertEqual(timestamp, event.timestamp)
        self.assertIsNone(event.id)
        self.assertEqual(logging.CRITICAL, event.level)
        self.assertEqual(self.context.user, event.user)
        self.assertEqual(self.context.project, event.project)
        self.assertEqual('FAKE_ACTION', event.action)
        self.assertEqual('ACTIVE', event.status)
        self.assertEqual('Recovered just now', event.status_reason)

        self.assertEqual('FAKE_CLUSTER', event.obj_id)
        self.assertEqual('fake-cluster', event.obj_name)
        self.assertEqual('FAKE_CLUSTER', event.cluster_id)
        self.assertEqual('CLUSTER', event.obj_type)
Ejemplo n.º 3
0
    def test_event_init(self):
        timestamp = timeutils.utcnow()
        kwargs = {
            'id': 'FAKE-ID',
            'user': '******',
            'project': 'test-project',
            'action': 'fake-action',
            'status': 'ACTIVE',
            'status_reason': 'Weather is clear',
            'obj_id': 'FAKE-OBJ-ID',
            'obj_type': 'CLUSTER-TYPE',
            'obj_name': 'fake-cluster',
            'cluster_id': 'FAKE-CLUSTER-ID',
            'metadata': {
                'foo': 'bar'
            },
        }

        event = EVENT.Event(timestamp, logging.CRITICAL, **kwargs)

        self.assertEqual(timestamp, event.timestamp)
        self.assertEqual(logging.CRITICAL, event.level)
        self.assertEqual('FAKE-ID', event.id)
        self.assertEqual('test-user', event.user)
        self.assertEqual('test-project', event.project)

        self.assertEqual('fake-action', event.action)
        self.assertEqual('ACTIVE', event.status)
        self.assertEqual('Weather is clear', event.status_reason)

        self.assertEqual('FAKE-OBJ-ID', event.obj_id)
        self.assertEqual('CLUSTER-TYPE', event.obj_type)
        self.assertEqual('fake-cluster', event.obj_name)
        self.assertEqual('FAKE-CLUSTER-ID', event.cluster_id)
        self.assertEqual({'foo': 'bar'}, event.metadata)
Ejemplo n.º 4
0
    def test_event_list(self):
        ts = timeutils.utcnow()
        e1 = event_mod.Event(ts, 50, status='GOOD', context=self.ctx)
        eid1 = e1.store(self.ctx)
        e2 = event_mod.Event(ts, 50, status='BAD', context=self.ctx)
        eid2 = e2.store(self.ctx)

        result = self.eng.event_list(self.ctx)

        self.assertIsInstance(result, list)
        statuses = [e['status'] for e in result]
        ids = [p['id'] for p in result]
        self.assertIn(e1.status, statuses)
        self.assertIn(e2.status, statuses)
        self.assertIn(eid1, ids)
        self.assertIn(eid2, ids)
Ejemplo n.º 5
0
    def test_event_list_with_sort_dir(self):
        e1 = event_mod.Event(timeutils.utcnow(),
                             50,
                             status='GOOD',
                             context=self.ctx)
        e1.store(self.ctx)
        e2 = event_mod.Event(timeutils.utcnow(),
                             40,
                             status='GOOD',
                             context=self.ctx)
        e2.store(self.ctx)
        e3 = event_mod.Event(timeutils.utcnow(),
                             60,
                             status='BAD',
                             context=self.ctx)
        e3.store(self.ctx)

        # default by timestamp , ascending
        result = self.eng.event_list(self.ctx)
        self.assertEqual(e1.id, result[0]['id'])
        self.assertEqual(e2.id, result[1]['id'])

        # sort by created_time, descending
        result = self.eng.event_list(self.ctx, sort_dir='desc')
        self.assertEqual(e3.id, result[0]['id'])
        self.assertEqual(e2.id, result[1]['id'])

        # use name for sorting, descending
        result = self.eng.event_list(self.ctx,
                                     sort_keys=['name'],
                                     sort_dir='desc')
        self.assertEqual(e3.id, result[0]['id'])
        self.assertEqual(e1.id, result[2]['id'])

        # use permission for sorting
        ex = self.assertRaises(ValueError,
                               self.eng.event_list,
                               self.ctx,
                               sort_dir='Bogus')
        self.assertEqual(
            "Unknown sort direction, must be one of: "
            "asc-nullsfirst, asc-nullslast, desc-nullsfirst, "
            "desc-nullslast", six.text_type(ex))
Ejemplo n.º 6
0
    def test_event_list_with_sort_keys(self):
        e1 = event_mod.Event(timeutils.utcnow(),
                             50,
                             status='GOOD',
                             context=self.ctx)
        e1.store(self.ctx)
        e2 = event_mod.Event(timeutils.utcnow(),
                             40,
                             status='GOOD',
                             context=self.ctx)
        e2.store(self.ctx)
        e3 = event_mod.Event(timeutils.utcnow(),
                             60,
                             status='BAD',
                             context=self.ctx)
        e3.store(self.ctx)

        # default by timestamp
        result = self.eng.event_list(self.ctx)
        self.assertEqual(e1.id, result[0]['id'])
        self.assertEqual(e2.id, result[1]['id'])

        # use level for sorting
        result = self.eng.event_list(self.ctx, sort_keys=['level'])
        self.assertEqual(e2.id, result[0]['id'])
        self.assertEqual(e1.id, result[1]['id'])

        # use status for sorting
        result = self.eng.event_list(self.ctx, sort_keys=['status'])
        self.assertEqual(e3.id, result[2]['id'])

        # use level and status for sorting
        result = self.eng.event_list(self.ctx, sort_keys=['status', 'level'])
        self.assertEqual(e3.id, result[2]['id'])
        self.assertEqual(e2.id, result[0]['id'])
        self.assertEqual(e1.id, result[1]['id'])

        # unknown keys will be ignored
        result = self.eng.event_list(self.ctx, sort_keys=['duang'])
        self.assertIsNotNone(result)
Ejemplo n.º 7
0
    def test_event_list_with_limit_marker(self):
        e1 = event_mod.Event(timeutils.utcnow(),
                             50,
                             status='GOOD',
                             context=self.ctx)
        e1.store(self.ctx)
        e2 = event_mod.Event(timeutils.utcnow(),
                             50,
                             status='GOOD',
                             context=self.ctx)
        e2.store(self.ctx)

        result = self.eng.event_list(self.ctx, limit=0)

        self.assertEqual(0, len(result))
        result = self.eng.event_list(self.ctx, limit=1)
        self.assertEqual(1, len(result))
        result = self.eng.event_list(self.ctx, limit=2)
        self.assertEqual(2, len(result))
        result = self.eng.event_list(self.ctx, limit=3)
        self.assertEqual(2, len(result))

        result = self.eng.event_list(self.ctx, marker=e1.id)
        self.assertEqual(1, len(result))
        result = self.eng.event_list(self.ctx, marker=e2.id)
        self.assertEqual(0, len(result))

        e3 = event_mod.Event(timeutils.utcnow(),
                             50,
                             status='GOOD',
                             context=self.ctx)
        e3.store(self.ctx)
        result = self.eng.event_list(self.ctx, limit=1, marker=e1.id)
        self.assertEqual(1, len(result))
        result = self.eng.event_list(self.ctx, limit=2, marker=e1.id)
        self.assertEqual(2, len(result))
Ejemplo n.º 8
0
    def test_event_find(self):
        e1 = event_mod.Event(timeutils.utcnow(),
                             50,
                             status='GOOD',
                             context=self.ctx)
        eid = e1.store(self.ctx)

        result = self.eng.event_find(self.ctx, eid)
        self.assertIsNotNone(result)

        # short id
        result = self.eng.event_find(self.ctx, eid[:5])
        self.assertIsNotNone(result)

        # others
        ex = self.assertRaises(rpc.ExpectedException, self.eng.event_find,
                               self.ctx, 'Bogus')
        self.assertEqual(exception.EventNotFound, ex.exc_info[0])
Ejemplo n.º 9
0
    def test_event__infer_entity_data_clusteraction(self, mock_get):
        entity = mock.Mock(status='fake-status',
                           status_reason='fake-reason',
                           target='fake-cluster')
        entity.cluster = mock.Mock()
        entity.cluster.name = 'obj-name'
        mock_get.return_value = 'ClusterAction'

        event = EVENT.Event('timestamp', 'level', entity)

        self.assertEqual('timestamp', event.timestamp)
        self.assertEqual('level', event.level)
        self.assertEqual('obj-name', event.obj_name)
        self.assertEqual('fake-status', event.status)
        self.assertEqual('fake-reason', event.status_reason)
        self.assertEqual('CLUSTER', event.obj_type)
        self.assertEqual('fake-cluster', event.obj_id)
        self.assertEqual('fake-cluster', event.cluster_id)
        mock_get.assert_called_once_with(entity, fully_qualified=False)
Ejemplo n.º 10
0
    def test_event__infer_entity_data_node(self, mock_get):
        entity = mock.Mock(id='obj-id',
                           status='fake-status',
                           status_reason='fake-reason',
                           target='fake-target',
                           cluster_id='cluster-id')
        entity.name = 'obj-name'
        mock_get.return_value = 'Node'

        event = EVENT.Event('timestamp', 'level', entity)

        self.assertEqual('timestamp', event.timestamp)
        self.assertEqual('level', event.level)
        self.assertEqual('obj-name', event.obj_name)
        self.assertEqual('fake-status', event.status)
        self.assertEqual('fake-reason', event.status_reason)
        self.assertEqual('NODE', event.obj_type)
        self.assertEqual('obj-id', event.obj_id)
        self.assertEqual('cluster-id', event.cluster_id)
        mock_get.assert_called_once_with(entity, fully_qualified=False)
Ejemplo n.º 11
0
    def test_event__infer_entity_data_nodeaction(self, mock_get):
        entity = mock.Mock(status='fake-status',
                           status_reason='fake-reason',
                           target='fake-node')
        entity.node = mock.Mock()
        entity.node.name = 'obj-name'
        entity.node.cluster_id = CLUSTER_ID
        mock_get.return_value = 'NodeAction'

        event = EVENT.Event('timestamp', 'level', entity)

        self.assertEqual('timestamp', event.timestamp)
        self.assertEqual('level', event.level)
        self.assertEqual('obj-name', event.oname)
        self.assertEqual('fake-status', event.status)
        self.assertEqual('fake-reason', event.status_reason)
        self.assertEqual('NODE', event.otype)
        self.assertEqual('fake-node', event.oid)
        self.assertEqual(CLUSTER_ID, event.cluster_id)
        mock_get.assert_called_once_with(entity, fully_qualified=False)
Ejemplo n.º 12
0
    def test_event_store(self):
        timestamp = timeutils.utcnow()
        kwargs = {
            'user': self.context.user,
            'project': self.context.project,
            'action': 'fake-action',
            'status': 'ACTIVE',
            'status_reason': 'Weather is clear',
            'obj_id': 'FAKE-CLUSTER-ID',
            'obj_type': 'CLUSTER TYPE',
            'obj_name': 'fake-cluster',
            'cluster_id': 'FAKE-CLUSTER-ID',
            'metadata': {
                'foo': 'bar'
            },
        }

        event = EVENT.Event(timestamp, logging.CRITICAL, **kwargs)
        self.assertIsNone(event.id)

        event_id = event.store(self.context)

        self.assertIsNotNone(event_id)
        self.assertEqual(event_id, event.id)

        result = db_api.event_get(self.context, event_id)

        self.assertIsNotNone(result)
        self.assertEqual(event_id, result.id)
        self.assertEqual(timestamp, result.timestamp)
        self.assertEqual(event.level, int(result.level))
        self.assertEqual(event.user, result.user)
        self.assertEqual(event.project, result.project)
        self.assertEqual(event.action, result.action)
        self.assertEqual(event.status, result.status)
        self.assertEqual(event.status_reason, result.status_reason)
        self.assertEqual(event.obj_id, result.obj_id)
        self.assertEqual(event.obj_type, result.obj_type)
        self.assertEqual(event.obj_name, result.obj_name)
        self.assertEqual(event.cluster_id, result.cluster_id)
        self.assertEqual(event.metadata, result.meta_data)