private void migrateVm(final MigrateVmOnHypervisorMsg msg, final NoErrorCompletion completion) { checkStatus(); List<MigrateStruct> lst = new ArrayList<>(); MigrateStruct s = buildMigrateStuct(msg); lst.add(s); final MigrateVmOnHypervisorReply reply = new MigrateVmOnHypervisorReply(); migrateVm(lst.iterator(), new Completion(msg, completion) { @Override public void success() { bus.reply(msg, reply); completion.done(); } @Override public void fail(ErrorCode errorCode) { reply.setError(errorCode); bus.reply(msg, reply); completion.done(); } }); }
private void executeSyncHttpCall(KVMHostSyncHttpCallMsg msg, NoErrorCompletion completion) { if (!msg.isNoStatusCheck()) { checkStatus(); } String url = buildUrl(msg.getPath()); MessageCommandRecorder.record(msg.getCommandClassName()); Map<String, String> headers = new HashMap<>(); headers.put(Constants.AGENT_HTTP_HEADER_RESOURCE_UUID, self.getUuid()); LinkedHashMap rsp = restf.syncJsonPost(url, msg.getCommand(), headers, LinkedHashMap.class); KVMHostSyncHttpCallReply reply = new KVMHostSyncHttpCallReply(); reply.setResponse(rsp); bus.reply(msg, reply); completion.done(); }
private void directlyDestroy(final VmDirectlyDestroyOnHypervisorMsg msg, final NoErrorCompletion completion) { checkStatus(); final VmDirectlyDestroyOnHypervisorReply reply = new VmDirectlyDestroyOnHypervisorReply(); DestroyVmCmd cmd = new DestroyVmCmd(); cmd.setUuid(msg.getVmUuid()); new Http<>(destroyVmPath, cmd, DestroyVmResponse.class).call(new ReturnValueCompletion<DestroyVmResponse>(completion) { @Override public void success(DestroyVmResponse ret) { if (!ret.isSuccess()) { reply.setError(err(HostErrors.FAILED_TO_DESTROY_VM_ON_HYPERVISOR, ret.getError())); } bus.reply(msg, reply); completion.done(); } @Override public void fail(ErrorCode errorCode) { reply.setError(errorCode); bus.reply(msg, reply); completion.done(); } }); }
private void resumeVm(final ResumeVmOnHypervisorMsg msg, final NoErrorCompletion completion) { checkStatus(); final VmInstanceInventory vminv = msg.getVmInventory(); ResumeVmOnHypervisorReply reply = new ResumeVmOnHypervisorReply(); ResumeVmCmd cmd = new ResumeVmCmd(); cmd.setUuid(vminv.getUuid()); cmd.setTimeout(120); new Http<>(resumeVmPath, cmd, ResumeVmResponse.class).call(new ReturnValueCompletion<ResumeVmResponse>(msg, completion) { @Override public void success(ResumeVmResponse ret) { if (!ret.isSuccess()) { reply.setError(err(HostErrors.FAILED_TO_STOP_VM_ON_HYPERVISOR, "unable to resume vm[uuid:%s, name:%s] on kvm host[uuid:%s, ip:%s], because %s", vminv.getUuid(), vminv.getName(), self.getUuid(), self.getManagementIp(), ret.getError())); logger.warn(reply.getError().getDetails()); } bus.reply(msg, reply); completion.done(); } @Override public void fail(ErrorCode err) { reply.setError(err); bus.reply(msg, reply); completion.done(); } }); }
private void executeAsyncHttpCall(final KVMHostAsyncHttpCallMsg msg, final NoErrorCompletion completion) { if (!msg.isNoStatusCheck()) { checkStatus(); } String url = buildUrl(msg.getPath()); MessageCommandRecorder.record(msg.getCommandClassName()); new Http<>(url, msg.getCommand(), LinkedHashMap.class) .call(new ReturnValueCompletion<LinkedHashMap>(msg, completion) { @Override public void success(LinkedHashMap ret) { KVMHostAsyncHttpCallReply reply = new KVMHostAsyncHttpCallReply(); reply.setResponse(ret); bus.reply(msg, reply); completion.done(); } @Override public void fail(ErrorCode err) { KVMHostAsyncHttpCallReply reply = new KVMHostAsyncHttpCallReply(); if (err.isError(SysErrors.HTTP_ERROR, SysErrors.IO_ERROR)) { reply.setError(err(HostErrors.OPERATION_FAILURE_GC_ELIGIBLE, err, "cannot do the operation on the KVM host")); } else { reply.setError(err); } bus.reply(msg, reply); completion.done(); } }); }
private void pauseVm(final PauseVmOnHypervisorMsg msg, final NoErrorCompletion completion) { checkStatus(); final VmInstanceInventory vminv = msg.getVmInventory(); PauseVmOnHypervisorReply reply = new PauseVmOnHypervisorReply(); PauseVmCmd cmd = new PauseVmCmd(); cmd.setUuid(vminv.getUuid()); cmd.setTimeout(120); new Http<>(pauseVmPath, cmd, PauseVmResponse.class).call(new ReturnValueCompletion<PauseVmResponse>(msg, completion) { @Override public void success(PauseVmResponse ret) { if (!ret.isSuccess()) { reply.setError(err(HostErrors.FAILED_TO_STOP_VM_ON_HYPERVISOR, "unable to pause vm[uuid:%s, name:%s] on kvm host[uuid:%s, ip:%s], because %s", vminv.getUuid(), vminv.getName(), self.getUuid(), self.getManagementIp(), ret.getError())); logger.warn(reply.getError().getDetails()); } bus.reply(msg, reply); completion.done(); } @Override public void fail(ErrorCode err) { reply.setError(err); bus.reply(msg, reply); completion.done(); } }); }
private void stopVm(final StopVmOnHypervisorMsg msg, final NoErrorCompletion completion) { checkStatus(); final VmInstanceInventory vminv = msg.getVmInventory();
private void destroyVm(final DestroyVmOnHypervisorMsg msg, final NoErrorCompletion completion) { checkStatus();