From 970358ce5e1e209990ba1efd41265b2c3019a27f Mon Sep 17 00:00:00 2001 From: Mehdi Abaakouk Date: Mon, 21 Nov 2016 09:17:02 +0100 Subject: [PATCH] gnocchi: Add volume_type attribute to volume Change-Id: I3b968d35dc30122756abdbabd96424fc8e587d25 Co-Authored-By: zhangguoqing --- .../dispatcher/data/gnocchi_resources.yaml | 1 + ceilometer/gnocchi_client.py | 26 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/ceilometer/dispatcher/data/gnocchi_resources.yaml b/ceilometer/dispatcher/data/gnocchi_resources.yaml index c7ecf99c6e..4414080ede 100644 --- a/ceilometer/dispatcher/data/gnocchi_resources.yaml +++ b/ceilometer/dispatcher/data/gnocchi_resources.yaml @@ -188,6 +188,7 @@ resources: event_delete: volume.delete.start event_attributes: id: resource_id + volume_type: resource_metadata.volume_type - resource_type: host metrics: diff --git a/ceilometer/gnocchi_client.py b/ceilometer/gnocchi_client.py index 5703419f89..2604165c1b 100644 --- a/ceilometer/gnocchi_client.py +++ b/ceilometer/gnocchi_client.py @@ -97,6 +97,18 @@ resources_initial = { }, } +# NOTE(sileht): Order matter this have to be considered like alembic migration +# code, because it updates the resources schema of Gnocchi +resources_update_operation = [ + {"desc": "add volume_type to volume", + "type": "update_attribute_type", + "resource_type": "volume", + "data": { + "attribute": "/attributes/volume_type", + "value": {"type": "string", "min_length": 0, "max_length": 255, + "required": False}}}, +] + def upgrade_resource_types(conf): gnocchi = get_gnocchiclient(conf) @@ -109,7 +121,13 @@ def upgrade_resource_types(conf): gnocchi.resource_type.create(resource_type=rt) except Exception: LOG.error("Gnocchi resource creation fail", exc_info=True) - else: - # NOTE(sileht): We have to handle this case when it will be - # possible to add/rm resource-types columns - pass + return + + for op in resources_update_operation: + if op['type'] == 'update_attribute_type': + try: + gnocchi.resource_type.update(op['resource_type'], op['data']) + except Exception: + LOG.error("Gnocchi resource update fail: %s", op['desc'], + exc_info=True) + return