+ private void checkHostStatus(Server server, String targetHostId, Context context)
+ throws ZoneException, RequestFailedException {
+ if (isComputeNodeDown(context, targetHostId)) {
+ String msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_FAILED, server.getName(), server.getId(),
+ "Target host " + targetHostId + " status is not UP/ENABLED");
+ logger.error(msg);
+ metricsLogger.error(msg);
+ throw new RequestFailedException(EVACUATE_SERVER, msg, HttpStatus.BAD_REQUEST_400, server);
+ }
+ }
+
+ private void checkHypervisor(Server server, String hypervisor, String hypervisorAfterEvacuate)
+ throws RequestFailedException {
+ if (hypervisor != null && hypervisor.equals(hypervisorAfterEvacuate)) {
+ String msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_FAILED, server.getName(), server.getId(),
+ "Hypervisor host " + hypervisor
+ + " after evacuate is the same as before evacuate. Provider (ex. Openstack) recovery actions may be needed.");
+ logger.error(msg);
+ metricsLogger.error(msg);
+ throw new RequestFailedException(EVACUATE_SERVER, msg, HttpStatus.INTERNAL_SERVER_ERROR_500, server);
+ }
+ }
+
+ private void checkStatus(Server server) throws RequestFailedException {
+ if (server.getStatus() == Server.Status.ERROR) {
+ String msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_FAILED, server.getName(), server.getId(),
+ "VM is in ERROR state after evacuate. Provider (ex. Openstack) recovery actions may be needed.");
+ logger.error(msg);
+ metricsLogger.error(msg);
+ throw new RequestFailedException(EVACUATE_SERVER, msg, HttpStatus.INTERNAL_SERVER_ERROR_500, server);
+ }
+ }
+