diff options
author | Matthias Runge <mrunge@redhat.com> | 2021-06-30 19:45:36 +0200 |
---|---|---|
committer | Matthias Runge <mrunge@redhat.com> | 2021-06-30 19:55:14 +0200 |
commit | 625505790fe4123c2d806afdc28c11df1d8114f3 (patch) | |
tree | a17b93167d9be6ae9261040d35d19cc2c1f94a82 /ceilometer | |
parent | 62bb51e269e513f17c67711b5bbc1fbead962ebf (diff) | |
download | ceilometer-625505790fe4123c2d806afdc28c11df1d8114f3.tar.gz |
Notify and update snapshot metrics
when a volume with an attached snapshot is transferred
to a different project.
Change-Id: I907b9b1c912d9794ada796494b172d290901993a
Diffstat (limited to 'ceilometer')
-rw-r--r-- | ceilometer/pipeline/data/event_definitions.yaml | 14 | ||||
-rw-r--r-- | ceilometer/publisher/data/gnocchi_resources.yaml | 5 | ||||
-rw-r--r-- | ceilometer/tests/unit/publisher/test_gnocchi.py | 44 |
3 files changed, 59 insertions, 4 deletions
diff --git a/ceilometer/pipeline/data/event_definitions.yaml b/ceilometer/pipeline/data/event_definitions.yaml index b8fcc8a5..8e6bdb00 100644 --- a/ceilometer/pipeline/data/event_definitions.yaml +++ b/ceilometer/pipeline/data/event_definitions.yaml @@ -69,7 +69,7 @@ audit_period_ending: type: datetime fields: payload.audit_period_ending -- event_type: ['volume.exists', 'volume.retype', 'volume.create.*', 'volume.delete.*', 'volume.resize.*', 'volume.attach.*', 'volume.detach.*', 'volume.update.*', 'snapshot.exists', 'snapshot.create.*', 'snapshot.delete.*', 'snapshot.update.*'] +- event_type: ['volume.exists', 'volume.retype', 'volume.create.*', 'volume.delete.*', 'volume.resize.*', 'volume.attach.*', 'volume.detach.*', 'volume.update.*', 'snapshot.exists', 'snapshot.create.*', 'snapshot.delete.*', 'snapshot.update.*', 'volume.transfer.accept.end', 'snapshot.transfer.accept.end'] traits: &cinder_traits user_id: fields: payload.user_id @@ -89,8 +89,8 @@ image_id: fields: payload.glance_metadata[?key=image_id].value instance_id: - fields: payload.volume_attachment[0].instance_uuid -- event_type: ['volume.transfer.*','volume.exists', 'volume.retype', 'volume.create.*', 'volume.delete.*', 'volume.resize.*', 'volume.attach.*', 'volume.detach.*', 'volume.update.*'] + fields: payload.volume_attachment[0].server_id +- event_type: ['volume.transfer.*', 'volume.exists', 'volume.retype', 'volume.create.*', 'volume.delete.*', 'volume.resize.*', 'volume.attach.*', 'volume.detach.*', 'volume.update.*', 'snapshot.transfer.accept.end'] traits: <<: *cinder_traits resource_id: @@ -104,6 +104,13 @@ fields: payload.volume_type replication_status: fields: payload.replication_status +- event_type: ['snapshot.transfer.accept.end'] + traits: + <<: *cinder_traits + resource_id: + fields: payload.snapshot_id + project_id: + fields: payload.tenant_id - event_type: ['share.create.*', 'share.delete.*', 'share.extend.*', 'share.shrink.*'] traits: &share_traits share_id: @@ -687,3 +694,4 @@ fields: payload.detail type: fields: payload.type + diff --git a/ceilometer/publisher/data/gnocchi_resources.yaml b/ceilometer/publisher/data/gnocchi_resources.yaml index bfb9fa39..63afe58d 100644 --- a/ceilometer/publisher/data/gnocchi_resources.yaml +++ b/ceilometer/publisher/data/gnocchi_resources.yaml @@ -250,7 +250,9 @@ resources: event_delete: - volume.delete.end - snapshot.delete.end - event_update: volume.transfer.accept.end + event_update: + - volume.transfer.accept.end + - snapshot.transfer.accept.end event_attributes: id: resource_id project_id: project_id @@ -414,3 +416,4 @@ resources: network.services.lb.total.connections: network.services.lb.active.connections: + diff --git a/ceilometer/tests/unit/publisher/test_gnocchi.py b/ceilometer/tests/unit/publisher/test_gnocchi.py index 770eea2b..dcaf8c11 100644 --- a/ceilometer/tests/unit/publisher/test_gnocchi.py +++ b/ceilometer/tests/unit/publisher/test_gnocchi.py @@ -174,6 +174,28 @@ VOLUME_TRANSFER_ACCEPT_END = models.Event( message_id=u'9fc4ceee-d980-4098-a685-2ad660838ac1' ) +SNAPSHOT_TRANSFER_ACCEPT_END = models.Event( + event_type='snapshot.transfer.accept.end', + traits=[models.Trait(u'tenant_id', 1, '945e7d09220e4308abe4b3b734bf5fce>'), + models.Trait(u'project_id', 1, '85bc015f7a2342348593077a927c4aaa'), + models.Trait(u'user_id', 1, '945e7d09220e4308abe4b3b734bf5fce'), + models.Trait(u'service', 1, 'volume.controller-0'), + models.Trait( + u'request_id', 1, 'req-71dd1ae4-81ca-431a-b9fd-ac833eba889f'), + models.Trait( + u'resource_id', 1, '156b8d3f-ad99-429b-b84c-3f263fb2a801'), + models.Trait( + u'display_name', 1, 'test-vol'), + models.Trait( + u'type', 1, 'req-71dd1ae4-81ca-431a-b9fd-ac833eba889f'), + models.Trait(u'host', 1, 'hostgroup@tripleo_iscsi#tripleo_iscsi'), + models.Trait(u'created_at', 4, '2020-08-28 12:51:52'), + models.Trait(u'size', 2, 1)], + raw={}, + generated='2020-08-28T12:52:22.930413', + message_id=u'9fc4ceee-d980-4098-a685-2ad660838ac1' +) + class PublisherTest(base.BaseTestCase): @@ -645,6 +667,28 @@ class PublisherWorkflowTest(base.BaseTestCase, for call in expected_calls: self.assertIn(call, fakeclient.mock_calls) + @mock.patch('gnocchiclient.v1.client.Client') + def test_update_snapshot_event_workflow(self, fakeclient_cls): + url = netutils.urlsplit("gnocchi://") + self.publisher = gnocchi.GnocchiPublisher(self.conf.conf, url) + + fakeclient = fakeclient_cls.return_value + + now = timeutils.utcnow() + self.useFixture(utils_fixture.TimeFixture(now)) + + expected_calls = [ + mock.call.resource.update( + 'volume', + '156b8d3f-ad99-429b-b84c-3f263fb2a801', + {'project_id': '85bc015f7a2342348593077a927c4aaa'}), + ] + + self.publisher.publish_events([SNAPSHOT_TRANSFER_ACCEPT_END]) + self.assertEqual(1, len(fakeclient.mock_calls)) + for call in expected_calls: + self.assertIn(call, fakeclient.mock_calls) + @mock.patch('ceilometer.publisher.gnocchi.LOG') @mock.patch('gnocchiclient.v1.client.Client') def test_workflow(self, fakeclient_cls, logger): |