Fix issue with DB upgrade to assignment table
There are two changes: - Commit changes to the grant tables after each update to ensure MySQL doesn't get confused when there are multiple assignments for a given actor/target (Postgresql doesn't have this issue) - Close any sessions in test_sql_upgarde before we call the migrations, to ensure table dropping won't be blocked Fixes bug 1284700 Change-Id: I81704b17ea9c11be926018df125fcfdb79ee6271
This commit is contained in:
parent
8c8f776b6d
commit
4d505e6390
@ -205,6 +205,7 @@ def downgrade_assignment_table(meta, migrate_engine):
|
||||
update = build_update(meta, session, assignment)
|
||||
if update is not None:
|
||||
migrate_engine.execute(update)
|
||||
session.commit()
|
||||
|
||||
# Delete all the rows
|
||||
migrate_engine.execute(downgrade_table.delete())
|
||||
|
@ -1997,22 +1997,28 @@ class SqlUpgradeTests(SqlMigrateBase):
|
||||
check_assignment_type(refs,
|
||||
assignment_sql.AssignmentType.USER_DOMAIN)
|
||||
|
||||
session = self.Session()
|
||||
self.upgrade(37)
|
||||
session = self.Session()
|
||||
self.assertTableDoesNotExist('assignment')
|
||||
base_data = create_base_data(session)
|
||||
populate_grants(session, base_data)
|
||||
check_grants(session, base_data)
|
||||
session.commit()
|
||||
session.close()
|
||||
self.upgrade(40)
|
||||
session = self.Session()
|
||||
self.assertTableExists('assignment')
|
||||
self.assertTableDoesNotExist('user_project_metadata')
|
||||
self.assertTableDoesNotExist('group_project_metadata')
|
||||
self.assertTableDoesNotExist('user_domain_metadata')
|
||||
self.assertTableDoesNotExist('group_domain__metadata')
|
||||
check_assignments(session, base_data)
|
||||
session.close()
|
||||
self.downgrade(37)
|
||||
session = self.Session()
|
||||
self.assertTableDoesNotExist('assignment')
|
||||
check_grants(session, base_data)
|
||||
session.close()
|
||||
|
||||
def populate_user_table(self, with_pass_enab=False,
|
||||
with_pass_enab_domain=False):
|
||||
|
Loading…
Reference in New Issue
Block a user