X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fcontrollers%2Fnodeb_controller.go;h=802537d945e0b4616708f5deb13bbbc25abd135e;hb=refs%2Fchanges%2F99%2F899%2F1;hp=d0448aa3efd22dbf5cb3af6aa4355d2b334c5776;hpb=07ef76dd471a0892a893c90e0ab06713aee34be1;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/controllers/nodeb_controller.go b/E2Manager/controllers/nodeb_controller.go index d0448aa..802537d 100644 --- a/E2Manager/controllers/nodeb_controller.go +++ b/E2Manager/controllers/nodeb_controller.go @@ -20,7 +20,7 @@ package controllers import ( "e2mgr/logger" "e2mgr/models" - "e2mgr/providers" + "e2mgr/providers/httpmsghandlerprovider" "e2mgr/rNibWriter" "e2mgr/services" "e2mgr/sessions" @@ -32,7 +32,7 @@ import ( "github.com/go-ozzo/ozzo-validation" "github.com/go-ozzo/ozzo-validation/is" "github.com/golang/protobuf/jsonpb" - "github.com/julienschmidt/httprouter" + "github.com/gorilla/mux" "net/http" "net/http/httputil" "strings" @@ -58,6 +58,13 @@ var E2Sessions = make(sessions.E2Sessions) var messageChannel chan *models.E2RequestMessage var errorChannel chan error +type INodebController interface { + HandleRequest(writer http.ResponseWriter, request *http.Request) + GetNodebIdList (writer http.ResponseWriter, request *http.Request) + GetNodeb(writer http.ResponseWriter, request *http.Request) + HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request) +} + type NodebController struct { rmrService *services.RmrService Logger *logger.Logger @@ -65,8 +72,7 @@ type NodebController struct { rnibWriterProvider func() rNibWriter.RNibWriter } -func NewNodebController(logger *logger.Logger, rmrService *services.RmrService, rnibReaderProvider func() reader.RNibReader, - rnibWriterProvider func() rNibWriter.RNibWriter) *NodebController { +func NewNodebController(logger *logger.Logger, rmrService *services.RmrService, rnibReaderProvider func() reader.RNibReader, rnibWriterProvider func() rNibWriter.RNibWriter) *NodebController { messageChannel = make(chan *models.E2RequestMessage) errorChannel = make(chan error) return &NodebController{ @@ -77,19 +83,19 @@ func NewNodebController(logger *logger.Logger, rmrService *services.RmrService, } } - func prettifyRequest(request *http.Request) string { dump, _ := httputil.DumpRequest(request, true) requestPrettyPrint := strings.Replace(string(dump), "\r\n", " ", -1) return strings.Replace(requestPrettyPrint, "\n", "", -1) } -func (rc NodebController) HandleRequest(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { +func (rc NodebController) HandleRequest(writer http.ResponseWriter, request *http.Request) { startTime := time.Now() rc.Logger.Infof("[Client -> E2 Manager] #nodeb_controller.HandleRequest - request: %v", prettifyRequest(request)) - messageTypeParam := params.ByName("messageType") - requestHandlerProvider := providers.NewRequestHandlerProvider(rc.rnibWriterProvider) + vars := mux.Vars(request) + messageTypeParam := vars["messageType"] + requestHandlerProvider := httpmsghandlerprovider.NewRequestHandlerProvider(rc.rnibWriterProvider) handler, err := requestHandlerProvider.GetHandler(rc.Logger, messageTypeParam) if err != nil { @@ -139,24 +145,24 @@ func (rc NodebController) HandleRequest(writer http.ResponseWriter, request *htt printHandlingRequestElapsedTimeInMs(rc.Logger, startTime) } -func (rc NodebController) GetNodebIdList (writer http.ResponseWriter, request *http.Request, params httprouter.Params) { +func (rc NodebController) GetNodebIdList (writer http.ResponseWriter, request *http.Request) { startTime := time.Now() - rnibReaderService := services.NewRnibReaderService(rc.rnibReaderProvider()) + rnibReaderService := services.NewRnibReaderService(rc.rnibReaderProvider) nodebIdList, rnibError := rnibReaderService.GetNodebIdList() if rnibError != nil { rc.Logger.Errorf("%v", rnibError); httpStatusCode, errorCode, errorMessage := rnibErrorToHttpError(rnibError) - handleErrorResponse(rc.Logger,httpStatusCode,errorCode,errorMessage,writer,startTime ) + handleErrorResponse(rc.Logger, httpStatusCode, errorCode, errorMessage, writer, startTime) return; } - pmList:= utils.ConvertNodebIdListToProtoMessageList(*nodebIdList) + pmList := utils.ConvertNodebIdListToProtoMessageList(nodebIdList) result, err := utils.MarshalProtoMessageListToJsonArray(pmList) if err != nil { rc.Logger.Errorf("%v", err); - handleErrorResponse(rc.Logger,http.StatusInternalServerError,internalErrorCode,internalErrorMessage,writer,startTime ) + handleErrorResponse(rc.Logger, http.StatusInternalServerError, internalErrorCode, internalErrorMessage, writer, startTime) return; } @@ -165,11 +171,12 @@ func (rc NodebController) GetNodebIdList (writer http.ResponseWriter, request *h writer.Write([]byte(result)) } -func (rc NodebController) GetNodeb(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { +func (rc NodebController) GetNodeb(writer http.ResponseWriter, request *http.Request) { startTime := time.Now() - ranName := params.ByName("ranName") + vars := mux.Vars(request) + ranName := vars["ranName"] // WAS: respondingNode, rnibError := reader.GetRNibReader().GetNodeb(ranName) - rnibReaderService := services.NewRnibReaderService(rc.rnibReaderProvider()); + rnibReaderService := services.NewRnibReaderService(rc.rnibReaderProvider); respondingNode, rnibError := rnibReaderService.GetNodeb(ranName) if rnibError != nil { rc.Logger.Errorf("%v", rnibError) @@ -192,7 +199,7 @@ func (rc NodebController) GetNodeb(writer http.ResponseWriter, request *http.Req writer.Write([]byte(result)) } -func (rc NodebController) HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { +func (rc NodebController) HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request) { //fmt.Println("[X-APP -> Client] #HandleHealthCheckRequest - http status: 200") writer.WriteHeader(http.StatusOK) } @@ -242,13 +249,13 @@ func printHandlingRequestElapsedTimeInMs(logger *logger.Logger, startTime time.T float64(time.Since(startTime))/float64(time.Millisecond)) } -func rnibErrorToHttpError(rnibError common.IRNibError) (int, int, string) { - switch rnibError.GetCode() { - case common.RESOURCE_NOT_FOUND: +func rnibErrorToHttpError(rnibError error) (int, int, string) { + switch rnibError.(type) { + case *common.ResourceNotFoundError: return http.StatusNotFound, notFoundErrorCode, notFoundErrorMessage - case common.INTERNAL_ERROR: + case *common.InternalError: return http.StatusInternalServerError, internalErrorCode, internalErrorMessage - case common.VALIDATION_ERROR: + case *common.ValidationError: return http.StatusBadRequest, validationErrorCode, validationFailedMessage default: return http.StatusInternalServerError, internalErrorCode, internalErrorMessage