Fix some serialisation of JSON issues
Fix some serialisation of JSON issues in the ceilometer collector. Change-Id: I5eb322bceea630a67071fad884a628106e529557 Closes-Bug: #1662779
This commit is contained in:
parent
0cf3bd465a
commit
094056c3fc
|
@ -198,9 +198,10 @@ class CeilometerCollector(collector.BaseCollector):
|
|||
image)
|
||||
image = self._cacher.get_resource_detail('image',
|
||||
image_id)
|
||||
image_mb = image_stats.max / 1048576.0
|
||||
image_data.append(self.t_cloudkitty.format_item(image,
|
||||
'image',
|
||||
image_stats.max))
|
||||
image_mb))
|
||||
if not image_data:
|
||||
raise collector.NoDataCollected(self.collector_name, 'image')
|
||||
return self.t_cloudkitty.format_service('image', image_data)
|
||||
|
|
|
@ -55,7 +55,68 @@ TRANS_VOLUME = {
|
|||
'user_id': '576808d8-3169-11e6-992b-5f931fc671df',
|
||||
'availability_zone': 'az1',
|
||||
'name': 'vol1',
|
||||
'size': 10}
|
||||
'size': 10,
|
||||
'volume_type': None}
|
||||
|
||||
CEIL_IMAGE = {
|
||||
'status': 'active',
|
||||
'name': 'Cirros',
|
||||
'deleted': 'False',
|
||||
'disk_format': 'ami',
|
||||
'id': 'c4a0d12e-88ff-43e1-b182-f95dfe75e40c',
|
||||
'protected': 'False',
|
||||
'container_format': 'ami',
|
||||
'is_public': 'False',
|
||||
'size': '25165824'}
|
||||
|
||||
TRANS_IMAGE = {
|
||||
'image_id': '2f58a438-3169-11e6-b36c-bfe1fa3241fe',
|
||||
'project_id': '4480c638-3169-11e6-91de-a3bd3a7d3afb',
|
||||
'user_id': '576808d8-3169-11e6-992b-5f931fc671df',
|
||||
'container_format': 'ami',
|
||||
'deleted': 'False',
|
||||
'disk_format': 'ami',
|
||||
'is_public': 'False',
|
||||
'name': 'Cirros',
|
||||
'protected': 'False',
|
||||
'size': '25165824',
|
||||
'status': 'active'}
|
||||
|
||||
CEIL_NETWORK_TAP = {
|
||||
'instance_host': 'dev',
|
||||
'mac': 'fa:16:3e:90:4b:6f',
|
||||
'host': '5b85dd1e7796f87bae6fea6dcb608cf907446eaa715de90d77dadb7b',
|
||||
'vnic_name': 'tap704159b2-8b',
|
||||
'instance_id': '685243d6-34f1-4a39-8446-87b018ada8d9'}
|
||||
|
||||
TRANS_NETWORK_TAP = {
|
||||
'instance_host': 'dev',
|
||||
'mac': 'fa:16:3e:90:4b:6f',
|
||||
'host': '5b85dd1e7796f87bae6fea6dcb608cf907446eaa715de90d77dadb7b',
|
||||
'vnic_name': 'tap704159b2-8b',
|
||||
'instance_id': '685243d6-34f1-4a39-8446-87b018ada8d9',
|
||||
'project_id': '4480c638-3169-11e6-91de-a3bd3a7d3afb',
|
||||
'interface_id': '2f58a438-3169-11e6-b36c-bfe1fa3241fe',
|
||||
'user_id': '576808d8-3169-11e6-992b-5f931fc671df'}
|
||||
|
||||
CEIL_NETWORK_FLOATING = {
|
||||
'status': 'ACTIVE',
|
||||
'router_id': 'a46530af-c5ba-4ba2-aa59-e2de4393151d',
|
||||
'floating_network_id': '823daec0-b000-446b-9539-20f7463775c3',
|
||||
'fixed_ip_address': '10.0.0.6',
|
||||
'floating_ip_address': '172.24.4.9',
|
||||
'port_id': '65005c79-2ab0-46d4-8ab8-f3044ec47418'}
|
||||
|
||||
TRANS_NETWORK_FLOATING = {
|
||||
'project_id': '4480c638-3169-11e6-91de-a3bd3a7d3afb',
|
||||
'user_id': '576808d8-3169-11e6-992b-5f931fc671df',
|
||||
'floatingip_id': '2f58a438-3169-11e6-b36c-bfe1fa3241fe',
|
||||
'status': 'ACTIVE',
|
||||
'router_id': 'a46530af-c5ba-4ba2-aa59-e2de4393151d',
|
||||
'floating_network_id': '823daec0-b000-446b-9539-20f7463775c3',
|
||||
'fixed_ip_address': '10.0.0.6',
|
||||
'floating_ip_address': '172.24.4.9',
|
||||
'port_id': '65005c79-2ab0-46d4-8ab8-f3044ec47418'}
|
||||
|
||||
|
||||
class CeilometerTransformerTest(tests.TestCase):
|
||||
|
@ -81,3 +142,21 @@ class CeilometerTransformerTest(tests.TestCase):
|
|||
t_test = ceilometer.CeilometerTransformer()
|
||||
result = t_test.strip_resource_data('volume', resource)
|
||||
self.assertEqual(TRANS_VOLUME, result)
|
||||
|
||||
def test_strip_ceilometer_image(self):
|
||||
resource = self.generate_ceilometer_resource(CEIL_IMAGE)
|
||||
t_test = ceilometer.CeilometerTransformer()
|
||||
result = t_test.strip_resource_data('image', resource)
|
||||
self.assertEqual(TRANS_IMAGE, result)
|
||||
|
||||
def test_strip_ceilometer_network_tap(self):
|
||||
resource = self.generate_ceilometer_resource(CEIL_NETWORK_TAP)
|
||||
t_test = ceilometer.CeilometerTransformer()
|
||||
result = t_test.strip_resource_data('network_tap', resource)
|
||||
self.assertEqual(TRANS_NETWORK_TAP, result)
|
||||
|
||||
def test_strip_ceilometer_network_floating(self):
|
||||
resource = self.generate_ceilometer_resource(CEIL_NETWORK_FLOATING)
|
||||
t_test = ceilometer.CeilometerTransformer()
|
||||
result = t_test.strip_resource_data('network_floating', resource)
|
||||
self.assertEqual(TRANS_NETWORK_FLOATING, result)
|
||||
|
|
|
@ -59,6 +59,7 @@ class BaseTransformer(object):
|
|||
return result
|
||||
|
||||
def strip_resource_data(self, res_type, res_data):
|
||||
res_type = res_type.replace('.', '_')
|
||||
strip_func = getattr(self, '_strip_' + res_type, None)
|
||||
if strip_func:
|
||||
return strip_func(res_data)
|
||||
|
|
|
@ -29,12 +29,43 @@ class CeilometerTransformer(transformer.BaseTransformer):
|
|||
'availability_zone',
|
||||
'OS-EXT-AZ.availability_zone'],
|
||||
}
|
||||
|
||||
volume_map = {
|
||||
'volume_id': ['volume_id'],
|
||||
'name': ['display_name'],
|
||||
'availability_zone': ['availability_zone'],
|
||||
'size': ['size'],
|
||||
'volume_type': ['volume_type']
|
||||
}
|
||||
|
||||
image_map = {
|
||||
'container_format': ['container_format'],
|
||||
'deleted': ['deleted'],
|
||||
'disk_format': ['disk_format'],
|
||||
'is_public': ['is_public'],
|
||||
'name': ['name'],
|
||||
'protected': ['protected'],
|
||||
'size': ['size'],
|
||||
'status': ['status'],
|
||||
}
|
||||
|
||||
network_tap_map = {
|
||||
'instance_host': ['instance_host'],
|
||||
'mac': ['mac'],
|
||||
'host': ['host'],
|
||||
'vnic_name': ['vnic_name'],
|
||||
'instance_id': ['instance_id'],
|
||||
}
|
||||
|
||||
network_floating_map = {
|
||||
'status': ['status'],
|
||||
'router_id': ['router_id'],
|
||||
'floating_network_id': ['floating_network_id'],
|
||||
'fixed_ip_address': ['fixed_ip_address'],
|
||||
'floating_ip_address': ['floating_ip_address'],
|
||||
'port_id': ['port_id'],
|
||||
}
|
||||
|
||||
metadata_item = 'metadata'
|
||||
|
||||
def _strip_compute(self, data):
|
||||
|
@ -53,3 +84,24 @@ class CeilometerTransformer(transformer.BaseTransformer):
|
|||
res_data['user_id'] = data.user_id
|
||||
res_data['project_id'] = data.project_id
|
||||
return res_data
|
||||
|
||||
def _strip_image(self, data):
|
||||
res_data = self.generic_strip('image', data)
|
||||
res_data['image_id'] = data.resource_id
|
||||
res_data['project_id'] = data.project_id
|
||||
res_data['user_id'] = data.user_id
|
||||
return res_data
|
||||
|
||||
def _strip_network_tap(self, data):
|
||||
res_data = self.generic_strip('network_tap', data)
|
||||
res_data['user_id'] = data.user_id
|
||||
res_data['project_id'] = data.project_id
|
||||
res_data['interface_id'] = data.resource_id
|
||||
return res_data
|
||||
|
||||
def _strip_network_floating(self, data):
|
||||
res_data = self.generic_strip('network_floating', data)
|
||||
res_data['user_id'] = data.user_id
|
||||
res_data['project_id'] = data.project_id
|
||||
res_data['floatingip_id'] = data.resource_id
|
||||
return res_data
|
||||
|
|
Loading…
Reference in New Issue