// // Copyright 2019 AT&T Intellectual Property // Copyright 2019 Nokia // Copyright 2023 Capgemini // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // 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 common import ( "fmt" ) //SDL namespace used by the RNIB const rnibNamespace = "e2Manager" /* ValidateAndBuildCellIdKey builds key according to the specified format returns the resulting string */ func ValidateAndBuildCellIdKey(cellId string) (string, error) { if cellId == "" { return "", NewValidationError("#utils.ValidateAndBuildCellIdKey - an empty cell id received") } return fmt.Sprintf("CELL:%s", cellId), nil } /* ValidateAndBuildNrCellIdKey builds key according to the specified format returns the resulting string */ func ValidateAndBuildNrCellIdKey(cellId string) (string, error) { if cellId == "" { return "", NewValidationError("#utils.ValidateAndBuildNrCellIdKey - an empty cell id received") } return fmt.Sprintf("NRCELL:%s", cellId), nil } /* ValidateAndBuildNodeBNameKey builds key according to the specified format returns the resulting string */ func ValidateAndBuildNodeBNameKey(inventoryName string) (string, error) { if inventoryName == "" { return "", NewValidationError("#utils.ValidateAndBuildNodeBNameKey - an empty inventory name received") } return fmt.Sprintf("RAN:%s", inventoryName), nil } /* ValidateAndBuildNodeBIdKey builds key according to the specified format returns the resulting string */ func ValidateAndBuildNodeBIdKey(nodeType string, plmnId string, nbId string, cuupId string, duId string) (string, error) { if nodeType == "" { return "", NewValidationError("#utils.ValidateAndBuildNodeBIdKey - an empty node type received") } if plmnId == "" { return "", NewValidationError("#utils.ValidateAndBuildNodeBIdKey - an empty plmnId received") } if nbId == "" { return "", NewValidationError("#utils.ValidateAndBuildNodeBIdKey - an empty nbId received") } /*Note: Deployment where CU-UP and DU are combined (but do not include the CP-CP) and have a single E2 connection is not supported. The combination of CU-CP, CU-UP, and DU will be treated as a single gNB and expect it to have only the global gNB ID in its E2 Setup ID*/ if cuupId != "" && duId != ""{ return fmt.Sprintf("%s:%s:%s", nodeType, plmnId, nbId), nil }else if cuupId != "" { return fmt.Sprintf("%s:%s:%s:%s", nodeType, plmnId, nbId, cuupId), nil }else if duId != "" { return fmt.Sprintf("%s:%s:%s:%s", nodeType, plmnId, nbId, duId ), nil }else { return fmt.Sprintf("%s:%s:%s", nodeType, plmnId, nbId), nil } } /* ValidateAndBuildCellNamePciKey builds key according to the specified format returns the resulting string */ func ValidateAndBuildCellNamePciKey(inventoryName string, pci uint32) (string, error) { if inventoryName == "" { return "", NewValidationError("#utils.ValidateAndBuildCellNamePciKey - an empty inventory name received") } return fmt.Sprintf("PCI:%s:%02x", inventoryName, pci), nil } func ValidateAndBuildRanLoadInformationKey(inventoryName string) (string, error) { if inventoryName == "" { return "", NewValidationError("#utils.ValidateAndBuildRanLoadInformationKey - an empty inventory name received") } return fmt.Sprintf("LOAD:%s", inventoryName), nil } func ValidateAndBuildE2TInstanceKey(address string) (string, error) { if address == "" { return "", NewValidationError("#utils.ValidateAndBuildE2TInstanceKey - an empty E2T address received") } return fmt.Sprintf("E2TInstance:%s", address), nil } func BuildGeneralConfigurationKey() string { return "GENERAL" } func MapE2TAddressesToKeys(addresses []string) []string { keys := []string{} for _, v := range addresses { if len(v) != 0 { keys = append(keys, fmt.Sprintf("E2TInstance:%s", v)) } } return keys } //GetRNibNamespace returns namespace used by the RNIB in SDL. func GetRNibNamespace() string { return rnibNamespace }