From 39c9666c0f81bb5ab24c6d8a261bda8868310ca4 Mon Sep 17 00:00:00 2001 From: AIIrondev Date: Wed, 5 Aug 2026 00:16:19 +0200 Subject: [PATCH] update of an outadet approach of the user adding in the current version --- manage-tenant.sh | 54 ++++++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 29 deletions(-) diff --git a/manage-tenant.sh b/manage-tenant.sh index eb19a57..c5f2586 100755 --- a/manage-tenant.sh +++ b/manage-tenant.sh @@ -599,7 +599,7 @@ case "$COMMAND" in remove) FORCE_REMOVE=false TENANT_ARG="${2:-}" - + if [ "$TENANT_ARG" = "--yes" ] || [ "$TENANT_ARG" = "-y" ]; then FORCE_REMOVE=true TENANT_ID="${3:-}" @@ -624,40 +624,36 @@ case "$COMMAND" in echo "Removing tenant '$TENANT_ID'..." APP_CONTAINER=$(docker ps -qf "name=app" | head -n 1) port_to_remove="" - + if [ -n "$APP_CONTAINER" ]; then - # Zuerst die Datenbank via PyMongo hart droppen (Erzwungenes Löschen) - port_to_remove="$(docker exec "$APP_CONTAINER" python3 - "$TENANT_ID" <<'PY' -import sys, re -sys.path.insert(0, '/app') -sys.path.insert(0, '/app/Web') -from tenant import delete_tenant, get_tenant_config -from Web.modules.database import settings -from pymongo import MongoClient + # Zuerst die MongoDB-Datenbank via PyMongo hart droppen (Erzwungenes Löschen) + docker exec -i "$APP_CONTAINER" python3 - "$TENANT_ID" << 'EOF' > /dev/null 2>&1 + import sys + import os -tenant_id = sys.argv[1] -tenant_cfg = get_tenant_config(tenant_id) -port = tenant_cfg.get('port') + try: + import pymongo + tenant_id = sys.argv[1] -# Datenbanknamen exakt rekonstruieren -sanitized = "".join(c for c in tenant_id if c.isalnum() or c == "_") -db_name = f"inventar_{sanitized}" + # MongoDB-URI aus der Umgebung holen oder Standard verwenden + mongo_uri = os.environ.get('MONGO_URI', 'mongodb://localhost:27017/') + client = pymongo.MongoClient(mongo_uri, serverSelectionTimeoutMS=2000) -try: - client = MongoClient(settings.MONGODB_HOST, int(settings.MONGODB_PORT)) - client.drop_database(db_name) - print(f"MongoDB database '{db_name}' dropped successfully.", file=sys.stderr) -except Exception as e: - print(f"Warning: Could not drop database '{db_name}': {e}", file=sys.stderr) + db_name = f"inventar_{tenant_id}" + if db_name in client.list_database_names(): + client.drop_database(db_name) + print(f"Dropped database: {db_name}") + except Exception as e: + print(f"Error dropping database: {e}", file=sys.stderr) + EOF -if not delete_tenant(tenant_id): - print(f'Error: failed to delete tenant {tenant_id}', file=sys.stderr) - sys.exit(1) + # Konfiguration und Port via Host-Funktion bereinigen und Port ermitteln + if port_to_remove="$(remove_tenant_port "$TENANT_ID" 2>/dev/null)"; then + : + else + port_to_remove="" + fi -if port is not None: - print(port) -PY - )" echo "Tenant '$TENANT_ID' database and config removed." else echo "Warning: Application container not running. Tenant database may still exist in MongoDB."