/
RanListManager Design

RanListManager Design

RanListManager

  • An optimization suggestion (APPROVED) - instead managing a list of []*NbIdentity, manage a map of [string]*NbIdentity, where key is inventoryName and value is the nbIdentity.


RanListManager
type RanListManager struct {
	rnibDataService services.RNibDataService
	mux sync.Mutex
	nbIdentityMap map[string]*NbIdentity
}

type IRanListManager interface {
	InitNbIdentityMap() error
	AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error
	UpdateNbIdentityConnectionStatus(nodeType entities.Node_Type, ranName string, connectionStatus entities.ConnectionStatus) error
	RemoveNbIdentity(nodeType entities.Node_Type, ranName string) error
	GetNbIdentityList() []*entities.NbIdentity
}

InitNbIdentityList


  • Triggered on application init, fetches nb identity list from DB and populate nbIdentityMap data member.
  • rnib error → os.Exit(1)


AddNbIdentity

SaveNodeb Calls will be followed by a ranListManager.AddNbIdentity(nodeType, nbIdentity) call.

AFFECTED FLOWS

  • Add Enb REST API
  • E2 Setup Request coming from NW


Add Enb REST API

E2 Setup Request coming from NW

UpdateNbIdentityConnectionStatus


  • Affects the call to RanStateChangeManager.ChangeStatus in the following flows: Lost Connection | E2T Init | E2T Shutdown | E2 Setup | Red Button 
  • Does not affect Update Enb since it's always DISCONNECTED



RanStateChangeManager


RemoveNbIdentity


  • RemoveEnb call will be followed by ranListManager.RemoveNbIdentity(nodeType, nbIdentity) call
  • Currently, there's no RemoveGnb method (there's only RemoveServedNrCells)

AFFECTED FLOWS

  • Delete Enb REST API

Delete ENB REST API

GetNbIdentityList

  • Returns the in-memory nbIdentity list (iterate map values and append to a []*NbIdentity slice)
  • Affected flows: Get Nodeb Ids REST API & Red Button

Get Nodeb States REST API

  • Change url from /v1/nodeb/ids to /v1/nodeb/states
  • Add ConnectionStatus property to NbIdentity proto (already pushed)
  • Get nbIdentity list from memory instead of DB



Red Button REST API

  • Similarly, get nbIdentity list from memory instead of DB

RnibWriter Changes

Modify

We shall modify the following methods:

  • SaveNodeb(nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo) error
    • Change signature to: SaveNodeb(nodebInfo *entities.NodebInfo) error
    • Modify implementation:
      • Remove UNKNOWN nodeType handling (reason: setup is now deterministic)
      • Remove save nbIdentity code - it would be called sequentially externally

  • RemoveEnb(nodebInfo *entities.NodebInfo) error
    • Modify implementation:
      • Delete remove nbIdentity code - it would be called sequentially externally

Add

AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error
UpdateNbIdentities(nodeType entities.Node_Type, oldNbIdentities []*entities.NbIdentity, newNbIdentities []*entities.NbIdentity) error
RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error

RnibReader Changes

Modify

We shall modify the following methods:

  • GetListNodebIds() ([]*entities.NbIdentity, error)
    • Remove UNKNOWN nodeType handling (reason: setup is now deterministic)


Optimization suggestions



Related content

R2 Recovery Design [Init | LostConnection]
R2 Recovery Design [Init | LostConnection]
More like this
Add/Update/Delete eNB & Update gNB REST APIs Design
Add/Update/Delete eNB & Update gNB REST APIs Design
More like this
Multiple E2T Instances Design
Multiple E2T Instances Design
More like this
Removal of E2Session and use of the RNIB instead
Removal of E2Session and use of the RNIB instead
More like this
Reject Connection Setup Requests Design
Reject Connection Setup Requests Design
More like this
E2M - State Machine
E2M - State Machine
More like this