2 // Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved.
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
16 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
17 // platform project (RICP).
19 package httpmsghandlers
22 "e2mgr/e2managererrors"
27 "e2mgr/services/rmrsender"
28 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
29 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
30 // "github.com/pkg/errors"
33 type HealthCheckRequestHandler struct {
35 rNibDataService services.RNibDataService
36 ranListManager managers.RanListManager
37 rmrsender *rmrsender.RmrSender
40 func NewHealthCheckRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService, ranListManager managers.RanListManager, rmrsender *rmrsender.RmrSender) *HealthCheckRequestHandler {
41 return &HealthCheckRequestHandler{
43 rNibDataService: rNibDataService,
44 ranListManager: ranListManager,
49 func (h *HealthCheckRequestHandler) Handle(request models.Request) (models.IResponse, error) {
50 ranNameList := h.getRanNameList(request)
51 isAtleastOneRanConnected := false
53 for _, ranName := range ranNameList {
54 nodebInfo, err := h.rNibDataService.GetNodeb(ranName) //This method is needed for getting RAN functions with later commits
56 _, ok := err.(*common.ResourceNotFoundError)
58 h.logger.Errorf("#HealthCheckRequest.Handle - failed to get nodeBInfo entity for ran name: %v from RNIB. Error: %s", ranName, err)
59 return nil, e2managererrors.NewRnibDbError()
63 if nodebInfo.ConnectionStatus == entities.ConnectionStatus_CONNECTED {
64 isAtleastOneRanConnected = true
68 if isAtleastOneRanConnected == false {
69 return nil, e2managererrors.NewNoConnectedRanError()
75 func (h *HealthCheckRequestHandler) getRanNameList(request models.Request) []string {
76 healthCheckRequest := request.(models.HealthCheckRequest)
77 if request != nil && len(healthCheckRequest.RanList) != 0 {
78 return healthCheckRequest.RanList
80 nodeIds := h.ranListManager.GetNbIdentityList()
82 var ranNameList []string
83 for _, nbIdentity := range nodeIds {
84 if nbIdentity.ConnectionStatus == entities.ConnectionStatus_CONNECTED {
85 ranNameList = append(ranNameList, nbIdentity.InventoryName)