ParamRanName = "ranName"
LimitRequest = 2000
)
+const ApplicationJson = "application/json"
+const ContentType = "Content-Type"
type INodebController interface {
Shutdown(writer http.ResponseWriter, r *http.Request)
GetNodeb(writer http.ResponseWriter, r *http.Request)
UpdateGnb(writer http.ResponseWriter, r *http.Request)
GetNodebIdList(writer http.ResponseWriter, r *http.Request)
+ SetGeneralConfiguration(writer http.ResponseWriter, r *http.Request)
}
type NodebController struct {
return
}
- request.Gnb = &gnb;
+ request.Gnb = &gnb
request.RanName = ranName
c.handleRequest(writer, &r.Header, httpmsghandlerprovider.UpdateGnbRequest, request, true)
}
+func (c *NodebController) SetGeneralConfiguration(writer http.ResponseWriter, r *http.Request) {
+ c.logger.Infof("[Client -> E2 Manager] #NodebController.SetGeneralConfiguration - request: %v", c.prettifyRequest(r))
+
+ request := models.GeneralConfigurationRequest{}
+
+ if !c.extractJsonBodyDisallowUnknownFields(r, &request, writer){
+ return
+ }
+ c.handleRequest(writer, &r.Header, httpmsghandlerprovider.SetGeneralConfigurationRequest, request, false)
+}
+
func (c *NodebController) Shutdown(writer http.ResponseWriter, r *http.Request) {
c.logger.Infof("[Client -> E2 Manager] #NodebController.Shutdown - request: %v", c.prettifyRequest(r))
c.handleRequest(writer, &r.Header, httpmsghandlerprovider.ShutdownRequest, nil, false)
return true
}
+func (c *NodebController) extractJsonBodyDisallowUnknownFields(r *http.Request, request models.Request, writer http.ResponseWriter) bool {
+ defer r.Body.Close()
+
+ decoder := json.NewDecoder(r.Body)
+ decoder.DisallowUnknownFields()
+
+ if err := decoder.Decode(&request); err != nil {
+ c.logger.Errorf("[Client -> E2 Manager] #NodebController.extractJsonBody - unable to extract json body - error: %s", err)
+ c.handleErrorResponse(e2managererrors.NewInvalidJsonError(), writer)
+ return false
+ }
+
+ return true
+}
+
func (c *NodebController) extractJsonBody(r *http.Request, request models.Request, writer http.ResponseWriter) bool {
defer r.Body.Close()
body, err := ioutil.ReadAll(io.LimitReader(r.Body, LimitRequest))
}
c.logger.Infof("[E2 Manager -> Client] #NodebController.handleRequest - response: %s", result)
- writer.Header().Set("Content-Type", "application/json")
+ writer.Header().Set(ContentType, ApplicationJson)
writer.Write(result)
}
func (c *NodebController) validateRequestHeader(header *http.Header) error {
- if header.Get("Content-Type") != "application/json" {
+ if header.Get(ContentType) != ApplicationJson {
c.logger.Errorf("#NodebController.validateRequestHeader - validation failure, incorrect content type")
return e2managererrors.NewHeaderValidationError()
c.logger.Errorf("[E2 Manager -> Client] #NodebController.handleErrorResponse - http status: %d, error response: %+v", httpError, errorResponseDetails)
- writer.Header().Set("Content-Type", "application/json")
+ writer.Header().Set(ContentType, ApplicationJson)
writer.WriteHeader(httpError)
_, err = writer.Write(errorResponse)
}