diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f914d4..40dd1a1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -36,4 +36,8 @@ pytest: - echo $PATH - echo $PYTHONPATH - poetry run pytest --version + + - # Create a postgresql container + - docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t odoo + - poetry run pytest --cov odoo_openupgrade_wizard -v diff --git a/odoo_openupgrade_wizard/cli_options.py b/odoo_openupgrade_wizard/cli_options.py index a42df95..52c3222 100644 --- a/odoo_openupgrade_wizard/cli_options.py +++ b/odoo_openupgrade_wizard/cli_options.py @@ -11,6 +11,26 @@ def releases_options(function): return function +def step_option(function): + function = click.option( + "--step", + required=True, + prompt=True, + type=str, + help="Migration step for which you want to perform the operation.", + )(function) + return function + + +def database_option(function): + function = click.option( + "--database", + type=str, + help="Odoo Database for which you want to perform the operation.", + )(function) + return function + + def get_odoo_versions_from_options(ctx, releases_arg): if not releases_arg: @@ -24,17 +44,6 @@ def get_odoo_versions_from_options(ctx, releases_arg): return odoo_versions -def step_options(function): - function = click.option( - "--step", - required=True, - prompt=True, - type=str, - help="Migration step for which you want to perform the operation.", - )(function) - return function - - def get_migration_step_from_options(ctx, step_arg): step = float(step_arg) for migration_step in ctx.obj["config"]["migration_steps"]: diff --git a/odoo_openupgrade_wizard/cli_run.py b/odoo_openupgrade_wizard/cli_run.py index 5f59322..e87eb93 100644 --- a/odoo_openupgrade_wizard/cli_run.py +++ b/odoo_openupgrade_wizard/cli_run.py @@ -4,14 +4,16 @@ import click from loguru import logger from odoo_openupgrade_wizard.cli_options import ( + database_option, get_migration_step_from_options, - step_options, + step_option, ) from odoo_openupgrade_wizard.tools_odoo import kill_odoo, run_odoo @click.command() -@step_options +@step_option +@database_option @click.option( "--duration", type=float, @@ -21,11 +23,11 @@ from odoo_openupgrade_wizard.tools_odoo import kill_odoo, run_odoo " function to stop.", ) @click.pass_context -def run(ctx, step, duration): +def run(ctx, step, database, duration): migration_step = get_migration_step_from_options(ctx, step) try: - run_odoo(ctx, migration_step) + run_odoo(ctx, migration_step, database=database) if duration: sleep(duration) else: diff --git a/odoo_openupgrade_wizard/tools_odoo.py b/odoo_openupgrade_wizard/tools_odoo.py index 97c5720..1836532 100644 --- a/odoo_openupgrade_wizard/tools_odoo.py +++ b/odoo_openupgrade_wizard/tools_odoo.py @@ -36,12 +36,13 @@ def get_odoo_version_from_migration_step(ctx, migration_step: dict) -> dict: def generate_odoo_command( - ctx, migration_step: dict, update_all: bool = False + ctx, migration_step: dict, database: str = False, update_all: bool = False ) -> str: # TODO, make it dynamic addons_path = ( "/container_env/src/odoo/addons," "/container_env/src/odoo/odoo/addons" ) + database_cmd = database and "--database %s" % database or "" update_all_cmd = update_all and "--update_all" or "" return ( f"/container_env/src/odoo/odoo-bin" @@ -50,16 +51,17 @@ def generate_odoo_command( f" --db_user odoo" f" --db_password odoo" f" --addons-path {addons_path}" + f" {database_cmd}" f" {update_all_cmd}" ) -def run_odoo(ctx, migration_step: dict): +def run_odoo(ctx, migration_step: dict, database: str = False): client = docker.from_env() odoo_version = get_odoo_version_from_migration_step(ctx, migration_step) folder_path = get_odoo_env_path(ctx, odoo_version) - command = generate_odoo_command(ctx, migration_step) + command = generate_odoo_command(ctx, migration_step, database=database) image_name = get_docker_image_tag(ctx, odoo_version) container_name = get_docker_container_name(ctx, migration_step)