diff --git a/.theia/launch.json b/.theia/launch.json new file mode 100644 index 00000000..a43ff192 --- /dev/null +++ b/.theia/launch.json @@ -0,0 +1,49 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Current File", + "type": "python", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal" + }, + { + "name": "Odoo: shell", + "type": "python", + "request": "launch", + "program": "/opt/odoo/hibou-suite/odoo-run.py", + "args": ["shell", "--no-xmlrpc"], + "console": "integratedTerminal" + }, + { + "name": "Odoo: TEST 'sale'", + "type": "python", + "request": "launch", + "program": "/opt/odoo/hibou-suite/odoo-run.py", + "args": ["-i", "sale", + "-u", "sale", + "--test-enable", "--no-xmlrpc", "--stop-after-init"], + "console": "integratedTerminal" + }, + { + "name": "Odoo: server", + "type": "python", + "request": "launch", + "program": "/opt/odoo/hibou-suite/odoo-run.py", + "args": [], + "console": "integratedTerminal" + }, + { + "name": "Odoo: reload foreground server", + "type": "python", + "request": "launch", + "program": "/opt/odoo/hibou-suite/odoo-reload.py", + "args": [], + "console": "integratedTerminal" + } + ] +} + diff --git a/Dockerfile b/Dockerfile index 2cf8895a..7fd66b6c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,7 @@ FROM hibou/hibou-odoo:15.0 -USER 0 -COPY --from=registry.gitlab.com/hibou-io/theia-python /opt/theia /opt/theia -RUN set -x; \ - curl -sL https://deb.nodesource.com/setup_12.x | bash - \ - && apt-get install -y \ - nodejs \ - build-essential \ - libsecret-1-0 \ - procps \ - && npm install --global yarn - -USER 104 +USER odoo +COPY --from=registry.gitlab.com/hibou-io/athene /opt/athene /opt/athene COPY --from=hibou/flow /flow /flow COPY --chown=104 entrypoint.sh /entrypoint.sh COPY --chown=104 . /opt/odoo/hibou-suite @@ -21,6 +11,6 @@ RUN rm /etc/odoo/odoo.conf \ EXPOSE 3000 ENV SHELL=/bin/bash \ - THEIA_DEFAULT_PLUGINS=local-dir:/opt/theia/plugins + THEIA_DEFAULT_PLUGINS=local-dir:/opt/athene/plugins ENV USE_LOCAL_GIT true diff --git a/Dockerfile-GitLab b/Dockerfile-GitLab index 0ddb71f5..c9d224c4 100644 --- a/Dockerfile-GitLab +++ b/Dockerfile-GitLab @@ -1,17 +1,7 @@ FROM registry.gitlab.com/hibou-io/hibou-odoo/odoo:RELEASE -USER 0 -COPY --from=registry.gitlab.com/hibou-io/theia-python /opt/theia /opt/theia -RUN set -x; \ - curl -sL https://deb.nodesource.com/setup_12.x | bash - \ - && apt-get install -y \ - nodejs \ - build-essential \ - libsecret-1-0 \ - procps \ - && npm install --global yarn - -USER 104 +USER odoo +COPY --from=registry.gitlab.com/hibou-io/athene /opt/athene /opt/athene COPY --from=registry.gitlab.com/hibou-io/hibou-odoo/flow /flow /flow COPY --chown=104 entrypoint.sh /entrypoint.sh COPY --chown=104 . /opt/odoo/hibou-suite @@ -21,6 +11,6 @@ RUN rm /etc/odoo/odoo.conf \ EXPOSE 3000 ENV SHELL=/bin/bash \ - THEIA_DEFAULT_PLUGINS=local-dir:/opt/theia/plugins + THEIA_DEFAULT_PLUGINS=local-dir:/opt/athene/plugins ENV USE_LOCAL_GIT true diff --git a/entrypoint.sh b/entrypoint.sh index 2d73a291..cf07e6a1 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -18,21 +18,13 @@ set -e if [ "$DEV_MODE_PATH" == "" ] then - export DEV_MODE_PATH=/opt/odoo + export DEV_MODE_PATH=/opt/odoo/hibou-suite fi - -# setup development IDE -if [ "$DEV_MODE" == "exclusive" ] +if [[ -x "/opt/athene/entrypoint.sh" ]] then - cd /opt/theia - exec node /opt/theia/src-gen/backend/main.js $DEV_MODE_PATH --hostname=0.0.0.0 -elif [ "$DEV_MODE" != "" ] -then - cd /opt/theia - node /opt/theia/src-gen/backend/main.js $DEV_MODE_PATH --hostname=0.0.0.0 & + /opt/athene/entrypoint.sh fi - # set the postgres database host, port, user and password according to the environment # and pass them as arguments to the odoo process if not present in the config file : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} diff --git a/odoo-reload.py b/odoo-reload.py new file mode 100755 index 00000000..c84471ab --- /dev/null +++ b/odoo-reload.py @@ -0,0 +1,24 @@ +import psutil +import os +import signal + +PID = 1 +PNAME = 'odoo' +is_foreground = False +for proc in psutil.process_iter(): + try: + process_name = proc.name() + process_id = proc.pid + if process_id == PID: + is_foreground = process_name == PNAME + break + except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): + pass + +if not is_foreground: + print('Odoo is not the foreground process.') + exit(-1) + +print('Signalling reload to Odoo') +os.kill(PID, signal.SIGHUP) + diff --git a/odoo-run.py b/odoo-run.py new file mode 100755 index 00000000..7984b22d --- /dev/null +++ b/odoo-run.py @@ -0,0 +1,5 @@ +__import__('os').environ['TZ'] = 'UTC' +import odoo + +if __name__ == "__main__": + odoo.cli.main()