@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 run(MessageReply reply) { if (!reply.isSuccess()) { completion.fail(reply.getError()); return; } KVMHostAsyncHttpCallReply ar = reply.castReply(); KvmResponseWrapper w = new KvmResponseWrapper(ar.getResponse()); ErrorCode err = checker.getError(w); if (err != null) { completion.fail(err); return; } completion.success(w); } });
@Override public void run(NeedReplyMessage msg, MessageReply reply) { KVMHostAsyncHttpCallMsg kmsg = (KVMHostAsyncHttpCallMsg) msg; completion.hostUuid = kmsg.getHostUuid(); if (!reply.isSuccess()) { completion.fail(reply.getError()); return; } KVMHostAsyncHttpCallReply ar = reply.castReply(); KvmResponseWrapper w = new KvmResponseWrapper(ar.getResponse()); ErrorCode err = checker.getError(w); if (err != null) { completion.fail(err); return; } completion.success(w); } });
@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 w) { GetVolumeBaseImagePathRsp rsp = w.getResponse(GetVolumeBaseImagePathRsp.class); String rootImageUuid = new File(rsp.path).getName().split("\\.")[0]; GetVolumeRootImageUuidFromPrimaryStorageReply reply = new GetVolumeRootImageUuidFromPrimaryStorageReply(); reply.setImageUuid(rootImageUuid); bus.reply(msg, reply); }
@Override public ErrorCode getError(KvmResponseWrapper wrapper) { GetVolumeSizeRsp rsp = wrapper.getResponse(GetVolumeSizeRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); } }, new ReturnValueCompletion<KvmResponseWrapper>(completion) {
@Override public void success(KvmResponseWrapper returnValue) { GetVolumeSizeRsp rsp = returnValue.getResponse(GetVolumeSizeRsp.class); reply.setActualSize(rsp.actualSize); reply.setSize(rsp.size); completion.success(reply); }
@Override public ErrorCode getError(KvmResponseWrapper wrapper) { AgentResponse rsp = wrapper.getResponse(AgentResponse.class); return rsp.isSuccess() ? null : operr(rsp.getError()); } }, new ReturnValueCompletion<KvmResponseWrapper>(msg) {
@Override public ErrorCode getError(KvmResponseWrapper w) { CleanupUserdataRsp rsp = w.getResponse(CleanupUserdataRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); } }, new ReturnValueCompletion<KvmResponseWrapper>(null) {
@Override public ErrorCode getError(KvmResponseWrapper wrapper) { LocalStorageKvmBackend.DeleteBitsRsp rsp = wrapper.getResponse(LocalStorageKvmBackend.DeleteBitsRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); } },
@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()); } },
@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(); GetVolumeSizeRsp rsp = returnValue.getResponse(GetVolumeSizeRsp.class); reply.setActualSize(rsp.actualSize); reply.setSize(rsp.size); completion.success(reply); }
@Override public ErrorCode getError(KvmResponseWrapper w) { GetVolumeBaseImagePathRsp rsp = w.getResponse(GetVolumeBaseImagePathRsp.class); if (rsp.isSuccess() && StringUtils.isEmpty(rsp.path)) { return operr("cannot get root image of volume[uuid:%s], may be it create from iso", msg.getVolume().getUuid()); } return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); } }, new ReturnValueCompletion<KvmResponseWrapper>(completion) {
@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 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); } }); }
DeleteNamespaceRsp rsp = wrapper.getResponse(DeleteNamespaceRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); }, new SteppingSendCallback<KvmResponseWrapper>() {
@Override public void success(KvmResponseWrapper w) { GetVolumeBaseImagePathRsp rsp = w.getResponse(GetVolumeBaseImagePathRsp.class); File f = new File(rsp.path); String rootImageUuid = f.getName().split("\\.")[0];
ResetDefaultGatewayRsp rsp = wrapper.getResponse(ResetDefaultGatewayRsp.class); return rsp.isSuccess() ? null : operr("operation error, because:%s", rsp.getError()); }, new ReturnValueCompletion<KvmResponseWrapper>(completion) {
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); } }); }