You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/07/20 21:11:45 UTC
git commit: updated refs/heads/4.2 to 08e722d
Updated Branches:
refs/heads/4.2 f604e3d9c -> 08e722dda
CLOUDSTACK-3419: [Object_Store_Refactor] Uploaded volume is being
deleted while attaching it to guest VM.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/08e722dd
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/08e722dd
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/08e722dd
Branch: refs/heads/4.2
Commit: 08e722ddaee292ff387dca7833a8e0049568a134
Parents: f604e3d
Author: Min Chen <mi...@citrix.com>
Authored: Sat Jul 20 11:42:20 2013 -0700
Committer: Min Chen <mi...@citrix.com>
Committed: Sat Jul 20 11:43:11 2013 -0700
----------------------------------------------------------------------
.../storage/volume/VolumeServiceImpl.java | 2 +-
.../resource/NfsSecondaryStorageResource.java | 158 ++++++++++---------
2 files changed, 87 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/08e722dd/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
index 54506c5..cded500 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
@@ -653,7 +653,7 @@ public class VolumeServiceImpl implements VolumeService {
srcVolume.processEvent(Event.OperationSuccessed);
destVolume.processEvent(Event.OperationSuccessed, result.getAnswer());
- srcVolume.getDataStore().delete(srcVolume);
+ // srcVolume.getDataStore().delete(srcVolume);
future.complete(res);
} catch (Exception e) {
res.setResult(e.toString());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/08e722dd/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
----------------------------------------------------------------------
diff --git a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
index 5048f2a..a82714b 100755
--- a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
+++ b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
@@ -284,7 +284,11 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
newTemplTO.setSize(size);
newDestTO = newTemplTO;
} else {
- return new CopyCmdAnswer("not implemented yet");
+ VolumeObjectTO newVolTO = new VolumeObjectTO();
+ newVolTO.setPath(finalDownloadPath);
+ newVolTO.setName(finalFileName);
+ newVolTO.setSize(size);
+ newDestTO = newVolTO;
}
return new CopyCmdAnswer(newDestTO);
@@ -324,11 +328,11 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
File destFile = S3Utils.getFile(s3, s3.getBucketName(), srcData.getPath(), downloadDirectory,
new FileNamingStrategy() {
- @Override
- public String determineFileName(final String key) {
- return substringAfterLast(key, S3Utils.SEPARATOR);
- }
- });
+ @Override
+ public String determineFileName(final String key) {
+ return substringAfterLast(key, S3Utils.SEPARATOR);
+ }
+ });
if (destFile == null) {
return new CopyCmdAnswer("Can't find template");
@@ -684,10 +688,10 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
DownloadAnswer answer = new DownloadAnswer(null, 100, null, VMTemplateStorageResourceAssoc.Status.DOWNLOADED,
swiftPath, swiftPath, file.length(), file.length(), md5sum
- );
+ );
return answer;
} catch (Exception e) {
- s_logger.debug("Failed to register template into swift", e);
+ s_logger.debug("Failed to register template into swift", e);
return new DownloadAnswer(e.toString(), VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR);
} finally {
if (file != null) {
@@ -745,16 +749,17 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
ext = filePath.substring(i + 1);
}
if (ext != null) {
- if (ext.equalsIgnoreCase("vhd"))
+ if (ext.equalsIgnoreCase("vhd")) {
return ImageFormat.VHD;
- else if (ext.equalsIgnoreCase("qcow2"))
+ } else if (ext.equalsIgnoreCase("qcow2")) {
return ImageFormat.QCOW2;
- else if (ext.equalsIgnoreCase("ova"))
+ } else if (ext.equalsIgnoreCase("ova")) {
return ImageFormat.OVA;
- else if (ext.equalsIgnoreCase("tar"))
+ } else if (ext.equalsIgnoreCase("tar")) {
return ImageFormat.TAR;
- else if (ext.equalsIgnoreCase("img"))
+ } else if (ext.equalsIgnoreCase("img")) {
return ImageFormat.RAW;
+ }
}
return null;
@@ -1016,16 +1021,16 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
} else if (dstore instanceof SwiftTO) {
String path = cmd.getDirectory();
String volumeId = StringUtils.substringAfterLast(path, "/"); // assuming
- // that
- // the
- // filename
- // is
- // the
- // last
- // section
- // in
- // the
- // path
+ // that
+ // the
+ // filename
+ // is
+ // the
+ // last
+ // section
+ // in
+ // the
+ // path
String result = swiftDelete((SwiftTO) dstore, "V-" + volumeId.toString(), "");
if (result != null) {
String errMsg = "failed to delete snapshot for volume " + volumeId + " , err=" + result;
@@ -1066,12 +1071,12 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
final File targetFile = S3Utils.getFile(s3, s3.getBucketName(), key,
_storage.getFile(directoryName), new FileNamingStrategy() {
- @Override
- public String determineFileName(String key) {
- return snapshotFileName;
- }
+ @Override
+ public String determineFileName(String key) {
+ return snapshotFileName;
+ }
- });
+ });
if (cmd.getParent() != null) {
@@ -1220,8 +1225,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
return new Answer(cmd, false, checksum);
} finally {
try {
- if (is != null)
+ if (is != null) {
is.close();
+ }
} catch (IOException e) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Could not close the file " + absoluteTemplatePath);
@@ -1334,24 +1340,24 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
final String result = executeWithNoWaitLock(determineSnapshotLockId(accountId, volumeId),
new Callable<String>() {
- @Override
- public String call() throws Exception {
-
- if (deleteAllFlag) {
- S3Utils.deleteDirectory(s3, bucket, determineSnapshotS3Directory(accountId, volumeId));
- } else {
- S3Utils.deleteObject(
- s3,
- bucket,
- determineSnapshotS3Key(accountId, volumeId,
- determineSnapshotBackupFilename(name)));
- }
+ @Override
+ public String call() throws Exception {
+
+ if (deleteAllFlag) {
+ S3Utils.deleteDirectory(s3, bucket, determineSnapshotS3Directory(accountId, volumeId));
+ } else {
+ S3Utils.deleteObject(
+ s3,
+ bucket,
+ determineSnapshotS3Key(accountId, volumeId,
+ determineSnapshotBackupFilename(name)));
+ }
- return null;
+ return null;
- }
+ }
- });
+ });
return result;
@@ -1425,16 +1431,16 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
} else if (dstore instanceof SwiftTO) {
String path = obj.getPath();
String filename = StringUtils.substringAfterLast(path, "/"); // assuming
- // that
- // the
- // filename
- // is
- // the
- // last
- // section
- // in
- // the
- // path
+ // that
+ // the
+ // filename
+ // is
+ // the
+ // last
+ // section
+ // in
+ // the
+ // path
String volumeId = StringUtils.substringAfterLast(StringUtils.substringBeforeLast(path, "/"), "/");
String result = swiftDelete((SwiftTO) dstore, "V-" + volumeId, filename);
if (result != null) {
@@ -1506,8 +1512,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
String bucket = s3.getBucketName();
// List the objects in the source directory on S3
final List<S3ObjectSummary> objectSummaries = S3Utils.getDirectory(s3, bucket, this.TEMPLATE_ROOT_DIR);
- if (objectSummaries == null)
+ if (objectSummaries == null) {
return null;
+ }
Map<String, TemplateProp> tmpltInfos = new HashMap<String, TemplateProp>();
for (S3ObjectSummary objectSummary : objectSummaries) {
String key = objectSummary.getKey();
@@ -1527,8 +1534,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
String bucket = s3.getBucketName();
// List the objects in the source directory on S3
final List<S3ObjectSummary> objectSummaries = S3Utils.getDirectory(s3, bucket, this.VOLUME_ROOT_DIR);
- if (objectSummaries == null)
+ if (objectSummaries == null) {
return null;
+ }
Map<Long, TemplateProp> tmpltInfos = new HashMap<Long, TemplateProp>();
for (S3ObjectSummary objectSummary : objectSummaries) {
String key = objectSummary.getKey();
@@ -1711,8 +1719,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
boolean success = true;
String result;
result = configureIpFirewall(ipList, cmd.getIsAppendAIp());
- if (result != null)
+ if (result != null) {
success = false;
+ }
return new Answer(cmd, success, result);
}
@@ -1928,16 +1937,16 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
Long volumeId = obj.getId();
String path = obj.getPath();
String filename = StringUtils.substringAfterLast(path, "/"); // assuming
- // that
- // the
- // filename
- // is
- // the
- // last
- // section
- // in
- // the
- // path
+ // that
+ // the
+ // filename
+ // is
+ // the
+ // last
+ // section
+ // in
+ // the
+ // path
String result = swiftDelete((SwiftTO) dstore, "V-" + volumeId.toString(), filename);
if (result != null) {
String errMsg = "failed to delete volume " + filename + " , err=" + result;
@@ -2003,8 +2012,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
@Override
public Type getType() {
- if (SecondaryStorageVm.Role.templateProcessor.toString().equals(_role))
+ if (SecondaryStorageVm.Role.templateProcessor.toString().equals(_role)) {
return Host.Type.SecondaryStorage;
+ }
return Host.Type.SecondaryStorageCmdExecutor;
}
@@ -2067,8 +2077,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
}
- if (_inSystemVM)
+ if (_inSystemVM) {
_storage.mkdirs(_parent);
+ }
_configSslScr = Script.findScript(getDefaultScriptsDir(), "config_ssl.sh");
if (_configSslScr != null) {
@@ -2093,8 +2104,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
_role = (String) params.get("role");
- if (_role == null)
+ if (_role == null) {
_role = SecondaryStorageVm.Role.templateProcessor.toString();
+ }
s_logger.info("Secondary storage runs in role " + _role);
_guid = (String) params.get("guid");
@@ -2310,8 +2322,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
if (result != null) {
s_logger.warn("Unable to mount " + nfsPath + " due to " + result);
file = new File(root);
- if (file.exists())
+ if (file.exists()) {
file.delete();
+ }
return null;
}
@@ -2344,8 +2357,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
final StartupSecondaryStorageCommand cmd = new StartupSecondaryStorageCommand();
fillNetworkInformation(cmd);
- if (_publicIp != null)
+ if (_publicIp != null) {
cmd.setPublicIpAddress(_publicIp);
+ }
if (_inSystemVM) {
Script command = new Script("/bin/bash", s_logger);