No description
  • Go 96.4%
  • Makefile 3.2%
  • Dockerfile 0.4%
Find a file
2026-07-07 03:10:36 +00:00
.forgejo/workflows chore(deps): update actions/checkout action to v7 2026-06-22 03:10:22 +00:00
api/v1alpha1 refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
cmd/worker M3: FederationLifecycleWorkflow happy path + Temporal worker scaffolding 2026-05-28 14:51:19 +02:00
config/crd/bases refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
db M2: Postgres protocol-state schema + migrations + integration test 2026-05-28 14:43:01 +02:00
docs M0: repo bootstrap for kcp-opg-ewbi-provider 2026-05-28 14:23:15 +02:00
internal refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
wire fix(deps): update go modules 2026-07-07 03:10:28 +00:00
.gitignore M0: repo bootstrap for kcp-opg-ewbi-provider 2026-05-28 14:23:15 +02:00
.goreleaser.yaml M0: repo bootstrap for kcp-opg-ewbi-provider 2026-05-28 14:23:15 +02:00
docker-compose.yaml chore(deps): update postgres docker tag to v17.10 2026-06-01 03:09:26 +00:00
Dockerfile chore(deps): update docker/dockerfile docker tag to v1.25 2026-06-22 03:10:21 +00:00
Dockerfile.goreleaser M0: repo bootstrap for kcp-opg-ewbi-provider 2026-05-28 14:23:15 +02:00
go.mod fix(deps): update go modules 2026-07-07 03:10:28 +00:00
go.sum fix(deps): update go modules 2026-07-07 03:10:28 +00:00
LICENSE M0: repo bootstrap for kcp-opg-ewbi-provider 2026-05-28 14:23:15 +02:00
main.go refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
Makefile M2: Postgres protocol-state schema + migrations + integration test 2026-05-28 14:43:01 +02:00
README.md refactor: rename API domain edge-connect.eu to edge-portal.eu 2026-06-10 10:23:04 +02:00
renovate.json M0: repo bootstrap for kcp-opg-ewbi-provider 2026-05-28 14:23:15 +02:00

kcp-opg-ewbi-provider

Direct E/WBI provider for the operator-federation.edge-portal.eu/v1alpha1 APIExport. Translates tenant federation intent directly into GSMA OPG.04 E/WBI HTTP toward peer operators, bypassing the opg.ewbi.nby.one Katalis CR-mirror layer.

This is the projection variant of the three-layer federation model described in ADR-0037: customer CRDs remain the canonical state; an internal domain model + Temporal workflow engine drive the E/WBI protocol outward; CRs are never used as the wire representation.

Sibling of kcp-katalis-provider. Both providers reconcile the same APIExport and are distinguished per CR via spec.providerRef.kind=EwbiDirectProvider (immutable post-creation, guarded by the managed-by annotation — invariants BP-3 / BP-7).

Status

M1 \u2014 OpenAPI codegen pipeline + ACL enforcement. wire/ is a separate Go module with pinned OPG.04 v1.3.0 types generated via oapi-codegen. The main module requires wire/ only via a local replace directive; only internal/mapper/ imports it; make verify-acl (wired into CI) fails the build if any other package imports a wire type. Subsequent milestones land per the plan.

References

  • Plan: edge-connect-architecture/plans/14-kcp-opg-ewbi-provider.md
  • Invariants: edge-connect-architecture/invariants/FB-04b.md
  • ADR: edge-connect-architecture/adr/0037-direct-ewbi-provider.md
  • Perplexity feedback (v1 \u2192 v2): edge-connect-architecture/plans/_perplexity-feedback-2026-05/14-kcp-opg-ewbi-provider.md

Layout

.
├── main.go                                  entry point
├── api/v1alpha1/                            EwbiDirectProvider CRD types
├── config/crd/bases/                        authored CRD manifests
├── internal/
│   ├── controller/                          reconcilers (M1+)
│   ├── domain/                              internal model (M1+) \u2014 MUST NOT import wire/
│   └── mapper/                              domain \u2194 wire translation (M1+)
├── wire/                                    OpenAPI-generated types (separate Go module per D7)
├── Dockerfile                               local dev build
├── Dockerfile.goreleaser                    distroless runtime image for releases
└── .goreleaser.yaml                         release pipeline

The wire/ directory is a separate Go module with its own go.mod. The main module deliberately does not declare it as a dependency \u2014 only the internal/mapper/ package will (introduced in M1). This is the compile-time enforcement of the anti-corruption layer (CP-2).

Build

make build           # → bin/kcp-opg-ewbi-provider
make test
make vet

License

Apache 2.0. See LICENSE.