Add missing versioned mechanism to Stack object

Few object methods misses _from_db_object. To enable it to make
schema valid, we need to fix that.

Change-Id: I2e5ff22cd40be56ebc5f3a7095887be773ddb809
Closes-Bug: #1431353
This commit is contained in:
Michal Jastrzebski (inc0) 2015-03-12 17:46:38 +01:00
parent 9727d00f9b
commit 9b4511d0a0
2 changed files with 33 additions and 8 deletions

View File

@ -66,7 +66,7 @@ class Stack(
objects.raw_template.RawTemplate.get_by_id(
context, db_stack['raw_template_id']))
else:
stack[field] = db_stack[field]
stack[field] = db_stack.__dict__.get(field)
stack._context = context
stack.obj_reset_changes()
return stack
@ -81,20 +81,45 @@ class Stack(
@classmethod
def get_by_name_and_owner_id(cls, context, stack_name, owner_id):
return db_api.stack_get_by_name_and_owner_id(context, stack_name,
owner_id)
db_stack = db_api.stack_get_by_name_and_owner_id(
context,
stack_name,
owner_id
)
if not db_stack:
return db_stack
stack = cls._from_db_object(context, cls(context), db_stack)
return stack
@classmethod
def get_by_name(cls, context, stack_name):
return db_api.stack_get_by_name(context, stack_name)
db_stack = db_api.stack_get_by_name(context, stack_name)
if not db_stack:
return db_stack
stack = cls._from_db_object(context, cls(context), db_stack)
return stack
@classmethod
def get_all(cls, context, *args, **kwargs):
return db_api.stack_get_all(context, *args, **kwargs)
db_stacks = db_api.stack_get_all(context, *args, **kwargs)
stacks = map(
lambda db_stack: cls._from_db_object(
context,
cls(context),
db_stack),
db_stacks)
return stacks
@classmethod
def get_all_by_owner_id(cls, context, owner_id):
return db_api.stack_get_all_by_owner_id(context, owner_id)
db_stacks = db_api.stack_get_all_by_owner_id(context, owner_id)
stacks = map(
lambda db_stack: cls._from_db_object(
context,
cls(context),
db_stack),
db_stacks)
return stacks
@classmethod
def count_all(cls, context, **kwargs):

View File

@ -1682,7 +1682,7 @@ class StackServiceTest(common.HeatTestCase):
'added in new version'))
@mock.patch.object(service_stack_watch.StackWatch, 'start_watch_task')
@mock.patch.object(service.db_api, 'stack_get_all')
@mock.patch.object(service.stack_object.Stack, 'get_all')
@mock.patch.object(service.service.Service, 'start')
def test_start_watches_all_stacks(self, mock_super_start, mock_get_all,
start_watch_task):
@ -3077,7 +3077,7 @@ class StackServiceTest(common.HeatTestCase):
self._preview_stack)
self.assertEqual(exception.StackValidationFailed, ex.exc_info[0])
@mock.patch.object(service.db_api, 'stack_get_by_name')
@mock.patch.object(service.stack_object.Stack, 'get_by_name')
def test_validate_new_stack_checks_existing_stack(self, mock_stack_get):
mock_stack_get.return_value = 'existing_db_stack'
tmpl = templatem.Template(