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 / accepted events, 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-Key support, 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 sinkCredential stored 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_EXPIRED and DELETE_REQUESTED notifications and cleanup of terminated sessions after 360s.
  • sinkCredential support (https-only sinks, expiry checks, stop on 410 Gone), and x-correlator on callbacks.

Traffic Influence 0.10.0

  • POST/GET/DELETE /traffic-influences and POST /traffic-influence-devices.
  • The pinned appInstanceId is forwarded to SRM and SRM's selected instance is reported back. Device-scoped requests without IPv4 are rejected.
  • onTrafficinfluencechange webhooks, including a deleted notification.

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.
  • /readyz reports JWKS health and returns 503 when Keycloak is unreachable.
  • Ownership is scoped by the app_provider_id claim 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_capability operation 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 extend and retrieve-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.

Merge request reports

Loading
Loading