X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2FrNibWriter%2FrNibWriter.go;h=3186d7037622f7a1619608c5bc3a3251add92e84;hb=refs%2Fheads%2FPI5;hp=f9f75bd77c21579b0a415ca43c07ff5eaa25c326;hpb=08bbf91d9f5afd6ecd6eeb9bcc8c160b8242d1ec;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/rNibWriter/rNibWriter.go b/E2Manager/rNibWriter/rNibWriter.go index f9f75bd..3186d70 100644 --- a/E2Manager/rNibWriter/rNibWriter.go +++ b/E2Manager/rNibWriter/rNibWriter.go @@ -44,6 +44,9 @@ type RNibWriter interface { SaveE2TAddresses(addresses []string) error RemoveE2TInstance(e2tAddress string) error UpdateGnbCells(nodebInfo *entities.NodebInfo, servedNrCells []*entities.ServedNRCell) error + RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error + UpdateNodebInfoOnConnectionStatusInversion(nodebInfo *entities.NodebInfo, stateChangeMessageChannel string, event string) error + SaveGeneralConfiguration(config *entities.GeneralConfiguration) error } /* @@ -54,6 +57,29 @@ func GetRNibWriter(sdl common.ISdlInstance) RNibWriter { return &rNibWriterInstance{sdl: sdl} } + +func (w *rNibWriterInstance) RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error { + cellKeysToRemove := buildCellKeysToRemove(inventoryName, servedNrCells) + err := w.sdl.Remove(cellKeysToRemove) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +func (w *rNibWriterInstance) SaveGeneralConfiguration(config *entities.GeneralConfiguration) error { + + err := w.SaveWithKeyAndMarshal(common.BuildGeneralConfigurationKey(), config) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + /* SaveNodeb saves nodeB entity data in the redis DB according to the specified data model */ @@ -148,6 +174,28 @@ func (w *rNibWriterInstance) UpdateGnbCells(nodebInfo *entities.NodebInfo, serve return nil } +func buildCellKeysToRemove(inventoryName string, servedNrCellsToRemove []*entities.ServedNRCell) []string { + + cellKeysToRemove := []string{} + + for _, cell := range servedNrCellsToRemove { + + key, _ := common.ValidateAndBuildNrCellIdKey(cell.GetServedNrCellInformation().GetCellId()) + + if len(key) != 0 { + cellKeysToRemove = append(cellKeysToRemove, key) + } + + key, _ = common.ValidateAndBuildCellNamePciKey(inventoryName, cell.GetServedNrCellInformation().GetNrPci()) + + if len(key) != 0 { + cellKeysToRemove = append(cellKeysToRemove, key) + } + } + + return cellKeysToRemove +} + func buildUpdateNodebInfoPairs(nodebInfo *entities.NodebInfo) ([]interface{}, error) { nodebNameKey, rNibErr := common.ValidateAndBuildNodeBNameKey(nodebInfo.GetRanName()) @@ -280,6 +328,46 @@ func (w *rNibWriterInstance) RemoveE2TInstance(address string) error { return nil } +func (w *rNibWriterInstance) SaveWithKeyAndMarshal(key string, entity interface{}) error { + + data, err := json.Marshal(entity) + + if err != nil { + return common.NewInternalError(err) + } + + var pairs []interface{} + pairs = append(pairs, key, data) + + err = w.sdl.Set(pairs) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +/* +UpdateNodebInfoOnConnectionStatusInversion... +*/ +func (w *rNibWriterInstance) UpdateNodebInfoOnConnectionStatusInversion(nodebInfo *entities.NodebInfo, stateChangeMessageChannel string, event string) error { + + pairs, err := buildUpdateNodebInfoPairs(nodebInfo) + + if err != nil { + return err + } + + err = w.sdl.SetAndPublish([]string{stateChangeMessageChannel, event}, pairs) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + /* Close the writer */ @@ -331,4 +419,4 @@ func appendGnbCells(inventoryName string, cells []*entities.ServedNRCell, pairs func isNotEmpty(nbIdentity *entities.NbIdentity) bool { return nbIdentity.GlobalNbId != nil && nbIdentity.GlobalNbId.PlmnId != "" && nbIdentity.GlobalNbId.NbId != "" -} +} \ No newline at end of file