bachelor-thesis/scenario_generator/cleanup_jobs.py

73 lines
2.2 KiB
Python

import requests
from requests.auth import HTTPBasicAuth
import time
from urllib.parse import quote
import os
TARGET_IPS = [
"192.168.122.97",
"192.168.122.219",
"192.168.122.244",
] # Bei einem Neuausetzen der Testumgebung mit Terraform müssen diese an die neuen Adressen angepasst werden
PORT = os.getenv("PORT")
USER = os.getenv("USER")
PASSWORD = os.getenv("PASSWORD")
BASE_PATH = os.getenv("BASE_PATH")
def cleanup_jobs():
auth = HTTPBasicAuth(USER, PASSWORD)
for ip in TARGET_IPS:
url = f"http://{ip}:{PORT}{BASE_PATH}"
print(f"\n--- Starte Bereinigung für Ziel: {ip} ---")
while True:
try:
response = requests.get(url, auth=auth)
response.raise_for_status()
data = response.json()
job_list = data.get("jobs", [])
total_remaining = data.get("total", 0)
if not job_list:
print(
f"Keine weiteren Jobs auf {ip} gefunden (Total laut API: {total_remaining})."
)
break
print(
f"Verarbeite Seite {data.get('page')} von {data.get('pages')}. "
f"Noch insgesamt {total_remaining} Jobs vorhanden."
)
for job in job_list:
if isinstance(job, dict):
job_id = job.get("job_id")
else:
job_id = str(job)
if not job_id:
continue
encoded_id = quote(job_id)
delete_url = f"{url}/{encoded_id}"
del_response = requests.delete(delete_url, auth=auth)
if del_response.status_code in [200, 202, 204]:
print(f" [OK] Gelöscht: {job_id}")
else:
print(f" [FEHLER] {job_id}: Status {del_response.status_code}")
time.sleep(0.5)
except Exception as e:
print(f"Ein Fehler ist aufgetreten bei {ip}: {e}")
break
if __name__ == "__main__":
cleanup_jobs()
print("\nFertig. Alle Systeme wurden bereinigt.")