private void createEmptyVolume(final InstantiateVolumeOnPrimaryStorageMsg msg) { final CreateEmptyVolumeCmd cmd = new CreateEmptyVolumeCmd(); cmd.installPath = VolumeType.Root.toString().equals(msg.getVolume().getType()) ? makeRootVolumeInstallPath(msg.getVolume().getUuid()) : makeDataVolumeInstallPath(msg.getVolume().getUuid()); cmd.size = msg.getVolume().getSize(); final InstantiateVolumeOnPrimaryStorageReply reply = new InstantiateVolumeOnPrimaryStorageReply(); httpCall(CREATE_VOLUME_PATH, cmd, CreateEmptyVolumeRsp.class, new ReturnValueCompletion<CreateEmptyVolumeRsp>(msg) { @Override public void fail(ErrorCode err) { reply.setError(err); bus.reply(msg, reply); } @Override public void success(CreateEmptyVolumeRsp ret) { VolumeInventory vol = msg.getVolume(); vol.setInstallPath(cmd.getInstallPath()); vol.setFormat(VolumeConstant.VOLUME_FORMAT_RAW); reply.setVolume(vol); bus.reply(msg, reply); } }); }
private void createEmptyVolume(final InstantiateVolumeOnPrimaryStorageMsg msg) { final CreateEmptyVolumeCmd cmd = new CreateEmptyVolumeCmd(); if (VolumeType.Root.toString().equals(msg.getVolume().getType())) { cmd.installPath = makeRootVolumeInstallPath(msg.getVolume().getUuid()); } else { cmd.installPath = makeDataVolumeInstallPath(msg.getVolume().getUuid()); } cmd.size = msg.getVolume().getSize(); cmd.setShareable(msg.getVolume().isShareable()); cmd.skipIfExisting = msg.isSkipIfExisting(); final InstantiateVolumeOnPrimaryStorageReply reply = new InstantiateVolumeOnPrimaryStorageReply(); httpCall(CREATE_VOLUME_PATH, cmd, CreateEmptyVolumeRsp.class, new ReturnValueCompletion<CreateEmptyVolumeRsp>(msg) { @Override public void fail(ErrorCode err) { reply.setError(err); bus.reply(msg, reply); } @Override public void success(CreateEmptyVolumeRsp ret) { VolumeInventory vol = msg.getVolume(); vol.setInstallPath(cmd.getInstallPath()); vol.setFormat(VolumeConstant.VOLUME_FORMAT_RAW); reply.setVolume(vol); bus.reply(msg, reply); } }); }
@Override protected void handle(InstantiateVolumeOnPrimaryStorageMsg msg) { if (msg.getClass() == InstantiateRootVolumeFromTemplateOnPrimaryStorageMsg.class) { handle((InstantiateRootVolumeFromTemplateOnPrimaryStorageMsg) msg); } else { InstantiateVolumeOnPrimaryStorageReply reply = new InstantiateVolumeOnPrimaryStorageReply(); VolumeInventory vol = instantiateVolume(msg.getVolume()); vol.setFormat(SimulatorConstant.SIMULATOR_VOLUME_FORMAT_STRING); reply.setVolume(vol); logger.debug(String.format("Successfully created data volume[uuid:%s] on primary storage[uuid:%s]", msg.getVolume().getUuid(), msg.getPrimaryStorageUuid())); bus.reply(msg, reply); } }
@Override void handle(InstantiateVolumeOnPrimaryStorageMsg msg, ReturnValueCompletion<InstantiateVolumeOnPrimaryStorageReply> completion) { if (msg instanceof InstantiateRootVolumeFromTemplateOnPrimaryStorageMsg) { createRootVolume((InstantiateRootVolumeFromTemplateOnPrimaryStorageMsg) msg, completion); } else { createEmptyVolume(msg.getVolume(), msg.getDestHost().getUuid(), completion); } }
@Override public void success(CreateEmptyVolumeRsp ret) { VolumeInventory vol = msg.getVolume(); vol.setInstallPath(cmd.getInstallPath()); vol.setFormat(VolumeConstant.VOLUME_FORMAT_RAW); reply.setVolume(vol); bus.reply(msg, reply); } });
@Override public void success(CreateEmptyVolumeRsp ret) { VolumeInventory vol = msg.getVolume(); vol.setInstallPath(cmd.getInstallPath()); vol.setFormat(VolumeConstant.VOLUME_FORMAT_RAW); reply.setVolume(vol); bus.reply(msg, reply); } });
@Override public void success(String returnValue) { InstantiateVolumeOnPrimaryStorageReply r = new InstantiateVolumeOnPrimaryStorageReply(); VolumeInventory vol = msg.getVolume(); vol.setInstallPath(returnValue); vol.setFormat(VolumeConstant.VOLUME_FORMAT_QCOW2); r.setVolume(vol); completion.success(r); }
@Override protected void handle(final InstantiateVolumeOnPrimaryStorageMsg msg, final ReturnValueCompletion<InstantiateVolumeOnPrimaryStorageReply> completion) { if (msg instanceof InstantiateRootVolumeFromTemplateOnPrimaryStorageMsg) { createRootVolume((InstantiateRootVolumeFromTemplateOnPrimaryStorageMsg) msg, completion); } else { createEmptyVolume(msg.getVolume(), msg.getDestHost().getUuid(), new ReturnValueCompletion<String>(completion) { @Override public void success(String returnValue) { InstantiateVolumeOnPrimaryStorageReply r = new InstantiateVolumeOnPrimaryStorageReply(); VolumeInventory vol = msg.getVolume(); vol.setInstallPath(returnValue); vol.setFormat(VolumeConstant.VOLUME_FORMAT_QCOW2); r.setVolume(vol); completion.success(r); } @Override public void fail(ErrorCode errorCode) { completion.fail(errorCode); } }); } }
private void createEmptyVolume(final InstantiateVolumeOnPrimaryStorageMsg msg) { NfsPrimaryStorageBackend backend; if (msg.getDestHost() != null) { backend = getBackend(HypervisorType.valueOf(msg.getDestHost().getHypervisorType())); } else { backend = getUsableBackend(); if (backend == null) { throw new OperationFailureException(operr("the NFS primary storage[uuid:%s, name:%s] cannot find any usable host to" + " create the data volume[uuid:%s, name:%s]", self.getUuid(), self.getName(), msg.getVolume().getUuid(), msg.getVolume().getName())); } } VolumeInventory vol = msg.getVolume(); final InstantiateVolumeOnPrimaryStorageReply reply = new InstantiateVolumeOnPrimaryStorageReply(); backend.instantiateVolume(PrimaryStorageInventory.valueOf(self), vol, new ReturnValueCompletion<VolumeInventory>(msg) { @Override public void success(VolumeInventory returnValue) { reply.setVolume(returnValue); bus.reply(msg, reply); } @Override public void fail(ErrorCode errorCode) { reply.setError(errorCode); reply.setSuccess(false); bus.reply(msg, reply); } }); }
@Override protected void handle(final InstantiateVolumeOnPrimaryStorageMsg msg) { createSubTaskProgress("create a volume[%s] on the local storage", msg.getVolume().getType()); chain.setName(String.format("instantiate-volume-%s-local-primary-storage-%s", msg.getVolume().getUuid(), self.getUuid())); final String finalHostUuid = hostUuid; chain.then(new ShareFlow() {