type RNibWriter interface {
SaveNodeb(nodebInfo *entities.NodebInfo) error
UpdateNodebInfo(nodebInfo *entities.NodebInfo) error
+ UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error
SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error
SaveE2TInstance(e2tInstance *entities.E2TInstance) error
SaveE2TAddresses(addresses []string) error
UpdateEnb(nodebInfo *entities.NodebInfo, servedCells []*entities.ServedCellInfo) error
AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error
RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error
+ AddEnb(nodebInfo *entities.NodebInfo) error
}
/*
return &rNibWriterInstance{sdl: sdl, rnibWriterConfig: rnibWriterConfig}
}
+func getChannelsAndEventsPair(channel string, ranName string, event string) []string {
+ return []string{channel, fmt.Sprintf("%s_%s", ranName, event)}
+}
+
func (w *rNibWriterInstance) AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error {
nbIdData, err := proto.Marshal(nbIdentity)
}
}
- if nodebInfo.GetNodeType() == entities.Node_ENB {
- err = w.sdl.SetAndPublish([]string{w.rnibWriterConfig.RanManipulationMessageChannel, fmt.Sprintf("%s_%s", nodebInfo.RanName, RanAddedEvent)}, pairs)
- } else {
- err = w.sdl.Set(pairs)
+ err = w.sdl.Set(pairs)
+
+ if err != nil {
+ return common.NewInternalError(err)
}
+ return nil
+}
+
+func (w *rNibWriterInstance) AddEnb(nodebInfo *entities.NodebInfo) error {
+
+ data, err := proto.Marshal(nodebInfo)
+
+ if err != nil {
+ return common.NewInternalError(err)
+ }
+
+ var pairs []interface{}
+ key, rNibErr := common.ValidateAndBuildNodeBNameKey(nodebInfo.RanName)
+
+ if rNibErr != nil {
+ return rNibErr
+ }
+
+ pairs = append(pairs, key, data)
+
+ if nodebInfo.GlobalNbId != nil {
+
+ key, rNibErr = common.ValidateAndBuildNodeBIdKey(nodebInfo.GetNodeType().String(), nodebInfo.GlobalNbId.GetPlmnId(), nodebInfo.GlobalNbId.GetNbId())
+ if rNibErr != nil {
+ return rNibErr
+ }
+ pairs = append(pairs, key, data)
+ }
+
+ pairs, rNibErr = appendEnbCells(nodebInfo.RanName, nodebInfo.GetEnb().GetServedCells(), pairs)
+ if rNibErr != nil {
+ return rNibErr
+ }
+
+ channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanAddedEvent)
+ err = w.sdl.SetAndPublish(channelsAndEvents, pairs)
if err != nil {
return common.NewInternalError(err)
}
return err
}
- err = w.sdl.Set(pairs)
+ channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanUpdatedEvent)
+ err = w.sdl.SetAndPublish(channelsAndEvents, pairs)
if err != nil {
return common.NewInternalError(err)
return nil
}
-/*
-UpdateNodebInfo...
-*/
-func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error {
+func (w *rNibWriterInstance) updateNodebInfo(nodebInfo *entities.NodebInfo, publish bool) error {
pairs, err := buildUpdateNodebInfoPairs(nodebInfo)
return err
}
- err = w.sdl.Set(pairs)
+ if publish {
+ channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanUpdatedEvent)
+ err = w.sdl.SetAndPublish(channelsAndEvents, pairs)
+ } else {
+ err = w.sdl.Set(pairs)
+ }
if err != nil {
return common.NewInternalError(err)
return nil
}
+/*
+UpdateNodebInfo...
+*/
+func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error {
+ return w.updateNodebInfo(nodebInfo, false)
+}
+
+/*
+UpdateNodebInfoAndPublish...
+*/
+func (w *rNibWriterInstance) UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error {
+ return w.updateNodebInfo(nodebInfo, true)
+}
+
+
/*
SaveRanLoadInformation stores ran load information for the provided ran
*/
return err
}
- err = w.sdl.RemoveAndPublish([]string{w.rnibWriterConfig.RanManipulationMessageChannel, fmt.Sprintf("%s_%s", nodebInfo.RanName, RanDeletedEvent)}, keysToRemove)
+ channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanDeletedEvent)
+ err = w.sdl.RemoveAndPublish(channelsAndEvents, keysToRemove)
if err != nil {
return common.NewInternalError(err)
return err
}
- err = w.sdl.SetAndPublish([]string{w.rnibWriterConfig.RanManipulationMessageChannel, fmt.Sprintf("%s_%s", nodebInfo.RanName, RanUpdatedEvent)}, pairs)
+ channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanUpdatedEvent)
+ err = w.sdl.SetAndPublish(channelsAndEvents, pairs)
if err != nil {
return common.NewInternalError(err)
pairs = append(pairs, key, cellData)
}
return pairs, nil
-}
\ No newline at end of file
+}