From cba90c83e499d2a59044f455db40dd35b5254d5a Mon Sep 17 00:00:00 2001 From: Joachim Desroches Date: Thu, 16 Sep 2021 15:41:40 +0200 Subject: [PATCH] Add type to monitor Odoo license expiration with Prometheus. --- ...rometheus-odoo-license-exporter.service.sh | 17 +++++++++++++ .../gencode-remote | 20 ++++++++++++++++ .../manifest | 24 +++++++++++++++++++ .../parameter/required | 2 ++ .../singleton | 0 5 files changed, 63 insertions(+) create mode 100755 type/__prometheus_odoo_license_exporter/files/prometheus-odoo-license-exporter.service.sh create mode 100755 type/__prometheus_odoo_license_exporter/gencode-remote create mode 100755 type/__prometheus_odoo_license_exporter/manifest create mode 100644 type/__prometheus_odoo_license_exporter/parameter/required create mode 100644 type/__prometheus_odoo_license_exporter/singleton diff --git a/type/__prometheus_odoo_license_exporter/files/prometheus-odoo-license-exporter.service.sh b/type/__prometheus_odoo_license_exporter/files/prometheus-odoo-license-exporter.service.sh new file mode 100755 index 0000000..889d4c1 --- /dev/null +++ b/type/__prometheus_odoo_license_exporter/files/prometheus-odoo-license-exporter.service.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +DBNAME=$(cat "${__object:?}/parameter/dbname") + +cat << EOF +[Unit] +Description=e-Durable's Prometheus Odoo License Expiration exporter +After=network.target + +[Service] +Type=simple +User=odoo +ExecStart=/opt/prometheus-odoo-license-exporter/venv/bin/python /opt/prometheus-odoo-license-exporter/prometheus-odoo-license-exporter ${DBNAME:?} + +[Install] +WantedBy=multi-user.target +EOF diff --git a/type/__prometheus_odoo_license_exporter/gencode-remote b/type/__prometheus_odoo_license_exporter/gencode-remote new file mode 100755 index 0000000..4fad5a4 --- /dev/null +++ b/type/__prometheus_odoo_license_exporter/gencode-remote @@ -0,0 +1,20 @@ +#!/bin/sh + +VCS_TAG=$(cat "${__object:?}/parameter/version") +VCS_URL="https://code.recycled.cloud/RecycledCloud/prometheus-odoo-license-exporter/raw/tag/$VCS_TAG/prometheus-odoo-license-exporter" + +cat << EOF +cd /opt/prometheus-odoo-license-exporter + +# Fetch sources +curl "$VCS_URL" -o prometheus-odoo-license-exporter + +# Install virtualenv and dependencies +virtualenv venv +. venv/bin/activate + +pip3 install prometheus_client psycopg2 datetime + +# Start service +systemctl restart prometheus-odoo-license-exporter +EOF diff --git a/type/__prometheus_odoo_license_exporter/manifest b/type/__prometheus_odoo_license_exporter/manifest new file mode 100755 index 0000000..e99a635 --- /dev/null +++ b/type/__prometheus_odoo_license_exporter/manifest @@ -0,0 +1,24 @@ +#!/bin/sh + +os=$(cat "${__global:?}/explorer/os") + +mkdir -p "${__object:?}/files" +case "$os" in + debian|ubuntu) + __package python3-virtualenv + __package curl + __package libpq-dev + + "${__type:?}/files/prometheus-odoo-license-exporter.service.sh" \ + > "${__object:?}/files/prometheus-odoo-license-exporter.service" + __systemd_unit prometheus-odoo-license-exporter.service \ + --source "${__object:?}/files/prometheus-odoo-license-exporter.service" \ + --enablement-state enabled + ;; +*) + echo "$os is not supported by this type. Exiting" >&2 + exit 1 + ;; +esac + +__directory /opt/prometheus-odoo-license-exporter diff --git a/type/__prometheus_odoo_license_exporter/parameter/required b/type/__prometheus_odoo_license_exporter/parameter/required new file mode 100644 index 0000000..fa99920 --- /dev/null +++ b/type/__prometheus_odoo_license_exporter/parameter/required @@ -0,0 +1,2 @@ +dbname +version diff --git a/type/__prometheus_odoo_license_exporter/singleton b/type/__prometheus_odoo_license_exporter/singleton new file mode 100644 index 0000000..e69de29