neuer Versuch uninstall modules via rpc
Some checks failed
odoo-restore-open_workshop-install / run-odoo-backup-in-docker (push) Failing after 1m24s

This commit is contained in:
gitea 2025-04-12 11:00:05 +00:00
parent 42faa68903
commit 7dbd9e8f12
2 changed files with 76 additions and 50 deletions

View File

@ -7,9 +7,7 @@ on:
- 13.0_dev
env:
URL_BACKUP: https://odoo.lan.hobbyhimmel.de
URL_RESTORE: http://hobbybackend2.fritz.box:9013
REGISTRY: gitea.lan.hobbyhimmel.de
jobs:
run-odoo-backup-in-docker:
@ -115,11 +113,14 @@ jobs:
- name: Uninstall vvow_pos
run: |
echo "Odoo DB Name: ${{ env.DB_NAME }}"
docker exec hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} /bin/bash -c "
cd /home/odoo/custom_addons/open_workshop/scripts && \
/opt/odoo/odoo/odoo-bin shell -d ${{ env.DB_NAME }} < uninstall_vvow_pos.py"
docker exec -e ODOO_URL=${{ env.URL_RESTORE }} \
-e ODOO_DB=${{ env.DB_NAME }} \
-e ODOO_USERNAME=${{ secrets.ODOO_ADMIN }} \
-e ODOO_PASSWORD=${{ secrets.ODOO_ADMIN_PASSWORD }} \
hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} \
/bin/bash -c "
cd /home/odoo/custom_addons/open_workshop/scripts && \
python3 uninstall_rpc.py vvow_pos"
- name: Fix Database hobbyhimmel with fix_missing_pos_partner.py
# In diesem Schritt wird das Skript `fix_missing_pos_partner.py` ausgeführt, um sicherzustellen, dass alle Partner in der Datenbank korrekt sind.
@ -141,47 +142,13 @@ jobs:
cd /home/odoo/custom_addons/open_workshop/scripts && \
/opt/odoo/odoo/odoo-bin shell -d ${{ env.DB_NAME }} < import_machine_products.py"
- name: Stoppe Odoo-Container
run: docker stop hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }}
- name: Erstelle temporäres Image vom gestoppten Container
run: docker commit hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} temp-odoo-uninstall:${{ env.ODOO_VERSION }}
- name: Starte temporären Container im Leerlauf
- name: Uninstall vvow_einweisungen
run: |
docker run -d --rm \
--name odoo_uninstall \
-v hobbyhimmel_odoo_13_dev_odoo:/home/odoo \
--network hobbyhimmel_odoo_13_dev_default \
-e PGHOST=${{ env.DB_HOST }} \
-e PGPORT=${{ env.DB_PORT }} \
-e PGUSER=${{ env.DB_USER }} \
-e PGPASSWORD=${{ env.DB_PASSWORD }} \
temp-odoo-uninstall:${{ env.ODOO_VERSION }} \
tail -f /dev/null
# Warte kurz, bis der Container vollständig läuft
sleep 5
- name: Modul vvow_einweisungen deinstallieren
run: |
docker exec odoo_uninstall \
/opt/odoo/odoo/odoo-bin shell -d ${{ env.DB_NAME }} < /home/odoo/custom_addons/open_workshop/scripts/uninstall_vvow_einweisungen.py
- name: Stoppe temporären Container
run: docker stop odoo_uninstall
- name: Starte regulären Odoo-Container wieder
run: docker start hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }}
# - name: Pause vor dem Deinstallieren von vvow_einweisungen
# run: sleep 120
# - name: Uninstall vvow_einweisungen
# run: |
# docker exec hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} /bin/bash -c "
# cd /home/odoo/custom_addons/open_workshop/scripts && \
# /opt/odoo/odoo/odoo-bin shell -d ${{ env.DB_NAME }} < uninstall_vvow_einweisungen.py"
# docker restart hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }}
docker exec -e ODOO_URL=${{ env.URL_RESTORE }} \
-e ODOO_DB=${{ env.DB_NAME }} \
-e ODOO_USERNAME=${{ secrets.ODOO_ADMIN }} \
-e ODOO_PASSWORD=${{ secrets.ODOO_ADMIN_PASSWORD }} \
hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} \
/bin/bash -c "
cd /home/odoo/custom_addons/open_workshop/scripts && \
python3 uninstall_rpc.py vvow_einweisungen"

59
scripts/uninstall_rpc.py Executable file
View File

@ -0,0 +1,59 @@
import sys
import os
import xmlrpc.client
# ----------------------
# KONFIGURATION AUS UMGEBUNG
# ----------------------
url = os.getenv("ODOO_URL", "http://localhost:8069")
db = os.getenv("DB_NAME", "hobbyhimmel")
username = os.getenv("ODOO_ADMIN")
password = os.getenv("ODOO_ADMIN_PASSWORD")
# ----------------------
# PRÜFUNG DER KONFIGURATION
# ----------------------
if not all([url, db, username, password]):
print("❌ Fehler: ODOO_URL, ODOO_DB, ODOO_USERNAME und ODOO_PASSWORD müssen als Umgebungsvariablen gesetzt sein.")
sys.exit(1)
# ----------------------
# PARAMETER PRÜFEN
# ----------------------
if len(sys.argv) != 2:
print("❌ Fehler: Modulname muss als Parameter übergeben werden.")
print("👉 Beispiel: python3 uninstall_rpc.py vvow_einweisungen")
sys.exit(1)
module_name = sys.argv[1]
# ----------------------
# AUTHENTIFIZIERUNG
# ----------------------
common = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/common")
uid = common.authenticate(db, username, password, {})
if not uid:
print("❌ Anmeldung fehlgeschlagen. Bitte Zugangsdaten prüfen.")
sys.exit(1)
# ----------------------
# MODUL SUCHEN & DEINSTALLIEREN
# ----------------------
models = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/object")
ids = models.execute_kw(db, uid, password,
'ir.module.module', 'search',
[[['name', '=', module_name], ['state', '=', 'installed']]],
{'limit': 1}
)
if ids:
print(f"📦 Deinstalliere Modul: {module_name}")
models.execute_kw(db, uid, password,
'ir.module.module', 'button_immediate_uninstall',
[ids]
)
print("✅ Deinstallation abgeschlossen.")
else:
print(f" Modul '{module_name}' ist nicht installiert oder nicht vorhanden.")