TP44 Teil B: CF-Sync-Job — VPC service_id-Feld + None-Match-Guard
Dry-Run-Befund: CloudService 'terpene-db' (VPC) wurde faelschlich als stale markiert und fremde extra_config in 'App Launcher' gemischt. Ursache: VPC- Directory-Services tragen ihren Identifier in "service_id", der Job las "id" (=None). Ueber .get(mk)==None matchte der None-Wert das erste Objekt ohne den Key. Fix: VPC nutzt v["service_id"]; _upsert ueberspringt mv=None generell. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -127,8 +127,10 @@ class CFEstateSync(Job):
|
||||
if not ok:
|
||||
skipped.append("connectivity/directory/services")
|
||||
for v in (vpc or []):
|
||||
services.append((v.get("name") or v.get("id"), "Cloudflare VPC Service", "VPC-Service",
|
||||
{"service_id": v.get("id"), "type": v.get("type")}, "service_id", v.get("id")))
|
||||
# VPC-Directory-Services tragen ihren Identifier in "service_id" (NICHT "id").
|
||||
sid = v.get("service_id") or v.get("id")
|
||||
services.append((v.get("name") or sid, "Cloudflare VPC Service", "VPC-Service",
|
||||
{"service_id": sid, "type": v.get("type")}, "service_id", sid))
|
||||
|
||||
ok, rts = self._cf_get(f"/accounts/{A}/teamnet/routes?per_page=50")
|
||||
if not ok:
|
||||
@@ -141,6 +143,11 @@ class CFEstateSync(Job):
|
||||
|
||||
# ---------------------------------------------------------------- ORM-Upsert
|
||||
def _upsert(self, model, cache, name, rt, acct, desc, extra, mk, mv, label, seen, dryrun):
|
||||
# mv=None nie matchen: sonst greift .get(mk)==None auf das erste Objekt OHNE mk
|
||||
# und mischt fremde extra_config zusammen (z.B. VPC ohne id -> App-Launcher).
|
||||
if mv is None:
|
||||
self.logger.warning("~ %s '%s' ohne Match-Wert (%s) — uebersprungen", label, name, mk)
|
||||
return None
|
||||
ex = next((o for o in cache if (o.extra_config or {}).get(mk) == mv), None)
|
||||
if ex:
|
||||
seen.add(ex.id)
|
||||
|
||||
Reference in New Issue
Block a user