Skip to content

Commit c12b314

Browse files
fix: update sync_full_update_resource to use backend /full-update endpoint
- Simplified to use the backend's dedicated /full-update endpoint - This ensures all sync stages are executed (previously only 4 of 12) - Updated docs to reflect full update includes replications and backup routines
1 parent 7ddc91a commit c12b314

File tree

2 files changed

+8
-42
lines changed

2 files changed

+8
-42
lines changed

docs/features/synchronized-data.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The current plugin path is job-based and stream-backed:
2222
| `sync/virtual-machines/virtual-disks/` | `GET /virtualization/virtual-machines/virtual-disks/create/stream` | Queue virtual disk synchronization |
2323
| `sync/virtual-machines/backups/` | `GET /virtualization/virtual-machines/backups/all/create/stream` | Queue backup synchronization |
2424
| `sync/virtual-machines/snapshots/` | `GET /virtualization/virtual-machines/snapshots/all/create/stream` | Queue snapshot synchronization |
25-
| `sync/full-update/` | `GET /full-update/stream` | Queue full update (devices, storage, VMs, disks, backups, snapshots) |
25+
| `sync/full-update/` | `GET /full-update/stream` | Queue full update (devices, storage, VMs, disks, backups, snapshots, replications, backup routines) |
2626

2727
## Progress Messages
2828

netbox_proxbox/services/backend_proxy.py

Lines changed: 7 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -421,48 +421,14 @@ def sync_resource(
421421
def sync_full_update_resource(
422422
query_params: dict | None = None,
423423
) -> tuple[dict[str, object], int]:
424-
"""Run devices, VMs, then backups stages against the backend in sequence."""
424+
"""Run full update against the backend's dedicated /full-update endpoint."""
425425
context = get_fastapi_request_context()
426426
if context is None or not context.http_url:
427427
return {"queued": False, "detail": "No FastAPI URL found."}, 404
428428

429-
requested_urls: list[str] = []
430-
steps = [
431-
("devices", "dcim/devices/create"),
432-
("virtual-machines", "virtualization/virtual-machines/create"),
433-
("backups", "virtualization/virtual-machines/backups/all/create"),
434-
("snapshots", "virtualization/virtual-machines/snapshots/all/create"),
435-
]
436-
responses: dict[str, dict] = {}
437-
438-
for stage, path in steps:
439-
step_params = dict(query_params or {})
440-
if _LONG_RUNNING_BACKUP_PATH_MARKER in path:
441-
step_params["delete_nonexistent_backup"] = True
442-
if _LONG_RUNNING_SNAPSHOT_PATH_MARKER in path:
443-
step_params["delete_nonexistent_snapshot"] = True
444-
qp = step_params if step_params else None
445-
payload, status = request_backend_resource(
446-
context,
447-
path,
448-
query_params=qp,
449-
timeout=http_timeout_for_sync_path(path),
450-
)
451-
requested_urls.extend(payload.get("requested_urls", []))
452-
if status >= 400:
453-
return {
454-
"queued": False,
455-
"path": "full-update",
456-
"stage": stage,
457-
"requested_urls": requested_urls,
458-
"detail": payload.get("detail", "Unable to reach the ProxBox backend."),
459-
}, status
460-
responses[stage] = payload.get("response", {})
461-
462-
return {
463-
"queued": True,
464-
"path": "full-update",
465-
"requested_urls": requested_urls,
466-
"detail": "Full update sync completed successfully.",
467-
"response": responses,
468-
}, 202
429+
return request_backend_resource(
430+
context,
431+
"full-update",
432+
query_params=query_params,
433+
timeout=http_timeout_for_sync_path("full-update"),
434+
)

0 commit comments

Comments
 (0)