/** * Update details of a specified path id. * * @param id path id * @param stream pce path from json * @return 200 OK, 404 if given identifier does not exist */ @PUT @Path("{path_id}") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response updatePath(@PathParam("path_id") String id, final InputStream stream) { log.debug("Update path by identifier {}.", id); try { ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); JsonNode pathNode = jsonTree.get("path"); PcePath path = codec(PcePath.class).decode((ObjectNode) pathNode, this); // Assign cost List<Constraint> constrntList = new LinkedList<Constraint>(); // TODO: need to uncomment below lines once CostConstraint class is ready if (path.costConstraint() != null) { // CostConstraint.Type costType = CostConstraint.Type.values()[path.constraint().cost()]; // constrntList.add(CostConstraint.of(costType)); } // Assign bandwidth. Data rate unit is in BPS. if (path.bandwidthConstraint() != null) { // TODO: need to uncomment below lines once BandwidthConstraint class is ready // constrntList.add(LocalBandwidthConstraint // .of(path.constraint().bandwidth(), DataRateUnit.valueOf("BPS"))); } Boolean result = nullIsNotFound( get(PceService.class).updatePath(TunnelId.valueOf(id), constrntList), PCE_PATH_NOT_FOUND); return Response.status(OK).entity(result.toString()).build(); } catch (IOException e) { log.error("Update path failed because of exception {}.", e.toString()); throw new IllegalArgumentException(e); } }
@Override public boolean removeTunnelInfo(TunnelId tunnelId) { checkNotNull(tunnelId, TUNNEL_ID_NULL); if (tunnelInfoMap.remove(tunnelId) == null) { log.error("Tunnel info deletion for tunnel id {} has failed.", tunnelId.toString()); return false; } return true; }
/** * Retrieve details of a specified path id. * * @param id path id * @return 200 OK, 404 if given identifier does not exist */ @GET @Path("{path_id}") @Produces(MediaType.APPLICATION_JSON) public Response queryPath(@PathParam("path_id") String id) { log.debug("Query path by identifier {}.", id); Tunnel tunnel = nullIsNotFound(get(PceService.class).queryPath(TunnelId.valueOf(id)), PCE_PATH_NOT_FOUND); PcePath path = DefaultPcePath.builder().of(tunnel).build(); ObjectNode result = mapper().createObjectNode(); result.set("path", codec(PcePath.class).encode(path, this)); return ok(result.toString()).build(); }
/** * Release a specified path. * * @param id path id * @return 200 OK, 404 if given identifier does not exist */ @Path("{path_id}") @DELETE public Response releasePath(@PathParam("path_id") String id) { log.debug("Deletes path by identifier {}.", id); Boolean isSuccess = nullIsNotFound(get(PceService.class).releasePath(TunnelId.valueOf(id)), PCE_PATH_NOT_FOUND); if (!isSuccess) { log.debug("Path identifier {} does not exist", id); } return Response.status(OK).entity(isSuccess.toString()).build(); }
@Test public void testEquality() { DefaultVirtualDevice device1 = new DefaultVirtualDevice(NetworkId.networkId(0), DeviceId.deviceId(deviceIdValue1)); DefaultVirtualDevice device2 = new DefaultVirtualDevice(NetworkId.networkId(0), DeviceId.deviceId(deviceIdValue2)); ConnectPoint src = new ConnectPoint(device1.id(), PortNumber.portNumber(1)); ConnectPoint dst = new ConnectPoint(device2.id(), PortNumber.portNumber(2)); DefaultVirtualLink link1 = new DefaultVirtualLink(NetworkId.networkId(0), src, dst, TunnelId.valueOf(0)); DefaultVirtualLink link2 = new DefaultVirtualLink(NetworkId.networkId(0), src, dst, TunnelId.valueOf(0)); DefaultVirtualLink link3 = new DefaultVirtualLink(NetworkId.networkId(0), src, dst, TunnelId.valueOf(1)); DefaultVirtualLink link4 = new DefaultVirtualLink(NetworkId.networkId(1), src, dst, TunnelId.valueOf(0)); new EqualsTester() .addEqualityGroup(link1, link2) .addEqualityGroup(link3) .addEqualityGroup(link4) .testEquals(); }