Ignore migrating environments for deleted stacks
Change-Id: I50b7a0f309922aa3c6ef63b9d27282e2adae4a6e Closes-Bug: 1432795
This commit is contained in:
parent
1eae9e6019
commit
9b559905dd
|
@ -41,8 +41,8 @@ def upgrade(migrate_engine):
|
|||
stack_table = sqlalchemy.Table('stack', meta, autoload=True)
|
||||
update_query = tmpl_table.update().values(
|
||||
environment=sqlalchemy.select([stack_table.c.parameters]).
|
||||
where(tmpl_table.c.id == stack_table.c.raw_template_id).
|
||||
as_scalar())
|
||||
where(sqlalchemy.and_(stack_table.c.raw_template_id == tmpl_table.c.id,
|
||||
stack_table.c.deleted_at.is_(None))).as_scalar())
|
||||
migrate_engine.execute(update_query)
|
||||
|
||||
stack_table.c.parameters.drop()
|
||||
|
@ -76,14 +76,16 @@ def upgrade_sqlite(migrate_engine):
|
|||
|
||||
stack_parameters = {}
|
||||
for s in stacks:
|
||||
stack_parameters[s.raw_template_id] = s.parameters
|
||||
stack_parameters[s.raw_template_id] = (s.parameters, s.deleted_at)
|
||||
|
||||
colnames = [c.name for c in tmpl_table.columns]
|
||||
for template in templates:
|
||||
values = dict(zip(colnames,
|
||||
map(lambda colname: getattr(template, colname),
|
||||
colnames)))
|
||||
values['environment'] = stack_parameters.get(values['id'])
|
||||
params, del_at = stack_parameters.get(values['id'], (None, None))
|
||||
if params is not None and del_at is None:
|
||||
values['environment'] = params
|
||||
migrate_engine.execute(new_template.insert(values))
|
||||
|
||||
# migrate stacks to new table
|
||||
|
|
|
@ -434,11 +434,11 @@ class HeatMigrationsCheckers(test_migrations.WalkVersionsMixin,
|
|||
templ.append(t)
|
||||
|
||||
user_creds = utils.get_table(engine, 'user_creds')
|
||||
user = [dict(id=900, username='test_user', password='password',
|
||||
user = [dict(id=uid, username='test_user', password='password',
|
||||
tenant='test_project', auth_url='bla',
|
||||
tenant_id=str(uuid.uuid4()),
|
||||
trust_id='',
|
||||
trustor_user_id='')]
|
||||
trustor_user_id='') for uid in range(900, 903)]
|
||||
engine.execute(user_creds.insert(), user)
|
||||
|
||||
stack = utils.get_table(engine, 'stack')
|
||||
|
@ -447,11 +447,14 @@ class HeatMigrationsCheckers(test_migrations.WalkVersionsMixin,
|
|||
('9a4bd1e9-8b21-46cd-964a-f66cb1cfa2f9', 2)]
|
||||
data = [dict(id=ll_id, name=ll_id,
|
||||
raw_template_id=templ[templ_id]['id'],
|
||||
user_creds_id=user[0]['id'],
|
||||
user_creds_id=user[templ_id]['id'],
|
||||
username='test_user',
|
||||
disable_rollback=True,
|
||||
parameters='test_params')
|
||||
parameters='test_params',
|
||||
created_at=datetime.datetime.utcnow(),
|
||||
deleted_at=None)
|
||||
for ll_id, templ_id in stack_ids]
|
||||
data[-1]['deleted_at'] = datetime.datetime.utcnow()
|
||||
|
||||
engine.execute(stack.insert(), data)
|
||||
return data
|
||||
|
@ -465,23 +468,29 @@ class HeatMigrationsCheckers(test_migrations.WalkVersionsMixin,
|
|||
# Get the parameters in stack table
|
||||
stack_parameters = {}
|
||||
for stack in data:
|
||||
stack_parameters[stack['raw_template_id']] = stack['parameters']
|
||||
templ_id = stack['raw_template_id']
|
||||
stack_parameters[templ_id] = (stack['parameters'],
|
||||
stack.get('deleted_at'))
|
||||
|
||||
# validate whether its moved to raw_template
|
||||
raw_template_table = utils.get_table(engine, 'raw_template')
|
||||
raw_templates = raw_template_table.select().execute()
|
||||
|
||||
for raw_template in raw_templates:
|
||||
if stack_parameters.get(raw_template.id) is not None:
|
||||
stack_param = stack_parameters[raw_template.id]
|
||||
if raw_template.id in stack_parameters:
|
||||
stack_param, deleted_at = stack_parameters[raw_template.id]
|
||||
tmpl_env = raw_template.environment
|
||||
if engine.name == 'sqlite':
|
||||
if engine.name == 'sqlite' and deleted_at is None:
|
||||
stack_param = '"%s"' % stack_param
|
||||
|
||||
self.assertEqual(stack_param,
|
||||
tmpl_env,
|
||||
'parameters migration from stack to '
|
||||
'raw_template failed')
|
||||
if deleted_at is None:
|
||||
self.assertEqual(stack_param,
|
||||
tmpl_env,
|
||||
'parameters migration from stack to '
|
||||
'raw_template failed')
|
||||
else:
|
||||
self.assertIsNone(tmpl_env,
|
||||
'parameters migration did not skip '
|
||||
'deleted stack')
|
||||
|
||||
def _pre_upgrade_057(self, engine):
|
||||
# template
|
||||
|
|
Loading…
Reference in New Issue