The Racora API
You run a Racora network by declaring two kinds of Kubernetes resources and reading what they report back. Nothing else in the cluster is yours to manage: the CU planes, the DUs, their configuration and the core's subscriber database are generated from these two.
| Resource | Group and version | Short name | Declares | Reconciled by |
|---|---|---|---|---|
NRCell | racora.io/v1alpha1 | cell | one cell: its carrier, radio, placement, neighbors and state | racora-controller |
Subscriber | racora.io/v1alpha1 | sim | one SIM: its IMSI and a Secret holding its keys | racora-core-controller |
Both are namespaced and live in racora-system, where the controllers watch.
Spec Is What You Want, Status Is What Happened
You write spec; the controller writes status. Three things write into an NRCell's
spec besides you: the controller fills in a temporary PCI when you declare none, the
Intelligence Plane retunes a PCI that collides, and automatic neighbor relations add and
remove the relations they own.
- An NRCell turns into a DU in
distributed-unit, an entry in the CU-CP's configuration, and on the first cell a CU plane scaled from zero. Its status carries the identity the controller assigned (sectorId,gnbDuId,nci), the PCI and where it came from, the applied neighbors, a phase and conditions (NRCell Status and Conditions). Delete the last cell and the CU plane scales back to zero. - A Subscriber turns into an entry in whichever core runs, through the core
provider's adapter. Its status says whether the SIM reached the core
(
Provisioned), is waiting, is wrong, or belongs to a core Racora does not provision (Add Subscribers).
What Is Not in the API
Install-time choices are chart values, not resources: the core provider, the network
identity (global.network), placement, the registry. You set them through the installer
or a values file, and the chart values reference lists
them. Runtime commands to the CU-CP and DUs exist for diagnostics
(Runtime Commands); a change made that way is not
recorded and does not survive a restart, which is why every operator change goes through
the resources above.
Every field, with its type, default and range, is in the NRCell API and Subscriber API references.