This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.11
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.11 by this push:
new 39471c8 configdrive: make fewer mountpoints on hosts (#2716)
39471c8 is described below
commit 39471c8c00d0e977872e9224e31de5b4dda9f051
Author: Rohit Yadav <[email protected]>
AuthorDate: Wed Jun 20 12:25:16 2018 +0530
configdrive: make fewer mountpoints on hosts (#2716)
This ensure that fewer mount points are made on hosts for either
primary storagepools or secondary storagepools.
Signed-off-by: Rohit Yadav <[email protected]>
---
.../apache/cloudstack/storage/configdrive/ConfigDrive.java | 14 +++++++++++---
.../cloudstack/storage/configdrive/ConfigDriveBuilder.java | 5 +++++
.../cloudstack/storage/configdrive/ConfigDriveTest.java | 2 +-
.../wrapper/LibvirtHandleConfigDriveCommandWrapper.java | 3 +--
.../cloud/network/element/ConfigDriveNetworkElement.java | 3 ++-
.../storage/resource/NfsSecondaryStorageResource.java | 7 ++++---
6 files changed, 24 insertions(+), 10 deletions(-)
diff --git
a/engine/storage/configdrive/src/org/apache/cloudstack/storage/configdrive/ConfigDrive.java
b/engine/storage/configdrive/src/org/apache/cloudstack/storage/configdrive/ConfigDrive.java
index 07cfdc8..2fbc590 100644
---
a/engine/storage/configdrive/src/org/apache/cloudstack/storage/configdrive/ConfigDrive.java
+++
b/engine/storage/configdrive/src/org/apache/cloudstack/storage/configdrive/ConfigDrive.java
@@ -19,7 +19,6 @@ package org.apache.cloudstack.storage.configdrive;
public class ConfigDrive {
- public final static String CONFIGDRIVEFILENAME = "configdrive.iso";
public final static String CONFIGDRIVEDIR = "configdrive";
public static final String cloudStackConfigDriveName = "/cloudstack/";
@@ -27,11 +26,20 @@ public class ConfigDrive {
/**
* Creates the path to ISO file relative to mount point.
- * The config driver path will have the following formated: {@link
#CONFIGDRIVEDIR} + / + instanceName + / + {@link #CONFIGDRIVEFILENAME}
+ * The config driver path will have the following format: {@link
#CONFIGDRIVEDIR} + / + instanceName + ".iso"
*
* @return config drive ISO file path
*/
public static String createConfigDrivePath(String instanceName) {
- return ConfigDrive.CONFIGDRIVEDIR + "/" + instanceName + "/" +
ConfigDrive.CONFIGDRIVEFILENAME;
+ return ConfigDrive.CONFIGDRIVEDIR + "/" +
configIsoFileName(instanceName);
+ }
+
+ /**
+ * Config Drive iso file name for an instance name
+ * @param instanceName
+ * @return
+ */
+ public static String configIsoFileName(String instanceName) {
+ return instanceName + ".iso";
}
}
\ No newline at end of file
diff --git
a/engine/storage/configdrive/src/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilder.java
b/engine/storage/configdrive/src/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilder.java
index 55e7979..0675b43 100644
---
a/engine/storage/configdrive/src/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilder.java
+++
b/engine/storage/configdrive/src/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilder.java
@@ -79,6 +79,11 @@ public class ConfigDriveBuilder {
public static File base64StringToFile(String encodedIsoData, String
folder, String fileName) throws IOException {
byte[] decoded =
Base64.decodeBase64(encodedIsoData.getBytes(StandardCharsets.US_ASCII));
Path destPath = Paths.get(folder, fileName);
+ try {
+ Files.createDirectories(destPath.getParent());
+ } catch (final IOException e) {
+ LOG.warn("Exception hit while trying to recreate directory: " +
destPath.getParent().toString());
+ }
return Files.write(destPath, decoded).toFile();
}
diff --git
a/engine/storage/configdrive/test/org/apache/cloudstack/storage/configdrive/ConfigDriveTest.java
b/engine/storage/configdrive/test/org/apache/cloudstack/storage/configdrive/ConfigDriveTest.java
index 81294d4..fd3d3db 100644
---
a/engine/storage/configdrive/test/org/apache/cloudstack/storage/configdrive/ConfigDriveTest.java
+++
b/engine/storage/configdrive/test/org/apache/cloudstack/storage/configdrive/ConfigDriveTest.java
@@ -26,7 +26,7 @@ public class ConfigDriveTest {
@Test
public void testConfigDriveIsoPath() throws IOException {
- Assert.assertEquals(ConfigDrive.createConfigDrivePath("i-x-y"),
"configdrive/i-x-y/configdrive.iso");
+ Assert.assertEquals(ConfigDrive.createConfigDrivePath("i-x-y"),
"configdrive/i-x-y.iso");
}
}
\ No newline at end of file
diff --git
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtHandleConfigDriveCommandWrapper.java
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtHandleConfigDriveCommandWrapper.java
index 5e4ef48..6baae85 100644
---
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtHandleConfigDriveCommandWrapper.java
+++
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtHandleConfigDriveCommandWrapper.java
@@ -24,7 +24,6 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import org.apache.cloudstack.storage.configdrive.ConfigDriveBuilder;
-import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import com.cloud.agent.api.Answer;
@@ -67,7 +66,7 @@ public final class LibvirtHandleConfigDriveCommandWrapper
extends CommandWrapper
}
} else {
try {
- FileUtils.deleteDirectory(isoPath.getParent().toFile());
+ Files.deleteIfExists(isoPath);
} catch (IOException e) {
LOG.warn("Failed to delete config drive: " +
isoPath.toAbsolutePath().toString());
return new Answer(command, false, "Failed due to exception: "
+ e.getMessage());
diff --git
a/server/src/com/cloud/network/element/ConfigDriveNetworkElement.java
b/server/src/com/cloud/network/element/ConfigDriveNetworkElement.java
index a304ea4..919d7bd 100644
--- a/server/src/com/cloud/network/element/ConfigDriveNetworkElement.java
+++ b/server/src/com/cloud/network/element/ConfigDriveNetworkElement.java
@@ -375,8 +375,9 @@ public class ConfigDriveNetworkElement extends AdapterBase
implements NetworkEle
LOG.debug("Creating config drive ISO for vm: " +
profile.getInstanceName());
+ final String isoFileName =
ConfigDrive.configIsoFileName(profile.getInstanceName());
final String isoPath =
ConfigDrive.createConfigDrivePath(profile.getInstanceName());
- final String isoData =
ConfigDriveBuilder.buildConfigDrive(profile.getVmData(),
ConfigDrive.CONFIGDRIVEFILENAME, profile.getConfigDriveLabel());
+ final String isoData =
ConfigDriveBuilder.buildConfigDrive(profile.getVmData(), isoFileName,
profile.getConfigDriveLabel());
final HandleConfigDriveIsoCommand configDriveIsoCommand = new
HandleConfigDriveIsoCommand(isoPath, isoData, dataStore.getTO(), true);
final Answer answer = agentManager.easySend(agentId,
configDriveIsoCommand);
diff --git
a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
index 0bb923f..46fa170 100644
---
a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
+++
b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
@@ -42,6 +42,7 @@ import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.net.URI;
import java.net.UnknownHostException;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
@@ -337,7 +338,7 @@ public class NfsSecondaryStorageResource extends
ServerResourceBase implements S
Path tempDir = null;
try {
tempDir =
java.nio.file.Files.createTempDirectory(ConfigDrive.CONFIGDRIVEDIR);
- File tmpIsoFile =
ConfigDriveBuilder.base64StringToFile(cmd.getIsoData(),
tempDir.toAbsolutePath().toString(), ConfigDrive.CONFIGDRIVEFILENAME);
+ File tmpIsoFile =
ConfigDriveBuilder.base64StringToFile(cmd.getIsoData(),
tempDir.toAbsolutePath().toString(), cmd.getIsoFile());
copyLocalToNfs(tmpIsoFile, new File(cmd.getIsoFile()),
cmd.getDestStore());
} catch (IOException | ConfigurationException e) {
return new Answer(cmd, false, "Failed due to exception: " +
e.getMessage());
@@ -355,11 +356,11 @@ public class NfsSecondaryStorageResource extends
ServerResourceBase implements S
DataStoreTO dstore = cmd.getDestStore();
if (dstore instanceof NfsTO) {
NfsTO nfs = (NfsTO) dstore;
- String relativeTemplatePath = new
File(cmd.getIsoFile()).getParent();
+ String relativeTemplatePath = new
File(cmd.getIsoFile()).getPath();
String nfsMountPoint = getRootDir(nfs.getUrl(), _nfsVersion);
File tmpltPath = new File(nfsMountPoint, relativeTemplatePath);
try {
- FileUtils.deleteDirectory(tmpltPath);
+ Files.deleteIfExists(tmpltPath.toPath());
} catch (IOException e) {
return new Answer(cmd, e);
}