Merge "A small refactoring of the domain"
This commit is contained in:
commit
01983ebcb5
|
@ -334,7 +334,7 @@ class RequestDeserializer(wsgi.JSONRequestDeserializer):
|
|||
raise webob.exc.HTTPBadRequest(explanation=e.msg)
|
||||
image = {}
|
||||
properties = body
|
||||
tags = properties.pop('tags', None)
|
||||
tags = properties.pop('tags', [])
|
||||
for key in self._base_properties:
|
||||
try:
|
||||
# NOTE(flwang): Instead of changing the _check_unexpected
|
||||
|
|
|
@ -75,6 +75,7 @@ class ImageFactory(object):
|
|||
min_disk=0, min_ram=0, protected=False, owner=None,
|
||||
disk_format=None, container_format=None,
|
||||
extra_properties=None, tags=None, **other_args):
|
||||
extra_properties = extra_properties or {}
|
||||
self._check_readonly(other_args)
|
||||
self._check_unexpected(other_args)
|
||||
self._check_reserved(extra_properties)
|
||||
|
@ -91,7 +92,7 @@ class ImageFactory(object):
|
|||
min_ram=min_ram, protected=protected,
|
||||
owner=owner, disk_format=disk_format,
|
||||
container_format=container_format,
|
||||
extra_properties=extra_properties, tags=tags)
|
||||
extra_properties=extra_properties, tags=tags or [])
|
||||
|
||||
|
||||
class Image(object):
|
||||
|
@ -106,8 +107,8 @@ class Image(object):
|
|||
'queued': ('saving', 'active', 'deleted'),
|
||||
'saving': ('active', 'killed', 'deleted', 'queued'),
|
||||
'active': ('queued', 'pending_delete', 'deleted'),
|
||||
'killed': ('deleted'),
|
||||
'pending_delete': ('deleted'),
|
||||
'killed': ('deleted',),
|
||||
'pending_delete': ('deleted',),
|
||||
'deleted': (),
|
||||
}
|
||||
|
||||
|
@ -128,9 +129,9 @@ class Image(object):
|
|||
self._container_format = kwargs.pop('container_format', None)
|
||||
self.size = kwargs.pop('size', None)
|
||||
self.virtual_size = kwargs.pop('virtual_size', None)
|
||||
extra_properties = kwargs.pop('extra_properties', None) or {}
|
||||
extra_properties = kwargs.pop('extra_properties', {})
|
||||
self.extra_properties = ExtraProperties(extra_properties)
|
||||
self.tags = kwargs.pop('tags', None) or []
|
||||
self.tags = kwargs.pop('tags', [])
|
||||
if kwargs:
|
||||
message = _("__init__() got unexpected keyword argument '%s'")
|
||||
raise TypeError(message % kwargs.keys()[0])
|
||||
|
|
|
@ -136,7 +136,6 @@ class Image(object):
|
|||
|
||||
name = _proxy('base', 'name')
|
||||
image_id = _proxy('base', 'image_id')
|
||||
name = _proxy('base', 'name')
|
||||
status = _proxy('base', 'status')
|
||||
created_at = _proxy('base', 'created_at')
|
||||
updated_at = _proxy('base', 'updated_at')
|
||||
|
|
|
@ -159,6 +159,13 @@ class TestImage(test_utils.BaseTestCase):
|
|||
self.image.status = 'saving'
|
||||
self.assertEqual('saving', self.image.status)
|
||||
|
||||
def test_set_incorrect_status(self):
|
||||
self.image.status = 'saving'
|
||||
self.image.status = 'killed'
|
||||
self.assertRaises(
|
||||
exception.InvalidImageStatusTransition,
|
||||
setattr, self.image, 'status', 'delet')
|
||||
|
||||
def test_status_saving_without_disk_format(self):
|
||||
self.image.disk_format = None
|
||||
self.assertRaises(ValueError, setattr,
|
||||
|
|
|
@ -2008,7 +2008,7 @@ class TestImagesDeserializer(test_utils.BaseTestCase):
|
|||
request = unit_test_utils.get_fake_request()
|
||||
request.body = jsonutils.dumps({})
|
||||
output = self.deserializer.create(request)
|
||||
expected = {'image': {}, 'extra_properties': {}, 'tags': None}
|
||||
expected = {'image': {}, 'extra_properties': {}, 'tags': []}
|
||||
self.assertEqual(expected, output)
|
||||
|
||||
def test_create_invalid_id(self):
|
||||
|
@ -2023,7 +2023,7 @@ class TestImagesDeserializer(test_utils.BaseTestCase):
|
|||
output = self.deserializer.create(request)
|
||||
expected = {'image': {'image_id': UUID4},
|
||||
'extra_properties': {},
|
||||
'tags': None}
|
||||
'tags': []}
|
||||
self.assertEqual(expected, output)
|
||||
|
||||
def test_create_no_body(self):
|
||||
|
@ -2576,7 +2576,7 @@ class TestImagesDeserializerWithExtendedSchema(test_utils.BaseTestCase):
|
|||
expected = {
|
||||
'image': {'name': 'image-1'},
|
||||
'extra_properties': {'pants': 'on'},
|
||||
'tags': None,
|
||||
'tags': [],
|
||||
}
|
||||
self.assertEqual(expected, output)
|
||||
|
||||
|
@ -2621,7 +2621,7 @@ class TestImagesDeserializerWithAdditionalProperties(test_utils.BaseTestCase):
|
|||
output = self.deserializer.create(request)
|
||||
expected = {'image': {},
|
||||
'extra_properties': {'foo': 'bar'},
|
||||
'tags': None}
|
||||
'tags': []}
|
||||
self.assertEqual(expected, output)
|
||||
|
||||
def test_create_with_numeric_property(self):
|
||||
|
|
Loading…
Reference in New Issue