+ return new ResponseEntity<ErrorTransport>(new ErrorTransport(ex.getRawStatusCode(), ex.toString()),
+ HttpStatus.BAD_GATEWAY);
+ }
+ }
+
+ // This calls other methods to simplify the task of the front-end.
+ @ApiOperation(value = "Gets all RAN identities and statuses from the E2 manager.", response = RanDetailsTransport.class, responseContainer = "List")
+ @RequestMapping(value = "/ran", method = RequestMethod.GET)
+ public Object getRanDetails() {
+ logger.debug("getRanDetails");
+ List<NodebIdentity> nodebIdList = null;
+ try {
+ // TODO: remove mock when e2mgr delivers the getNodebIdList() method
+ nodebIdList = mockNodebIdList.isEmpty() ? e2NodebApi.getNodebIdList() : mockNodebIdList;
+ } catch (HttpStatusCodeException ex) {
+ logger.warn("getRanDetails: getNodebIdList failed: {}", ex.toString());
+ return new ResponseEntity<ErrorTransport>(new ErrorTransport(ex.getRawStatusCode(), ex.toString()),
+ HttpStatus.BAD_GATEWAY);
+ }
+ List<RanDetailsTransport> details = new ArrayList<>();
+ for (NodebIdentity nbid : nodebIdList) {
+ GetNodebResponse nbResp = null;
+ try {
+ // Keep looping despite failures
+ nbResp = e2NodebApi.getNb(nbid.getInventoryName());
+ } catch (HttpStatusCodeException ex) {
+ logger.warn("getRanDetails failed for name {}: {}", nbid.getInventoryName(), ex.toString());
+ nbResp = new GetNodebResponse().connectionStatus("UNKNOWN").ip("UNKNOWN").port(-1)
+ .ranName(nbid.getInventoryName());
+ }
+ details.add(new RanDetailsTransport(nbid, nbResp));