@Override protected void triggerNow(GCCompletion completion) { if (!dbf.isExist(hostUuid, HostVO.class)) { completion.cancel(); return; } FlatEipBackend.BatchDeleteEipCmd cmd = new FlatEipBackend.BatchDeleteEipCmd(); cmd.eips = eips; new KvmCommandSender(hostUuid).send(cmd, FlatEipBackend.BATCH_DELETE_EIP_PATH, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) { KVMAgentCommands.AgentResponse rsp = wrapper.getResponse(KVMAgentCommands.AgentResponse.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); } }, new ReturnValueCompletion<KvmResponseWrapper>(completion) { @Override public void success(KvmResponseWrapper returnValue) { completion.success(); } @Override public void fail(ErrorCode errorCode) { completion.fail(errorCode); } } ); }
public void send(final Object cmd, final String path, final KvmCommandFailureChecker checker, final ReturnValueCompletion<KvmResponseWrapper> completion) { send(cmd, path, checker, TimeUnit.MINUTES.toMillis(5), completion); }
cmd.rebuild = true; new KvmCommandSender(context.getInventory().getUuid(), true).send(cmd, BATCH_APPLY_USER_DATA, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) {
@Override public void run(final FlowTrigger trigger, Map data) { List<UserdataTO> tos = getUserData(); if (tos == null) { trigger.next(); return; } BatchApplyUserdataCmd cmd = new BatchApplyUserdataCmd(); cmd.userdata = tos; cmd.rebuild = true; new KvmCommandSender(context.getInventory().getUuid(), true).send(cmd, BATCH_APPLY_USER_DATA, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) { AgentResponse rsp = wrapper.getResponse(AgentResponse.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); } }, new ReturnValueCompletion<KvmResponseWrapper>(trigger) { @Override public void success(KvmResponseWrapper returnValue) { trigger.next(); } @Override public void fail(ErrorCode errorCode) { trigger.fail(errorCode); } }); } };
@Override protected void triggerNow(GCCompletion completion) { if (!dbf.isExist(hostUuid, HostVO.class)) { // the host is deleted; completion.cancel(); return; } new KvmCommandSender(hostUuid).send(command, FlatDhcpBackend.DHCP_DELETE_NAMESPACE_PATH, wrapper -> { FlatDhcpBackend.DeleteNamespaceRsp rsp = wrapper.getResponse(FlatDhcpBackend.DeleteNamespaceRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); }, new ReturnValueCompletion<KvmResponseWrapper>(completion) { @Override public void success(KvmResponseWrapper w) { completion.success(); } @Override public void fail(ErrorCode errorCode) { completion.fail(errorCode); } }); }
@Override void handle(SyncVolumeSizeOnPrimaryStorageMsg msg, final ReturnValueCompletion<SyncVolumeSizeOnPrimaryStorageReply> completion) { String hostUuid = primaryStorageFactory.getConnectedHostForOperation(getSelfInventory()).get(0).getUuid(); final GetVolumeSizeCmd cmd = new GetVolumeSizeCmd(); cmd.installPath = msg.getInstallPath(); cmd.volumeUuid = msg.getVolumeUuid(); cmd.mountPoint = self.getMountPath(); new KvmCommandSender(hostUuid).send(cmd, GET_VOLUME_SIZE_PATH, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) { GetVolumeSizeRsp rsp = wrapper.getResponse(GetVolumeSizeRsp.class); return rsp.success ? null : operr("operation error, because:%s", rsp.error); } }, new ReturnValueCompletion<KvmResponseWrapper>(completion) { @Override public void success(KvmResponseWrapper returnValue) { SyncVolumeSizeOnPrimaryStorageReply reply = new SyncVolumeSizeOnPrimaryStorageReply(); GetVolumeSizeRsp rsp = returnValue.getResponse(GetVolumeSizeRsp.class); reply.setActualSize(rsp.actualSize); reply.setSize(rsp.size); completion.success(reply); } @Override public void fail(ErrorCode errorCode) { completion.fail(errorCode); } }); }
new KvmCommandSender(huuid).send(cmd, CLEANUP_USER_DATA, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper w) {
new KvmCommandSender(host.getUuid()).send(cmd, GET_VOLUME_BASE_IMAGE_PATH, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) {
@Override public void handle(PrimaryStorageInventory inv, SyncVolumeSizeOnPrimaryStorageMsg msg, final ReturnValueCompletion<SyncVolumeSizeOnPrimaryStorageReply> completion) { final HostInventory host = nfsFactory.getConnectedHostForOperation(inv).get(0); KvmCommandSender sender = new KvmCommandSender(host.getUuid()); GetVolumeActualSizeCmd cmd = new GetVolumeActualSizeCmd(); cmd.setUuid(inv.getUuid()); cmd.installPath = msg.getInstallPath(); cmd.volumeUuid = msg.getVolumeUuid(); sender.send(cmd, GET_VOLUME_SIZE_PATH, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) { GetVolumeActualSizeRsp rsp = wrapper.getResponse(GetVolumeActualSizeRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); } }, new ReturnValueCompletion<KvmResponseWrapper>(completion) { @Override public void success(KvmResponseWrapper returnValue) { SyncVolumeSizeOnPrimaryStorageReply reply = new SyncVolumeSizeOnPrimaryStorageReply(); GetVolumeActualSizeRsp rsp = returnValue.getResponse(GetVolumeActualSizeRsp.class); reply.setSize(rsp.size); reply.setActualSize(rsp.actualSize); completion.success(reply); } @Override public void fail(ErrorCode errorCode) { completion.fail(errorCode); } }); }
cmd.namespaceName = brName; new KvmCommandSender(l3Host.hostUuid).send(cmd, FlatDhcpBackend.DHCP_DELETE_NAMESPACE_PATH, wrapper -> { DeleteNamespaceRsp rsp = wrapper.getResponse(DeleteNamespaceRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError());
.findValue(); KvmCommandSender sender = new KvmCommandSender(hostUuid); sender.send(cmd, GET_VOLUME_SIZE, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) {
.findValue(); new KvmCommandSender(hostUuid).send(cmd, GET_BASE_IMAGE_PATH, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper w) {
private void handle(CancelSelfFencerOnKvmHostMsg msg) { KvmCancelSelfFencerParam param = msg.getParam(); KvmCancelSelfFencerCmd cmd = new KvmCancelSelfFencerCmd(); cmd.uuid = self.getUuid(); cmd.fsId = getSelf().getFsid(); cmd.hostUuid = param.getHostUuid(); CancelSelfFencerOnKvmHostReply reply = new CancelSelfFencerOnKvmHostReply(); new KvmCommandSender(param.getHostUuid()).send(cmd, KVM_HA_CANCEL_SELF_FENCER, wrapper -> { AgentResponse rsp = wrapper.getResponse(AgentResponse.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); }, new ReturnValueCompletion<KvmResponseWrapper>(msg) { @Override public void success(KvmResponseWrapper w) { bus.reply(msg, reply); } @Override public void fail(ErrorCode errorCode) { reply.setError(errorCode); bus.reply(msg, reply); } }); }
cmd.setVolumeUuid(sp.getVolumeUuid()); new KvmCommandSender(host.getUuid()).send(cmd, MERGE_SNAPSHOT_PATH, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) {
cmd.setVolumeUuid(sp.getVolumeUuid()); new KvmCommandSender(host.getUuid()).send(cmd, MERGE_SNAPSHOT_PATH, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) {
new KvmCommandSender(hostUuid).send(cmd, path, new KvmCommandFailureChecker() { @Override
@Override public void handle(PrimaryStorageInventory inv, NfsRebaseVolumeBackingFileMsg msg, ReturnValueCompletion<NfsRebaseVolumeBackingFileReply> completion) { NfsRebaseVolumeBackingFileCmd cmd = new NfsRebaseVolumeBackingFileCmd(); cmd.srcPsMountPath = Q.New(PrimaryStorageVO.class).select(PrimaryStorageVO_.mountPath).eq(PrimaryStorageVO_.uuid, msg.getSrcPsUuid()).findValue(); cmd.dstPsMountPath = Q.New(PrimaryStorageVO.class).select(PrimaryStorageVO_.mountPath).eq(PrimaryStorageVO_.uuid, msg.getDstPsUuid()).findValue(); cmd.dstVolumeFolderPath = msg.getDstVolumeFolderPath(); cmd.dstImageCacheTemplateFolderPath = msg.getDstImageCacheTemplateFolderPath(); final HostInventory host = nfsFactory.getConnectedHostForOperation(inv).get(0); new KvmCommandSender(host.getUuid()).send(cmd, NFS_REBASE_VOLUME_BACKING_FILE_PATH, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) { NfsRebaseVolumeBackingFileRsp rsp = wrapper.getResponse(NfsRebaseVolumeBackingFileRsp.class); return rsp.isSuccess() ? null : operr("%s", rsp.getError()); } }, new ReturnValueCompletion<KvmResponseWrapper>(completion) { @Override public void success(KvmResponseWrapper returnValue) { logger.info("successfully rebased backing file for qcow2 files in " + msg.getDstVolumeFolderPath()); NfsRebaseVolumeBackingFileReply reply = new NfsRebaseVolumeBackingFileReply(); completion.success(reply); } @Override public void fail(ErrorCode errorCode) { logger.error("failed to rebase backing file for qcow2 files in " + msg.getDstVolumeFolderPath()); completion.fail(errorCode); } }); }
KvmCommandSender sender = new KvmCommandSender(vm.getHostUuid()); sender.send(cmd, RESET_DEFAULT_GATEWAY_PATH, wrapper -> { ResetDefaultGatewayRsp rsp = wrapper.getResponse(ResetDefaultGatewayRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError());
new KvmCommandSender(huuid).send(cmd, DHCP_DELETE_NAMESPACE_PATH, wrapper -> { DeleteNamespaceRsp rsp = wrapper.getResponse(DeleteNamespaceRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError());
new KvmCommandSender(param.getHostUuid()).send(cmd, KVM_HA_SETUP_SELF_FENCER, new KvmCommandFailureChecker() { @Override public ErrorCode getError(KvmResponseWrapper wrapper) {