@Override public List<OpenDaylightControllerVO> listControllers(ListOpenDaylightControllersCmd cmd) { if (cmd.getId() != null) { List<OpenDaylightControllerVO> foundControllers = new ArrayList<OpenDaylightControllerVO>(); OpenDaylightControllerVO controller = openDaylightControllerMappingDao.findById(cmd.getId()); if (controller != null) { foundControllers.add(controller); } return foundControllers; } else if (cmd.getPhysicalNetworkId() != null) { return openDaylightControllerMappingDao.listByPhysicalNetwork(cmd.getPhysicalNetworkId()); } return openDaylightControllerMappingDao.listAll(); }
@Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { try { resourceManager.deleteController(this); SuccessResponse response = new SuccessResponse(getCommandName()); response.setResponseName(getCommandName()); setResponseObject(response); //FIXME } catch (InvalidParameterValueException e) { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete OpenDaylight controller."); } }
@Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { List<OpenDaylightControllerVO> controllers = resourceManager.listControllers(this); List<OpenDaylightControllerResponse> controllerList = new ArrayList<OpenDaylightControllerResponse>(); for (OpenDaylightControllerVO controller: controllers) { OpenDaylightControllerResponse responseObject = resourceManager.createResponseFromVO(controller); controllerList.add(responseObject); } ListResponse<OpenDaylightControllerResponse> responseList = new ListResponse<OpenDaylightControllerResponse>(); responseList.setResponseName(getCommandName()); responseList.setResponses(controllerList); setResponseObject(responseList); }
throw new CloudRuntimeException("No network device found for name " + deviceName); final Long physicalNetworkId = cmd.getPhysicalNetworkId(); PhysicalNetworkVO physicalNetwork = physicalNetworkDao.findById(physicalNetworkId); if (physicalNetwork == null) { hostParams.put("physicalNetworkId", String.valueOf(physicalNetwork.getId())); hostParams.put("name", "ODL Controller - " + hostParams.get("guid")); hostParams.put("url", cmd.getUrl()); hostParams.put("username", cmd.getUsername()); hostParams.put("password", cmd.getPassword());
@Override public void deleteController(DeleteOpenDaylightControllerCmd cmd) throws InvalidParameterValueException { OpenDaylightControllerVO controller = openDaylightControllerMappingDao.findById(cmd.getId()); if (controller == null) { throw new InvalidParameterValueException("No ODL Controller with id " + cmd.getId()); } // Find the physical network we work for Long physicalNetworkId = controller.getPhysicalNetworkId(); PhysicalNetworkVO physicalNetwork = physicalNetworkDao.findById(physicalNetworkId); if (physicalNetwork != null) { // Lets see if there are networks that use us List<NetworkVO> networkList = networkDao.listByPhysicalNetwork(physicalNetworkId); if (networkList != null) { // Networks with broadcast type lswitch are ours for (NetworkVO network : networkList) { if (network.getBroadcastDomainType() == Networks.BroadcastDomainType.OpenDaylight) { if ((network.getState() != Network.State.Shutdown) && (network.getState() != Network.State.Destroy)) { throw new CloudRuntimeException("This Controller can not be deleted as there are one or more logical networks provisioned by cloudstack."); } } } } } HostVO host = hostDao.findById(controller.getHostId()); Long hostId = host.getId(); host.setResourceState(ResourceState.Maintenance); hostDao.update(hostId, host); resourceManager.deleteHost(hostId, false, false); openDaylightControllerMappingDao.remove(cmd.getId()); }