Skip to main content

NRCell Status and Conditions

The spec of an NRCell is yours; its status is the controller's. This page lists what the controller writes there and what each value means. The field-by-field schema is the NRCell API; what to do when a cell is stuck is Troubleshoot.

What kubectl get nrcell Shows​

NAME PCI PCI-SOURCE SECTOR DU-ID NCI BAND PHASE AGE
nr-n78-b210 1 spec 0 0 0x66C000 78 ConfigGenerated 3m
ColumnField
PCIspec.pci, which the controller fills in when you leave it out
PCI-SOURCEstatus.pciSource
SECTOR, DU-ID, NCIstatus.sectorId, status.gnbDuId, status.nci
BANDspec.band
PHASEstatus.phase

Phase​

status.phaseMeaning
Pendingthe cell had no spec.pci; the controller assigned a temporary one and the reconcile that generates the DU follows
ConfigGeneratedthe identity is resolved and the DU configuration is generated; the DU Deployment exists
Errorthe reconcile stopped; the conditions say why, and no DU is generated or updated; a DU that already exists keeps running its last configuration

Identity​

Assigned once, on the cell's first reconcile, and stable for the life of the cell. You never set these; a legacy sectorId in a cell's spec is ignored.

FieldValue
sectorIdthe lowest free sector id under the gNB, from 0 up to 16383; a gap left by a deleted cell is refilled before the range extends
gnbDuIdequal to sectorId (one DU per cell)
gnbIdthe CU-wide gNB id the controller is configured with (racora-controller chart value gnbId, default 411)
ncithe NR Cell Identity computed from gnbId and sectorId, as hex
nciDecimalthe same value as an integer, which the CU-CP's runtime commands take
identitySourcealways controller

Two cells declared in one apply get distinct identities: allocation is serialised in the controller.

PCI Provenance​

FieldValue
pciSourcespec when you set spec.pci; controller-temp when the controller filled it from the temporary pool 1002 to 1007; controller-retuned once a CU-IP decision replaced it
pciAssignedAtwhen the controller assigned or retuned the PCI
lastRetunethe most recent retune the controller applied: from, to, ts, the decision's reason tags and its decisionId

Both fields are written on the first reconcile, on a temporary allocation and on a CU-IP retune; editing spec.pci by hand later refreshes neither. A cell with pciSource: controller-temp keeps that PCI until the Intelligence Plane runs and a PCI decision arrives (the decision loop).

Decisions and Neighbors​

FieldValue
lastApplied.<function>per Intelligence Function (pci, anr): the ts and decisionId of the last decision applied to this cell; the controller reads it before applying the next one
neighbors[]the relations in effect: nrCellRef, the neighbor's nci, its reportConfigs, its source (manual for a relation declared in spec.neighbors, anr for one written by an ANR decision; ANR only ever removes relations it created) and appliedAt, kept across later applies

Conditions​

The controller writes a condition only when something needs saying: a cell that reconciles cleanly from the start carries none. Each condition has type, status, reason, message and lastTransitionTime. Only ConfigGenerated and ReportConfigConflict are maintained afterwards; a cell that recovered from PCIAllocated=False or IdentityAllocated=False keeps that condition on the object.

ConditionStatusReasonMeaning
PCIAllocatedFalseTempPCIPoolExhaustedthe cell has no spec.pci and all six temporary PCIs (1002 to 1007) are held by other cells; phase Error
IdentityAllocatedFalseSectorIdSpaceExhaustedevery sector id under the gNB is assigned; phase Error
ConfigGeneratedFalsePlmnNotServedspec.plmn is not the network identity's PLMN (global.network.plmn); phase Error, and a Warning Event on the cell
ConfigGeneratedFalseTacNotServedspec.tac is not one of the network identity's tracking areas; phase Error, and a Warning Event on the cell
ConfigGeneratedFalseUnsupportedRadioBackendspec.radioBackend.ruType is one the DU generator cannot produce; phase Error. The CRD's enum rejects any value but uhd, zmq and dummy at apply time, so this is reached only when the schema and the controller disagree
ConfigGeneratedTrueGeneratedwritten when a cell that carried a ConfigGenerated=False condition is corrected and its DU is generated
ReportConfigConflictTrueDuplicateReportCfgIdanother cell already defines one of this cell's mobility.reportConfigs ids differently; the lexicographically first definition is in effect
ReportConfigConflictFalseResolvedthe conflict this cell carried is gone

The Events the controller posts for an identity mismatch are visible with kubectl -n racora-system describe nrcell <name>.