Send notification for Connected status 32/11032/4
authornaman.gupta <naman.gupta@samsung.com>
Thu, 4 May 2023 11:23:54 +0000 (16:53 +0530)
committernaman.gupta <naman.gupta@samsung.com>
Mon, 8 May 2023 12:02:46 +0000 (17:32 +0530)
Send notification for Connected status.

Signed-off-by: naman.gupta <naman.gupta@samsung.com>
Change-Id: Ib76811034ea8d198416c2745edd092fcee940d49

E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler.go
E2Manager/handlers/rmrmsghandlers/e2_reset_request_handler_test.go
E2Manager/managers/e2_connected_status_change_manager.go [new file with mode: 0644]
E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider.go
E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go

index 4e1e3f4..c3f7975 100644 (file)
@@ -40,20 +40,22 @@ var (
 )\r
 \r
 type E2ResetRequestNotificationHandler struct {\r
-       logger          *logger.Logger\r
-       rnibDataService services.RNibDataService\r
-       config          *configuration.Configuration\r
-       rmrSender       *rmrsender.RmrSender\r
-       ranResetManager *managers.RanResetManager\r
+       logger                            *logger.Logger\r
+       rnibDataService                   services.RNibDataService\r
+       config                            *configuration.Configuration\r
+       rmrSender                         *rmrsender.RmrSender\r
+       ranResetManager                   *managers.RanResetManager\r
+       changeStatusToConnectedRanManager *managers.ChangeStatusToConnectedRanManager\r
 }\r
 \r
-func NewE2ResetRequestNotificationHandler(logger *logger.Logger, rnibDataService services.RNibDataService, config *configuration.Configuration, rmrSender *rmrsender.RmrSender, ranResetManager *managers.RanResetManager) *E2ResetRequestNotificationHandler {\r
+func NewE2ResetRequestNotificationHandler(logger *logger.Logger, rnibDataService services.RNibDataService, config *configuration.Configuration, rmrSender *rmrsender.RmrSender, ranResetManager *managers.RanResetManager, changeStatusToConnectedRanManager *managers.ChangeStatusToConnectedRanManager) *E2ResetRequestNotificationHandler {\r
        return &E2ResetRequestNotificationHandler{\r
-               logger:          logger,\r
-               rnibDataService: rnibDataService,\r
-               config:          config,\r
-               rmrSender:       rmrSender,\r
-               ranResetManager: ranResetManager,\r
+               logger:                            logger,\r
+               rnibDataService:                   rnibDataService,\r
+               config:                            config,\r
+               rmrSender:                         rmrSender,\r
+               ranResetManager:                   ranResetManager,\r
+               changeStatusToConnectedRanManager: changeStatusToConnectedRanManager,\r
        }\r
 }\r
 \r
@@ -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)\r
        e.handleSuccessfulResponse(ranName, request, resetRequest)\r
 \r
-       nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED\r
-\r
-       err = e.rnibDataService.UpdateNodebInfoAndPublish(nodebInfo)\r
-\r
+       isConnectedStatus, err := e.changeStatusToConnectedRanManager.ChangeStatusToConnectedRan(ranName)\r
        if err != nil {\r
-               e.logger.Errorf("#E2ResetRequestNotificationHandler.Handle - failed to update connection status of nodeB entity. RanName: %s. Error: %s", request.RanName, err.Error())\r
+               e.logger.Errorf("#E2ResetRequestNotificationHandler.Handle - failed to update and notify connection status of nodeB entity. RanName: %s. Error: %s", request.RanName, err.Error())\r
+       } else {\r
+               if isConnectedStatus {\r
+                       nodebInfoupdated, err1 := e.getNodebInfo(request.RanName)\r
+                       if err1 != nil {\r
+                               e.logger.Errorf("#E2ResetRequestNotificationHandler.Handle - failed to get updated nodeB entity. RanName: %s. Error: %s", request.RanName, err1.Error())\r
+                       }\r
+                       e.logger.Debugf("#E2ResetRequestNotificationHandler.Handle - Connection status Set Successfully ran: %s , Connection status updated : %s", ranName, nodebInfoupdated.ConnectionStatus)\r
+               } else {\r
+                       e.logger.Debugf("#E2ResetRequestNotificationHandler.Handle - Connection status Setting Failed")\r
+               }\r
        }\r
 \r
        e.logger.Debugf("#E2ResetRequestNotificationHandler.Handle - nodeB entity connected state. RanName %s, ConnectionStatus %s", nodebInfo.RanName, nodebInfo.ConnectionStatus)\r
index c96fbb8..25a8150 100644 (file)
@@ -55,7 +55,8 @@ func initE2ResetMocks(t *testing.T) (*E2ResetRequestNotificationHandler, *mocks.
        ranAlarmService := &mocks.RanAlarmServiceMock{}\r
        ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService, ranListManager, ranAlarmService)\r
        ranResetManager := managers.NewRanResetManager(logger, rnibDataService, ranConnectStatusChangeManager)\r
-       handler := NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetManager)\r
+       changeStatusToConnectedRanManager := managers.NewChangeStatusToConnectedRanManager(logger, rnibDataService, ranConnectStatusChangeManager)\r
+       handler := NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender, ranResetManager, changeStatusToConnectedRanManager)\r
        return handler, readerMock, writerMock, rmrMessengerMock, ranAlarmService\r
 }\r
 \r
diff --git a/E2Manager/managers/e2_connected_status_change_manager.go b/E2Manager/managers/e2_connected_status_change_manager.go
new file mode 100644 (file)
index 0000000..58c75fc
--- /dev/null
@@ -0,0 +1,64 @@
+//\r
+// Copyright (c) 2023 Samsung Electronics Co., Ltd. All Rights Reserved.\r
+//\r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//      http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+\r
+//  This source code is part of the near-RT RIC (RAN Intelligent Controller)\r
+//  platform project (RICP).\r
+\r
+package managers\r
+\r
+import (\r
+       // "e2mgr/configuration"\r
+       "e2mgr/logger"\r
+       "e2mgr/services"\r
+\r
+       "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"\r
+)\r
+\r
+type IChangeStatusToConnectedRanManager interface {\r
+       ChangeStatusToConnectedRan(inventoryName string) error\r
+}\r
+\r
+type ChangeStatusToConnectedRanManager struct {\r
+       logger                        *logger.Logger\r
+       rnibDataService               services.RNibDataService\r
+       ranConnectStatusChangeManager IRanConnectStatusChangeManager\r
+}\r
+\r
+func NewChangeStatusToConnectedRanManager(logger *logger.Logger, rnibDataService services.RNibDataService, ranConnectStatusChangeManager IRanConnectStatusChangeManager) *ChangeStatusToConnectedRanManager {\r
+       return &ChangeStatusToConnectedRanManager{\r
+               logger:                        logger,\r
+               rnibDataService:               rnibDataService,\r
+               ranConnectStatusChangeManager: ranConnectStatusChangeManager,\r
+       }\r
+}\r
+\r
+func (m *ChangeStatusToConnectedRanManager) ChangeStatusToConnectedRan(inventoryName string) (bool, error) {\r
+       nodebInfo, err := m.rnibDataService.GetNodeb(inventoryName)\r
+\r
+       if err != nil {\r
+               m.logger.Errorf("#ChangeStatusToConnectedRanManager.ChangeStatusToConnectedRan - RAN name: %s - Failed fetching RAN from rNib. Error: %v", inventoryName, err)\r
+               return false, err\r
+       }\r
+       connectionStatus := nodebInfo.GetConnectionStatus()\r
+       m.logger.Infof("#ChangeStatusToConnectedRanManager.ChangeStatusToConnectedRan - RAN name: %s - RAN's connection status: %s", nodebInfo.RanName, connectionStatus)\r
+\r
+       ranConnectStatusChange, err := m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_CONNECTED)\r
+\r
+       if err != nil {\r
+               return ranConnectStatusChange, err\r
+       }\r
+       m.logger.Infof("#ChangeStatusToConnectedRanManager.ChangeStatusToConnectedRan Status changed \n")\r
+       return ranConnectStatusChange, nil\r
+}\r
index b38f35a..acdd956 100644 (file)
@@ -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)
index d631dce..10b8995 100644 (file)
@@ -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 {