Loading
Release 2.0.0: rewritten OEG with CAMARA QoD, Traffic Influence, Location Retrieval, EAM and GSMA federation
Summary
This MR brings main up to the OEG 2.0.0 codebase on develop (version 0.1.0 → 2.0.0, 324 commits, ~200 files).
The gateway has been rewritten. It now sends commands to SRM over NATS and gets results back as events, keeps its own state in Postgres, and validates every token against Keycloak.
APIs served
| API | Version | Path |
|---|---|---|
| CAMARA Edge Application Management | 0.1.0-alpha.1 | /apps, /appinstances, /deployments |
| CAMARA Quality on Demand | 1.1.0 | /sessions |
| CAMARA Traffic Influence | 0.10.0 | /traffic-influences, /traffic-influence-devices |
| CAMARA Location Retrieval | 0.5.0 | /retrieve |
| GSMA OPG.04 Federation Management (relay to FM) | 1.4.0 | /platform/v1/federation/... |
What's new
Architecture
- Hexagonal layout (
api/application/domain/ports/adapters) replaces the old controller-based code. - Async command/event flow to SRM over NATS: we save operations to Postgres before publishing, consume
operation.completed/operation.status/acceptedevents, guard state changes with transition tables, and handle duplicate or out-of-order completions idempotently. - A reconciliation loop recovers operations stranded by a lost completion event and expires QoD sessions when their duration ends.
Edge Application Management
POST/GET/DELETE /apps,POST/GET/DELETE /appinstances,POST/GET/DELETE /deployments(multi-zone fan-out with a rolled-up deployment state).Idempotency-Keysupport, 409 on a duplicate instance/zone, and blocked app delete while instances are running.- Failed instances stay visible and can be deleted (no SRM terminate when the deploy never started).
- CloudEvents callbacks, including
sinkCredentialstored encrypted (AES-GCM) and sent as a bearer token.
Quality on Demand v1.1.0
- Async create/delete through SRM activate/deactivate, and GET served from the DB.
- 409 when a device already has a session, plus
DURATION_EXPIREDandDELETE_REQUESTEDnotifications and cleanup of terminated sessions after 360s. sinkCredentialsupport (https-only sinks, expiry checks, stop on 410 Gone), andx-correlatoron callbacks.
Traffic Influence 0.10.0
- POST/GET/DELETE
/traffic-influencesand POST/traffic-influence-devices. - The pinned
appInstanceIdis forwarded to SRM and SRM's selected instance is reported back. Device-scoped requests without IPv4 are rejected. onTrafficinfluencechangewebhooks, including adeletednotification.
Location Retrieval 0.5.0
- Synchronous query via SRM
/internal, with SRM 422 translated to CAMARA errors.
Federation (GSMA OPG.04 v1.4.0)
- OEG relays the federation lifecycle to FM over HTTP: create/get/delete federation, zones, partner registry, identity, and agreements. Request bodies are validated for shape, and FM 409/501 answers are relayed.
- Federation routes require the operator role.
Security
- Keycloak JWT validation (JWKS), per-operation CAMARA scope and role checks, and a watch-only enforcement flag.
/readyzreports JWKS health and returns 503 when Keycloak is unreachable.- Ownership is scoped by the
app_provider_idclaim on EAM, QoD and TI reads, deletes and app references.
Ops
- JSON logging with one correlation id per request, and the real package version in the health endpoints.
- Dockerfile, uv-locked dependencies, and GitLab CI build/push stages.
- Legacy
network_capabilityoperation types are migrated on startup.
Breaking changes
- The old codebase and its routes are removed, including the QoD v0 routes and the non-canonical location alias. Clients must use the versioned paths above.
- Runtime now requires Postgres, NATS, Keycloak, SRM (and FM for federation routes). Deployments need the 2.0 configuration.
Known limitations (stubs, return 501)
PATCH /deployments,GET /clusters- QoD
extendandretrieve-sessions, plus the qos-profiles routes PATCH /traffic-influences/{id}
Testing
- Unit, flow, conformance (CAMARA schema) and integration tests (Postgres) run in CI.
- End-to-end on kind with helm, SRM (tf-sdk) and the NEF coresim: Location, QoD (4 profiles), EAM deploy/terminate and TI device all pass.