From 13e22f74c1f30edd9bb464231441a70d5e072ab6 Mon Sep 17 00:00:00 2001 From: Alexey Weyl Date: Sun, 7 Aug 2016 15:31:40 +0300 Subject: [PATCH] Datasources tenants Change-Id: I84a599def6d9c78b32ee8996a7c9f1af4cab5c27 --- vitrage/common/constants.py | 1 + vitrage/datasources/aodh/transformer.py | 2 +- vitrage/datasources/cinder/volume/driver.py | 3 ++- vitrage/datasources/cinder/volume/transformer.py | 16 +++++++++++++--- vitrage/datasources/driver_base.py | 5 ++--- .../datasources/neutron/network/transformer.py | 1 + vitrage/datasources/neutron/port/transformer.py | 3 ++- vitrage/datasources/nova/instance/transformer.py | 4 +--- vitrage/entity_graph/consistency/__init__.py | 2 +- .../nova/test_nova_instance_transformers.py | 2 +- 10 files changed, 25 insertions(+), 14 deletions(-) diff --git a/vitrage/common/constants.py b/vitrage/common/constants.py index e911cc013..74c02f172 100644 --- a/vitrage/common/constants.py +++ b/vitrage/common/constants.py @@ -24,6 +24,7 @@ class VertexProperties(object): AGGREGATED_STATE = 'aggregated_state' OPERATIONAL_STATE = 'operational_state' PROJECT_ID = 'project_id' + TENANT_ID = 'tenant_id' UPDATE_TIMESTAMP = 'update_timestamp' SAMPLE_TIMESTAMP = 'sample_timestamp' NAME = 'name' diff --git a/vitrage/datasources/aodh/transformer.py b/vitrage/datasources/aodh/transformer.py index 6ae865d71..dd6a08902 100644 --- a/vitrage/datasources/aodh/transformer.py +++ b/vitrage/datasources/aodh/transformer.py @@ -51,7 +51,7 @@ class AodhTransformer(AlarmTransformerBase): VProps.SEVERITY: entity_event[AodhProps.SEVERITY], AodhProps.DESCRIPTION: entity_event[AodhProps.DESCRIPTION], AodhProps.ENABLED: entity_event[AodhProps.ENABLED], - VProps.PROJECT_ID: entity_event[AodhProps.PROJECT_ID], + VProps.TENANT_ID: entity_event.get(AodhProps.PROJECT_ID, None), AodhProps.REPEAT_ACTIONS: entity_event[AodhProps.REPEAT_ACTIONS], 'alarm_type': entity_event[AodhProps.TYPE] } diff --git a/vitrage/datasources/cinder/volume/driver.py b/vitrage/datasources/cinder/volume/driver.py index 0b3629b78..70c3d9875 100644 --- a/vitrage/datasources/cinder/volume/driver.py +++ b/vitrage/datasources/cinder/volume/driver.py @@ -45,7 +45,8 @@ class CinderVolumeDriver(DriverBase): self.extract_events(self.client.volumes.list( search_opts={'all_tenants': 1})), CINDER_VOLUME_DATASOURCE, - sync_mode) + sync_mode, + 'manager') @staticmethod def enrich_event(event, event_type): diff --git a/vitrage/datasources/cinder/volume/transformer.py b/vitrage/datasources/cinder/volume/transformer.py index 64e73dc45..c91f58140 100644 --- a/vitrage/datasources/cinder/volume/transformer.py +++ b/vitrage/datasources/cinder/volume/transformer.py @@ -50,12 +50,14 @@ class CinderVolumeTransformer(ResourceTransformerBase): volume_name = extract_field_value(entity_event, 'display_name') volume_id = extract_field_value(entity_event, 'id') volume_state = extract_field_value(entity_event, 'status') + tenant_id = entity_event.get('os-vol-tenant-attr:tenant_id', None) timestamp = extract_field_value(entity_event, 'created_at') return self._create_vertex(entity_event, volume_name, volume_id, volume_state, + tenant_id, timestamp) def _create_update_entity_vertex(self, entity_event): @@ -63,18 +65,26 @@ class CinderVolumeTransformer(ResourceTransformerBase): volume_name = extract_field_value(entity_event, 'display_name') volume_id = extract_field_value(entity_event, 'volume_id') volume_state = extract_field_value(entity_event, 'status') + tenant_id = entity_event.get(VProps.TENANT_ID, None) timestamp = entity_event.get('updated_at', None) return self._create_vertex(entity_event, volume_name, volume_id, volume_state, + tenant_id, timestamp) - def _create_vertex(self, entity_event, volume_name, volume_id, - volume_state, update_timestamp): + def _create_vertex(self, + entity_event, + volume_name, + volume_id, + volume_state, + tenant_id, + update_timestamp): metadata = { - VProps.NAME: volume_name + VProps.NAME: volume_name, + VProps.TENANT_ID: tenant_id, } entity_key = self._create_entity_key(entity_event) diff --git a/vitrage/datasources/driver_base.py b/vitrage/datasources/driver_base.py index dd1309cf2..894d430e6 100644 --- a/vitrage/datasources/driver_base.py +++ b/vitrage/datasources/driver_base.py @@ -48,13 +48,12 @@ class DriverBase(object): pass @classmethod - def make_pickleable(cls, entities, sync_type, - sync_mode, *args): + def make_pickleable(cls, entities, sync_type, sync_mode, *args): pickleable_entities = [] for entity in entities: for field in args: - entity.pop(field) + entity.pop(field, None) cls._add_sync_type(entity, sync_type) cls._add_sync_mode(entity, sync_mode) diff --git a/vitrage/datasources/neutron/network/transformer.py b/vitrage/datasources/neutron/network/transformer.py index 687dd30b6..c6492fc27 100644 --- a/vitrage/datasources/neutron/network/transformer.py +++ b/vitrage/datasources/neutron/network/transformer.py @@ -84,6 +84,7 @@ class NetworkTransformer(ResourceTransformerBase): metadata = { VProps.NAME: name, + VProps.TENANT_ID: entity_event.get(VProps.TENANT_ID, None), } sample_timestamp = entity_event[DSProps.SAMPLE_DATE] diff --git a/vitrage/datasources/neutron/port/transformer.py b/vitrage/datasources/neutron/port/transformer.py index 672bdf4c9..343a425e8 100644 --- a/vitrage/datasources/neutron/port/transformer.py +++ b/vitrage/datasources/neutron/port/transformer.py @@ -100,7 +100,8 @@ class PortTransformer(ResourceTransformerBase): ip_addresses = [ip['ip_address'] for ip in fixed_ips] metadata = { VProps.NAME: name, - 'ip_addresses': tuple(ip_addresses) + VProps.TENANT_ID: entity_event.get(VProps.TENANT_ID, None), + 'ip_addresses': tuple(ip_addresses), } sample_timestamp = entity_event[DSProps.SAMPLE_DATE] diff --git a/vitrage/datasources/nova/instance/transformer.py b/vitrage/datasources/nova/instance/transformer.py index d9ef3452a..c29912162 100644 --- a/vitrage/datasources/nova/instance/transformer.py +++ b/vitrage/datasources/nova/instance/transformer.py @@ -60,11 +60,9 @@ class InstanceTransformer(ResourceTransformerBase): def _create_vertex(self, entity_event, name, entity_id, state): - project = extract_field_value(entity_event, 'tenant_id') - metadata = { VProps.NAME: name, - VProps.PROJECT_ID: project + VProps.TENANT_ID: entity_event.get(VProps.TENANT_ID, None), } sample_timestamp = entity_event[DSProps.SAMPLE_DATE] diff --git a/vitrage/entity_graph/consistency/__init__.py b/vitrage/entity_graph/consistency/__init__.py index d278d48f3..0fb74d63f 100644 --- a/vitrage/entity_graph/consistency/__init__.py +++ b/vitrage/entity_graph/consistency/__init__.py @@ -21,7 +21,7 @@ OPTS = [ min=60, help='minimum time until deleting entity (in seconds)'), cfg.IntOpt('initialization_interval', - default=3, + default=1, min=1, help='interval between consistency initialization checks for ' 'finding if all end messages from datasources were ' diff --git a/vitrage/tests/unit/datasources/nova/test_nova_instance_transformers.py b/vitrage/tests/unit/datasources/nova/test_nova_instance_transformers.py index 18558a556..6e06a4d65 100644 --- a/vitrage/tests/unit/datasources/nova/test_nova_instance_transformers.py +++ b/vitrage/tests/unit/datasources/nova/test_nova_instance_transformers.py @@ -167,7 +167,7 @@ class NovaInstanceTransformerTest(base.BaseTest): vertex[VertexProperties.TYPE]) expected_project = extract_value(event, 'tenant_id') - observed_project = vertex[VertexProperties.PROJECT_ID] + observed_project = vertex[VertexProperties.TENANT_ID] self.assertEqual(expected_project, observed_project) state = 'state' if is_update_event else 'status'