mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Adapt migrations_migrate according to previous changes
This commit is contained in:
parent
0702af6054
commit
d73197793c
1 changed files with 18 additions and 21 deletions
|
@ -770,26 +770,18 @@ def tools_migrations_migrate(target=None, skip=False):
|
||||||
|
|
||||||
last_run_migration_number = state["last_run_migration"]["number"] if state["last_run_migration"] else 0
|
last_run_migration_number = state["last_run_migration"]["number"] if state["last_run_migration"] else 0
|
||||||
|
|
||||||
migrations = []
|
# load all migrations
|
||||||
|
migrations = _get_migrations_list()
|
||||||
# loading all migrations
|
migrations = sorted(migrations, key=lambda x: x.number)
|
||||||
for migration in tools_migrations_list()["migrations"]:
|
|
||||||
migrations.append({
|
|
||||||
"number": migration["number"],
|
|
||||||
"name": migration["name"],
|
|
||||||
"module": _get_migration_module(migration),
|
|
||||||
})
|
|
||||||
|
|
||||||
migrations = sorted(migrations, key=lambda x: x["number"])
|
|
||||||
|
|
||||||
if not migrations:
|
if not migrations:
|
||||||
logger.info(m18n.n('migrations_no_migrations_to_run'))
|
logger.info(m18n.n('migrations_no_migrations_to_run'))
|
||||||
return
|
return
|
||||||
|
|
||||||
all_migration_numbers = [x["number"] for x in migrations]
|
all_migration_numbers = [x.number for x in migrations]
|
||||||
|
|
||||||
if target is None:
|
if target is None:
|
||||||
target = migrations[-1]["number"]
|
target = migrations[-1].number
|
||||||
|
|
||||||
# validate input, target must be "0" or a valid number
|
# validate input, target must be "0" or a valid number
|
||||||
elif target != 0 and target not in all_migration_numbers:
|
elif target != 0 and target not in all_migration_numbers:
|
||||||
|
@ -808,14 +800,14 @@ def tools_migrations_migrate(target=None, skip=False):
|
||||||
if last_run_migration_number < target:
|
if last_run_migration_number < target:
|
||||||
logger.debug(m18n.n('migrations_forward'))
|
logger.debug(m18n.n('migrations_forward'))
|
||||||
# drop all already run migrations
|
# drop all already run migrations
|
||||||
migrations = filter(lambda x: target >= x["number"] > last_run_migration_number, migrations)
|
migrations = filter(lambda x: target >= x.number > last_run_migration_number, migrations)
|
||||||
mode = "forward"
|
mode = "forward"
|
||||||
|
|
||||||
# we need to go backward on already run migrations
|
# we need to go backward on already run migrations
|
||||||
elif last_run_migration_number > target:
|
elif last_run_migration_number > target:
|
||||||
logger.debug(m18n.n('migrations_backward'))
|
logger.debug(m18n.n('migrations_backward'))
|
||||||
# drop all not already run migrations
|
# drop all not already run migrations
|
||||||
migrations = filter(lambda x: target < x["number"] <= last_run_migration_number, migrations)
|
migrations = filter(lambda x: target < x.number <= last_run_migration_number, migrations)
|
||||||
mode = "backward"
|
mode = "backward"
|
||||||
|
|
||||||
else: # can't happen, this case is handle before
|
else: # can't happen, this case is handle before
|
||||||
|
@ -824,19 +816,24 @@ def tools_migrations_migrate(target=None, skip=False):
|
||||||
# effectively run selected migrations
|
# effectively run selected migrations
|
||||||
for migration in migrations:
|
for migration in migrations:
|
||||||
if not skip:
|
if not skip:
|
||||||
logger.warn(m18n.n('migrations_show_currently_running_migration', **migration))
|
logger.warn(m18n.n('migrations_show_currently_running_migration',
|
||||||
|
number=migration.number, name=migration.name))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if mode == "forward":
|
if mode == "forward":
|
||||||
migration["module"].MyMigration().migrate()
|
migration.migrate()
|
||||||
elif mode == "backward":
|
elif mode == "backward":
|
||||||
migration["module"].MyMigration().backward()
|
migration.backward()
|
||||||
else: # can't happen
|
else: # can't happen
|
||||||
raise Exception("Illegal state for migration: '%s', should be either 'forward' or 'backward'" % mode)
|
raise Exception("Illegal state for migration: '%s', should be either 'forward' or 'backward'" % mode)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# migration failed, let's stop here but still update state because
|
# migration failed, let's stop here but still update state because
|
||||||
# we managed to run the previous ones
|
# we managed to run the previous ones
|
||||||
logger.error(m18n.n('migrations_migration_has_failed', exception=e, **migration), exc_info=1)
|
logger.error(m18n.n('migrations_migration_has_failed',
|
||||||
|
exception=e,
|
||||||
|
number=migration.number,
|
||||||
|
name=migration.name),
|
||||||
|
exc_info=1)
|
||||||
break
|
break
|
||||||
|
|
||||||
else: # if skip
|
else: # if skip
|
||||||
|
@ -844,8 +841,8 @@ def tools_migrations_migrate(target=None, skip=False):
|
||||||
|
|
||||||
# update the state to include the latest run migration
|
# update the state to include the latest run migration
|
||||||
state["last_run_migration"] = {
|
state["last_run_migration"] = {
|
||||||
"number": migration["number"],
|
"number": migration.number,
|
||||||
"name": migration["name"],
|
"name": migration.name
|
||||||
}
|
}
|
||||||
|
|
||||||
# special case where we want to go back from the start
|
# special case where we want to go back from the start
|
||||||
|
|
Loading…
Add table
Reference in a new issue