From fc6f94170eadc52b9b949bc524dfa2e6522ef8fb Mon Sep 17 00:00:00 2001 From: "naman.gupta" Date: Thu, 4 May 2023 16:53:54 +0530 Subject: [PATCH] Send notification for Connected status Send notification for Connected status. Signed-off-by: naman.gupta Change-Id: Ib76811034ea8d198416c2745edd092fcee940d49 --- .../rmrmsghandlers/e2_reset_request_handler.go | 41 ++++++++------ .../e2_reset_request_handler_test.go | 3 +- .../managers/e2_connected_status_change_manager.go | 64 ++++++++++++++++++++++ .../notification_handler_provider.go | 3 +- .../notification_handler_provider_test.go | 3 +- 5 files changed, 95 insertions(+), 19 deletions(-) create mode 100644 E2Manager/managers/e2_connected_status_change_manager.go diff --git a/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler.go b/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler.go index 4e1e3f4..c3f7975 100644 --- a/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler.go +++ b/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler.go @@ -40,20 +40,22 @@ var ( ) type E2ResetRequestNotificationHandler struct { - logger *logger.Logger - rnibDataService services.RNibDataService - config *configuration.Configuration - rmrSender *rmrsender.RmrSender - ranResetManager *managers.RanResetManager + logger *logger.Logger + rnibDataService services.RNibDataService + config *configuration.Configuration + rmrSender *rmrsender.RmrSender + ranResetManager *managers.RanResetManager + changeStatusToConnectedRanManager *managers.ChangeStatusToConnectedRanManager } -func NewE2ResetRequestNotificationHandler(logger *logger.Logger, rnibDataService services.RNibDataService, config *configuration.Configuration, rmrSender *rmrsender.RmrSender, ranResetManager *managers.RanResetManager) *E2ResetRequestNotificationHandler { +func NewE2ResetRequestNotificationHandler(logger *logger.Logger, rnibDataService services.RNibDataService, config *configuration.Configuration, rmrSender *rmrsender.RmrSender, ranResetManager *managers.RanResetManager, changeStatusToConnectedRanManager *managers.ChangeStatusToConnectedRanManager) *E2ResetRequestNotificationHandler { return &E2ResetRequestNotificationHandler{ - logger: logger, - rnibDataService: rnibDataService, - config: config, - rmrSender: rmrSender, - ranResetManager: ranResetManager, + logger: logger, + rnibDataService: rnibDataService, + config: config, + rmrSender: rmrSender, + ranResetManager: ranResetManager, + changeStatusToConnectedRanManager: changeStatusToConnectedRanManager, } } @@ -108,12 +110,19 @@ func (e *E2ResetRequestNotificationHandler) Handle(request *models.NotificationR e.logger.Infof("#E2ResetRequestNotificationHandler.Handle - RIC_RESET_REQUEST has been parsed successfully %+v", resetRequest) e.handleSuccessfulResponse(ranName, request, resetRequest) - nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED - - err = e.rnibDataService.UpdateNodebInfoAndPublish(nodebInfo) - + isConnectedStatus, err := e.changeStatusToConnectedRanManager.ChangeStatusToConnectedRan(ranName) if err != nil { - e.logger.Errorf("#E2ResetRequestNotificationHandler.Handle - failed to update connection status of nodeB entity. RanName: %s. Error: %s", request.RanName, err.Error()) + e.logger.Errorf("#E2ResetRequestNotificationHandler.Handle - failed to update and notify connection status of nodeB entity. RanName: %s. Error: %s", request.RanName, err.Error()) + } else { + if isConnectedStatus { + nodebInfoupdated, err1 := e.getNodebInfo(request.RanName) + if err1 != nil { + e.logger.Errorf("#E2ResetRequestNotificationHandler.Handle - failed to get updated nodeB entity. RanName: %s. Error: %s", request.RanName, err1.Error()) + } + e.logger.Debugf("#E2ResetRequestNotificationHandler.Handle - Connection status Set Successfully ran: %s , Connection status updated : %s", ranName, nodebInfoupdated.ConnectionStatus) + } else { + e.logger.Debugf("#E2ResetRequestNotificationHandler.Handle - Connection status Setting Failed") + } } e.logger.Debugf("#E2ResetRequestNotificationHandler.Handle - nodeB entity connected state. RanName %s, ConnectionStatus %s", nodebInfo.RanName, nodebInfo.ConnectionStatus) diff --git a/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go b/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go index c96fbb8..25a8150 100644 --- a/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go +++ b/E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go @@ -55,7 +55,8 @@ func initE2ResetMocks(t *testing.T) (*E2ResetRequestNotificationHandler, *mocks. ranAlarmService := &mocks.RanAlarmServiceMock{} ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService) ranResetManager := managers.NewRanResetManager(logger, rnibDataService, ranConnectStatusChangeManager) - handler := NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetManager) + changeStatusToConnectedRanManager := managers.NewChangeStatusToConnectedRanManager(logger, rnibDataService, ranConnectStatusChangeManager) + handler := NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetManager, changeStatusToConnectedRanManager) return handler, readerMock, writerMock, rmrMessengerMock, ranAlarmService } diff --git a/E2Manager/managers/e2_connected_status_change_manager.go b/E2Manager/managers/e2_connected_status_change_manager.go new file mode 100644 index 0000000..58c75fc --- /dev/null +++ b/E2Manager/managers/e2_connected_status_change_manager.go @@ -0,0 +1,64 @@ +// +// Copyright (c) 2023 Samsung Electronics Co., Ltd. All Rights Reserved. +// +// 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 managers + +import ( + // "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/services" + + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type IChangeStatusToConnectedRanManager interface { + ChangeStatusToConnectedRan(inventoryName string) error +} + +type ChangeStatusToConnectedRanManager struct { + logger *logger.Logger + rnibDataService services.RNibDataService + ranConnectStatusChangeManager IRanConnectStatusChangeManager +} + +func NewChangeStatusToConnectedRanManager(logger *logger.Logger, rnibDataService services.RNibDataService, ranConnectStatusChangeManager IRanConnectStatusChangeManager) *ChangeStatusToConnectedRanManager { + return &ChangeStatusToConnectedRanManager{ + logger: logger, + rnibDataService: rnibDataService, + ranConnectStatusChangeManager: ranConnectStatusChangeManager, + } +} + +func (m *ChangeStatusToConnectedRanManager) ChangeStatusToConnectedRan(inventoryName string) (bool, error) { + nodebInfo, err := m.rnibDataService.GetNodeb(inventoryName) + + if err != nil { + m.logger.Errorf("#ChangeStatusToConnectedRanManager.ChangeStatusToConnectedRan - RAN name: %s - Failed fetching RAN from rNib. Error: %v", inventoryName, err) + return false, err + } + connectionStatus := nodebInfo.GetConnectionStatus() + m.logger.Infof("#ChangeStatusToConnectedRanManager.ChangeStatusToConnectedRan - RAN name: %s - RAN's connection status: %s", nodebInfo.RanName, connectionStatus) + + ranConnectStatusChange, err := m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_CONNECTED) + + if err != nil { + return ranConnectStatusChange, err + } + m.logger.Infof("#ChangeStatusToConnectedRanManager.ChangeStatusToConnectedRan Status changed \n") + return ranConnectStatusChange, nil +} diff --git a/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider.go b/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider.go index b38f35a..acdd956 100644 --- a/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider.go +++ b/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider.go @@ -74,6 +74,7 @@ func (provider *NotificationHandlerProvider) Init(logger *logger.Logger, config // Init managers ranReconnectionManager := managers.NewRanDisconnectionManager(logger, config, rnibDataService, e2tAssociationManager, ranConnectStatusChangeManager) ranResetChangeManager := managers.NewRanResetManager(logger, rnibDataService, ranConnectStatusChangeManager) + changeStatusToConnectedRanManager := managers.NewChangeStatusToConnectedRanManager(logger, rnibDataService, ranConnectStatusChangeManager) ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender) x2SetupResponseManager := managers.NewX2SetupResponseManager(x2SetupResponseConverter) x2SetupFailureResponseManager := managers.NewX2SetupFailureResponseManager(x2SetupFailureResponseConverter) @@ -96,7 +97,7 @@ func (provider *NotificationHandlerProvider) Init(logger *logger.Logger, config e2SetupRequestNotificationHandler := rmrmsghandlers.NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManager, rmrSender, rnibDataService, e2tAssociationManager, ranConnectStatusChangeManager, ranListManager) ricServiceUpdateHandler := rmrmsghandlers.NewRicServiceUpdateHandler(logger, rmrSender, rnibDataService, ranListManager) ricE2nodeConfigUpdateHandler := rmrmsghandlers.NewE2nodeConfigUpdateNotificationHandler(logger, rnibDataService, rmrSender) - e2ResetRequestNotificationHandler := rmrmsghandlers.NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetChangeManager) + e2ResetRequestNotificationHandler := rmrmsghandlers.NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetChangeManager, changeStatusToConnectedRanManager) provider.Register(rmrCgo.RIC_X2_SETUP_RESP, x2SetupResponseHandler) provider.Register(rmrCgo.RIC_X2_SETUP_FAILURE, x2SetupFailureResponseHandler) diff --git a/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go b/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go index d631dce..10b8995 100644 --- a/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go +++ b/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go @@ -68,6 +68,7 @@ func TestGetNotificationHandlerSuccess(t *testing.T) { ranDisconnectionManager := managers.NewRanDisconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, e2tAssociationManager, ranConnectStatusChangeManager) ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender) ranResetManager := managers.NewRanResetManager(logger, rnibDataService, ranConnectStatusChangeManager) + changeStatusToConnectedRanManager := managers.NewChangeStatusToConnectedRanManager(logger, rnibDataService, ranConnectStatusChangeManager) x2SetupResponseConverter := converters.NewX2SetupResponseConverter(logger) x2SetupResponseManager := managers.NewX2SetupResponseManager(x2SetupResponseConverter) @@ -99,7 +100,7 @@ func TestGetNotificationHandlerSuccess(t *testing.T) { {rmrCgo.RIC_X2_RESET, rmrmsghandlers.NewX2ResetRequestNotificationHandler(logger, rnibDataService, ranStatusChangeManager, rmrSender)}, {rmrCgo.RIC_SERVICE_UPDATE, rmrmsghandlers.NewRicServiceUpdateHandler(logger, rmrSender, rnibDataService, ranListManager)}, {rmrCgo.RIC_E2NODE_CONFIG_UPDATE, rmrmsghandlers.NewE2nodeConfigUpdateNotificationHandler(logger, rnibDataService, rmrSender)}, - {rmrCgo.RIC_E2_RESET_REQ, rmrmsghandlers.NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetManager)}, + {rmrCgo.RIC_E2_RESET_REQ, rmrmsghandlers.NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetManager, changeStatusToConnectedRanManager)}, } for _, tc := range testCases { -- 2.16.6