From a668d042633885cf398a514af78303c26e6523ac Mon Sep 17 00:00:00 2001 From: Sid Kattoju Date: Wed, 22 Jul 2020 10:11:11 -0400 Subject: [PATCH 1/7] resolved conflict --- .../kvm/resource/LibvirtComputingResource.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 950dffa6f700..adefa90cb5c0 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -1088,9 +1088,15 @@ public boolean configure(final String name, final Map params) th 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; } From e0c68643c3b4aaeb0b04da24d98695dc583a3ed1 Mon Sep 17 00:00:00 2001 From: Sid Kattoju Date: Wed, 22 Jul 2020 10:33:41 -0400 Subject: [PATCH 2/7] resolved conflict in clean up monitor --- .../hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java index e5ce6bbd9ac6..9ec05670e7f9 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java @@ -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 KEYWORD_PART = "part"; private IscsiAdmStorageAdaptor iscsiStorageAdaptor; @@ -114,7 +115,7 @@ private void updateDiskStatusMapWithInactiveIscsiSessions(Connect conn){ //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().contains(KEYWORD_PART)) { diskStatusMap.put(disk.getDiskPath(), true); s_logger.debug("active disk found by cleanup thread" + disk.getDiskPath()); } From 64bf2aaa8cea0f55ed8421dde3623e90cb57d753 Mon Sep 17 00:00:00 2001 From: Sid Kattoju Date: Wed, 22 Jul 2020 10:43:35 -0400 Subject: [PATCH 3/7] resolved conflict in agent properties --- agent/conf/agent.properties | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/agent/conf/agent.properties b/agent/conf/agent.properties index b45526aa6af6..426c701df444 100644 --- a/agent/conf/agent.properties +++ b/agent/conf/agent.properties @@ -218,3 +218,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 From b0e75cf2212cb6a5b719008f395796352b9aba16 Mon Sep 17 00:00:00 2001 From: Sid Kattoju Date: Wed, 22 Jul 2020 12:01:58 -0400 Subject: [PATCH 4/7] use regex instead of contains --- .../hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java index 9ec05670e7f9..5042acf7c6e3 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java @@ -39,6 +39,7 @@ public class IscsiStorageCleanupMonitor implements Runnable{ private static final String KEYWORD_ISCSI = "iscsi"; private static final String KEYWORD_IQN = "iqn"; private static final String KEYWORD_PART = "part"; + private static final String REGEX_PART = "\\S+part\\d+$"; private IscsiAdmStorageAdaptor iscsiStorageAdaptor; @@ -115,7 +116,7 @@ private void updateDiskStatusMapWithInactiveIscsiSessions(Connect conn){ //check the volume map. If an entry exists change the status to True for (final LibvirtVMDef.DiskDef disk : disks) { - if (diskStatusMap.containsKey(disk.getDiskPath())&&!disk.getDiskPath().contains(KEYWORD_PART)) { + 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()); } From 9a36abdbe05cef812573a140b515731aaddf56c0 Mon Sep 17 00:00:00 2001 From: Sid Kattoju Date: Wed, 22 Jul 2020 12:04:44 -0400 Subject: [PATCH 5/7] remove excess \ --- .../hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java index 5042acf7c6e3..b47adc4ad52b 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java @@ -39,7 +39,7 @@ public class IscsiStorageCleanupMonitor implements Runnable{ private static final String KEYWORD_ISCSI = "iscsi"; private static final String KEYWORD_IQN = "iqn"; private static final String KEYWORD_PART = "part"; - private static final String REGEX_PART = "\\S+part\\d+$"; + private static final String REGEX_PART = "\S+part\d+$"; private IscsiAdmStorageAdaptor iscsiStorageAdaptor; From c4011dfd6b1f69840be4fec8c239ae1764d9cdc2 Mon Sep 17 00:00:00 2001 From: Sid Kattoju Date: Wed, 22 Jul 2020 12:08:54 -0400 Subject: [PATCH 6/7] Revert "remove excess \" This reverts commit 26776adde6b9818031b2d3e1785dbab05547b7da. --- .../hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java index b47adc4ad52b..5042acf7c6e3 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java @@ -39,7 +39,7 @@ public class IscsiStorageCleanupMonitor implements Runnable{ private static final String KEYWORD_ISCSI = "iscsi"; private static final String KEYWORD_IQN = "iqn"; private static final String KEYWORD_PART = "part"; - private static final String REGEX_PART = "\S+part\d+$"; + private static final String REGEX_PART = "\\S+part\\d+$"; private IscsiAdmStorageAdaptor iscsiStorageAdaptor; From 7f34c9ed1850abd462388bdafa3f88faa062f921 Mon Sep 17 00:00:00 2001 From: Sid Kattoju Date: Wed, 22 Jul 2020 13:25:46 -0400 Subject: [PATCH 7/7] import BooleanUtils removed unused constant --- .../cloud/hypervisor/kvm/resource/LibvirtComputingResource.java | 1 + .../cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index adefa90cb5c0..580d6284952d 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -61,6 +61,7 @@ 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; diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java index 5042acf7c6e3..c8a5fc88a191 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiStorageCleanupMonitor.java @@ -38,7 +38,6 @@ 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 KEYWORD_PART = "part"; private static final String REGEX_PART = "\\S+part\\d+$"; private IscsiAdmStorageAdaptor iscsiStorageAdaptor;