X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fmanagers%2Fupdate_enb_manager.go;h=0e8ed7ef21ad917c6853c29c315c84412b7c6458;hb=d39280d4e5f3b26c12be2f4ab3d829771c55fa7d;hp=6c9ae1427e56c27dbd0474deefc77fa3dd7de455;hpb=5830d4db63151dd466533673fd76d842302f0034;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/managers/update_enb_manager.go b/E2Manager/managers/update_enb_manager.go old mode 100644 new mode 100755 index 6c9ae14..0e8ed7e --- a/E2Manager/managers/update_enb_manager.go +++ b/E2Manager/managers/update_enb_manager.go @@ -25,6 +25,7 @@ import ( "e2mgr/models" "e2mgr/services" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" ) type UpdateEnbManager struct { @@ -41,21 +42,34 @@ func NewUpdateEnbManager(logger *logger.Logger, rnibDataService services.RNibDat } } -func (h *UpdateEnbManager) Validate(request *models.UpdateNodebRequest) error { +func (h *UpdateEnbManager) Validate(request models.Request) error { - h.logger.Infof("#UpdateEnbManager.Validate - Validate incoming request, ran name: %s", request.RanName) + updateEnbRequest := request.(*models.UpdateEnbRequest) - if err := h.nodebValidator.IsEnbValid(request.Enb); err != nil { - //TODO add log + h.logger.Infof("#UpdateEnbManager.Validate - Validate incoming request, ran name: %s", updateEnbRequest.RanName) + + if err := h.validateRequestBody(updateEnbRequest); err != nil { + h.logger.Errorf("#UpdateEnbManager.Validate - validation failure: %s is a mandatory field and cannot be empty", err) return err } - return nil } func (h *UpdateEnbManager) RemoveNodebCells(nodeb *entities.NodebInfo) error { - err := h.rnibDataService.RemoveServedCells(nodeb.GetRanName(), nodeb.GetEnb().GetServedCells()) + if nodeb.NodeType != entities.Node_ENB { + h.logger.Errorf("#UpdateEnbManager.RemoveNodebCells - RAN name: %s - RAN is not eNB.", nodeb.RanName) + return e2managererrors.NewRequestValidationError() + } + + servedCells := nodeb.GetEnb().GetServedCells() + + if len(servedCells) == 0 { + h.logger.Infof("#UpdateGnbManager.RemoveNodebCells - RAN name: %s - eNB cells are nil or empty - no cells to remove", nodeb.GetRanName()) + return nil + } + + err := h.rnibDataService.RemoveServedCells(nodeb.GetRanName(), servedCells) if err != nil { h.logger.Errorf("#UpdateEnbManager.RemoveNodebCells - RAN name: %s - Failed removing eNB served cells", nodeb.GetRanName()) return e2managererrors.NewRnibDbError() @@ -65,17 +79,14 @@ func (h *UpdateEnbManager) RemoveNodebCells(nodeb *entities.NodebInfo) error { return nil } -func (h *UpdateEnbManager) SetNodeb(nodeb *entities.NodebInfo, request *models.UpdateNodebRequest) error { +func (h *UpdateEnbManager) SetNodeb(nodeb *entities.NodebInfo, request models.Request) { + updateEnbRequest := request.(*models.UpdateEnbRequest) - ranName := nodeb.GetRanName() - - if nodeb.NodeType != entities.Node_ENB { - h.logger.Errorf("#UpdateEnbManager.SetNodeb - RAN name: %s - nodeb missing eNB configuration", ranName) - return e2managererrors.NewRequestValidationError() + if nodeb.SetupFromNetwork { + updateEnbRequest.Enb.EnbType = nodeb.GetEnb().GetEnbType() } - nodeb.Configuration = &entities.NodebInfo_Enb{Enb: request.Enb} - return nil + nodeb.Configuration = &entities.NodebInfo_Enb{Enb: updateEnbRequest.Enb} } func (h *UpdateEnbManager) UpdateNodeb(nodeb *entities.NodebInfo) error { @@ -89,3 +100,28 @@ func (h *UpdateEnbManager) UpdateNodeb(nodeb *entities.NodebInfo) error { return nil } + +func (h *UpdateEnbManager) validateRequestBody(request *models.UpdateEnbRequest) error { + + if request.Enb == nil { + return errors.New("enb") + } + + if err := h.nodebValidator.IsEnbValid(request.Enb); err != nil { + return err + } + + return nil +} + +func (h *UpdateEnbManager) ValidateNodeb(nodeb *entities.NodebInfo) error{ + + enbType := nodeb.GetEnb().GetEnbType() + + if h.nodebValidator.IsNgEnbType(enbType) { + h.logger.Errorf("#UpdateEnbManager.ValidateNodeb - validation failure: current enb type is not supported. enb type: %s", enbType) + return errors.New("") + } + return nil +} +