<!-- this group Id must match LF gerrit repository -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
- <version>2.1.11.RELEASE</version>
+ <version>2.2.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>org.o-ran-sc.portal.ric-dashboard</groupId>
import java.lang.invoke.MethodHandles;
import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
import org.oransc.ric.a1med.client.api.A1MediatorApi;
import org.oransc.ric.a1med.client.model.PolicyTypeSchema;
import org.oransc.ric.portal.dashboard.DashboardApplication;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
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.web.bind.annotation.GetMapping;
@ApiOperation(value = "Creates or replaces the specified policy instance at the A1 Mediator")
@PutMapping(POLICY_INSTANCE_METHOD_PATH)
@Secured({ DashboardConstants.ROLE_ADMIN })
- public void createPolicyInstance(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
+ public ResponseEntity<String> createPolicyInstance(
+ @PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
@PathVariable(PP_TYPE_ID) Integer policyTypeId, //
@PathVariable(PP_INST_ID) String policyInstanceId,
- @ApiParam(value = "Policy body") @RequestBody String policyBody, //
- HttpServletResponse response) {
+ @ApiParam(value = "Policy body") @RequestBody String policyBody) {
logger.debug("createPolicyInstance: instance {} typeId {} instanceId {}", instanceKey, policyTypeId,
policyInstanceId);
A1MediatorApi api = a1MediatorClientBuilder.getA1MediatorApi(instanceKey);
api.a1ControllerCreateOrReplacePolicyInstance(policyTypeId, policyInstanceId, policyBody);
- response.setStatus(api.getApiClient().getStatusCode().value());
+ return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
}
}
import java.lang.invoke.MethodHandles;
import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
import org.onap.portalsdk.core.restful.domain.EcompUser;
import org.oransc.ric.portal.dashboard.DashboardApplication;
import org.oransc.ric.portal.dashboard.DashboardConstants;
import org.oransc.ric.portal.dashboard.DashboardUserManager;
-import org.oransc.ric.portal.dashboard.model.ErrorTransport;
-import org.oransc.ric.portal.dashboard.model.IDashboardResponse;
import org.oransc.ric.portal.dashboard.model.RicRegion;
import org.oransc.ric.portal.dashboard.model.RicRegionList;
import org.oransc.ric.portal.dashboard.model.RicRegionTransport;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.security.access.annotation.Secured;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ApiOperation(value = "Gets the kibana metrics URL for the specified app.", response = SuccessTransport.class)
@GetMapping(XAPPMETRICS_METHOD)
@Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD })
- public IDashboardResponse getAppMetricsUrl(@RequestParam String app, HttpServletResponse response) {
+ public ResponseEntity<Object> getAppMetricsUrl(@RequestParam String app) {
String metricsUrl = null;
if (DashboardConstants.APP_NAME_AC.equals(app))
metricsUrl = acAppMetricsUrl;
metricsUrl = mcAppMetricsUrl;
logger.debug("getAppMetricsUrl: app {} metricsurl {}", app, metricsUrl);
if (metricsUrl != null)
- return new SuccessTransport(200, metricsUrl);
- else {
- response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
- return new ErrorTransport(400, "Client provided app name is invalid as: " + app);
- }
+ return new ResponseEntity<>(new SuccessTransport(HttpStatus.OK.ordinal(), metricsUrl), HttpStatus.OK);
+ return ResponseEntity.badRequest().body("Client provided app name is invalid as: " + app);
}
}
import java.lang.invoke.MethodHandles;
-import javax.servlet.http.HttpServletResponse;
-
import org.oransc.ric.plt.appmgr.client.api.HealthApi;
import org.oransc.ric.plt.appmgr.client.api.XappApi;
import org.oransc.ric.plt.appmgr.client.model.AllDeployableXapps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
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.web.bind.annotation.DeleteMapping;
@GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/"
+ HEALTH_ALIVE_METHOD)
// No role required
- public void getHealth(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
- HttpServletResponse response) {
+ public ResponseEntity<String> getHealth(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey) {
logger.debug("getHealthAlive instance {}", instanceKey);
HealthApi api = appManagerApiBuilder.getHealthApi(instanceKey);
api.getHealthAlive();
- response.setStatus(api.getApiClient().getStatusCode().value());
+ return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
}
@ApiOperation(value = "Readiness check of App Manager - Readiness probe.")
@GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/"
+ HEALTH_READY_METHOD)
// No role required
- public void getHealthReady(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
- HttpServletResponse response) {
+ public ResponseEntity<String> getHealthReady(
+ @PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey) {
logger.debug("getHealthReady instance {}", instanceKey);
HealthApi api = appManagerApiBuilder.getHealthApi(instanceKey);
api.getHealthReady();
- response.setStatus(api.getApiClient().getStatusCode().value());
+ return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
}
@ApiOperation(value = "Returns the configuration of all Xapps.", response = AllXappConfig.class)
@ApiOperation(value = "Undeploy an existing xapp.")
@DeleteMapping(XAPPS_METHOD_PATH + "/{" + PP_XAPP_NAME + "}")
@Secured({ DashboardConstants.ROLE_ADMIN })
- public void undeployXapp(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
- @PathVariable(PP_XAPP_NAME) String appName, HttpServletResponse response) {
+ public ResponseEntity<String> undeployXapp(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
+ @PathVariable(PP_XAPP_NAME) String appName) {
logger.debug("undeployXapp instance {} name {}", instanceKey, appName);
XappApi api = appManagerApiBuilder.getXappApi(instanceKey);
api.undeployXapp(appName);
- response.setStatus(api.getApiClient().getStatusCode().value());
+ return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
}
}
import java.lang.invoke.MethodHandles;
-import javax.servlet.http.HttpServletResponse;
-
import org.oransc.ric.portal.dashboard.DashboardConstants;
import org.oransc.ric.portal.dashboard.config.SimpleKubernetesClientBuilder;
import org.oransc.ric.portal.dashboard.k8sapi.SimpleKubernetesClient;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpStatus;
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.web.bind.annotation.GetMapping;
@GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + PODS_METHOD
+ "/" + PP_CLUSTER + "/{" + PP_CLUSTER + "}" + "/" + PP_NAMESPACE + "/{" + PP_NAMESPACE + "}")
@Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD })
- public String listPods(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, //
+ public ResponseEntity<String> listPods(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, //
@PathVariable(PP_CLUSTER) String cluster, //
- @PathVariable(PP_NAMESPACE) String namespace, HttpServletResponse response) {
+ @PathVariable(PP_NAMESPACE) String namespace) {
logger.debug("listPods: instance {} cluster {} namespace {}", instanceKey, cluster, namespace);
SimpleKubernetesClient client = simpleKubernetesClientBuilder.getSimpleKubernetesClient(instanceKey);
if (CLUSTER_PLT.equalsIgnoreCase(cluster) || CLUSTER_RIC.equalsIgnoreCase(cluster)) {
- return client.listPods(namespace);
+ return ResponseEntity.ok().body(client.listPods(namespace));
} else {
- logger.warn("listPods: unknown cluster {}", cluster);
- response.setStatus(HttpStatus.BAD_REQUEST.value());
- return null;
+ final String msg = "listPods: unknown cluster " + cluster;
+ logger.warn(msg);
+ return ResponseEntity.badRequest().body(msg);
}
}
import java.lang.invoke.MethodHandles;
import org.oransc.ric.portal.dashboard.exception.UnknownInstanceException;
-import org.oransc.ric.portal.dashboard.model.ErrorTransport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
// Superclass has "logger" that is exposed here, so use a different name
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ /**
+ * Generates a message with an upper limit on size.
+ *
+ * @param t
+ * Throwable
+ * @return Message
+ */
+ private String getShortExceptionMessage(Throwable t) {
+ final int enough = 256;
+ String exString = t.toString();
+ return exString.length() > enough ? exString.substring(0, enough) : exString;
+ }
+
/**
* Logs the error and generates a JSON response when a REST controller method
* takes a RestClientResponseException. This is thrown by the Http client when a
* @param request
* The original request
*
- * @return A response entity with status code 502 plus some details in the body.
+ * @return A response entity with status code 502 and an unstructured message.
*/
@ExceptionHandler({ RestClientResponseException.class })
- public final ResponseEntity<ErrorTransport> handleProxyMethodException(Exception ex, WebRequest request) {
+ public final ResponseEntity<String> handleProxyMethodException(Exception ex, WebRequest request) {
// Capture the full stack trace in the log.
log.error("handleProxyMethodException: request {}, exception {}", request.getDescription(false), ex);
if (ex instanceof HttpStatusCodeException) {
HttpStatusCodeException hsce = (HttpStatusCodeException) ex;
- return new ResponseEntity<>(new ErrorTransport(hsce.getRawStatusCode(), hsce.getResponseBodyAsString(),
- ex.toString(), request.getDescription(false)), HttpStatus.BAD_GATEWAY);
+ return ResponseEntity.status(HttpStatus.BAD_GATEWAY).body(hsce.getResponseBodyAsString());
} else {
- return new ResponseEntity<>(new ErrorTransport(500, ex), HttpStatus.BAD_GATEWAY);
+ return ResponseEntity.status(HttpStatus.BAD_GATEWAY).body(getShortExceptionMessage(ex));
}
}
* The exception
* @param request
* The original request
- * @return A response entity with status code 400
+ * @return A response entity with status code 400 and an unstructured message.
*/
@ExceptionHandler({ UnknownInstanceException.class })
- public final ResponseEntity<ErrorTransport> handleUnknownInstanceException(Exception ex, WebRequest request) {
+ public final ResponseEntity<String> handleUnknownInstanceException(Exception ex, WebRequest request) {
log.warn("handleUnknownInstanceException: request {}, exception {}", request.getDescription(false),
ex.toString());
- return new ResponseEntity<>(new ErrorTransport(400, ex), HttpStatus.BAD_REQUEST);
+ return ResponseEntity.badRequest().body(getShortExceptionMessage(ex));
}
}
import java.util.ArrayList;
import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
import org.oransc.ric.e2mgr.client.api.HealthCheckApi;
import org.oransc.ric.e2mgr.client.api.NodebApi;
import org.oransc.ric.e2mgr.client.model.GetNodebResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
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.web.bind.annotation.GetMapping;
@ApiOperation(value = "Gets the health from the E2 manager, expressed as the response code.")
@GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + HEALTH_METHOD)
// No role required
- public void healthGet(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
- HttpServletResponse response) {
+ public ResponseEntity<String> healthGet(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey) {
logger.debug("healthGet instance {}", instanceKey);
HealthCheckApi api = e2ManagerApiBuilder.getHealthCheckApi(instanceKey);
api.healthGet();
- response.setStatus(api.getApiClient().getStatusCode().value());
+ return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
}
// This calls other methods to simplify the task of the front-end.
@PostMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/"
+ ENDC_SETUP_METHOD)
@Secured({ DashboardConstants.ROLE_ADMIN })
- public void endcSetup(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
- @RequestBody SetupRequest setupRequest, HttpServletResponse response) {
+ 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);
- response.setStatus(api.getApiClient().getStatusCode().value());
+ 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 void x2Setup(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
- @RequestBody SetupRequest setupRequest, HttpServletResponse response) {
+ 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);
- response.setStatus(api.getApiClient().getStatusCode().value());
+ 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)
@Secured({ DashboardConstants.ROLE_ADMIN })
- public void nodebShutdownPut(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
- HttpServletResponse response) {
+ public ResponseEntity<String> nodebShutdownPut(
+ @PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey) {
logger.debug("nodebShutdownPut instance {}", instanceKey);
NodebApi api = e2ManagerApiBuilder.getNodebApi(instanceKey);
api.nodebShutdownPut();
- response.setStatus(api.getApiClient().getStatusCode().value());
+ return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
+
}
@ApiOperation(value = "Abort any other ongoing procedures over X2 between the RIC and the RAN.")
@PutMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + NODEB_PREFIX
+ "/{" + PP_RANNAME + "}/" + RESET_METHOD)
@Secured({ DashboardConstants.ROLE_ADMIN })
- public void reset(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey,
- @PathVariable(PP_RANNAME) String ranName, @RequestBody ResetRequest resetRequest,
- HttpServletResponse response) {
+ 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);
NodebApi api = e2ManagerApiBuilder.getNodebApi(instanceKey);
api.reset(ranName, resetRequest);
- response.setStatus(api.getApiClient().getStatusCode().value());
+ return ResponseEntity.status(api.getApiClient().getStatusCode().value()).body(null);
}
}
+++ /dev/null
-/*-
- * ========================LICENSE_START=================================
- * O-RAN-SC
- * %%
- * Copyright (C) 2019 AT&T Intellectual Property
- * %%
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================LICENSE_END===================================
- */
-
-package org.oransc.ric.portal.dashboard.model;
-
-import java.time.Instant;
-
-/**
- * This mimics the model Spring-Boot uses for a message returned on failure, to
- * be serialized as JSON.
- */
-public class ErrorTransport implements IDashboardResponse {
-
- private Instant timestamp;
- private Integer status;
- private String error;
- private String message;
- private String path;
-
- /**
- * Builds an empty object.
- */
- public ErrorTransport() {
- // no-arg constructor
- }
-
- /**
- * Convenience constructor for minimal value set.
- *
- * @param status
- * Integer value like 400
- * @param error
- * Error message
- */
- public ErrorTransport(int status, String error) {
- this(status, error, null, null);
- }
-
- /**
- * Convenience constructor for populating an error from an exception
- *
- * @param status
- * Integer value like 400
- * @param throwable
- * The caught exception/throwable to convert to String with
- * an upper bound on characters
- */
- public ErrorTransport(int status, Throwable throwable) {
- this.timestamp = Instant.now();
- this.status = status;
- final int enough = 256;
- String exString = throwable.toString();
- this.error = exString.length() > enough ? exString.substring(0, enough) : exString;
- }
-
- /**
- * Builds an object with all fields
- *
- * @param status
- * Integer value like 500
- * @param error
- * Explanation
- * @param message
- * Additional explanation
- * @param path
- * Requested path
- */
- public ErrorTransport(int status, String error, String message, String path) {
- this.timestamp = Instant.now();
- this.status = status;
- this.error = error;
- this.message = message;
- this.path = path;
- }
-
- public Integer getStatus() {
- return status;
- }
-
- public void setStatus(Integer status) {
- this.status = status;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String error) {
- this.message = error;
- }
-
- public Instant getTimestamp() {
- return timestamp;
- }
-
- public void setTimestamp(Instant timestamp) {
- this.timestamp = timestamp;
- }
-
- public String getError() {
- return error;
- }
-
- public void setError(String error) {
- this.error = error;
- }
-
- public String getPath() {
- return path;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
- @Override
- public String toString() {
- return this.getClass().getSimpleName() + "[timestamp=" + getTimestamp() + ", error=" + getError() + ", path="
- + getPath() + "]";
- }
-
-}
*/
package org.oransc.ric.portal.dashboard.model;
+/**
+ * Trivial POJO used to transport scalar data like integer or string wrapped in
+ * a JSON structure.
+ */
public class SuccessTransport implements IDashboardResponse {
+ // Status is redundant :/
private int status;
private Object data;
package org.oransc.ric.portal.dashboard.controller;
import java.lang.invoke.MethodHandles;
+import java.nio.charset.Charset;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@GetMapping(HTTP_STATUS_CODE_EXCEPTION_METHOD)
public void throwHttpStatusCodeException() {
- logger.warn("throwing HttpStatusCodeException");
- throw new HttpClientErrorException(HttpStatus.CHECKPOINT, "simulate http status code exception");
+ logger.warn("throwing HttpClientErrorException");
+ final String mockResponseBody = "mock http status code exception";
+ throw new HttpClientErrorException(HttpStatus.CHECKPOINT, "mock status", mockResponseBody.getBytes(),
+ Charset.defaultCharset());
}
@GetMapping(REST_CLIENT_RESPONSE_EXCEPTION_METHOD)
import org.junit.jupiter.api.Test;
import org.onap.portalsdk.core.restful.domain.EcompUser;
import org.oransc.ric.portal.dashboard.DashboardConstants;
-import org.oransc.ric.portal.dashboard.model.ErrorTransport;
import org.oransc.ric.portal.dashboard.model.RicInstanceKeyName;
import org.oransc.ric.portal.dashboard.model.SuccessTransport;
import org.slf4j.Logger;
metricsQueryParms.put("app", "ABCD");
URI uri = buildUri(metricsQueryParms, AdminController.CONTROLLER_PATH, AdminController.XAPPMETRICS_METHOD);
logger.debug("Invoking {}", uri);
- ResponseEntity<ErrorTransport> errorResponse = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET,
- null, ErrorTransport.class);
- logger.debug("{}", errorResponse.getBody().getError().toString());
+ ResponseEntity<String> errorResponse = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET, null,
+ String.class);
+ logger.debug("{}", errorResponse.getBody().toString());
Assertions.assertTrue(errorResponse.getStatusCode().is4xxClientError());
}
URI uri = buildUri(null, AdminController.CONTROLLER_PATH,
AdminControllerExtension.HTTP_STATUS_CODE_EXCEPTION_METHOD);
logger.debug("Invoking {}", uri);
- ResponseEntity<ErrorTransport> errorResponse = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET,
- null, ErrorTransport.class);
- logger.debug("{}", errorResponse.getBody().getError().toString());
- Assertions.assertTrue(errorResponse.getStatusCode().is5xxServerError());
+ ResponseEntity<String> response = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET, null,
+ String.class);
+ logger.debug("{}", response.getBody().toString());
+ Assertions.assertTrue(response.getStatusCode().is5xxServerError());
}
@Test
URI uri = buildUri(null, AdminController.CONTROLLER_PATH,
AdminControllerExtension.REST_CLIENT_RESPONSE_EXCEPTION_METHOD);
logger.debug("Invoking {}", uri);
- ResponseEntity<ErrorTransport> errorResponse = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET,
- null, ErrorTransport.class);
- logger.debug("{}", errorResponse.getBody().getError().toString());
+ ResponseEntity<String> errorResponse = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET, null,
+ String.class);
+ logger.debug("{}", errorResponse.getBody());
Assertions.assertTrue(errorResponse.getStatusCode().is5xxServerError());
}
import java.lang.invoke.MethodHandles;
import java.net.URI;
-import org.junit.Assert;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.oransc.ric.portal.dashboard.DashboardConstants;
CaasIngressController.PP_CLUSTER, "cluster", CaasIngressController.PP_NAMESPACE, nsPlt);
logger.info("Invoking {}", uri);
String s = testRestTemplateStandardRole().getForObject(uri, String.class);
- Assert.assertNull(s);
+ Assertions.assertFalse(s.isEmpty());
+ Assertions.assertTrue(s.contains("unknown"));
}
// Unknown namespace triggers a controller exception
logger.info(eud.toString());
}
- private void checkErrorTransport(ErrorTransport m) {
- Assert.assertEquals(s1, m.getError());
- Assert.assertEquals(s2, m.getMessage());
- Assert.assertEquals(s3, m.getPath());
- Assert.assertEquals(i1, m.getStatus());
- Assert.assertEquals(t1, m.getTimestamp());
- }
-
- @Test
- public void testErrorTransport() {
- ErrorTransport m = new ErrorTransport(i1, s1);
- m = new ErrorTransport(i1, new Exception());
- m = new ErrorTransport(i1, s1, s2, s3);
- m = new ErrorTransport();
- m.setError(s1);
- m.setMessage(s2);
- m.setPath(s3);
- m.setStatus(i1);
- m.setTimestamp(t1);
- checkErrorTransport(m);
- logger.info(m.toString());
- }
-
private void checkInstanceTransport(RicInstanceKeyName m) {
Assert.assertEquals(s1, m.getKey());
Assert.assertEquals(s2, m.getName());
RIC Dashboard Release Notes
===========================
-Version 2.0.1, ? Feb 2020
+Version 2.0.1, 26 Feb 2020
--------------------------
+* Revise controllers to use ResponseEntity
+* Upgrade to Spring-Boot 2.2.4.RELEASE
Version 2.0.0, 5 Feb 2020
--------------------------