Validate request bodies in controller methods
[portal/ric-dashboard.git] / dashboard / webapp-backend / src / main / java / org / oransc / ric / portal / dashboard / controller / E2ManagerController.java
index ea0422e..06cbc6b 100644 (file)
@@ -23,6 +23,8 @@ import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.validation.Valid;
+
 import org.oransc.ric.portal.dashboard.DashboardApplication;
 import org.oransc.ric.portal.dashboard.DashboardConstants;
 import org.oransc.ric.portal.dashboard.config.E2ManagerApiBuilder;
@@ -32,8 +34,7 @@ import org.oransc.ricplt.e2mgr.client.api.HealthCheckApi;
 import org.oransc.ricplt.e2mgr.client.api.NodebApi;
 import org.oransc.ricplt.e2mgr.client.model.GetNodebResponse;
 import org.oransc.ricplt.e2mgr.client.model.NodebIdentity;
-import org.oransc.ricplt.e2mgr.client.model.ResetRequest;
-import org.oransc.ricplt.e2mgr.client.model.SetupRequest;
+import org.oransc.ricplt.e2mgr.client.model.UpdateGnbRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,9 +43,9 @@ import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.annotation.Secured;
 import org.springframework.util.Assert;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -56,10 +57,9 @@ import io.swagger.annotations.ApiOperation;
 /**
  * Proxies calls from the front end to the E2 Manager API.
  * 
- * If a method throws RestClientResponseException, it is handled by
- * {@link CustomResponseEntityExceptionHandler#handleProxyMethodException(Exception, org.springframework.web.context.request.WebRequest)}
- * which returns status 502. All other exceptions are handled by Spring which
- * returns status 500.
+ * If a method throws RestClientResponseException, it is handled by a method in
+ * {@link CustomResponseEntityExceptionHandler} which returns status 502. All
+ * other exceptions are handled by Spring which returns status 500.
  */
 @Configuration
 @RestController
@@ -77,10 +77,6 @@ public class E2ManagerController {
        public static final String RAN_METHOD = NODEB_PREFIX + "/ran";
        public static final String NODEB_SHUTDOWN_METHOD = NODEB_PREFIX + "/shutdown";
        public static final String NODEB_LIST_METHOD = NODEB_PREFIX + "/ids";
-       public static final String ENDC_SETUP_METHOD = NODEB_PREFIX + "/endc-setup";
-       public static final String X2_SETUP_METHOD = NODEB_PREFIX + "/x2-setup";
-       // Reset uses prefix, adds a path parameter below
-       public static final String RESET_METHOD = "reset";
        // Path parameters
        private static final String PP_RANNAME = "ranName";
 
@@ -157,30 +153,6 @@ public class E2ManagerController {
                return e2ManagerApiBuilder.getNodebApi(instanceKey).getNb(ranName);
        }
 
-       @ApiOperation(value = "Sets up an EN-DC RAN connection via the E2 manager.")
-       @PostMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/"
-                       + ENDC_SETUP_METHOD)
-       @Secured({ DashboardConstants.ROLE_ADMIN })
-       public ResponseEntity<String> endcSetup(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
-                       @RequestBody SetupRequest setupRequest) {
-               logger.debug("endcSetup instance {} request {}", instanceKey, setupRequest);
-               NodebApi api = e2ManagerApiBuilder.getNodebApi(instanceKey);
-               api.endcSetup(setupRequest);
-               return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
-       }
-
-       @ApiOperation(value = "Sets up an X2 RAN connection via the E2 manager.")
-       @PostMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/"
-                       + X2_SETUP_METHOD)
-       @Secured({ DashboardConstants.ROLE_ADMIN })
-       public ResponseEntity<String> x2Setup(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
-                       @RequestBody SetupRequest setupRequest) {
-               logger.debug("x2Setup instance {} request {}", instanceKey, setupRequest);
-               NodebApi api = e2ManagerApiBuilder.getNodebApi(instanceKey);
-               api.x2Setup(setupRequest);
-               return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
-       }
-
        @ApiOperation(value = "Close all connections to the RANs and delete the data from the nodeb-rnib DB.")
        @PutMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/"
                        + NODEB_SHUTDOWN_METHOD)
@@ -191,18 +163,18 @@ public class E2ManagerController {
                NodebApi api = e2ManagerApiBuilder.getNodebApi(instanceKey);
                api.nodebShutdownPut();
                return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
-
        }
 
-       @ApiOperation(value = "Abort any other ongoing procedures over X2 between the RIC and the RAN.")
+       @ApiOperation(value = "Update GNB.")
        @PutMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + NODEB_PREFIX
-                       + "/{" + PP_RANNAME + "}/" + RESET_METHOD)
+                       + "/{" + PP_RANNAME + "}")
        @Secured({ DashboardConstants.ROLE_ADMIN })
-       public ResponseEntity<String> reset(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
-                       @PathVariable(PP_RANNAME) String ranName, @RequestBody ResetRequest resetRequest) {
-               logger.debug("reset instance {} name {}", instanceKey, ranName);
+       public ResponseEntity<String> updateGnb(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
+                       @PathVariable(PP_RANNAME) String ranName, //
+                       @Valid @Validated @RequestBody UpdateGnbRequest updateGnbRequest) {
+               logger.debug("updateGnb instance {} ran {}", instanceKey, ranName);
                NodebApi api = e2ManagerApiBuilder.getNodebApi(instanceKey);
-               api.reset(ranName, resetRequest);
+               api.updateGnb(updateGnbRequest, ranName);
                return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
        }