fix: loop hapus address-list sampai bersih sebelum add baru
This commit is contained in:
@@ -76,19 +76,40 @@ def deploy_via_rest_api(router, rsc_filepath="routing-lokal.rsc"):
|
||||
session.auth = (user, password)
|
||||
session.verify = False
|
||||
|
||||
# 1. Menghapus list lama di router
|
||||
# 1. Menghapus list lama di router (loop sampai benar-benar bersih)
|
||||
print(f"Menghapus address-list '{list_name}' lama di router...")
|
||||
del_payload = {"script": f"/ip/firewall/address-list/remove [find list=\"{list_name}\"]"}
|
||||
try:
|
||||
res_del = session.post(f"{api_url}/execute", json=del_payload, timeout=30)
|
||||
if res_del.status_code not in (200, 201):
|
||||
print(f"Warning saat menghapus list (abaikan jika baru): {res_del.text}")
|
||||
except Exception as e:
|
||||
print(f"Warning execute remove list: {e}")
|
||||
|
||||
# Beri waktu luang agar RouterOS mengeksekusi penghapusan di background
|
||||
for attempt in range(10):
|
||||
try:
|
||||
session.post(f"{api_url}/execute", json=del_payload, timeout=60)
|
||||
except Exception as e:
|
||||
print(f" Warning execute remove: {e}")
|
||||
|
||||
import time
|
||||
time.sleep(2)
|
||||
time.sleep(3)
|
||||
|
||||
# Verifikasi: cek apakah sudah benar-benar kosong
|
||||
try:
|
||||
res_check = session.get(f"{api_url}/ip/firewall/address-list",
|
||||
params={"list": list_name, ".proplist": ".id"}, timeout=10)
|
||||
remaining = len(res_check.json()) if res_check.status_code == 200 else -1
|
||||
except:
|
||||
remaining = -1
|
||||
|
||||
if remaining == 0:
|
||||
print(f" Address-list '{list_name}' bersih (percobaan {attempt + 1})")
|
||||
break
|
||||
elif remaining > 0:
|
||||
print(f" Sisa {remaining} entry, menghapus ulang...")
|
||||
else:
|
||||
print(f" Gagal verifikasi, lanjut...")
|
||||
break
|
||||
else:
|
||||
print(f" Warning: address-list mungkin belum sepenuhnya bersih setelah 10 percobaan")
|
||||
|
||||
import time
|
||||
time.sleep(1)
|
||||
|
||||
# 2. Add IP lewat eksekusi Batch Script (Mencegah Payload Too Large)
|
||||
print(f"Mengirim {len(ips)} address ke router secara batch... (±500 list per request)")
|
||||
|
||||
Reference in New Issue
Block a user