Merge "Add information in notification of type's extra_spec"
This commit is contained in:
commit
0c791e30d2
@ -102,7 +102,11 @@ class VolumeTypeExtraSpecsController(wsgi.Controller):
|
|||||||
db.volume_type_extra_specs_update_or_create(context,
|
db.volume_type_extra_specs_update_or_create(context,
|
||||||
type_id,
|
type_id,
|
||||||
specs)
|
specs)
|
||||||
notifier_info = dict(type_id=type_id, specs=specs)
|
# Get created_at and updated_at for notification
|
||||||
|
volume_type = volume_types.get_volume_type(context, type_id)
|
||||||
|
notifier_info = dict(type_id=type_id, specs=specs,
|
||||||
|
created_at=volume_type['created_at'],
|
||||||
|
updated_at=volume_type['updated_at'])
|
||||||
notifier = rpc.get_notifier('volumeTypeExtraSpecs')
|
notifier = rpc.get_notifier('volumeTypeExtraSpecs')
|
||||||
notifier.info(context, 'volume_type_extra_specs.create',
|
notifier.info(context, 'volume_type_extra_specs.create',
|
||||||
notifier_info)
|
notifier_info)
|
||||||
@ -129,7 +133,11 @@ class VolumeTypeExtraSpecsController(wsgi.Controller):
|
|||||||
db.volume_type_extra_specs_update_or_create(context,
|
db.volume_type_extra_specs_update_or_create(context,
|
||||||
type_id,
|
type_id,
|
||||||
body)
|
body)
|
||||||
notifier_info = dict(type_id=type_id, id=id)
|
# Get created_at and updated_at for notification
|
||||||
|
volume_type = volume_types.get_volume_type(context, type_id)
|
||||||
|
notifier_info = dict(type_id=type_id, id=id,
|
||||||
|
created_at=volume_type['created_at'],
|
||||||
|
updated_at=volume_type['updated_at'])
|
||||||
notifier = rpc.get_notifier('volumeTypeExtraSpecs')
|
notifier = rpc.get_notifier('volumeTypeExtraSpecs')
|
||||||
notifier.info(context,
|
notifier.info(context,
|
||||||
'volume_type_extra_specs.update',
|
'volume_type_extra_specs.update',
|
||||||
@ -158,7 +166,12 @@ class VolumeTypeExtraSpecsController(wsgi.Controller):
|
|||||||
# Not found exception will be handled at the wsgi level
|
# Not found exception will be handled at the wsgi level
|
||||||
db.volume_type_extra_specs_delete(context, type_id, id)
|
db.volume_type_extra_specs_delete(context, type_id, id)
|
||||||
|
|
||||||
notifier_info = dict(type_id=type_id, id=id)
|
# Get created_at and updated_at for notification
|
||||||
|
volume_type = volume_types.get_volume_type(context, type_id)
|
||||||
|
notifier_info = dict(type_id=type_id, id=id,
|
||||||
|
created_at=volume_type['created_at'],
|
||||||
|
updated_at=volume_type['updated_at'],
|
||||||
|
deleted_at=volume_type['deleted_at'])
|
||||||
notifier = rpc.get_notifier('volumeTypeExtraSpecs')
|
notifier = rpc.get_notifier('volumeTypeExtraSpecs')
|
||||||
notifier.info(context,
|
notifier.info(context,
|
||||||
'volume_type_extra_specs.delete',
|
'volume_type_extra_specs.delete',
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
from oslo_utils import timeutils
|
||||||
import webob
|
import webob
|
||||||
|
|
||||||
from cinder.api.contrib import types_extra_specs
|
from cinder.api.contrib import types_extra_specs
|
||||||
@ -38,6 +39,21 @@ def return_volume_type_extra_specs(context, volume_type_id):
|
|||||||
return fake_volume_type_extra_specs()
|
return fake_volume_type_extra_specs()
|
||||||
|
|
||||||
|
|
||||||
|
def return_volume_type(context, volume_type_id, expected_fields=None):
|
||||||
|
specs = {"key1": "value1",
|
||||||
|
"key2": "value2",
|
||||||
|
"key3": "value3",
|
||||||
|
"key4": "value4",
|
||||||
|
"key5": "value5"}
|
||||||
|
return dict(id=id,
|
||||||
|
name='vol_type_%s' % id,
|
||||||
|
description='vol_type_desc_%s' % id,
|
||||||
|
extra_specs=specs,
|
||||||
|
created_at=timeutils.utcnow(),
|
||||||
|
updated_at=timeutils.utcnow(),
|
||||||
|
deleted_at=timeutils.utcnow())
|
||||||
|
|
||||||
|
|
||||||
def fake_volume_type_extra_specs():
|
def fake_volume_type_extra_specs():
|
||||||
specs = {"key1": "value1",
|
specs = {"key1": "value1",
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
@ -52,7 +68,7 @@ class VolumeTypesExtraSpecsTest(test.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(VolumeTypesExtraSpecsTest, self).setUp()
|
super(VolumeTypesExtraSpecsTest, self).setUp()
|
||||||
self.flags(host='fake')
|
self.flags(host='fake')
|
||||||
self.mock_object(cinder.db, 'volume_type_get')
|
self.mock_object(cinder.db, 'volume_type_get', return_volume_type)
|
||||||
self.api_path = '/v2/%s/os-volume-types/%s/extra_specs' % (
|
self.api_path = '/v2/%s/os-volume-types/%s/extra_specs' % (
|
||||||
fake.PROJECT_ID, fake.VOLUME_TYPE_ID)
|
fake.PROJECT_ID, fake.VOLUME_TYPE_ID)
|
||||||
self.controller = types_extra_specs.VolumeTypeExtraSpecsController()
|
self.controller = types_extra_specs.VolumeTypeExtraSpecsController()
|
||||||
@ -101,6 +117,9 @@ class VolumeTypesExtraSpecsTest(test.TestCase):
|
|||||||
req = fakes.HTTPRequest.blank(self.api_path + '/key5')
|
req = fakes.HTTPRequest.blank(self.api_path + '/key5')
|
||||||
self.controller.delete(req, fake.VOLUME_ID, 'key5')
|
self.controller.delete(req, fake.VOLUME_ID, 'key5')
|
||||||
self.assertEqual(1, len(self.notifier.notifications))
|
self.assertEqual(1, len(self.notifier.notifications))
|
||||||
|
self.assertIn('created_at', self.notifier.notifications[0]['payload'])
|
||||||
|
self.assertIn('updated_at', self.notifier.notifications[0]['payload'])
|
||||||
|
self.assertIn('deleted_at', self.notifier.notifications[0]['payload'])
|
||||||
|
|
||||||
def test_delete_not_found(self):
|
def test_delete_not_found(self):
|
||||||
self.mock_object(cinder.db, 'volume_type_extra_specs_delete',
|
self.mock_object(cinder.db, 'volume_type_extra_specs_delete',
|
||||||
@ -122,6 +141,8 @@ class VolumeTypesExtraSpecsTest(test.TestCase):
|
|||||||
req = fakes.HTTPRequest.blank(self.api_path)
|
req = fakes.HTTPRequest.blank(self.api_path)
|
||||||
res_dict = self.controller.create(req, fake.VOLUME_ID, body)
|
res_dict = self.controller.create(req, fake.VOLUME_ID, body)
|
||||||
self.assertEqual(1, len(self.notifier.notifications))
|
self.assertEqual(1, len(self.notifier.notifications))
|
||||||
|
self.assertIn('created_at', self.notifier.notifications[0]['payload'])
|
||||||
|
self.assertIn('updated_at', self.notifier.notifications[0]['payload'])
|
||||||
self.assertTrue(mock_check.called)
|
self.assertTrue(mock_check.called)
|
||||||
self.assertEqual('value1', res_dict['extra_specs']['key1'])
|
self.assertEqual('value1', res_dict['extra_specs']['key1'])
|
||||||
|
|
||||||
@ -188,6 +209,8 @@ class VolumeTypesExtraSpecsTest(test.TestCase):
|
|||||||
req = fakes.HTTPRequest.blank(self.api_path + '/key1')
|
req = fakes.HTTPRequest.blank(self.api_path + '/key1')
|
||||||
res_dict = self.controller.update(req, fake.VOLUME_ID, 'key1', body)
|
res_dict = self.controller.update(req, fake.VOLUME_ID, 'key1', body)
|
||||||
self.assertEqual(1, len(self.notifier.notifications))
|
self.assertEqual(1, len(self.notifier.notifications))
|
||||||
|
self.assertIn('created_at', self.notifier.notifications[0]['payload'])
|
||||||
|
self.assertIn('updated_at', self.notifier.notifications[0]['payload'])
|
||||||
self.assertTrue(mock_check.called)
|
self.assertTrue(mock_check.called)
|
||||||
|
|
||||||
self.assertEqual('value1', res_dict['key1'])
|
self.assertEqual('value1', res_dict['key1'])
|
||||||
|
Loading…
Reference in New Issue
Block a user