From 8f6eb26e38b221e4a38345f29ca5ce1ce25c0603 Mon Sep 17 00:00:00 2001 From: Edison Su Date: Thu, 23 May 2013 14:35:19 -0700 Subject: [PATCH] fix suffix for extratemplate for kvm --- .../cloud/server/ManagementServerImpl.java | 42 ++----------------- .../cloud/storage/upload/UploadMonitor.java | 3 +- .../storage/upload/UploadMonitorImpl.java | 4 +- 3 files changed, 8 insertions(+), 41 deletions(-) diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index a8185b861ae..17f87a58774 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -3440,33 +3440,6 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe extractMode = mode.equals(Upload.Mode.FTP_UPLOAD.toString()) ? Upload.Mode.FTP_UPLOAD : Upload.Mode.HTTP_DOWNLOAD; } - // If mode is upload perform extra checks on url and also see if there - // is an ongoing upload on the same. - if (extractMode == Upload.Mode.FTP_UPLOAD) { - URI uri = new URI(url); - if ((uri.getScheme() == null) || (!uri.getScheme().equalsIgnoreCase("ftp"))) { - throw new IllegalArgumentException("Unsupported scheme for url: " + url); - } - - String host = uri.getHost(); - try { - InetAddress hostAddr = InetAddress.getByName(host); - if (hostAddr.isAnyLocalAddress() || hostAddr.isLinkLocalAddress() || hostAddr.isLoopbackAddress() || hostAddr.isMulticastAddress()) { - throw new IllegalArgumentException("Illegal host specified in url"); - } - if (hostAddr instanceof Inet6Address) { - throw new IllegalArgumentException("IPV6 addresses not supported (" + hostAddr.getHostAddress() + ")"); - } - } catch (UnknownHostException uhe) { - throw new IllegalArgumentException("Unable to resolve " + host); - } - - if (_uploadMonitor.isTypeUploadInProgress(volumeId, Upload.Type.VOLUME)) { - throw new IllegalArgumentException(volume.getName() - + " upload is in progress. Please wait for some time to schedule another upload for the same"); - } - } - long accountId = volume.getAccountId(); StoragePool srcPool = (StoragePool)this.dataStoreMgr.getPrimaryDataStore(volume.getPoolId()); DataStore secStore = this.dataStoreMgr.getImageStore(zoneId); @@ -3526,7 +3499,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe throw new CloudRuntimeException(errorString); } - String volumeLocalPath = "volumes/" + volume.getId() + "/" + cvAnswer.getVolumePath() + "." + getFormatForPool(srcPool); + String volumeLocalPath = "volumes/" + volume.getId() + "/" + cvAnswer.getVolumePath() + "." + volume.getFormat().toString().toLowerCase(); //Fang: volss, handle the ova special case; if (getFormatForPool(srcPool) == "ova") { CreateVolumeOVACommand cvOVACmd = new CreateVolumeOVACommand(secondaryStorageURL, volumeLocalPath, cvAnswer.getVolumePath(), srcPool, copyvolumewait); @@ -3546,16 +3519,9 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe uploadJob.setInstallPath(volumeLocalPath); _uploadDao.update(uploadJob.getId(), uploadJob); - if (extractMode == Mode.FTP_UPLOAD) { // Now that the volume is - // copied perform the actual - // uploading - _uploadMonitor.extractVolume(uploadJob, secStore, volume, url, zoneId, volumeLocalPath, cmd.getStartEventId(), job.getId(), _asyncMgr); - return uploadJob.getId(); - } else { // Volume is copied now make it visible under apache and - // create a URL. - _uploadMonitor.createVolumeDownloadURL(volumeId, volumeLocalPath, Upload.Type.VOLUME, zoneId, uploadJob.getId()); - return uploadJob.getId(); - } + // create a URL. + _uploadMonitor.createVolumeDownloadURL(volumeId, volumeLocalPath, Upload.Type.VOLUME, zoneId, uploadJob.getId(), volume.getFormat()); + return uploadJob.getId(); } } diff --git a/server/src/com/cloud/storage/upload/UploadMonitor.java b/server/src/com/cloud/storage/upload/UploadMonitor.java index 4e410480312..b4ba5319481 100755 --- a/server/src/com/cloud/storage/upload/UploadMonitor.java +++ b/server/src/com/cloud/storage/upload/UploadMonitor.java @@ -22,6 +22,7 @@ import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO; import com.cloud.async.AsyncJobManager; import com.cloud.host.HostVO; +import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Upload.Mode; import com.cloud.storage.Upload.Status; import com.cloud.storage.Upload.Type; @@ -57,6 +58,6 @@ public interface UploadMonitor extends Manager{ TemplateDataStoreVO vmTemplateStore, Long dataCenterId, long eventId); void createVolumeDownloadURL(Long entityId, String path, Type type, - Long dataCenterId, Long uploadId); + Long dataCenterId, Long uploadId, ImageFormat format); } \ No newline at end of file diff --git a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java index 202536176a4..7d75599faad 100755 --- a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java +++ b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java @@ -260,7 +260,7 @@ public class UploadMonitorImpl extends ManagerBase implements UploadMonitor { } @Override - public void createVolumeDownloadURL(Long entityId, String path, Type type, Long dataCenterId, Long uploadId) { + public void createVolumeDownloadURL(Long entityId, String path, Type type, Long dataCenterId, Long uploadId, ImageFormat format) { String errorString = ""; boolean success = false; @@ -278,7 +278,7 @@ public class UploadMonitorImpl extends ManagerBase implements UploadMonitor { _uploadDao.update(uploadJob.getId(), uploadJob); // Create Symlink at ssvm - String uuid = UUID.randomUUID().toString() + path.substring(path.length() - 4) ; // last 4 characters of the path specify the format like .vhd + String uuid = UUID.randomUUID().toString() + "." + format.toString().toLowerCase() ; DataStore secStore = this.storeMgr.getDataStore(ApiDBUtils.findUploadById(uploadId).getDataStoreId(), DataStoreRole.Image); EndPoint ep = _epSelector.select(secStore); if( ep == null ) {