summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
8421172)
Change-Id: If89b0c4dd7a9b034d510ca1e24ad1349e2004334
Signed-off-by: idanshal <idan.shalom@intl.att.com>
13 files changed:
# The Jenkins job requires a tag to build the Docker image.
# Global-JJB script assumes this file is in the repo root.
---
# The Jenkins job requires a tag to build the Docker image.
# Global-JJB script assumes this file is in the repo root.
---
-tag: 5.2.21
\ No newline at end of file
+tag: 5.2.22
\ No newline at end of file
func (h *DeleteAllRequestHandler) updateNodebInfo(node *entities.NodebInfo, connectionStatus entities.ConnectionStatus, resetAssociatedE2TAddress bool) error {
func (h *DeleteAllRequestHandler) updateNodebInfo(node *entities.NodebInfo, connectionStatus entities.ConnectionStatus, resetAssociatedE2TAddress bool) error {
- err := h.ranConnectStatusChangeManager.ChangeStatus(node, connectionStatus)
+ _, err := h.ranConnectStatusChangeManager.ChangeStatus(node, connectionStatus)
if err != nil {
return e2managererrors.NewRnibDbError()
}
if err != nil {
return e2managererrors.NewRnibDbError()
}
emptyTagsToReplaceToSelfClosingTags = []string{"reject", "ignore", "transport-resource-unavailable", "om-intervention", "request-id-unknown",
"v60s", "v20s", "v10s", "v5s", "v2s", "v1s"}
gnbTypesMap = map[string]entities.GnbType{
emptyTagsToReplaceToSelfClosingTags = []string{"reject", "ignore", "transport-resource-unavailable", "om-intervention", "request-id-unknown",
"v60s", "v20s", "v10s", "v5s", "v2s", "v1s"}
gnbTypesMap = map[string]entities.GnbType{
- "gnb":entities.GnbType_GNB,
- "en_gnb":entities.GnbType_EN_GNB,
+ "gnb": entities.GnbType_GNB,
+ "en_gnb": entities.GnbType_EN_GNB,
}
enbTypesMap = map[string]entities.EnbType{
}
enbTypesMap = map[string]entities.EnbType{
- "enB_macro":entities.EnbType_MACRO_ENB,
- "enB_home":entities.EnbType_HOME_ENB,
- "enB_shortmacro":entities.EnbType_SHORT_MACRO_ENB,
- "enB_longmacro":entities.EnbType_LONG_MACRO_ENB,
- "ng_enB_macro":entities.EnbType_MACRO_NG_ENB,
- "ng_enB_shortmacro":entities.EnbType_SHORT_MACRO_NG_ENB,
- "ng_enB_longmacro":entities.EnbType_LONG_MACRO_NG_ENB,
+ "enB_macro": entities.EnbType_MACRO_ENB,
+ "enB_home": entities.EnbType_HOME_ENB,
+ "enB_shortmacro": entities.EnbType_SHORT_MACRO_ENB,
+ "enB_longmacro": entities.EnbType_LONG_MACRO_ENB,
+ "ng_enB_macro": entities.EnbType_MACRO_NG_ENB,
+ "ng_enB_shortmacro": entities.EnbType_SHORT_MACRO_NG_ENB,
+ "ng_enB_longmacro": entities.EnbType_LONG_MACRO_NG_ENB,
rNibDataService services.RNibDataService
e2tAssociationManager *managers.E2TAssociationManager
ranConnectStatusChangeManager managers.IRanConnectStatusChangeManager
rNibDataService services.RNibDataService
e2tAssociationManager *managers.E2TAssociationManager
ranConnectStatusChangeManager managers.IRanConnectStatusChangeManager
- ranListManager managers.RanListManager
+ ranListManager managers.RanListManager
}
func NewE2SetupRequestNotificationHandler(logger *logger.Logger, config *configuration.Configuration, e2tInstancesManager managers.IE2TInstancesManager, rmrSender *rmrsender.RmrSender, rNibDataService services.RNibDataService, e2tAssociationManager *managers.E2TAssociationManager, ranConnectStatusChangeManager managers.IRanConnectStatusChangeManager, ranListManager managers.RanListManager) *E2SetupRequestNotificationHandler {
}
func NewE2SetupRequestNotificationHandler(logger *logger.Logger, config *configuration.Configuration, e2tInstancesManager managers.IE2TInstancesManager, rmrSender *rmrsender.RmrSender, rNibDataService services.RNibDataService, e2tAssociationManager *managers.E2TAssociationManager, ranConnectStatusChangeManager managers.IRanConnectStatusChangeManager, ranListManager managers.RanListManager) *E2SetupRequestNotificationHandler {
rNibDataService: rNibDataService,
e2tAssociationManager: e2tAssociationManager,
ranConnectStatusChangeManager: ranConnectStatusChangeManager,
rNibDataService: rNibDataService,
e2tAssociationManager: e2tAssociationManager,
ranConnectStatusChangeManager: ranConnectStatusChangeManager,
- ranListManager: ranListManager,
+ ranListManager: ranListManager,
nodebInfo, err := h.rNibDataService.GetNodeb(ranName)
nodebInfo, err := h.rNibDataService.GetNodeb(ranName)
+ var functionsModified bool
+
if err != nil {
if _, ok := err.(*common.ResourceNotFoundError); !ok {
h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s - failed to retrieve nodebInfo entity. Error: %s", ranName, err)
return
if err != nil {
if _, ok := err.(*common.ResourceNotFoundError); !ok {
h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s - failed to retrieve nodebInfo entity. Error: %s", ranName, err)
return
}
if nodebInfo, err = h.handleNewRan(ranName, e2tIpAddress, setupRequest); err != nil {
}
if nodebInfo, err = h.handleNewRan(ranName, e2tIpAddress, setupRequest); err != nil {
- if err = h.handleExistingRan(ranName, nodebInfo, setupRequest); err != nil {
+
+ functionsModified, err = h.handleExistingRan(ranName, nodebInfo, setupRequest)
+
+ if err != nil {
- err = h.e2tAssociationManager.AssociateRan(e2tIpAddress, nodebInfo)
+ ranStatusChangePublished, err := h.e2tAssociationManager.AssociateRan(e2tIpAddress, nodebInfo)
if err != nil {
h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s - failed to associate E2T to nodeB entity. Error: %s", ranName, err)
if _, ok := err.(*e2managererrors.RoutingManagerError); ok {
if err != nil {
h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s - failed to associate E2T to nodeB entity. Error: %s", ranName, err)
if _, ok := err.(*e2managererrors.RoutingManagerError); ok {
+
+ if err = h.handleUpdateAndPublishNodebInfo(functionsModified, ranStatusChangePublished, nodebInfo); err != nil {
+ return
+ }
+
cause := models.Cause{Transport: &models.CauseTransport{TransportResourceUnavailable: &struct{}{}}}
h.handleUnsuccessfulResponse(nodebInfo.RanName, request, cause)
}
return
}
cause := models.Cause{Transport: &models.CauseTransport{TransportResourceUnavailable: &struct{}{}}}
h.handleUnsuccessfulResponse(nodebInfo.RanName, request, cause)
}
return
}
+ if err = h.handleUpdateAndPublishNodebInfo(functionsModified, ranStatusChangePublished, nodebInfo); err != nil {
+ return
+ }
+
h.handleSuccessfulResponse(ranName, request, setupRequest)
}
h.handleSuccessfulResponse(ranName, request, setupRequest)
}
+func (h *E2SetupRequestNotificationHandler) handleUpdateAndPublishNodebInfo(functionsModified bool, ranStatusChangePublished bool, nodebInfo *entities.NodebInfo) error {
+
+ if ranStatusChangePublished || !functionsModified {
+ return nil
+ }
+
+ err := h.rNibDataService.UpdateNodebInfoAndPublish(nodebInfo)
+
+ if err != nil {
+ h.logger.Errorf("#E2SetupRequestNotificationHandler.handleUpdateAndPublishNodebInfo - RAN name: %s - Failed at UpdateNodebInfoAndPublish. error: %s", nodebInfo.RanName, err)
+ return err
+ }
+
+ h.logger.Infof("#E2SetupRequestNotificationHandler.handleUpdateAndPublishNodebInfo - RAN name: %s - Successfully executed UpdateNodebInfoAndPublish", nodebInfo.RanName)
+ return nil
+
+}
+
func (h *E2SetupRequestNotificationHandler) handleNewRan(ranName string, e2tIpAddress string, setupRequest *models.E2SetupRequestMessage) (*entities.NodebInfo, error) {
nodebInfo, err := h.buildNodebInfo(ranName, e2tIpAddress, setupRequest)
func (h *E2SetupRequestNotificationHandler) handleNewRan(ranName string, e2tIpAddress string, setupRequest *models.E2SetupRequestMessage) (*entities.NodebInfo, error) {
nodebInfo, err := h.buildNodebInfo(ranName, e2tIpAddress, setupRequest)
-func (h *E2SetupRequestNotificationHandler) setGnbFunctions(nodebInfo *entities.NodebInfo, setupRequest *models.E2SetupRequestMessage) {
- if nodebInfo.GetNodeType() == entities.Node_ENB {
- return
+func (h *E2SetupRequestNotificationHandler) handleExistingRan(ranName string, nodebInfo *entities.NodebInfo, setupRequest *models.E2SetupRequestMessage) (bool, error) {
+ if nodebInfo.GetConnectionStatus() == entities.ConnectionStatus_SHUTTING_DOWN {
+ h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s, connection status: %s - nodeB entity in incorrect state", ranName, nodebInfo.ConnectionStatus)
+ return false, errors.New("nodeB entity in incorrect state")
- ranFunctions := setupRequest.ExtractRanFunctionsList()
- if ranFunctions != nil {
- nodebInfo.GetGnb().RanFunctions = ranFunctions
+ if nodebInfo.NodeType == entities.Node_ENB {
+ return false, nil
-func (h *E2SetupRequestNotificationHandler) handleExistingRan(ranName string, nodebInfo *entities.NodebInfo, setupRequest *models.E2SetupRequestMessage) error {
- if nodebInfo.GetConnectionStatus() == entities.ConnectionStatus_SHUTTING_DOWN {
- h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s, connection status: %s - nodeB entity in incorrect state", ranName, nodebInfo.ConnectionStatus)
- return errors.New("nodeB entity in incorrect state")
- }
+ setupMessageRanFuncs := setupRequest.ExtractRanFunctionsList()
- h.setGnbFunctions(nodebInfo, setupRequest)
+ if setupMessageRanFuncs == nil || (len(setupMessageRanFuncs) == 0 && len(nodebInfo.GetGnb().RanFunctions) == 0) {
+ return false, nil
+ }
- return h.rNibDataService.UpdateNodebInfo(nodebInfo)
+ nodebInfo.GetGnb().RanFunctions = setupMessageRanFuncs
+ return true, nil
}
func (h *E2SetupRequestNotificationHandler) handleUnsuccessfulResponse(ranName string, req *models.NotificationRequest, cause models.Cause) {
}
func (h *E2SetupRequestNotificationHandler) handleUnsuccessfulResponse(ranName string, req *models.NotificationRequest, cause models.Cause) {
AssociatedE2TInstanceAddress: e2tAddress,
RanName: ranName,
GlobalNbId: h.buildGlobalNbId(request),
AssociatedE2TInstanceAddress: e2tAddress,
RanName: ranName,
GlobalNbId: h.buildGlobalNbId(request),
- SetupFromNetwork: true,
+ SetupFromNetwork: true,
}
err := h.setNodeTypeAndConfiguration(nodebInfo)
if err != nil {
return nil, err
}
}
err := h.setNodeTypeAndConfiguration(nodebInfo)
if err != nil {
return nil, err
}
- h.setGnbFunctions(nodebInfo, request)
+
+ if nodebInfo.NodeType == entities.Node_ENB {
+ return nodebInfo, nil
+ }
+
+ ranFuncs := request.ExtractRanFunctionsList()
+
+ if ranFuncs != nil {
+ nodebInfo.GetGnb().RanFunctions = ranFuncs
+ }
+
GnbWithoutFunctionsSetupRequestXmlPath = "../../tests/resources/setupRequest_gnb_without_functions.xml"
E2SetupFailureResponseWithMiscCause = "<E2AP-PDU><unsuccessfulOutcome><procedureCode>1</procedureCode><criticality><reject/></criticality><value><E2setupFailure><protocolIEs><E2setupFailureIEs><id>1</id><criticality><ignore/></criticality><value><Cause><misc><om-intervention/></misc></Cause></value></E2setupFailureIEs><E2setupFailureIEs><id>31</id><criticality><ignore/></criticality><value><TimeToWait><v60s/></TimeToWait></value></E2setupFailureIEs></protocolIEs></E2setupFailure></value></unsuccessfulOutcome></E2AP-PDU>"
E2SetupFailureResponseWithTransportCause = "<E2AP-PDU><unsuccessfulOutcome><procedureCode>1</procedureCode><criticality><reject/></criticality><value><E2setupFailure><protocolIEs><E2setupFailureIEs><id>1</id><criticality><ignore/></criticality><value><Cause><transport><transport-resource-unavailable/></transport></Cause></value></E2setupFailureIEs><E2setupFailureIEs><id>31</id><criticality><ignore/></criticality><value><TimeToWait><v60s/></TimeToWait></value></E2setupFailureIEs></protocolIEs></E2setupFailure></value></unsuccessfulOutcome></E2AP-PDU>"
GnbWithoutFunctionsSetupRequestXmlPath = "../../tests/resources/setupRequest_gnb_without_functions.xml"
E2SetupFailureResponseWithMiscCause = "<E2AP-PDU><unsuccessfulOutcome><procedureCode>1</procedureCode><criticality><reject/></criticality><value><E2setupFailure><protocolIEs><E2setupFailureIEs><id>1</id><criticality><ignore/></criticality><value><Cause><misc><om-intervention/></misc></Cause></value></E2setupFailureIEs><E2setupFailureIEs><id>31</id><criticality><ignore/></criticality><value><TimeToWait><v60s/></TimeToWait></value></E2setupFailureIEs></protocolIEs></E2setupFailure></value></unsuccessfulOutcome></E2AP-PDU>"
E2SetupFailureResponseWithTransportCause = "<E2AP-PDU><unsuccessfulOutcome><procedureCode>1</procedureCode><criticality><reject/></criticality><value><E2setupFailure><protocolIEs><E2setupFailureIEs><id>1</id><criticality><ignore/></criticality><value><Cause><transport><transport-resource-unavailable/></transport></Cause></value></E2setupFailureIEs><E2setupFailureIEs><id>31</id><criticality><ignore/></criticality><value><TimeToWait><v60s/></TimeToWait></value></E2setupFailureIEs></protocolIEs></E2setupFailure></value></unsuccessfulOutcome></E2AP-PDU>"
- E2SetupFailureResponseWithRicCause = "<E2AP-PDU><unsuccessfulOutcome><procedureCode>1</procedureCode><criticality><reject/></criticality><value><E2setupFailure><protocolIEs><E2setupFailureIEs><id>1</id><criticality><ignore/></criticality><value><Cause><ricRequest><request-id-unknown/></ricRequest></Cause></value></E2setupFailureIEs><E2setupFailureIEs><id>31</id><criticality><ignore/></criticality><value><TimeToWait><v60s/></TimeToWait></value></E2setupFailureIEs></protocolIEs></E2setupFailure></value></unsuccessfulOutcome></E2AP-PDU>"
+ E2SetupFailureResponseWithRicCause = "<E2AP-PDU><unsuccessfulOutcome><procedureCode>1</procedureCode><criticality><reject/></criticality><value><E2setupFailure><protocolIEs><E2setupFailureIEs><id>1</id><criticality><ignore/></criticality><value><Cause><ricRequest><request-id-unknown/></ricRequest></Cause></value></E2setupFailureIEs><E2setupFailureIEs><id>31</id><criticality><ignore/></criticality><value><TimeToWait><v60s/></TimeToWait></value></E2setupFailureIEs></protocolIEs></E2setupFailure></value></unsuccessfulOutcome></E2AP-PDU>"
StateChangeMessageChannel = "RAN_CONNECTION_STATUS_CHANGE"
)
StateChangeMessageChannel = "RAN_CONNECTION_STATUS_CHANGE"
)
func TestExtractionOfNodeTypeFromRanName(t *testing.T) {
handler, _, _, _, _, _ := initMocks(t)
func TestExtractionOfNodeTypeFromRanName(t *testing.T) {
handler, _, _, _, _, _ := initMocks(t)
- validRanNames := []string {"gnb_P310_410_b5c67788","en_gnb_P310_410_b5c67788","ng_enB_macro_P310_410_b5c67788","ng_enB_shortmacro_P310_410_b5c67788","ng_enB_longmacro_P310_410_b5c67788","enB_macro_P310_410_b5c67788","enB_home_P310_410_b5c67788","enB_shortmacro_P310_410_b5c67788","enB_longmacro_P310_410_b5c67788"}
- for _,v := range validRanNames {
+ validRanNames := []string{"gnb_P310_410_b5c67788", "en_gnb_P310_410_b5c67788", "ng_enB_macro_P310_410_b5c67788", "ng_enB_shortmacro_P310_410_b5c67788", "ng_enB_longmacro_P310_410_b5c67788", "enB_macro_P310_410_b5c67788", "enB_home_P310_410_b5c67788", "enB_shortmacro_P310_410_b5c67788", "enB_longmacro_P310_410_b5c67788"}
+ for _, v := range validRanNames {
nodeb := &entities.NodebInfo{RanName: v}
err := handler.setNodeTypeAndConfiguration(nodeb)
assert.Nil(t, err)
}
nodeb := &entities.NodebInfo{RanName: v}
err := handler.setNodeTypeAndConfiguration(nodeb)
assert.Nil(t, err)
}
- inValidRanNames := []string {"P310_410_b5c67788","blabla_P310_410_b5c67788","ng_enB-macro_P310_410_b5c67788","ng_enb_shortmacro_P310_410_b5c67788","ng_enB-longmacro_P310_410_b5c67788","enB_new_macro_P310_410_b5c67788"}
- for _,v := range inValidRanNames {
+ inValidRanNames := []string{"P310_410_b5c67788", "blabla_P310_410_b5c67788", "ng_enB-macro_P310_410_b5c67788", "ng_enb_shortmacro_P310_410_b5c67788", "ng_enB-longmacro_P310_410_b5c67788", "enB_new_macro_P310_410_b5c67788"}
+ for _, v := range inValidRanNames {
nodeb := &entities.NodebInfo{RanName: v}
err := handler.setNodeTypeAndConfiguration(nodeb)
assert.NotNil(t, err, v)
nodeb := &entities.NodebInfo{RanName: v}
err := handler.setNodeTypeAndConfiguration(nodeb)
assert.NotNil(t, err, v)
}
func testE2SetupRequestNotificationHandler_HandleExistingConnectedGnbSuccess(t *testing.T, withFunctions bool) {
}
func testE2SetupRequestNotificationHandler_HandleExistingConnectedGnbSuccess(t *testing.T, withFunctions bool) {
- xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath)
+ var xmlGnb []byte
+
+ if withFunctions {
+ xmlGnb = readXmlFile(t, GnbSetupRequestXmlPath)
+
+ } else {
+ xmlGnb = readXmlFile(t, GnbWithoutFunctionsSetupRequestXmlPath)
+ }
handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
readerMock.On("GetGeneralConfiguration").Return(&entities.GeneralConfiguration{EnableRic: true}, nil)
e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(&entities.E2TInstance{}, nil)
handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t)
readerMock.On("GetGeneralConfiguration").Return(&entities.GeneralConfiguration{EnableRic: true}, nil)
e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(&entities.E2TInstance{}, nil)
notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(e2SetupMsgPrefix), xmlGnb...)}
gnbToUpdate := getExpectedNodebForExistingRan(*nodebInfo, notificationRequest.Payload)
notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(e2SetupMsgPrefix), xmlGnb...)}
gnbToUpdate := getExpectedNodebForExistingRan(*nodebInfo, notificationRequest.Payload)
writerMock.On("UpdateNodebInfo", gnbToUpdate).Return(nil)
writerMock.On("UpdateNodebInfo", gnbToUpdate).Return(nil)
+ if withFunctions {
+ writerMock.On("UpdateNodebInfoAndPublish", gnbToUpdate).Return(nil)
+ }
e2tInstancesManagerMock.On("AddRansToInstance", e2tInstanceFullAddress, []string{gnbNodebRanName}).Return(nil)
var errEmpty error
rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(&rmrCgo.MBuf{}, errEmpty)
handler.Handle(notificationRequest)
readerMock.AssertExpectations(t)
writerMock.AssertExpectations(t)
e2tInstancesManagerMock.On("AddRansToInstance", e2tInstanceFullAddress, []string{gnbNodebRanName}).Return(nil)
var errEmpty error
rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(&rmrCgo.MBuf{}, errEmpty)
handler.Handle(notificationRequest)
readerMock.AssertExpectations(t)
writerMock.AssertExpectations(t)
- writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 3)
e2tInstancesManagerMock.AssertExpectations(t)
rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, true)
}
e2tInstancesManagerMock.AssertExpectations(t)
rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, true)
}
notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(e2SetupMsgPrefix), xmlGnb...)}
gnbToUpdate := getExpectedNodebForExistingRan(*nodebInfo, notificationRequest.Payload)
notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(e2SetupMsgPrefix), xmlGnb...)}
gnbToUpdate := getExpectedNodebForExistingRan(*nodebInfo, notificationRequest.Payload)
- writerMock.On("UpdateNodebInfo", gnbToUpdate).Return(nil)
gnbToUpdate2 := *gnbToUpdate
gnbToUpdate2.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &gnbToUpdate2, gnbNodebRanName+"_CONNECTED").Return(nil)
gnbToUpdate2 := *gnbToUpdate
gnbToUpdate2.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &gnbToUpdate2, gnbNodebRanName+"_CONNECTED").Return(nil)
handler.Handle(notificationRequest)
readerMock.AssertExpectations(t)
writerMock.AssertExpectations(t)
handler.Handle(notificationRequest)
readerMock.AssertExpectations(t)
writerMock.AssertExpectations(t)
- writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2)
e2tInstancesManagerMock.AssertExpectations(t)
}
e2tInstancesManagerMock.AssertExpectations(t)
}
pipInd := bytes.IndexByte(payload, '|')
setupRequest := &models.E2SetupRequestMessage{}
_ = xml.Unmarshal(normalizeXml(payload[pipInd+1:]), &setupRequest.E2APPDU)
pipInd := bytes.IndexByte(payload, '|')
setupRequest := &models.E2SetupRequestMessage{}
_ = xml.Unmarshal(normalizeXml(payload[pipInd+1:]), &setupRequest.E2APPDU)
- nodeb.GetGnb().RanFunctions = setupRequest.ExtractRanFunctionsList()
+ if ranFuncs := setupRequest.ExtractRanFunctionsList(); ranFuncs != nil {
+ nodeb.GetGnb().RanFunctions = ranFuncs
+ }
NodeType: entities.Node_ENB,
Configuration: &entities.NodebInfo_Enb{
Enb: &entities.Enb{
NodeType: entities.Node_ENB,
Configuration: &entities.NodebInfo_Enb{
Enb: &entities.Enb{
- EnbType: entities.EnbType_MACRO_ENB,
+ EnbType: entities.EnbType_MACRO_ENB,
},
},
GlobalNbId: &entities.GlobalNbId{
},
},
GlobalNbId: &entities.GlobalNbId{
-func (m *E2TAssociationManager) AssociateRan(e2tAddress string, nodebInfo *entities.NodebInfo) error {
+func (m *E2TAssociationManager) AssociateRan(e2tAddress string, nodebInfo *entities.NodebInfo) (bool, error) {
ranName := nodebInfo.RanName
m.logger.Infof("#E2TAssociationManager.AssociateRan - Associating RAN %s to E2T Instance address: %s", ranName, e2tAddress)
ranName := nodebInfo.RanName
m.logger.Infof("#E2TAssociationManager.AssociateRan - Associating RAN %s to E2T Instance address: %s", ranName, e2tAddress)
- err := m.associateRanAndUpdateNodeb(e2tAddress, nodebInfo)
+ ranStatusChangePublished, err := m.associateRanAndUpdateNodeb(e2tAddress, nodebInfo)
if err != nil {
m.logger.Errorf("#E2TAssociationManager.AssociateRan - RoutingManager failure: Failed to associate RAN %s to E2T %s. Error: %s", nodebInfo, e2tAddress, err)
if err != nil {
m.logger.Errorf("#E2TAssociationManager.AssociateRan - RoutingManager failure: Failed to associate RAN %s to E2T %s. Error: %s", nodebInfo, e2tAddress, err)
+ return ranStatusChangePublished, err
}
err = m.e2tInstanceManager.AddRansToInstance(e2tAddress, []string{ranName})
if err != nil {
m.logger.Errorf("#E2TAssociationManager.AssociateRan - RAN name: %s - Failed to add RAN to E2T instance %s. Error: %s", ranName, e2tAddress, err)
}
err = m.e2tInstanceManager.AddRansToInstance(e2tAddress, []string{ranName})
if err != nil {
m.logger.Errorf("#E2TAssociationManager.AssociateRan - RAN name: %s - Failed to add RAN to E2T instance %s. Error: %s", ranName, e2tAddress, err)
- return e2managererrors.NewRnibDbError()
+ return ranStatusChangePublished, e2managererrors.NewRnibDbError()
}
m.logger.Infof("#E2TAssociationManager.AssociateRan - successfully associated RAN %s with E2T %s", ranName, e2tAddress)
}
m.logger.Infof("#E2TAssociationManager.AssociateRan - successfully associated RAN %s with E2T %s", ranName, e2tAddress)
+ return ranStatusChangePublished, nil
-func (m *E2TAssociationManager) associateRanAndUpdateNodeb(e2tAddress string, nodebInfo *entities.NodebInfo) error {
+func (m *E2TAssociationManager) associateRanAndUpdateNodeb(e2tAddress string, nodebInfo *entities.NodebInfo) (bool, error) {
rmErr := m.rmClient.AssociateRanToE2TInstance(e2tAddress, nodebInfo.RanName)
if rmErr != nil {
rmErr := m.rmClient.AssociateRanToE2TInstance(e2tAddress, nodebInfo.RanName)
if rmErr != nil {
- _ = m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_DISCONNECTED)
- return e2managererrors.NewRoutingManagerError()
+ ranStatusChangePublished, _ := m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_DISCONNECTED)
+ return ranStatusChangePublished, e2managererrors.NewRoutingManagerError()
- rnibErr := m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_CONNECTED)
+ ranStatusChangePublished, rnibErr := m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_CONNECTED)
- return e2managererrors.NewRnibDbError()
+ return ranStatusChangePublished, e2managererrors.NewRnibDbError()
}
nodebInfo.AssociatedE2TInstanceAddress = e2tAddress
}
nodebInfo.AssociatedE2TInstanceAddress = e2tAddress
if rnibErr != nil {
m.logger.Errorf("#E2TAssociationManager.associateRanAndUpdateNodeb - RAN name: %s - Failed updating nodeb. Error: %s", nodebInfo.RanName, rnibErr)
if rnibErr != nil {
m.logger.Errorf("#E2TAssociationManager.associateRanAndUpdateNodeb - RAN name: %s - Failed updating nodeb. Error: %s", nodebInfo.RanName, rnibErr)
- return e2managererrors.NewRnibDbError()
+ return ranStatusChangePublished, e2managererrors.NewRnibDbError()
+ return ranStatusChangePublished, nil
}
func (m *E2TAssociationManager) DissociateRan(e2tAddress string, ranName string) error {
}
func (m *E2TAssociationManager) DissociateRan(e2tAddress string, ranName string) error {
updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName)
writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil)
updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName)
writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil)
- err := manager.AssociateRan(E2TAddress, nb)
+ _, err := manager.AssociateRan(E2TAddress, nb)
assert.Nil(t, err)
readerMock.AssertExpectations(t)
assert.Nil(t, err)
readerMock.AssertExpectations(t)
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNb, RanName+"_CONNECTED").Return(common.NewInternalError(fmt.Errorf("for tests")))
updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNb, RanName+"_CONNECTED").Return(common.NewInternalError(fmt.Errorf("for tests")))
- err := manager.AssociateRan(E2TAddress, nb)
+ _, err := manager.AssociateRan(E2TAddress, nb)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
writerMock.On("UpdateNodebInfo", nb).Return(nil)
nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""}
writerMock.On("UpdateNodebInfo", nb).Return(nil)
- err := manager.AssociateRan(E2TAddress, nb)
+ _, err := manager.AssociateRan(E2TAddress, nb)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
updatedNb2.AssociatedE2TInstanceAddress = E2TAddress
writerMock.On("UpdateNodebInfo", &updatedNb2).Return(e2managererrors.NewRnibDbError())
updatedNb2.AssociatedE2TInstanceAddress = E2TAddress
writerMock.On("UpdateNodebInfo", &updatedNb2).Return(e2managererrors.NewRnibDbError())
- err := manager.AssociateRan(E2TAddress, nb)
+ _, err := manager.AssociateRan(E2TAddress, nb)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
var e2tInstance *entities.E2TInstance
readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, errors.New("test"))
var e2tInstance *entities.E2TInstance
readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, errors.New("test"))
- err := manager.AssociateRan(E2TAddress, nb)
+ _, err := manager.AssociateRan(E2TAddress, nb)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName)
writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(errors.New("test"))
updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName)
writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(errors.New("test"))
- err := manager.AssociateRan(E2TAddress, nb)
+ _, err := manager.AssociateRan(E2TAddress, nb)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
assert.NotNil(t, err)
assert.IsType(t, &e2managererrors.RnibDbError{}, err)
- err = m.ranConnectStatusChangeManager.ChangeStatus(nodeb, entities.ConnectionStatus_DISCONNECTED)
+ _, err = m.ranConnectStatusChangeManager.ChangeStatus(nodeb, entities.ConnectionStatus_DISCONNECTED)
if err != nil {
return err
}
if err != nil {
return err
}
)
type IRanConnectStatusChangeManager interface {
)
type IRanConnectStatusChangeManager interface {
- ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) error
+ ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) (bool, error)
}
type RanConnectStatusChangeManager struct {
}
type RanConnectStatusChangeManager struct {
-func (m *RanConnectStatusChangeManager) ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) error {
+func (m *RanConnectStatusChangeManager) ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) (bool, error) {
m.logger.Infof("#RanConnectStatusChangeManager.ChangeStatus - RAN name: %s, currentStatus: %s, nextStatus: %s", nodebInfo.RanName, nodebInfo.GetConnectionStatus(), nextStatus)
m.logger.Infof("#RanConnectStatusChangeManager.ChangeStatus - RAN name: %s, currentStatus: %s, nextStatus: %s", nodebInfo.RanName, nodebInfo.GetConnectionStatus(), nextStatus)
+ var ranStatusChangePublished bool
+
// set the proper event
event := m.setEvent(nodebInfo, nextStatus)
isConnectivityEvent := event != NONE_RAW_EVENT
// set the proper event
event := m.setEvent(nodebInfo, nextStatus)
isConnectivityEvent := event != NONE_RAW_EVENT
if !isConnectivityEvent {
err := m.updateNodebInfo(nodebInfo)
if err != nil {
if !isConnectivityEvent {
err := m.updateNodebInfo(nodebInfo)
if err != nil {
+ return ranStatusChangePublished, err
}
} else {
err := m.updateNodebInfoOnConnectionStatusInversion(nodebInfo, event)
if err != nil {
}
} else {
err := m.updateNodebInfoOnConnectionStatusInversion(nodebInfo, event)
if err != nil {
+ return ranStatusChangePublished, err
+ ranStatusChangePublished = true
}
// in any case, update RanListManager
}
// in any case, update RanListManager
+ return ranStatusChangePublished, nil
}
func (m *RanConnectStatusChangeManager) updateNodebInfoOnConnectionStatusInversion(nodebInfo *entities.NodebInfo, event string) error {
}
func (m *RanConnectStatusChangeManager) updateNodebInfoOnConnectionStatusInversion(nodebInfo *entities.NodebInfo, event string) error {
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+CONNECTED_RAW_EVENT).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
ranAlarmServiceMock.On("SetConnectivityChangeAlarm", &updatedNodebInfo).Return(nil)
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+CONNECTED_RAW_EVENT).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
ranAlarmServiceMock.On("SetConnectivityChangeAlarm", &updatedNodebInfo).Return(nil)
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_CONNECTED)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_CONNECTED)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN
writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN
writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_SHUT_DOWN)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_SHUT_DOWN)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN
writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN
writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_SHUT_DOWN)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_SHUT_DOWN)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+CONNECTED_RAW_EVENT).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
ranAlarmServiceMock.On("SetConnectivityChangeAlarm", &updatedNodebInfo).Return(nil)
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+CONNECTED_RAW_EVENT).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
ranAlarmServiceMock.On("SetConnectivityChangeAlarm", &updatedNodebInfo).Return(nil)
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_CONNECTED)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_CONNECTED)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+DISCONNECTED_RAW_EVENT).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
ranAlarmServiceMock.On("SetConnectivityChangeAlarm", &updatedNodebInfo).Return(nil)
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+DISCONNECTED_RAW_EVENT).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
ranAlarmServiceMock.On("SetConnectivityChangeAlarm", &updatedNodebInfo).Return(nil)
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_DISCONNECTED)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_DISCONNECTED)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
updatedNodebInfo := *origNodebInfo
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN
writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(common.NewInternalError(errors.New("Error")))
updatedNodebInfo := *origNodebInfo
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN
writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(common.NewInternalError(errors.New("Error")))
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_SHUT_DOWN)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_SHUT_DOWN)
assert.NotNil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.NotNil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
updatedNodebInfo := *origNodebInfo
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+CONNECTED_RAW_EVENT).Return(common.NewInternalError(errors.New("Error")))
updatedNodebInfo := *origNodebInfo
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+CONNECTED_RAW_EVENT).Return(common.NewInternalError(errors.New("Error")))
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_CONNECTED)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_CONNECTED)
assert.NotNil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.NotNil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN
writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(common.NewInternalError(errors.New("Error")))
updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN
writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(common.NewInternalError(errors.New("Error")))
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_SHUT_DOWN)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_SHUT_DOWN)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+CONNECTED_RAW_EVENT).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
ranAlarmServiceMock.On("SetConnectivityChangeAlarm", &updatedNodebInfo).Return(common.NewInternalError(errors.New("Error")))
writerMock.On("UpdateNodebInfoOnConnectionStatusInversion", &updatedNodebInfo, RanName+"_"+CONNECTED_RAW_EVENT).Return(nil)
ranListManagerMock.On("UpdateRanState", &updatedNodebInfo).Return(nil)
ranAlarmServiceMock.On("SetConnectivityChangeAlarm", &updatedNodebInfo).Return(common.NewInternalError(errors.New("Error")))
- err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_CONNECTED)
+ _, err := ranConnectStatusChangeManager.ChangeStatus(origNodebInfo, entities.ConnectionStatus_CONNECTED)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
assert.Nil(t, err)
writerMock.AssertExpectations(t)
ranListManagerMock.AssertExpectations(t)
}
if connectionStatus == entities.ConnectionStatus_SHUTTING_DOWN {
}
if connectionStatus == entities.ConnectionStatus_SHUTTING_DOWN {
- return m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_SHUT_DOWN)
+ _, err = m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_SHUT_DOWN)
+ return err
- err = m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_DISCONNECTED)
+ _, err = m.ranConnectStatusChangeManager.ChangeStatus(nodebInfo, entities.ConnectionStatus_DISCONNECTED)
if err != nil {
return err
if err != nil {
return err
+func (rnibWriterMock *RnibWriterMock) UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error {
+ args := rnibWriterMock.Called(nodebInfo)
+
+ errArg := args.Get(0)
+
+ if errArg != nil {
+ return errArg.(error)
+ }
+
+ return nil
+}
+
func (rnibWriterMock *RnibWriterMock) SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error {
args := rnibWriterMock.Called(inventoryName, ranLoadInformation)
func (rnibWriterMock *RnibWriterMock) SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error {
args := rnibWriterMock.Called(inventoryName, ranLoadInformation)
func (rnibWriterMock *RnibWriterMock) AddEnb(nodebInfo *entities.NodebInfo) error {
args := rnibWriterMock.Called(nodebInfo)
return args.Error(0)
func (rnibWriterMock *RnibWriterMock) AddEnb(nodebInfo *entities.NodebInfo) error {
args := rnibWriterMock.Called(nodebInfo)
return args.Error(0)
-}
\ No newline at end of file
type RNibWriter interface {
SaveNodeb(nodebInfo *entities.NodebInfo) error
UpdateNodebInfo(nodebInfo *entities.NodebInfo) error
type RNibWriter interface {
SaveNodeb(nodebInfo *entities.NodebInfo) error
UpdateNodebInfo(nodebInfo *entities.NodebInfo) error
+ UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error
SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error
SaveE2TInstance(e2tInstance *entities.E2TInstance) error
SaveE2TAddresses(addresses []string) error
SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error
SaveE2TInstance(e2tInstance *entities.E2TInstance) error
SaveE2TAddresses(addresses []string) error
-/*
-UpdateNodebInfo...
-*/
-func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error {
+func (w *rNibWriterInstance) updateNodebInfo(nodebInfo *entities.NodebInfo, publish bool) error {
pairs, err := buildUpdateNodebInfoPairs(nodebInfo)
pairs, err := buildUpdateNodebInfoPairs(nodebInfo)
+ if publish {
+ channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanUpdatedEvent)
+ err = w.sdl.SetAndPublish(channelsAndEvents, pairs)
+ } else {
+ err = w.sdl.Set(pairs)
+ }
if err != nil {
return common.NewInternalError(err)
if err != nil {
return common.NewInternalError(err)
+/*
+UpdateNodebInfo...
+*/
+func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error {
+ return w.updateNodebInfo(nodebInfo, false)
+}
+
+/*
+UpdateNodebInfoAndPublish...
+*/
+func (w *rNibWriterInstance) UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error {
+ return w.updateNodebInfo(nodebInfo, true)
+}
+
+
/*
SaveRanLoadInformation stores ran load information for the provided ran
*/
/*
SaveRanLoadInformation stores ran load information for the provided ran
*/
type RNibDataService interface {
SaveNodeb(nodebInfo *entities.NodebInfo) error
UpdateNodebInfo(nodebInfo *entities.NodebInfo) error
type RNibDataService interface {
SaveNodeb(nodebInfo *entities.NodebInfo) error
UpdateNodebInfo(nodebInfo *entities.NodebInfo) error
+ UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error
SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error
GetNodeb(ranName string) (*entities.NodebInfo, error)
GetListNodebIds() ([]*entities.NbIdentity, error)
SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error
GetNodeb(ranName string) (*entities.NodebInfo, error)
GetListNodebIds() ([]*entities.NbIdentity, error)
+func (w *rNibDataService) UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error {
+ w.logger.Infof("#RnibDataService.UpdateNodebInfoAndPublish - nodebInfo: %s", nodebInfo)
+
+ err := w.retry("UpdateNodebInfoAndPublish", func() (err error) {
+ err = w.rnibWriter.UpdateNodebInfoAndPublish(nodebInfo)
+ return
+ })
+
+ return err
+}
+
func (w *rNibDataService) SaveNodeb(nodebInfo *entities.NodebInfo) error {
w.logger.Infof("#RnibDataService.SaveNodeb - nodebInfo: %s", nodebInfo)
func (w *rNibDataService) SaveNodeb(nodebInfo *entities.NodebInfo) error {
w.logger.Infof("#RnibDataService.SaveNodeb - nodebInfo: %s", nodebInfo)