From b6084adf78e9dc4f5041d610aebc32e5305bfbd1 Mon Sep 17 00:00:00 2001 From: anthony Date: Wed, 21 Dec 2011 20:06:20 -0800 Subject: [PATCH] bug 12694: zone is null for xs-tools and vmware-tools iso SWIFT : big file fix Conflicts: core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java reviewed-by : edison --- .../resource/NfsSecondaryStorageResource.java | 61 ++++++++++++------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java index 31ac5bb1c76..7ce5e212a8a 100755 --- a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java +++ b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java @@ -269,36 +269,51 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S } String swiftUpload(SwiftTO swift, String container, String lDir, String lFilename) { - Script command = new Script("/bin/bash", s_logger); long SWIFT_MAX_SIZE = 5L * 1024L * 1024L * 1024L; - command.add("-c"); - File file = new File(lDir + "/" + lFilename); - long size = file.length(); - if (size <= SWIFT_MAX_SIZE) { - command.add("cd " + lDir + ";/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A " + swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() - + " -K " + swift.getKey() + " upload " + container + " " + lFilename); + List files = new ArrayList(); + if (lFilename.equals("*")) { + File dir = new File(lDir); + for (String file : dir.list()) { + if (file.startsWith(".")) { + continue; + } + files.add(file); + } } else { - command.add("cd " + lDir + ";/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A " + swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() - + " -K " + swift.getKey() + " upload -S " + SWIFT_MAX_SIZE + " " + container + " " + lFilename); + files.add(lFilename); } - OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser(); - String result = command.execute(parser); - if (result != null) { - String errMsg = "swiftUpload failed , err=" + result; - s_logger.warn(errMsg); - return errMsg; - } - if (parser.getLines() != null) { - String[] lines = parser.getLines().split("\\n"); - for (String line : lines) { - if (line.contains("Errno") || line.contains("failed")) { - String errMsg = "swiftUpload failed , err=" + lines.toString(); - s_logger.warn(errMsg); - return errMsg; + for (String file : files) { + File f = new File(lDir + "/" + file); + long size = f.length(); + Script command = new Script("/bin/bash", s_logger); + command.add("-c"); + if (size <= SWIFT_MAX_SIZE) { + command.add("cd " + lDir + ";/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A " + swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() + + " -K " + swift.getKey() + " upload " + container + " " + file); + } else { + command.add("cd " + lDir + ";/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A " + swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() + + " -K " + swift.getKey() + " upload -S " + SWIFT_MAX_SIZE + " " + container + " " + file); + } + OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser(); + String result = command.execute(parser); + if (result != null) { + String errMsg = "swiftUpload failed , err=" + result; + s_logger.warn(errMsg); + return errMsg; + } + if (parser.getLines() != null) { + String[] lines = parser.getLines().split("\\n"); + for (String line : lines) { + if (line.contains("Errno") || line.contains("failed")) { + String errMsg = "swiftUpload failed , err=" + lines.toString(); + s_logger.warn(errMsg); + return errMsg; + } } } } + return null; }