"e2mgr/models"
"e2mgr/services"
"gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
+ "github.com/pkg/errors"
)
type UpdateEnbManager struct {
}
}
-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()
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 {
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
+}
+