From b2e74ebcf9558634955134dad7b01e251027b3ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9o=20-=20Le=20Filament?= <theo@le-filament.com>
Date: Thu, 17 Apr 2025 12:29:54 +0200
Subject: [PATCH] change: simplify container restart and improve tags naming

---
 meta/main.yml                    | 32 +++++++-------
 tasks/main.yml                   | 75 +++++++++++++-------------------
 templates/docker-compose.yaml.j2 |  1 -
 templates/whitelists.yaml.j2     |  1 -
 4 files changed, 47 insertions(+), 62 deletions(-)

diff --git a/meta/main.yml b/meta/main.yml
index 1767721..d5af5ea 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -1,18 +1,18 @@
 ---
 galaxy_info:
-    author: lefilament
-    description: Role for deploying Odoo Community Edition on Docker
-    company: Le Filament (https://le-filament.com)
-    license: AGPL-3.0-or-later
-    min_ansible_version: "2.1"
-    platforms:
-        - name: Ubuntu
-          versions:
-              - bionic
-              - focal
-    galaxy_tags:
-        - odoo
-        - community
-        - docker
-        - metabase
-        - postgresql
+  author: lefilament
+  description: Role for deploying Odoo Community Edition on Docker
+  company: Le Filament (https://le-filament.com)
+  license: AGPL-3.0-or-later
+  min_ansible_version: "2.1"
+  platforms:
+    - name: Ubuntu
+      versions:
+        - bionic
+        - focal
+  galaxy_tags:
+    - odoo
+    - community
+    - docker
+    - metabase
+    - postgresql
diff --git a/tasks/main.yml b/tasks/main.yml
index 0fc67f3..ca48bbc 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -20,9 +20,9 @@
 
 - name: "Set empty lists to trigger actions on instances"
   tags:
+    - "docker_odoo_config_compose"
+    - "docker_odoo_metabase"
     - "docker_proxy"
-    - "metabase"
-    - "odoo_config_compose_restart"
   set_fact:
     instances_to_pull: []
     instances_to_rebuild: []
@@ -72,7 +72,7 @@
 
 - name: "Copy private SSH keys file"
   tags:
-    - "git_ssh_keys"
+    - "docker_odoo_git_ssh_keys"
   vars:
     item: "{{ item_instance_sshkey.0 }}"
   ansible.builtin.copy:
@@ -107,7 +107,7 @@
 
 - name: "Copy ssh config for connecting to git repositories"
   tags:
-    - "git_ssh_keys"
+    - "docker_odoo_git_ssh_keys"
   vars:
     template_git_ssh_private_keys: "{{ git_ssh_private_keys }}"
   ansible.builtin.template:
@@ -137,8 +137,8 @@
 
 - name: "Copy odoo.conf file"
   tags:
-    - "odoo_config"
-    - "odoo_config_odoo"
+    - "docker_odoo_config"
+    - "docker_odoo_config_odoo"
   vars:
     template_admin_passwd: "{{ odoo_source_instance.value.master_pass | pbkdf2_passwd(65534 | random(seed=inventory_hostname) | string) }}"
     template_server_wide_modules: "{{ odoo_instance_setup.server_wide_modules | join(',') }}{% if odoo_instance.value.odoo_server_wide_modules is defined %},{{ odoo_instance.value.odoo_server_wide_modules | join(',') }}{% endif %}"
@@ -179,8 +179,8 @@
 
 - name: Copy Dockerfile to retrieve private repos and extra OCA ones
   tags:
-    - "odoo_config"
-    - "odoo_config_dockerfile"
+    - "docker_odoo_config"
+    - "docker_odoo_config_dockerfile"
   vars:
     template_custom_ssh_config: "{{ git_ssh_private_keys is defined }}"
     template_odoo_instance: "{{ odoo_instance }}"
@@ -213,11 +213,10 @@
 
 - name: Copy docker compose service
   tags:
-    - "odoo_config"
-    - "odoo_config_compose"
-    - "odoo_config_compose_restart"
+    - "docker_odoo_config"
+    - "docker_odoo_config_compose"
+    - "docker_odoo_metabase"
     - "docker_proxy"
-    - "metabase"
   vars:
     template_odoo_instance: "{{ odoo_instance }}"
     template_odoo_instance_setup: "{{ odoo_instance_setup }}"
@@ -244,9 +243,9 @@
 #   - "restart odoo image"
 - name: "Add instance to restart list if files was changed"
   tags:
+    - "docker_odoo_metabase"
+    - "docker_odoo_config_compose"
     - "docker_proxy"
-    - "metabase"
-    - "odoo_config_compose_restart"
   set_fact:
     instances_to_restart: "{{ instances_to_restart + [item.item.key] }}"
   loop: "{{ result.results | flatten(levels=1) }}"
@@ -296,7 +295,7 @@
 - name: "Get image from another instance"
   tags:
     - "never"
-    - "check_image"
+    - "docker_odoo_check_image"
   include_tasks: "instance_images.yml"
   loop: "{{ odoo_instances | dict2items }}"
   loop_control:
@@ -307,35 +306,22 @@
 
 - name: "Flush handlers"
   tags:
+    - "docker_odoo_config_compose"
+    - "docker_odoo_metabase"
     - "docker_proxy"
-    - "metabase"
-    - "odoo_config_compose_restart"
   ansible.builtin.meta: flush_handlers
 
-- name: "Restart instances: remove instance containers"
+- name: "Restart instances"
   tags:
+    - "docker_odoo_config_compose"
+    - "docker_odoo_metabase"
     - "docker_proxy"
-    - "metabase"
-    - "odoo_config_compose_restart"
   community.docker.docker_compose_v2:
     project_src: "/home/docker/{{ odoo_instance.key }}/"
-    remove_orphans: true
-    state: absent
-  loop: "{{ instances_to_restart | unique | sort }}"
-  when: >
-    allow_restart is truthy(convert_bool=True)
-    and instances_to_restart | length > 0
-
-- name: "Restart instances: start instance containers"
-  tags:
-    - "docker_proxy"
-    - "metabase"
-    - "odoo_config_compose_restart"
-  community.docker.docker_compose_v2:
-    project_src: /home/docker/{{ odoo_instance.key }}/
     recreate: always
     remove_orphans: true
     state: present
+    pull: missing
   loop: "{{ instances_to_restart | unique | sort }}"
   when: >
     allow_restart is truthy(convert_bool=True)
@@ -346,7 +332,7 @@
 # --------------------------------------------------
 - name: "Copy sql script to be run before restoring db from backup_instance"
   tags:
-    - "odoo_backup"
+    - "docker_odoo_backup"
   vars:
     template_database_name: "{{ odoo_instance.value.db }}"
   ansible.builtin.template:
@@ -367,7 +353,7 @@
 
 - name: "Copy sql script to be run after restoring db from backup_instance"
   tags:
-    - "odoo_backup"
+    - "docker_odoo_backup"
   ansible.builtin.template:
     src: "post_restore-odootest.sql.j2"
     dest: "/home/docker/backups/post_restore-{{ odoo_instance.key }}.sql"
@@ -386,7 +372,7 @@
 
 - name: "Copy compose file to restore db from backup_instance"
   tags:
-    - "odoo_backup"
+    - "docker_odoo_backup"
   vars:
     # Allow role vars to work with `item` variable.
     item: "{{ item_account_instance.1 }}"
@@ -418,13 +404,13 @@
 # --------------------------------------------------
 - name: "Set empty lists to filtered instances"
   tags:
-    - "odoo_backup"
+    - "docker_odoo_backup"
   set_fact:
     odoo_instances_filtered: []
 
 - name: "Filter Odoo instance that needs backup"
   tags:
-    - "odoo_backup"
+    - "docker_odoo_backup"
   set_fact:
     odoo_instances_filtered: "{{ odoo_instances_filtered + [odoo_instance] }}"
   loop: "{{ odoo_instances | dict2items }}"
@@ -437,7 +423,7 @@
 
 - name: "Copy docker compose for backup"
   tags:
-    - "odoo_backup"
+    - "docker_odoo_backup"
   vars:
     # Allow role vars to work with `item` variable.
     item: "{{ item_account_instance.1 }}"
@@ -463,7 +449,7 @@
 
 - name: "Add cron job to backup instances every day"
   tags:
-    - "odoo_backup"
+    - "docker_odoo_backup"
   vars:
     # Allow role vars to work with `item` variable.
     item: "{{ item_account_instance.1 }}"
@@ -502,7 +488,7 @@
 # --------------------------------------------------
 - name: "Allow readonly user connection to prod db"
   tags:
-    - "db_remote_ro_user"
+    - "docker_odoo_db_remote_ro_user"
   vars:
     pg_hba_path: "/var/lib/docker{{ '/' + (dockremap_subuid | string) + '.' + (dockremap_subgid | string) if docker_userns_remap else '' }}/volumes/{{ odoo_instance.key }}_db/_data/pg_hba.conf"
   ansible.builtin.blockinfile:
@@ -523,7 +509,7 @@
 
 - name: "Disable access all rights to prod db"
   tags:
-    - "db_remote_ro_user"
+    - "docker_odoo_db_remote_ro_user"
   vars:
     pg_hba_path: "/var/lib/docker{{ '/' + (dockremap_subuid | string) + '.' + (dockremap_subgid | string) if docker_userns_remap else '' }}/volumes/{{ odoo_instance.key }}_db/_data/pg_hba.conf"
   ansible.builtin.lineinfile:
@@ -544,7 +530,8 @@
 # Remote imports section
 # --------------------------------------------------
 - name: Remote Imports
-  tags: "remote_imports"
+  tags:
+    - "docker_odoo_remote_imports"
   block:
     - name: Push private keys for any external tool connection
       when: private_keys is defined
diff --git a/templates/docker-compose.yaml.j2 b/templates/docker-compose.yaml.j2
index 2c136c0..a6ad062 100644
--- a/templates/docker-compose.yaml.j2
+++ b/templates/docker-compose.yaml.j2
@@ -1,4 +1,3 @@
-version: "2.1"
 services:
     odoo:
 {# if instance is to be built #}
diff --git a/templates/whitelists.yaml.j2 b/templates/whitelists.yaml.j2
index 59218ab..742676a 100644
--- a/templates/whitelists.yaml.j2
+++ b/templates/whitelists.yaml.j2
@@ -1,4 +1,3 @@
-version: "2.1"
 services:
 {% for url in whitelisted_urls %}
 
-- 
GitLab