@Override protected void handle(final DownloadIsoToPrimaryStorageMsg msg) { final DownloadIsoToPrimaryStorageReply reply = new DownloadIsoToPrimaryStorageReply(); DownloadToCache downloadToCache = new DownloadToCache(); downloadToCache.image = msg.getIsoSpec(); downloadToCache.download(new ReturnValueCompletion<ImageCacheVO>(msg) { @Override public void success(ImageCacheVO returnValue) { reply.setInstallPath(returnValue.getInstallUrl()); bus.reply(msg, reply); } @Override public void fail(ErrorCode errorCode) { reply.setError(errorCode); bus.reply(msg, reply); } }); }
DownloadIsoToPrimaryStorageMsg msg = new DownloadIsoToPrimaryStorageMsg(); msg.setPrimaryStorageUuid(psUuid); msg.setIsoSpec(imageSpec); msg.setVmInstanceUuid(spec.getVmInventory().getUuid()); msg.setDestHostUuid(spec.getDestHost().getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, PrimaryStorageConstant.SERVICE_ID, psUuid); return msg;
@Override protected void checkImageIfNeedToDownload(DownloadIsoToPrimaryStorageMsg msg){ logger.debug("check if image exist in disabled primary storage"); if(self.getState() != PrimaryStorageState.Disabled){ return ; } if( !Q.New(ImageCacheVO.class) .eq(ImageCacheVO_.primaryStorageUuid, self.getUuid()) .eq(ImageCacheVO_.imageUuid, msg.getIsoSpec().getInventory().getUuid()) .like(ImageCacheVO_.installUrl, String.format("%%hostUuid://%s%%", msg.getDestHostUuid())) .isExists()){ throw new OperationFailureException(operr( "cannot attach ISO to a primary storage[uuid:%s] which is disabled", self.getUuid())); } }
@Override protected void handle(final DownloadIsoToPrimaryStorageMsg msg) { HypervisorFactory f = getHypervisorFactoryByHostUuid(msg.getDestHostUuid()); HypervisorBackend bkd = f.getHypervisorBackend(self); bkd.handle(msg, new ReturnValueCompletion<DownloadIsoToPrimaryStorageReply>(msg) { @Override public void success(DownloadIsoToPrimaryStorageReply reply) { bus.reply(msg, reply); } @Override public void fail(ErrorCode error) { DownloadIsoToPrimaryStorageReply reply = new DownloadIsoToPrimaryStorageReply(); reply.setError(error); bus.reply(msg, reply); } }); }
@Override protected void handle(final DownloadIsoToPrimaryStorageMsg msg) { final DownloadIsoToPrimaryStorageReply reply = new DownloadIsoToPrimaryStorageReply(); DownloadToCache downloadToCache = new DownloadToCache(); downloadToCache.image = msg.getIsoSpec(); downloadToCache.download(new ReturnValueCompletion<ImageCacheVO>(msg) { @Override public void success(ImageCacheVO returnValue) { reply.setInstallPath(returnValue.getInstallUrl()); bus.reply(msg, reply); } @Override public void fail(ErrorCode errorCode) { reply.setError(errorCode); bus.reply(msg, reply); } }); }
imageSpec.setInventory(iso); DownloadIsoToPrimaryStorageMsg msg = new DownloadIsoToPrimaryStorageMsg(); msg.setPrimaryStorageUuid(psUuid); msg.setIsoSpec(imageSpec); msg.setVmInstanceUuid(spec.getVmInventory().getUuid()); msg.setDestHostUuid(spec.getDestHost().getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, PrimaryStorageConstant.SERVICE_ID, psUuid); bus.send(msg, new CloudBusCallBack(trigger) {
@Override void handle(DownloadIsoToPrimaryStorageMsg msg, final ReturnValueCompletion<DownloadIsoToPrimaryStorageReply> completion) { ImageSpec ispec = msg.getIsoSpec(); SimpleQuery<BackupStorageVO> q = dbf.createQuery(BackupStorageVO.class); q.add(BackupStorageVO_.uuid, Op.EQ, ispec.getSelectedBackupStorage().getBackupStorageUuid()); BackupStorageVO bsvo = q.find(); BackupStorageInventory bsinv = BackupStorageInventory.valueOf(bsvo); ImageCache cache = new ImageCache(); cache.image = ispec.getInventory(); cache.hostUuid = msg.getDestHostUuid(); cache.primaryStorageInstallPath = makeCachedImageInstallUrl(ispec.getInventory()); cache.backupStorage = bsinv; cache.backupStorageInstallPath = ispec.getSelectedBackupStorage().getInstallPath(); cache.download(new ReturnValueCompletion<String>(completion) { @Override public void success(String returnValue) { DownloadIsoToPrimaryStorageReply reply = new DownloadIsoToPrimaryStorageReply(); reply.setInstallPath(returnValue); completion.success(reply); } @Override public void fail(ErrorCode errorCode) { completion.fail(errorCode); } }); }
@Override protected void handle(final DownloadIsoToPrimaryStorageMsg msg) { final DownloadIsoToPrimaryStorageReply reply = new DownloadIsoToPrimaryStorageReply(); final PrimaryStorageInventory pinv = getSelfInventory(); NfsDownloadImageToCacheJob job = new NfsDownloadImageToCacheJob(); job.setPrimaryStorage(pinv); job.setImage(msg.getIsoSpec()); final ImageInventory img = msg.getIsoSpec().getInventory(); jobf.execute(NfsPrimaryStorageKvmHelper.makeDownloadImageJobName(msg.getIsoSpec().getInventory(), pinv), NfsPrimaryStorageKvmHelper.makeJobOwnerName(pinv), job, new ReturnValueCompletion<ImageCacheInventory>(msg) { @Override public void success(ImageCacheInventory returnValue) { logger.debug(String.format("successfully downloaded iso[uuid:%s, name:%s] from backup storage[uuid:%s] to primary storage[uuid:%s, name:%s], path in cache: %s", img.getUuid(), img.getName(), msg.getIsoSpec().getSelectedBackupStorage().getBackupStorageUuid(), pinv.getUuid(), pinv.getName(), returnValue.getInstallUrl())); reply.setInstallPath(returnValue.getInstallUrl()); bus.reply(msg, reply); } @Override public void fail(ErrorCode errorCode) { String err = String.format("failed to downloaded iso[uuid:%s, name:%s] from backup storage[uuid:%s] to primary storage[uuid:%s, name:%s]", img.getUuid(), img.getName(), msg.getIsoSpec().getSelectedBackupStorage().getBackupStorageUuid(), pinv.getUuid(), pinv.getName()); logger.warn(err); reply.setError(errorCode); bus.reply(msg, reply); } }, ImageCacheInventory.class); }
private void handleBase(DownloadIsoToPrimaryStorageMsg msg) { checkIfBackupStorageAttachedToMyZone(msg.getIsoSpec().getSelectedBackupStorage().getBackupStorageUuid()); checkImageIfNeedToDownload(msg); handle(msg); }
@Override public void fail(ErrorCode errorCode) { String err = String.format("failed to downloaded iso[uuid:%s, name:%s] from backup storage[uuid:%s] to primary storage[uuid:%s, name:%s]", img.getUuid(), img.getName(), msg.getIsoSpec().getSelectedBackupStorage().getBackupStorageUuid(), pinv.getUuid(), pinv.getName()); logger.warn(err); reply.setError(errorCode); bus.reply(msg, reply); } }, ImageCacheInventory.class);
@Override public void success(ImageCacheInventory returnValue) { logger.debug(String.format("successfully downloaded iso[uuid:%s, name:%s] from backup storage[uuid:%s] to primary storage[uuid:%s, name:%s], path in cache: %s", img.getUuid(), img.getName(), msg.getIsoSpec().getSelectedBackupStorage().getBackupStorageUuid(), pinv.getUuid(), pinv.getName(), returnValue.getInstallUrl())); reply.setInstallPath(returnValue.getInstallUrl()); bus.reply(msg, reply); }
@Override protected void handle(final DownloadIsoToPrimaryStorageMsg msg) { FlowChain chain = FlowChainBuilder.newShareFlowChain(); chain.setName(String.format("download-iso-%s-local-primary-storage-%s", msg.getIsoSpec().getInventory().getUuid(), self.getUuid())); chain.then(new ShareFlow() { DownloadIsoToPrimaryStorageReply reply;
@Override void handle(DownloadIsoToPrimaryStorageMsg msg, final ReturnValueCompletion<DownloadIsoToPrimaryStorageReply> completion) { ImageSpec ispec = msg.getIsoSpec(); ImageCache cache = new ImageCache(); cache.image = ispec.getInventory(); cache.primaryStorageInstallPath = makeCachedImageInstallUrl(ispec.getInventory()); cache.backupStorageUuid = ispec.getSelectedBackupStorage().getBackupStorageUuid(); cache.backupStorageInstallPath = ispec.getSelectedBackupStorage().getInstallPath(); cache.download(new ReturnValueCompletion<String>(completion) { @Override public void success(String returnValue) { DownloadIsoToPrimaryStorageReply reply = new DownloadIsoToPrimaryStorageReply(); reply.setInstallPath(returnValue); completion.success(reply); } @Override public void fail(ErrorCode errorCode) { completion.fail(errorCode); } }); }
protected void checkImageIfNeedToDownload(DownloadIsoToPrimaryStorageMsg msg){ logger.debug("check if image exist in disabled primary storage"); if(self.getState() != PrimaryStorageState.Disabled){ return ; } if( !Q.New(ImageCacheVO.class) .eq(ImageCacheVO_.primaryStorageUuid, self.getUuid()) .eq(ImageCacheVO_.imageUuid, msg.getIsoSpec().getInventory().getUuid()) .isExists()){ throw new OperationFailureException(operr( "cannot attach ISO to a primary storage[uuid:%s] which is disabled", self.getUuid())); } }