@RequestMapping(value = "/networks", method = RequestMethod.POST, consumes = "application/json") @ResponseStatus(HttpStatus.OK) public void addNetworks(@RequestBody final NetworkAdd na) { if (na.getName() == null || na.getName().isEmpty()) { throw BddException.INVALID_PARAMETER("name", na.getName()); } if (na.getPortGroup() == null || na.getPortGroup().isEmpty()) { throw BddException.INVALID_PARAMETER("port group", na.getPortGroup()); } if (na.isDhcp()) { networkManager.addDhcpNetwork(na.getName(), na.getPortGroup()); } else { if (!IpAddressUtil.isValidNetmask(na.getNetmask())) { throw BddException.INVALID_PARAMETER("netmask", na.getNetmask()); } long netmask = IpAddressUtil.getAddressAsLong(na.getNetmask()); if (!IpAddressUtil.isValidIp(netmask, IpAddressUtil.getAddressAsLong(na.getGateway()))) { throw BddException.INVALID_PARAMETER("gateway", na.getGateway()); } if (na.getDns1() != null && !IpAddressUtil.isValidIp(na.getDns1())) { throw BddException.INVALID_PARAMETER("primary dns", na.getDns1()); } if (na.getDns2() != null && !IpAddressUtil.isValidIp(na.getDns2())) { throw BddException.INVALID_PARAMETER("secondary dns", na.getDns2()); } AuAssert.check(na.getIp() != null, "Spring should guarantee this"); for (IpBlock blk : na.getIp()) { Long begin = IpAddressUtil.getAddressAsLong(blk.getBeginIp()); Long end = IpAddressUtil.getAddressAsLong(blk.getEndIp()); if (begin == null || end == null || begin > end || !IpAddressUtil.isValidIp(netmask, begin) || !IpAddressUtil.isValidIp(netmask, end)) { throw BddException.INVALID_PARAMETER( "IP block", "[" + blk.getBeginIp() + ", " + blk.getEndIp() + "]"); } } networkManager.addIpPoolNetwork( na.getName(), na.getPortGroup(), na.getNetmask(), na.getGateway(), na.getDns1(), na.getDns2(), na.getIp()); } }
@RequestMapping(value = "/networks", method = RequestMethod.GET, produces = "application/json") @ResponseBody public List<NetworkRead> getNetworks( @RequestParam(value = "details", required = false, defaultValue = "false") final Boolean details) { return networkManager.getAllNetworks(details != null ? details : false); }
@RequestMapping( value = "/network/{networkName}", method = RequestMethod.GET, produces = "application/json") @ResponseBody public NetworkRead getNetworkByName( @PathVariable("networkName") final String networkName, @RequestParam(value = "details", required = false, defaultValue = "false") final Boolean details) { NetworkRead network = networkManager.getNetworkByName(networkName, details != null ? details : false); if (network == null) { throw NetworkException.NOT_FOUND("network", networkName); } return network; }
@RequestMapping(value = "/network/{networkName}", method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.OK) public void deleteNetworkByName(@PathVariable("networkName") final String networkName) { networkManager.removeNetwork(networkName); }