X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=reader%2FrNibReader.go;h=c12a2c86fe2b723cca0ca30ee4fec051c8f326c0;hb=refs%2Ftags%2Fcommon%2Fv1.2.7;hp=8abaf8187f3e29465d1ca88714ab8cbd25afafc1;hpb=718326d71c35bf7af233e8e3e32630bc55c60610;p=ric-plt%2Fnodeb-rnib.git diff --git a/reader/rNibReader.go b/reader/rNibReader.go index 8abaf81..c12a2c8 100644 --- a/reader/rNibReader.go +++ b/reader/rNibReader.go @@ -14,6 +14,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + package reader import ( @@ -24,10 +27,12 @@ import ( "reflect" ) -const E2TInfoListKey = "E2TInfoList" +const E2TAddressesKey = "E2TAddresses" type rNibReaderInstance struct { - sdl common.ISdlInstance + sdl common.ISdlInstance //Deprecated: Will be removed in a future release and replaced by sdlStorage + sdlStorage common.ISdlSyncStorage + ns string } /* @@ -57,15 +62,48 @@ type RNibReader interface { GetE2TInstance(address string) (*entities.E2TInstance, error) - GetE2TInfoList() ([]*entities.E2TInstanceInfo, error) + GetE2TInstances(addresses []string) ([]*entities.E2TInstance, error) + + GetE2TAddresses() ([]string, error) + + GetGeneralConfiguration() (*entities.GeneralConfiguration, error) + GetRanFunctionDefinition(inventoryName string, Oid string) ([]string, error) } -/* -GetRNibReader returns reference to RNibReader -*/ +//GetNewRNibReader returns reference to RNibReader +func GetNewRNibReader(storage common.ISdlSyncStorage) RNibReader { + return &rNibReaderInstance{ + sdl: nil, + sdlStorage: storage, + ns: common.GetRNibNamespace(), + } +} + +//GetRanFunctionDefinition from the OID +func (w *rNibReaderInstance) GetRanFunctionDefinition(inventoryName string, oid string) ([]string, error){ + nb, err := w.GetNodeb (inventoryName) + if (nb.GetGnb() != nil) { + ranFunction := nb.GetGnb().RanFunctions + functionDefinitionList := make([]string, 0) + for _, ranFunction := range ranFunction { + if (oid == ranFunction.RanFunctionOid) { + functionDefinitionList = append(functionDefinitionList ,ranFunction.RanFunctionDefinition) + } + } + return functionDefinitionList, err + } + return nil, common.NewResourceNotFoundErrorf("#rNibReader.GetCellList - served cells not found. Responding node RAN name: % s.", inventoryName) +} + +//GetRNibReader returns reference to RNibReader +//Deprecated: Will be removed in a future release, please use GetNewRNibReader instead. func GetRNibReader(sdl common.ISdlInstance) RNibReader { - return &rNibReaderInstance{sdl: sdl} + return &rNibReaderInstance{ + sdl: sdl, + sdlStorage: nil, + ns: "", + } } func (w *rNibReaderInstance) GetNodeb(inventoryName string) (*entities.NodebInfo, error) { @@ -122,7 +160,13 @@ func (w *rNibReaderInstance) GetListEnbIds() ([]*entities.NbIdentity, error) { } func (w *rNibReaderInstance) GetCountGnbList() (int, error) { - size, err := w.sdl.GroupSize(entities.Node_GNB.String()) + var size int64 + var err error + if w.sdlStorage != nil { + size, err = w.sdlStorage.GroupSize(w.ns, entities.Node_GNB.String()) + } else { + size, err = w.sdl.GroupSize(entities.Node_GNB.String()) + } if err != nil { return 0, common.NewInternalError(err) } @@ -164,20 +208,25 @@ func (w *rNibReaderInstance) GetCellById(cellType entities.Cell_Type, cellId str } func (w *rNibReaderInstance) GetListNodebIds() ([]*entities.NbIdentity, error) { - dataEnb, err := w.sdl.GetMembers(entities.Node_ENB.String()) - if err != nil { - return nil, common.NewInternalError(err) + var dataEnb, dataGnb []string + var err error + if w.sdlStorage != nil { + dataEnb, err = w.sdlStorage.GetMembers(w.ns, entities.Node_ENB.String()) + } else { + dataEnb, err = w.sdl.GetMembers(entities.Node_ENB.String()) } - dataGnb, err := w.sdl.GetMembers(entities.Node_GNB.String()) if err != nil { return nil, common.NewInternalError(err) } - dataUnknown, err := w.sdl.GetMembers(entities.Node_UNKNOWN.String()) + if w.sdlStorage != nil { + dataGnb, err = w.sdlStorage.GetMembers(w.ns, entities.Node_GNB.String()) + } else { + dataGnb, err = w.sdl.GetMembers(entities.Node_GNB.String()) + } if err != nil { return nil, common.NewInternalError(err) } allIds := append(dataEnb, dataGnb...) - allIds = append(allIds, dataUnknown...) data, rnibErr := w.unmarshalIdentityList(allIds) return data, rnibErr } @@ -208,17 +257,70 @@ func (w *rNibReaderInstance) GetE2TInstance(address string) (*entities.E2TInstan return e2tInstance, err } -func (w *rNibReaderInstance) GetE2TInfoList() ([]*entities.E2TInstanceInfo, error) { - e2tInfoList := []*entities.E2TInstanceInfo{} - err := w.getByKeyAndUnmarshalJson(E2TInfoListKey, &e2tInfoList) +func (w *rNibReaderInstance) GetE2TInstances(addresses []string) ([]*entities.E2TInstance, error) { + var data map[string]interface{} + var err error + + keys := common.MapE2TAddressesToKeys(addresses) + + e2tInstances := []*entities.E2TInstance{} + + if w.sdlStorage != nil { + data, err = w.sdlStorage.Get(w.ns, keys) + } else { + data, err = w.sdl.Get(keys) + } + + if err != nil { + return []*entities.E2TInstance{}, common.NewInternalError(err) + } + + if len(data) == 0 { + return []*entities.E2TInstance{}, common.NewResourceNotFoundErrorf("#rNibReader.GetE2TInstances - e2t instances not found") + } + + for _, v := range keys { + + if data[v] != nil { + var e2tInstance entities.E2TInstance + err = json.Unmarshal([]byte(data[v].(string)), &e2tInstance) + if err != nil { + continue + } + + e2tInstances = append(e2tInstances, &e2tInstance) + } + } + + return e2tInstances, nil +} + +func (w *rNibReaderInstance) GetE2TAddresses() ([]string, error) { + var e2tAddresses []string + err := w.getByKeyAndUnmarshalJson(E2TAddressesKey, &e2tAddresses) if err != nil { return nil, err } - return e2tInfoList, err + return e2tAddresses, err +} + +func (w *rNibReaderInstance) GetGeneralConfiguration() (*entities.GeneralConfiguration, error) { + config := &entities.GeneralConfiguration{} + key := common.BuildGeneralConfigurationKey() + + err := w.getByKeyAndUnmarshalJson(key, config) + + return config, err } func (w *rNibReaderInstance) getByKeyAndUnmarshalJson(key string, entity interface{}) error { - data, err := w.sdl.Get([]string{key}) + var data map[string]interface{} + var err error + if w.sdlStorage != nil { + data, err = w.sdlStorage.Get(w.ns, []string{key}) + } else { + data, err = w.sdl.Get([]string{key}) + } if err != nil { return common.NewInternalError(err) @@ -235,7 +337,14 @@ func (w *rNibReaderInstance) getByKeyAndUnmarshalJson(key string, entity interfa } func (w *rNibReaderInstance) getByKeyAndUnmarshal(key string, entity proto.Message) error { - data, err := w.sdl.Get([]string{key}) + var data map[string]interface{} + var err error + if w.sdlStorage != nil { + data, err = w.sdlStorage.Get(w.ns, []string{key}) + } else { + data, err = w.sdl.Get([]string{key}) + } + if err != nil { return common.NewInternalError(err) } @@ -250,7 +359,13 @@ func (w *rNibReaderInstance) getByKeyAndUnmarshal(key string, entity proto.Messa } func (w *rNibReaderInstance) getListNodebIdsByType(nbType string) ([]*entities.NbIdentity, error) { - data, err := w.sdl.GetMembers(nbType) + var data []string + var err error + if w.sdlStorage != nil { + data, err = w.sdlStorage.GetMembers(w.ns, nbType) + } else { + data, err = w.sdl.GetMembers(nbType) + } if err != nil { return nil, common.NewInternalError(err) }