Skip to content

Commit e62751d

Browse files
authored
Merge pull request #142 from coopdevs/feat-odoo-server-wide-modules
Handle odoo server wide modules
2 parents 0b51a65 + 84895d8 commit e62751d

File tree

5 files changed

+84
-35
lines changed

5 files changed

+84
-35
lines changed

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,17 @@ odoo_role_enable_queue_job: true
167167
168168
This option add to the Odoo configuration file the option to enable queue\_job as a new thread/process: https://github.com/OCA/queue/blob/12.0/queue\_job/README.rst#id12
169169
170+
* Server-wide modules
171+
172+
If you need to install some wide-server modules apart from `db_filter` and `queue_job`, use:
173+
```yaml
174+
odoo_role_odoo_server_wide_modules: ['module1', 'module2']
175+
```
176+
177+
By default, it configures as a server-wide modules `web` and `base` -as long as they are mandatory from Odoo v12- in every case and `db_filter` and `queue_job` if the corresponding variables are set to `true` .
178+
179+
* Workers configuration
180+
170181
You can also define how many workers you want to use to execute the jobs:
171182
```yaml
172183
odoo_role_channels: root:2

defaults/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ odoo_role_enabled_rest_framework: false
7676
odoo_role_enable_queue_job: false
7777
# Support for Dbfilter From Header https://github.com/OCA/server-tools/tree/12.0/dbfilter_from_header
7878
odoo_role_enable_dbfilter_from_header: false
79+
# Support for loading system-wide modules
80+
odoo_role_odoo_server_wide_modules: ["base","web"]
7981

8082
# Customize the Odoo timeouts
8183
odoo_role_limit_time_cpu: 60

tasks/main.yml

Lines changed: 45 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,51 @@
125125
shell: "cd {{ odoo_role_odoo_path }} && {{ odoo_role_odoo_python_path }} setup.py install"
126126
when: odoo_role_desired_tar_download.changed or odoo_role_desired_git_download.changed
127127

128+
- name: Populate community db modules
129+
set_fact:
130+
community_db_modules: "{{ community_db_modules | default({}) | combine ({ item : odoo_role_odoo_community_modules_dict[item] | default([]) }) }}"
131+
with_items: "{{ odoo_role_odoo_dbs }}"
132+
133+
- name: Populate community shared modules
134+
set_fact:
135+
community_shared_modules: "{{ odoo_role_odoo_community_modules_dict['shared'] | default(odoo_role_odoo_community_modules.split(',')) }}"
136+
137+
- name: Join db + shared community modules
138+
set_fact:
139+
community_modules: "{{ community_modules | default({}) | combine ({ item : community_shared_modules + community_db_modules[item] }) }}"
140+
with_items: "{{ odoo_role_odoo_dbs }}"
141+
142+
- name: Populate core db modules
143+
set_fact:
144+
core_db_modules: "{{ core_db_modules | default({}) | combine ({ item : odoo_role_odoo_core_modules_dict[item] | default([]) }) }}"
145+
with_items: "{{ odoo_role_odoo_dbs }}"
146+
147+
- name: Populate core shared modules
148+
set_fact:
149+
core_shared_modules: "{{ odoo_role_odoo_core_modules_dict['shared'] | default(odoo_role_odoo_core_modules.split(',')) }}"
150+
151+
- name: Join db + shared core modules
152+
set_fact:
153+
core_modules: "{{ core_modules | default({}) | combine ({ item : core_shared_modules + core_db_modules[item] }) }}"
154+
with_items: "{{ odoo_role_odoo_dbs }}"
155+
156+
- name: Join core + community modules
157+
set_fact:
158+
modules: "{{ modules | default([]) + item.value }}"
159+
with_dict:
160+
- "{{ core_modules }}"
161+
- "{{ community_modules }}"
162+
no_log: True
163+
164+
- name: Create unique list of modules
165+
set_fact:
166+
all_modules: "{{ modules | unique | sort }}"
167+
when: modules is defined
168+
169+
- name: Check server wide configuration
170+
import_tasks: server-wide-conf.yml
171+
tags: ['server-wide']
172+
128173
- name: Add Odoo config
129174
become: true
130175
template:
@@ -169,34 +214,6 @@
169214

170215
- import_tasks: community-modules.yml
171216

172-
- name: Populate community db modules
173-
set_fact:
174-
community_db_modules: "{{ community_db_modules | default({}) | combine ({ item : odoo_role_odoo_community_modules_dict[item] | default([]) }) }}"
175-
with_items: "{{ odoo_role_odoo_dbs }}"
176-
177-
- name: Populate community shared modules
178-
set_fact:
179-
community_shared_modules: "{{ odoo_role_odoo_community_modules_dict['shared'] | default(odoo_role_odoo_community_modules.split(',')) }}"
180-
181-
- name: Join db + shared community modules
182-
set_fact:
183-
community_modules: "{{ community_modules | default({}) | combine ({ item : community_shared_modules + community_db_modules[item] }) }}"
184-
with_items: "{{ odoo_role_odoo_dbs }}"
185-
186-
- name: Populate core db modules
187-
set_fact:
188-
core_db_modules: "{{ core_db_modules | default({}) | combine ({ item : odoo_role_odoo_core_modules_dict[item] | default([]) }) }}"
189-
with_items: "{{ odoo_role_odoo_dbs }}"
190-
191-
- name: Populate core shared modules
192-
set_fact:
193-
core_shared_modules: "{{ odoo_role_odoo_core_modules_dict['shared'] | default(odoo_role_odoo_core_modules.split(',')) }}"
194-
195-
- name: Join db + shared core modules
196-
set_fact:
197-
core_modules: "{{ core_modules | default({}) | combine ({ item : core_shared_modules + core_db_modules[item] }) }}"
198-
with_items: "{{ odoo_role_odoo_dbs }}"
199-
200217
- name: Force update odoo modules
201218
become: true
202219
become_user: "{{ odoo_role_odoo_user }}"

tasks/server-wide-conf.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
- name: Generate server wide modules configuration (db_filter_from_header)
3+
set_fact:
4+
odoo_role_odoo_server_wide_modules: "{{ odoo_role_odoo_server_wide_modules + ['dbfilter_from_header'] }}"
5+
when: odoo_role_enable_dbfilter_from_header | bool
6+
tags: ['server-wide']
7+
8+
- name: Check requirements for db_filter (odoo_role_channels)
9+
ansible.builtin.fail:
10+
msg: "Role Error: odoo_role_channels var is needed when queue_job is activated" # not required. The customized message that is printed. If omitted, prints a generic message.
11+
when: odoo_role_enable_dbfilter_from_header | bool and odoo_role_channels is not defined
12+
tags: ['server-wide']
13+
14+
- name: Generate server wide modules configuration (queue_job)
15+
ansible.builtin.set_fact:
16+
odoo_role_odoo_server_wide_modules: "{{ odoo_role_odoo_server_wide_modules + ['queue_job'] }}"
17+
when: odoo_role_enable_queue_job | bool
18+
tags: ['server-wide']
19+
20+
- name: Check if server_wide modules are declared
21+
ansible.builtin.fail:
22+
msg: "Role Error: {{ item }} module is configured as a server wide module but it is not present in modules dict"
23+
with_items: "{{ odoo_role_odoo_server_wide_modules }}"
24+
when: (item not in all_modules)
25+
tags: ['server-wide']

templates/odoo.conf.j2

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@
44
logfile = {{ odoo_role_odoo_log_path }}/odoo.log
55
{% endif %}
66
log_level = {{ odoo_role_odoo_log_level }}
7-
{% if odoo_role_enable_queue_job and not odoo_role_enable_dbfilter_from_header %}
8-
server_wide_modules = web,queue_job
9-
{% elif not odoo_role_enable_queue_job and odoo_role_enable_dbfilter_from_header %}
10-
server_wide_modules = web,dbfilter_from_header
11-
{% elif odoo_role_enable_queue_job and odoo_role_enable_dbfilter_from_header %}
12-
server_wide_modules = web,dbfilter_from_header,queue_job
13-
{% endif %}
7+
server_wide_modules = {{ odoo_role_odoo_server_wide_modules | join(',') }}
148
; Custom Modules
159
addons_path = {{ odoo_role_odoo_modules_path }}, {{ odoo_role_odoo_path }}/addons
1610

0 commit comments

Comments
 (0)