Merge remote-tracking branch 'origin/4.14'

This commit is contained in:
Rohit Yadav 2020-08-21 15:39:00 +05:30
commit bb73bedb55
3 changed files with 17 additions and 4 deletions

View File

@ -258,3 +258,8 @@ hypervisor.type=kvm
# timer.
# For all actions refer to the libvirt documentation.
# Recommended values are: none, reset and poweroff.
#
iscsi.session.cleanup.enabled=false
# Automatically clean up iscsi sessions not attached to any VM.
# Should be enabled for users using managed storage for example solidfire.
# Should be disabled for users with unmanaged iscsi connections on their hosts

View File

@ -61,6 +61,7 @@ import org.apache.cloudstack.utils.security.KeyStoreUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.log4j.Logger;
import org.joda.time.Duration;
@ -1156,9 +1157,15 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
storageProcessor.configure(name, params);
storageHandler = new StorageSubsystemCommandHandlerBase(storageProcessor);
IscsiStorageCleanupMonitor isciCleanupMonitor = new IscsiStorageCleanupMonitor();
final Thread cleanupMonitor = new Thread(isciCleanupMonitor);
cleanupMonitor.start();
Boolean _iscsiCleanUpEnabled = Boolean.parseBoolean((String)params.get("iscsi.session.cleanup.enabled"));
if (BooleanUtils.isTrue(_iscsiCleanUpEnabled)) {
IscsiStorageCleanupMonitor isciCleanupMonitor = new IscsiStorageCleanupMonitor();
final Thread cleanupMonitor = new Thread(isciCleanupMonitor);
cleanupMonitor.start();
} else {
s_logger.info("iscsi session clean up is disabled");
}
return true;
}

View File

@ -38,6 +38,7 @@ public class IscsiStorageCleanupMonitor implements Runnable{
private static final String ISCSI_PATH_PREFIX = "/dev/disk/by-path";
private static final String KEYWORD_ISCSI = "iscsi";
private static final String KEYWORD_IQN = "iqn";
private static final String REGEX_PART = "\\S+part\\d+$";
private IscsiAdmStorageAdaptor iscsiStorageAdaptor;
@ -114,7 +115,7 @@ public class IscsiStorageCleanupMonitor implements Runnable{
//check the volume map. If an entry exists change the status to True
for (final LibvirtVMDef.DiskDef disk : disks) {
if (diskStatusMap.containsKey(disk.getDiskPath())) {
if (diskStatusMap.containsKey(disk.getDiskPath())&&!disk.getDiskPath().matches(REGEX_PART)) {
diskStatusMap.put(disk.getDiskPath(), true);
s_logger.debug("active disk found by cleanup thread" + disk.getDiskPath());
}