[IMP] oow upgrade. Add skip_update as an option in config.yml. (migration_step option). If enabled, in this step, the update all will be skipped, and only pre-migration (SQL) and post-migration (python script) will be executed.

This is interesting:
- for the first step, if your production is up-to-date, to save time.
- for the last step, in recent version (since V14), where openupgrade doesn't contain odoo code. In that case, you should be sure that all your migration is OK, because in openupgrade context, some errors are just ignored.
Use this option with caution.
This commit is contained in:
Sylvain LE GAL 2025-02-02 18:33:41 +01:00
parent a00ee58b62
commit 4fc7056932
5 changed files with 38 additions and 14 deletions

View File

@ -163,7 +163,11 @@ modules.csv
the classical keys (``db_host``, ``db_port``, etc...) are automatically
autogenerated.
At this step, you should change the autogenerated files.
At this step, you should change the autogenerated files. For exemple:
- you can set ``skip_update=True`` to prevents to run an update=all, in the 'regular' steps
(first and last steps). In that case, only SQL queries and python scripts
will be executed during this step.
You can use default files, if you have a very simple odoo instance without custom code,
extra repositories, or dependencies...

View File

@ -0,0 +1,4 @@
Add an option ``skip_update`` in the configuration file at migration_step level.
If enabled, the update=all step will be skipped during this step.
That can be interesting to save time, during the first and the last steps of the migration
process (when ``execution_context='regular').

View File

@ -30,6 +30,7 @@ def upgrade(ctx, first_step, last_step, database, with_demo):
)
for migration_step in migration_steps:
execute_sql_files_pre_migration(ctx, database, migration_step)
if not migration_step.get("skip_update", False):
try:
run_odoo(
ctx,
@ -44,4 +45,14 @@ def upgrade(ctx, first_step, last_step, database, with_demo):
logger.info("Received Keyboard Interrupt or System Exiting...")
finally:
kill_odoo(ctx, database, migration_step)
elif migration_step.get("execution_context") == "openupgrade":
logger.warning(
"Incorrect setting skip_update = True"
" and execution_context = 'openupgrade'..."
)
else:
logger.info(
f"Skip update all for version {migration_step.get('version')}."
)
execute_click_odoo_python_files(ctx, database, migration_step)

View File

@ -31,6 +31,9 @@ migration_steps:
version: {{ step['version'] }}
execution_context: {{ step['execution_context'] }}
complete_name: {{ step['complete_name'] }}
{%- if step['execution_context'] == 'regular'%}
skip_update: False
{%- endif %}
{% endfor %}
workload_settings:

View File

@ -28,6 +28,7 @@ migration_steps:
version: 14.0
execution_context: regular
complete_name: step_01__regular__14.0
skip_update: False
- name: 2
version: 15.0
@ -38,6 +39,7 @@ migration_steps:
version: 15.0
execution_context: regular
complete_name: step_03__regular__15.0
skip_update: False
workload_settings: