import io.swagger.annotations.ApiOperation;
/**
- * Proxies calls from the front end to the E2 Manager API. All methods answer
- * 502 on failure and wrap the remote details: <blockquote>HTTP server received
- * an invalid response from a server it consulted when acting as a proxy or
- * gateway.</blockquote>
+ * 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.
*/
@Configuration
@RestController
// Publish paths in constants so tests are easy to write
public static final String CONTROLLER_PATH = DashboardConstants.ENDPOINT_PREFIX + "/e2mgr";
- // Endpoints
+ // Dashboard only
public static final String HEALTH_METHOD = "health";
- public static final String NODEB_METHOD = "/nodeb";
- public static final String NODEB_LIST_METHOD = "/nodeb-ids";
public static final String RAN_METHOD = "/ran";
- public static final String RESET_METHOD = "/reset";
- public static final String ENDC_SETUP_METHOD = "/endcSetup";
- public static final String X2_SETUP_METHOD = "/x2Setup";
public static final String VERSION_METHOD = DashboardConstants.VERSION_METHOD;
+ // Keep these consistent with the E2M implementation
+ public static final String NODEB_PREFIX = "/nodeb";
+ public static final String NODEB_SHUTDOWN_METHOD = NODEB_PREFIX + "/shutdown";
+ public static final String NODEB_LIST_METHOD = NODEB_PREFIX + "/ids";
+ public static final String RESET_METHOD = "/reset";
+ public static final String ENDC_SETUP_METHOD = NODEB_PREFIX + "/endc-setup";
+ public static final String X2_SETUP_METHOD = NODEB_PREFIX + "/x2-setup";
// Path parameters
private static final String PP_RANNAME = "ranName";
}
@ApiOperation(value = "Get RAN by name.", response = GetNodebResponse.class)
- @GetMapping(NODEB_METHOD + "/{" + PP_RANNAME + "}")
+ @GetMapping(NODEB_SHUTDOWN_METHOD + "/{" + PP_RANNAME + "}")
@Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD })
public GetNodebResponse getNb(@PathVariable(PP_RANNAME) String ranName) {
logger.debug("getNb {}", ranName);
}
@ApiOperation(value = "Close all connections to the RANs and delete the data from the nodeb-rnib DB.")
- @PutMapping(NODEB_METHOD)
+ @PutMapping(NODEB_SHUTDOWN_METHOD)
@Secured({ DashboardConstants.ROLE_ADMIN })
public void nodebShutdownPut(HttpServletResponse response) {
logger.debug("nodebShutdownPut");
}
@ApiOperation(value = "Abort any other ongoing procedures over X2 between the RIC and the RAN.")
- @PutMapping(RESET_METHOD + "/{" + PP_RANNAME + "}")
+ @PutMapping(NODEB_PREFIX + "/{" + PP_RANNAME + "}"+ RESET_METHOD)
@Secured({ DashboardConstants.ROLE_ADMIN })
public void reset(@PathVariable(PP_RANNAME) String ranName, @RequestBody ResetRequest resetRequest,
HttpServletResponse response) {