diff --git a/odoo_openupgrade_wizard/cli/cli.py b/odoo_openupgrade_wizard/cli/cli.py index d9d61c0..b3cf4dd 100644 --- a/odoo_openupgrade_wizard/cli/cli.py +++ b/odoo_openupgrade_wizard/cli/cli.py @@ -68,10 +68,6 @@ def main(ctx, env_folder, filestore_folder, log_level): # Define all the folder required by the tools env_folder_path = Path(env_folder) src_folder_path = env_folder_path / Path("./src/") - # Note: postgres folder should be a subfolder, because - # the parent folder will contain a .gitignore file - # that the postgres docker image doesn't like - postgres_folder_path = env_folder_path / Path("./postgres_data/data") script_folder_path = env_folder_path / Path("./scripts/") log_folder_path = env_folder_path / Path("./log/") if not filestore_folder: @@ -95,7 +91,6 @@ def main(ctx, env_folder, filestore_folder, log_level): # Add all global values in the context ctx.obj["env_folder_path"] = env_folder_path ctx.obj["src_folder_path"] = src_folder_path - ctx.obj["postgres_folder_path"] = postgres_folder_path ctx.obj["script_folder_path"] = script_folder_path ctx.obj["log_folder_path"] = log_folder_path ctx.obj["log_prefix"] = log_prefix diff --git a/odoo_openupgrade_wizard/cli/cli_init.py b/odoo_openupgrade_wizard/cli/cli_init.py index 1e8b693..e538563 100644 --- a/odoo_openupgrade_wizard/cli/cli_init.py +++ b/odoo_openupgrade_wizard/cli/cli_init.py @@ -68,7 +68,7 @@ def init( float(initial_version), float(final_version) ) - # 2. Compute Migration Steps + # Compute Migration Steps # Create initial first step steps = [ @@ -106,26 +106,15 @@ def init( } ) - # 3. ensure src folder exists + # Ensure src folder exists ensure_folder_exists(ctx.obj["src_folder_path"]) - # 4. ensure filestore folder exists + # Ensure filestore folder exists ensure_folder_exists( ctx.obj["filestore_folder_path"], git_ignore_content=True ) - # 5. ensure postgres data folder exists - ensure_folder_exists( - ctx.obj["postgres_folder_path"].parent, - mode="777", - git_ignore_content=True, - ) - ensure_folder_exists( - ctx.obj["postgres_folder_path"], - mode="777", - ) - - # 6. ensure main configuration file exists + # Znsure main configuration file exists ensure_file_exists_from_template( ctx.obj["config_file_path"], "config.yml.j2", @@ -134,7 +123,7 @@ def init( odoo_versions=odoo_versions, ) - # 7. Ensure module list file exists + # Ensure module list file exists ensure_file_exists_from_template( ctx.obj["module_file_path"], "modules.csv.j2", @@ -143,7 +132,7 @@ def init( odoo_versions=odoo_versions, ) - # 8. Create one folder per version and add files + # Create one folder per version and add files for odoo_version in odoo_versions: # Create main path for each version path_version = get_odoo_env_path(ctx, odoo_version) @@ -196,7 +185,7 @@ def init( path_version / Path("src"), git_ignore_content=True ) - # 9. Create one folder per step and add files + # Create one folder per step and add files ensure_folder_exists(ctx.obj["script_folder_path"]) for step in steps: diff --git a/odoo_openupgrade_wizard/templates/config.yml.j2 b/odoo_openupgrade_wizard/templates/config.yml.j2 index 3df6652..611c5c3 100644 --- a/odoo_openupgrade_wizard/templates/config.yml.j2 +++ b/odoo_openupgrade_wizard/templates/config.yml.j2 @@ -1,7 +1,8 @@ project_name: {{ project_name }} postgres_image_name: postgres:13 -postgres_container_name: {{project_name}}-db +postgres_container_name: {{project_name}}-container-postgres +postgres_volume_name: {{project_name}}-volume-postgres odoo_host_xmlrpc_port: 9069 odoo_default_country_code: FR diff --git a/odoo_openupgrade_wizard/templates/odoo/python_requirements.txt.j2 b/odoo_openupgrade_wizard/templates/odoo/python_requirements.txt.j2 index 5f03b8c..5db3a9e 100644 --- a/odoo_openupgrade_wizard/templates/odoo/python_requirements.txt.j2 +++ b/odoo_openupgrade_wizard/templates/odoo/python_requirements.txt.j2 @@ -1,13 +1,10 @@ {%- for python_librairy in python_libraries -%} {{ python_librairy }} -{% endfor %} +{%- endfor -%} # Mandatory library used in all odoo-openupgrade-wizard openupgradelib -# # Library used to run 'post-migration.py' scripts -# click-odoo - # Library used to run generate-module-analysis command # dependencies of the module OCA/server-tools 'upgrade_analysis' odoorpc diff --git a/odoo_openupgrade_wizard/tools/tools_postgres.py b/odoo_openupgrade_wizard/tools/tools_postgres.py index 97ca641..de87fb5 100644 --- a/odoo_openupgrade_wizard/tools/tools_postgres.py +++ b/odoo_openupgrade_wizard/tools/tools_postgres.py @@ -2,6 +2,7 @@ import os import time from pathlib import Path +import docker from loguru import logger from odoo_openupgrade_wizard.tools.tools_docker import ( @@ -15,6 +16,9 @@ def get_postgres_container(ctx): client = get_docker_client() image_name = ctx.obj["config"]["postgres_image_name"] container_name = ctx.obj["config"]["postgres_container_name"] + volume_name = ctx.obj["config"]["postgres_volume_name"] + + # Check if container exists containers = client.containers.list( all=True, filters={"name": container_name} ) @@ -29,6 +33,14 @@ def get_postgres_container(ctx): else: return container + # Check if volume exists + try: + client.volumes.get(volume_name) + logger.debug("Recovering existing postgres volume: %s" % volume_name) + except docker.errors.NotFound: + logger.info("Creating Postgres volume: %s" % volume_name) + client.volumes.create(volume_name) + logger.info("Launching Postgres Container. (Image %s)" % image_name) container = run_container( image_name, @@ -41,9 +53,7 @@ def get_postgres_container(ctx): }, volumes={ ctx.obj["env_folder_path"].absolute(): "/env/", - ctx.obj[ - "postgres_folder_path" - ].absolute(): "/var/lib/postgresql/data/pgdata/", + volume_name: "/var/lib/postgresql/data/pgdata/", }, detach=True, ) diff --git a/tests/__init__.py b/tests/__init__.py index 217b466..632b9cd 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -58,7 +58,4 @@ def build_ctx_from_config_file() -> dict: ctx.obj["env_folder_path"] = env_folder_path ctx.obj["src_folder_path"] = env_folder_path / Path("src") - ctx.obj["postgres_folder_path"] = env_folder_path / Path( - "postgres_data/data" - ) return ctx diff --git a/tests/data/output_expected/config.yml b/tests/data/output_expected/config.yml index 1619dac..a553e4a 100644 --- a/tests/data/output_expected/config.yml +++ b/tests/data/output_expected/config.yml @@ -1,7 +1,8 @@ project_name: test-cli postgres_image_name: postgres:13 -postgres_container_name: test-cli-db +postgres_container_name: test-cli-container-postgres +postgres_volume_name: test-cli-volume-postgres odoo_host_xmlrpc_port: 9069 odoo_default_country_code: FR