+ nodebInfo := &entities.NodebInfo{
+ Ip: requestDetails.RanIp,
+ Port: uint32(requestDetails.RanPort),
+ ConnectionStatus: entities.ConnectionStatus_CONNECTING,
+ E2ApplicationProtocol: protocol,
+ RanName: requestDetails.RanName,
+ ConnectionAttempts: 0,
+ AssociatedE2TInstanceAddress: e2tAddress,
+ }
+
+ nbIdentity := &entities.NbIdentity{
+ InventoryName: requestDetails.RanName,
+ }
+
+ return nodebInfo, nbIdentity
+}
+
+func (h *SetupRequestHandler) connectExistingRanWithoutAssociatedE2TAddress(nodebInfo *entities.NodebInfo) error {
+ e2tAddress, err := h.e2tInstancesManager.SelectE2TInstance()
+
+ if err != nil {
+ h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed selecting E2T instance", nodebInfo.RanName)
+
+ if nodebInfo.ConnectionStatus == entities.ConnectionStatus_DISCONNECTED && nodebInfo.ConnectionAttempts == 0 {
+ return err
+ }
+
+ nodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
+ nodebInfo.ConnectionAttempts = 0
+ updateError := h.rNibDataService.UpdateNodebInfo(nodebInfo)
+
+ if updateError != nil {
+ h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed updating nodeb. error: %s", nodebInfo.RanName, updateError)
+ }
+
+ return err
+ }
+
+ err = h.e2tInstancesManager.AssociateRan(nodebInfo.RanName, e2tAddress)
+
+ if err != nil {
+ h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed associating ran to e2t address %s. error: %s", nodebInfo.RanName, e2tAddress, err)
+ return err
+ }
+
+ nodebInfo.AssociatedE2TInstanceAddress = e2tAddress
+ nodebInfo.ConnectionAttempts = 0
+
+ err = h.rNibDataService.UpdateNodebInfo(nodebInfo)
+
+ if err != nil {
+ h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed updating nodeb in rNib. error: %s", nodebInfo.RanName, err)
+ return e2managererrors.NewRnibDbError()