cinder: link volume to image and instance
This change tracks the image_id and the instance_id of volume. Change-Id: I5e15080fad6cabece132d4609ed473494a64495e
This commit is contained in:
parent
36414e1ceb
commit
be22389c47
@ -128,6 +128,8 @@ metric:
|
||||
metadata:
|
||||
display_name: $.payload.display_name
|
||||
volume_type: $.payload.volume_type
|
||||
image_id: $.payload.glance_metadata[?key=image_id][0].value
|
||||
instance_id: $.payload.volume_attachment[0].server_id
|
||||
|
||||
- name: 'snapshot.size'
|
||||
event_type:
|
||||
|
@ -215,6 +215,15 @@ resources_update_operations = [
|
||||
{"op": "add", "path": "/attributes/deleted_at",
|
||||
"value": {"type": "datetime", "required": False}},
|
||||
]},
|
||||
{"desc": "add instance_id/image_id to volume",
|
||||
"type": "update_attribute_type",
|
||||
"resource_type": "volume",
|
||||
"data": [
|
||||
{"op": "add", "path": "/attributes/image_id",
|
||||
"value": {"type": "uuid", "required": False}},
|
||||
{"op": "add", "path": "/attributes/instance_id",
|
||||
"value": {"type": "uuid", "required": False}},
|
||||
]},
|
||||
]
|
||||
|
||||
# NOTE(sileht): We use LooseVersion because pbr can generate invalid
|
||||
|
@ -81,6 +81,10 @@
|
||||
fields: payload.status
|
||||
created_at:
|
||||
fields: payload.created_at
|
||||
image_id:
|
||||
fields: payload.glance_metadata[?key=image_id][0].value
|
||||
instance_id:
|
||||
fields: payload.volume_attachment[0].server_id
|
||||
- event_type: ['volume.exists', 'volume.create.*', 'volume.delete.*', 'volume.resize.*', 'volume.attach.*', 'volume.detach.*', 'volume.update.*']
|
||||
traits:
|
||||
<<: *cinder_traits
|
||||
|
@ -196,6 +196,8 @@ resources:
|
||||
attributes:
|
||||
display_name: resource_metadata.(display_name|name)
|
||||
volume_type: resource_metadata.volume_type
|
||||
image_id: resource_metadata.image_id
|
||||
instance_id: resource_metadata.instance_id
|
||||
event_delete: volume.delete.start
|
||||
event_attributes:
|
||||
id: resource_id
|
||||
|
@ -50,6 +50,18 @@ VOLUME_LIST = [
|
||||
u'multiattach': False,
|
||||
u'source_volid': None,
|
||||
u'consistencygroup_id': None,
|
||||
u"volume_image_metadata": {
|
||||
u"checksum": u"17d9daa4fb8e20b0f6b7dec0d46fdddf",
|
||||
u"container_format": u"bare",
|
||||
u"disk_format": u"raw",
|
||||
u"hw_disk_bus": u"scsi",
|
||||
u"hw_scsi_model": u"virtio-scsi",
|
||||
u"image_id": u"f0019ee3-523c-45ab-b0b6-3adc529673e7",
|
||||
u"image_name": u"debian-jessie-scsi",
|
||||
u"min_disk": u"0",
|
||||
u"min_ram": u"0",
|
||||
u"size": u"1572864000"
|
||||
},
|
||||
u'os-vol-mig-status-attr:name_id': None,
|
||||
u'name': None,
|
||||
u'bootable': u'false',
|
||||
@ -71,6 +83,18 @@ SNAPSHOT_LIST = [
|
||||
u'volume_id': u'6f27bc42-c834-49ea-ae75-8d1073b37806',
|
||||
u'metadata': {},
|
||||
u'created_at': u'2016-10-19T07:56:55.000000',
|
||||
u"volume_image_metadata": {
|
||||
u"checksum": u"17d9daa4fb8e20b0f6b7dec0d46fdddf",
|
||||
u"container_format": u"bare",
|
||||
u"disk_format": u"raw",
|
||||
u"hw_disk_bus": u"scsi",
|
||||
u"hw_scsi_model": u"virtio-scsi",
|
||||
u"image_id": u"f0019ee3-523c-45ab-b0b6-3adc529673e7",
|
||||
u"image_name": u"debian-jessie-scsi",
|
||||
u"min_disk": u"0",
|
||||
u"min_ram": u"0",
|
||||
u"size": u"1572864000"
|
||||
},
|
||||
u'name': None})
|
||||
]
|
||||
|
||||
@ -119,6 +143,11 @@ class TestVolumeSizePollster(base.BaseTestCase):
|
||||
volume_size_samples[0].project_id)
|
||||
self.assertEqual('d94c18fb-b680-4912-9741-da69ee83c94f',
|
||||
volume_size_samples[0].resource_id)
|
||||
self.assertEqual('f0019ee3-523c-45ab-b0b6-3adc529673e7',
|
||||
volume_size_samples[0].resource_metadata["image_id"])
|
||||
self.assertEqual('1ae69721-d071-4156-a2bd-b11bb43ec2e3',
|
||||
volume_size_samples[0].resource_metadata
|
||||
["instance_id"])
|
||||
|
||||
|
||||
class TestVolumeSnapshotSizePollster(base.BaseTestCase):
|
||||
@ -142,6 +171,9 @@ class TestVolumeSnapshotSizePollster(base.BaseTestCase):
|
||||
volume_snapshot_size_samples[0].project_id)
|
||||
self.assertEqual('b1ea6783-f952-491e-a4ed-23a6a562e1cf',
|
||||
volume_snapshot_size_samples[0].resource_id)
|
||||
self.assertEqual('f0019ee3-523c-45ab-b0b6-3adc529673e7',
|
||||
volume_snapshot_size_samples[0].resource_metadata
|
||||
["image_id"])
|
||||
|
||||
|
||||
class TestVolumeBackupSizePollster(base.BaseTestCase):
|
||||
|
@ -21,7 +21,16 @@ from ceilometer import sample
|
||||
|
||||
class _Base(plugin_base.PollsterBase):
|
||||
def extract_metadata(self, obj):
|
||||
return dict((k, getattr(obj, k)) for k in self.FIELDS)
|
||||
metadata = dict((k, getattr(obj, k)) for k in self.FIELDS)
|
||||
if getattr(obj, "volume_image_metadata", None):
|
||||
metadata["image_id"] = obj.volume_image_metadata.get("image_id")
|
||||
else:
|
||||
metadata["image_id"] = None
|
||||
if getattr(obj, "attachments", None):
|
||||
metadata["instance_id"] = obj.attachments[0]["server_id"]
|
||||
else:
|
||||
metadata["instance_id"] = None
|
||||
return metadata
|
||||
|
||||
|
||||
class VolumeSizePollster(_Base):
|
||||
|
Loading…
x
Reference in New Issue
Block a user