From 422f3ba7fefe42ce939b69555089c09c498f2532 Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Tue, 13 Aug 2024 12:08:05 -0700 Subject: [PATCH 01/11] Introduced configuration key "powerflex.connect.on.demand" to enable/disable PowerFlex on-demand connection from Host to Storage Pool feature. --- .../driver/ScaleIOPrimaryDataStoreDriver.java | 50 ++++++------ .../datastore/manager/ScaleIOSDCManager.java | 8 ++ .../manager/ScaleIOSDCManagerImpl.java | 12 +-- .../ScaleIOPrimaryDataStoreDriverTest.java | 80 ++++++++++++++++--- 4 files changed, 109 insertions(+), 41 deletions(-) diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java index 06091735d70..f7128876d7d 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java @@ -38,6 +38,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; +import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.resourcedetail.DiskOfferingDetailVO; import org.apache.cloudstack.resourcedetail.dao.DiskOfferingDetailsDao; @@ -111,6 +112,13 @@ import com.google.common.base.Preconditions; public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { private static final Logger LOGGER = Logger.getLogger(ScaleIOPrimaryDataStoreDriver.class); + static ConfigKey ConnectOnDemand = new ConfigKey<>("Storage", + Boolean.class, + "powerflex.connect.on.demand", + Boolean.FALSE.toString(), + "Connect PowerFlex client on Host when first Volume created and disconnect when last Volume deleted (or always stay connected otherwise).", + Boolean.TRUE); + @Inject EndPointSelector selector; @Inject @@ -155,7 +163,9 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { private boolean setVolumeLimitsOnSDC(VolumeVO volume, Host host, DataStore dataStore, Long iopsLimit, Long bandwidthLimitInKbps) throws Exception { sdcManager = ComponentContext.inject(sdcManager); - final String sdcId = sdcManager.prepareSDC(host, dataStore); + // don't connect SDC if connect on demand disabled + final String sdcId = Boolean.TRUE.equals(ConnectOnDemand.value()) ? sdcManager.prepareSDC(host, dataStore) : + sdcManager.getConnectedSdc(host, dataStore); if (StringUtils.isBlank(sdcId)) { alertHostSdcDisconnection(host); throw new CloudRuntimeException("Unable to grant access to volume: " + volume.getId() + ", no Sdc connected with host ip: " + host.getPrivateIpAddress()); @@ -192,7 +202,9 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { public boolean grantAccess(DataObject dataObject, Host host, DataStore dataStore) { try { sdcManager = ComponentContext.inject(sdcManager); - final String sdcId = sdcManager.prepareSDC(host, dataStore); + // don't connect SDC if connect on demand disabled + final String sdcId = Boolean.TRUE.equals(ConnectOnDemand.value()) ? sdcManager.prepareSDC(host, dataStore) : + sdcManager.getConnectedSdc(host, dataStore); if (StringUtils.isBlank(sdcId)) { alertHostSdcDisconnection(host); throw new CloudRuntimeException(String.format("Unable to grant access to %s: %s, no Sdc connected with host ip: %s", dataObject.getType(), dataObject.getId(), host.getPrivateIpAddress())); @@ -233,7 +245,8 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { } try { - final String sdcId = getConnectedSdc(dataStore.getId(), host.getId()); + sdcManager = ComponentContext.inject(sdcManager); + final String sdcId = sdcManager.getConnectedSdc(host, dataStore); if (StringUtils.isBlank(sdcId)) { LOGGER.warn(String.format("Unable to revoke access for %s: %s, no Sdc connected with host ip: %s", dataObject.getType(), dataObject.getId(), host.getPrivateIpAddress())); return; @@ -252,8 +265,9 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { LOGGER.debug("Revoking access for PowerFlex volume snapshot: " + snapshot.getPath()); client.unmapVolumeFromSdc(ScaleIOUtil.getVolumePath(snapshot.getPath()), sdcId); } - if (client.listVolumesMappedToSdc(sdcId).isEmpty()) { - sdcManager = ComponentContext.inject(sdcManager); + + // don't stop SDC if connect on demand disabled + if (Boolean.TRUE.equals(ConnectOnDemand.value()) && client.listVolumesMappedToSdc(sdcId).isEmpty()) { sdcManager.stopSDC(host, dataStore); } } catch (Exception e) { @@ -269,8 +283,8 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { try { LOGGER.debug("Revoking access for PowerFlex volume: " + volumePath); - - final String sdcId = getConnectedSdc(dataStore.getId(), host.getId()); + sdcManager = ComponentContext.inject(sdcManager); + final String sdcId = sdcManager.getConnectedSdc(host, dataStore); if (StringUtils.isBlank(sdcId)) { LOGGER.warn(String.format("Unable to revoke access for volume: %s, no Sdc connected with host ip: %s", volumePath, host.getPrivateIpAddress())); return; @@ -278,8 +292,8 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { final ScaleIOGatewayClient client = getScaleIOClient(dataStore.getId()); client.unmapVolumeFromSdc(ScaleIOUtil.getVolumePath(volumePath), sdcId); - if (client.listVolumesMappedToSdc(sdcId).isEmpty()) { - sdcManager = ComponentContext.inject(sdcManager); + // don't stop SDC if connect on demand disabled + if (Boolean.TRUE.equals(ConnectOnDemand.value()) && client.listVolumesMappedToSdc(sdcId).isEmpty()) { sdcManager.stopSDC(host, dataStore); } } catch (Exception e) { @@ -292,24 +306,6 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { revokeAccess(dataObject, host, dataStore); } - public String getConnectedSdc(long poolId, long hostId) { - try { - StoragePoolHostVO poolHostVO = storagePoolHostDao.findByPoolHost(poolId, hostId); - if (poolHostVO == null) { - return null; - } - - final ScaleIOGatewayClient client = getScaleIOClient(poolId); - if (client.isSdcConnected(poolHostVO.getLocalPath())) { - return poolHostVO.getLocalPath(); - } - } catch (Exception e) { - LOGGER.warn("Couldn't check SDC connection for the host: " + hostId + " and storage pool: " + poolId + " due to " + e.getMessage(), e); - } - - return null; - } - @Override public boolean requiresAccessForMigration(DataObject dataObject) { return true; diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManager.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManager.java index 696643cb17a..ede893786b5 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManager.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManager.java @@ -29,6 +29,14 @@ public interface ScaleIOSDCManager { */ boolean areSDCConnectionsWithinLimit(Long storagePoolId); + /** + * Returns connected SDC Id. + * @param host the host + * @param dataStore the datastore + * @return SDC Id of the host + */ + String getConnectedSdc(Host host, DataStore dataStore); + /** * Prepares/starts the SDC on the host. * @param host the host diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java index b121a1da66f..69ec098db02 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java @@ -115,7 +115,7 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager { long poolId = dataStore.getId(); long hostId = host.getId(); - String sdcId = getConnectedSdc(poolId, hostId); + String sdcId = getConnectedSdc(host, dataStore); if (StringUtils.isNotBlank(sdcId)) { LOGGER.debug(String.format("SDC %s already connected for the pool: %d on host: %d, no need to prepare/start it", sdcId, poolId, hostId)); return sdcId; @@ -245,9 +245,7 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager { throw new CloudRuntimeException("Unable to unprepare SDC, couldn't lock on " + hostIdStorageSystemIdLockString); } - long poolId = dataStore.getId(); - long hostId = host.getId(); - String sdcId = getConnectedSdc(poolId, hostId); + String sdcId = getConnectedSdc(host, dataStore); if (StringUtils.isBlank(sdcId)) { LOGGER.debug("SDC not connected, no need to unprepare it"); return true; @@ -296,7 +294,11 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager { } } - private String getConnectedSdc(long poolId, long hostId) { + @Override + public String getConnectedSdc(Host host, DataStore dataStore) { + long poolId = dataStore.getId(); + long hostId = host.getId(); + try { StoragePoolHostVO poolHostVO = storagePoolHostDao.findByPoolHost(poolId, hostId); if (poolHostVO == null) { diff --git a/plugins/storage/volume/scaleio/src/test/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriverTest.java b/plugins/storage/volume/scaleio/src/test/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriverTest.java index f9cd2cda4f1..0a5743ac0fc 100644 --- a/plugins/storage/volume/scaleio/src/test/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriverTest.java +++ b/plugins/storage/volume/scaleio/src/test/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriverTest.java @@ -20,16 +20,23 @@ package org.apache.cloudstack.storage.datastore.driver; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isA; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Optional; +import com.cloud.utils.component.ComponentContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService; +import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.storage.RemoteHostEndPoint; import org.apache.cloudstack.storage.command.CreateObjectAnswer; @@ -38,6 +45,8 @@ import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; +import org.apache.cloudstack.storage.datastore.manager.ScaleIOSDCManager; +import org.apache.cloudstack.storage.datastore.manager.ScaleIOSDCManagerImpl; import org.apache.cloudstack.storage.to.VolumeObjectTO; import org.junit.Assert; import org.junit.Before; @@ -74,12 +83,17 @@ import com.cloud.vm.VirtualMachine; import com.cloud.vm.dao.VMInstanceDao; @RunWith(PowerMockRunner.class) -@PrepareForTest(RemoteHostEndPoint.class) +@PrepareForTest({RemoteHostEndPoint.class, ComponentContext.class}) public class ScaleIOPrimaryDataStoreDriverTest { @Spy @InjectMocks ScaleIOPrimaryDataStoreDriver scaleIOPrimaryDataStoreDriver = new ScaleIOPrimaryDataStoreDriver(); + + @Spy + @InjectMocks + ScaleIOSDCManager sdcManager = new ScaleIOSDCManagerImpl(); + @Mock StoragePoolDetailsDao storagePoolDetailsDao; @Mock @@ -449,7 +463,7 @@ public class ScaleIOPrimaryDataStoreDriverTest { } @Test - public void deleteSourceVolumeFailureScenarioAfterSuccessfulBlockCopy() throws Exception { + public void deleteSourceVolumeFailureScenarioAfterSuccessfulBlockCopyOnDemandDisabled() throws Exception { // Either Volume deletion success or failure method should complete VolumeInfo srcData = Mockito.mock(VolumeInfo.class); @@ -463,18 +477,63 @@ public class ScaleIOPrimaryDataStoreDriverTest { when(srcData.getDataStore()).thenReturn(srcStore); when(srcData.getTO()).thenReturn(volumeTO); when(volumeTO.getPath()).thenReturn(srcVolumePath); + + PowerMockito.mockStatic(ComponentContext.class); + PowerMockito.when(ComponentContext.inject(eq(sdcManager))).thenReturn(sdcManager); + String sdcId = "7332760565f6340f"; - doReturn(sdcId).when(scaleIOPrimaryDataStoreDriver).getConnectedSdc(1L, 1L); + doReturn(sdcId).when(sdcManager).getConnectedSdc(host, srcStore); ScaleIOGatewayClient client = Mockito.mock(ScaleIOGatewayClient.class); - doReturn(client).when(scaleIOPrimaryDataStoreDriver) - .getScaleIOClient(any()); - doReturn(true).when(client).unmapVolumeFromSdc(any(), any()); - when(client.deleteVolume(any())).thenReturn(false); + + doReturn(client).when(scaleIOPrimaryDataStoreDriver).getScaleIOClient(any()); + + doReturn(true).when(client).unmapVolumeFromSdc(anyString(), anyString()); + doReturn(false).when(client).deleteVolume(anyString()); scaleIOPrimaryDataStoreDriver.deleteSourceVolumeAfterSuccessfulBlockCopy(srcData, host); } + @Test + public void deleteSourceVolumeFailureScenarioAfterSuccessfulBlockCopyOnDemandEnabled() throws Exception { + // Either Volume deletion success or failure method should complete + + VolumeInfo srcData = Mockito.mock(VolumeInfo.class); + Host host = Mockito.mock(Host.class); + when(host.getId()).thenReturn(1L); + String srcVolumePath = "bec0ba7700000007:vol-11-6aef-10ee"; + + DataStore srcStore = Mockito.mock(DataStore.class); + when(srcStore.getId()).thenReturn(1L); + DataTO volumeTO = Mockito.mock(DataTO.class); + when(srcData.getDataStore()).thenReturn(srcStore); + when(srcData.getTO()).thenReturn(volumeTO); + when(volumeTO.getPath()).thenReturn(srcVolumePath); + + PowerMockito.mockStatic(ComponentContext.class); + PowerMockito.when(ComponentContext.inject(eq(sdcManager))).thenReturn(sdcManager); + + String sdcId = "7332760565f6340f"; + doReturn(sdcId).when(sdcManager).getConnectedSdc(host, srcStore); + + ScaleIOGatewayClient client = Mockito.mock(ScaleIOGatewayClient.class); + doReturn(client).when(scaleIOPrimaryDataStoreDriver).getScaleIOClient(any()); + + doReturn(true).when(client).unmapVolumeFromSdc(any(), any()); + doReturn(false).when(client).deleteVolume(anyString()); + + ConfigKey connectOnDemand = Mockito.mock(ConfigKey.class); + doReturn(Boolean.TRUE).when(connectOnDemand).value(); + + doReturn(true).when(sdcManager).stopSDC(isA(Host.class), isA(DataStore.class)); + + scaleIOPrimaryDataStoreDriver.ConnectOnDemand = connectOnDemand; + + scaleIOPrimaryDataStoreDriver.deleteSourceVolumeAfterSuccessfulBlockCopy(srcData, host); + + verify(sdcManager, times(1)).stopSDC(isA(Host.class), isA(DataStore.class)); + } + @Test public void deleteSourceVolumeFailureScenarioWhenNoSDCisFound() { // Either Volume deletion success or failure method should complete @@ -490,8 +549,11 @@ public class ScaleIOPrimaryDataStoreDriverTest { when(srcData.getDataStore()).thenReturn(srcStore); when(srcData.getTO()).thenReturn(volumeTO); when(volumeTO.getPath()).thenReturn(srcVolumePath); - String sdcId = "7332760565f6340f"; - doReturn(null).when(scaleIOPrimaryDataStoreDriver).getConnectedSdc(1L, 1L); + + PowerMockito.mockStatic(ComponentContext.class); + PowerMockito.when(ComponentContext.inject(eq(sdcManager))).thenReturn(sdcManager); + + doReturn(null).when(sdcManager).getConnectedSdc(host, srcStore); scaleIOPrimaryDataStoreDriver.deleteSourceVolumeAfterSuccessfulBlockCopy(srcData, host); } From e0d606693573f8397c60ac2bf80700e3e07e6e93 Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Thu, 15 Aug 2024 17:55:00 -0700 Subject: [PATCH 02/11] Bumped pom version to 4.18.1.2 (to add migration SQL script) --- agent/pom.xml | 2 +- api/pom.xml | 2 +- client/pom.xml | 2 +- core/pom.xml | 2 +- developer/pom.xml | 2 +- engine/api/pom.xml | 2 +- engine/components-api/pom.xml | 2 +- engine/network/pom.xml | 2 +- engine/orchestration/pom.xml | 2 +- engine/pom.xml | 2 +- engine/schema/pom.xml | 2 +- engine/service/pom.xml | 2 +- engine/storage/cache/pom.xml | 2 +- engine/storage/configdrive/pom.xml | 2 +- engine/storage/datamotion/pom.xml | 2 +- engine/storage/image/pom.xml | 2 +- engine/storage/integration-test/pom.xml | 2 +- engine/storage/pom.xml | 2 +- engine/storage/snapshot/pom.xml | 2 +- engine/storage/volume/pom.xml | 2 +- engine/userdata/cloud-init/pom.xml | 2 +- engine/userdata/pom.xml | 2 +- framework/agent-lb/pom.xml | 2 +- framework/ca/pom.xml | 2 +- framework/cluster/pom.xml | 2 +- framework/config/pom.xml | 2 +- framework/db/pom.xml | 2 +- framework/direct-download/pom.xml | 4 ++-- framework/events/pom.xml | 2 +- framework/ipc/pom.xml | 2 +- framework/jobs/pom.xml | 2 +- framework/managed-context/pom.xml | 2 +- framework/pom.xml | 2 +- framework/quota/pom.xml | 2 +- framework/rest/pom.xml | 2 +- framework/security/pom.xml | 2 +- framework/spring/lifecycle/pom.xml | 2 +- framework/spring/module/pom.xml | 2 +- plugins/acl/dynamic-role-based/pom.xml | 2 +- plugins/acl/project-role-based/pom.xml | 2 +- plugins/acl/static-role-based/pom.xml | 2 +- plugins/affinity-group-processors/explicit-dedication/pom.xml | 2 +- plugins/affinity-group-processors/host-affinity/pom.xml | 2 +- plugins/affinity-group-processors/host-anti-affinity/pom.xml | 2 +- .../non-strict-host-affinity/pom.xml | 2 +- .../non-strict-host-anti-affinity/pom.xml | 4 ++-- plugins/alert-handlers/snmp-alerts/pom.xml | 2 +- plugins/alert-handlers/syslog-alerts/pom.xml | 2 +- plugins/api/discovery/pom.xml | 2 +- plugins/api/rate-limit/pom.xml | 2 +- plugins/api/solidfire-intg-test/pom.xml | 2 +- plugins/api/vmware-sioc/pom.xml | 2 +- plugins/backup/dummy/pom.xml | 2 +- plugins/backup/networker/pom.xml | 2 +- plugins/backup/veeam/pom.xml | 2 +- plugins/ca/root-ca/pom.xml | 2 +- plugins/database/mysql-ha/pom.xml | 2 +- plugins/database/quota/pom.xml | 2 +- plugins/dedicated-resources/pom.xml | 2 +- plugins/deployment-planners/implicit-dedication/pom.xml | 2 +- plugins/deployment-planners/user-concentrated-pod/pom.xml | 2 +- plugins/deployment-planners/user-dispersing/pom.xml | 2 +- plugins/event-bus/inmemory/pom.xml | 2 +- plugins/event-bus/kafka/pom.xml | 2 +- plugins/event-bus/rabbitmq/pom.xml | 2 +- plugins/ha-planners/skip-heurestics/pom.xml | 2 +- plugins/host-allocators/random/pom.xml | 2 +- plugins/hypervisors/baremetal/pom.xml | 2 +- plugins/hypervisors/hyperv/pom.xml | 2 +- plugins/hypervisors/kvm/pom.xml | 2 +- plugins/hypervisors/ovm/pom.xml | 2 +- plugins/hypervisors/ovm3/pom.xml | 2 +- plugins/hypervisors/simulator/pom.xml | 2 +- plugins/hypervisors/ucs/pom.xml | 2 +- plugins/hypervisors/vmware/pom.xml | 2 +- plugins/hypervisors/xenserver/pom.xml | 2 +- plugins/integrations/cloudian/pom.xml | 2 +- plugins/integrations/kubernetes-service/pom.xml | 2 +- plugins/integrations/prometheus/pom.xml | 2 +- plugins/metrics/pom.xml | 2 +- plugins/network-elements/bigswitch/pom.xml | 2 +- plugins/network-elements/brocade-vcs/pom.xml | 2 +- plugins/network-elements/cisco-vnmc/pom.xml | 2 +- plugins/network-elements/dns-notifier/pom.xml | 2 +- plugins/network-elements/elastic-loadbalancer/pom.xml | 2 +- plugins/network-elements/globodns/pom.xml | 2 +- plugins/network-elements/internal-loadbalancer/pom.xml | 2 +- plugins/network-elements/juniper-contrail/pom.xml | 2 +- plugins/network-elements/netscaler/pom.xml | 2 +- plugins/network-elements/nicira-nvp/pom.xml | 2 +- plugins/network-elements/opendaylight/pom.xml | 2 +- plugins/network-elements/ovs/pom.xml | 2 +- plugins/network-elements/palo-alto/pom.xml | 2 +- plugins/network-elements/stratosphere-ssp/pom.xml | 2 +- plugins/network-elements/tungsten/pom.xml | 2 +- plugins/network-elements/vxlan/pom.xml | 2 +- plugins/outofbandmanagement-drivers/ipmitool/pom.xml | 2 +- plugins/outofbandmanagement-drivers/nested-cloudstack/pom.xml | 2 +- plugins/outofbandmanagement-drivers/redfish/pom.xml | 2 +- plugins/pom.xml | 2 +- plugins/storage-allocators/random/pom.xml | 2 +- plugins/storage/image/default/pom.xml | 2 +- plugins/storage/image/s3/pom.xml | 2 +- plugins/storage/image/sample/pom.xml | 2 +- plugins/storage/image/swift/pom.xml | 2 +- plugins/storage/volume/cloudbyte/pom.xml | 2 +- plugins/storage/volume/datera/pom.xml | 2 +- plugins/storage/volume/default/pom.xml | 2 +- plugins/storage/volume/linstor/pom.xml | 2 +- plugins/storage/volume/nexenta/pom.xml | 2 +- plugins/storage/volume/sample/pom.xml | 2 +- plugins/storage/volume/scaleio/pom.xml | 2 +- plugins/storage/volume/solidfire/pom.xml | 2 +- plugins/storage/volume/storpool/pom.xml | 2 +- plugins/user-authenticators/ldap/pom.xml | 2 +- plugins/user-authenticators/md5/pom.xml | 2 +- plugins/user-authenticators/pbkdf2/pom.xml | 2 +- plugins/user-authenticators/plain-text/pom.xml | 2 +- plugins/user-authenticators/saml2/pom.xml | 2 +- plugins/user-authenticators/sha256salted/pom.xml | 2 +- plugins/user-two-factor-authenticators/static-pin/pom.xml | 2 +- plugins/user-two-factor-authenticators/totp/pom.xml | 2 +- pom.xml | 2 +- quickcloud/pom.xml | 2 +- server/pom.xml | 2 +- services/console-proxy/pom.xml | 2 +- services/console-proxy/rdpconsole/pom.xml | 2 +- services/console-proxy/server/pom.xml | 2 +- services/pom.xml | 2 +- services/secondary-storage/controller/pom.xml | 2 +- services/secondary-storage/pom.xml | 2 +- services/secondary-storage/server/pom.xml | 2 +- systemvm/pom.xml | 2 +- test/pom.xml | 2 +- tools/apidoc/pom.xml | 2 +- tools/checkstyle/pom.xml | 2 +- tools/devcloud-kvm/pom.xml | 2 +- tools/devcloud4/pom.xml | 2 +- tools/marvin/pom.xml | 2 +- tools/marvin/setup.py | 2 +- tools/pom.xml | 2 +- usage/pom.xml | 2 +- utils/pom.xml | 2 +- vmware-base/pom.xml | 2 +- 144 files changed, 146 insertions(+), 146 deletions(-) diff --git a/agent/pom.xml b/agent/pom.xml index d8ca0ccdd1f..92a23ba5e3e 100644 --- a/agent/pom.xml +++ b/agent/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/api/pom.xml b/api/pom.xml index 2f6c4c60fe1..ba32bd1671d 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/client/pom.xml b/client/pom.xml index a7cfdfb661f..57593381dee 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/core/pom.xml b/core/pom.xml index 53b9c316863..cf3fff2d30d 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/developer/pom.xml b/developer/pom.xml index 86989eaa1ef..e60d95683ce 100644 --- a/developer/pom.xml +++ b/developer/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/engine/api/pom.xml b/engine/api/pom.xml index d43fccceb52..8cf38af978a 100644 --- a/engine/api/pom.xml +++ b/engine/api/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/engine/components-api/pom.xml b/engine/components-api/pom.xml index 836610debb9..84223ca93f8 100644 --- a/engine/components-api/pom.xml +++ b/engine/components-api/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/engine/network/pom.xml b/engine/network/pom.xml index 6d9bfb3ebc1..f6791c134bf 100644 --- a/engine/network/pom.xml +++ b/engine/network/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/engine/orchestration/pom.xml b/engine/orchestration/pom.xml index 19f42376c45..01b64391504 100755 --- a/engine/orchestration/pom.xml +++ b/engine/orchestration/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/engine/pom.xml b/engine/pom.xml index c7f7166c6e9..0b8651d46e8 100644 --- a/engine/pom.xml +++ b/engine/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/engine/schema/pom.xml b/engine/schema/pom.xml index 57b9b96b808..cda4934567b 100644 --- a/engine/schema/pom.xml +++ b/engine/schema/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/engine/service/pom.xml b/engine/service/pom.xml index f04d7e0772d..1539d13cd04 100644 --- a/engine/service/pom.xml +++ b/engine/service/pom.xml @@ -22,7 +22,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 cloud-engine-service war diff --git a/engine/storage/cache/pom.xml b/engine/storage/cache/pom.xml index bbbe2232d92..8f312a5e184 100644 --- a/engine/storage/cache/pom.xml +++ b/engine/storage/cache/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/engine/storage/configdrive/pom.xml b/engine/storage/configdrive/pom.xml index ad4ae103f60..3f0d661da5c 100644 --- a/engine/storage/configdrive/pom.xml +++ b/engine/storage/configdrive/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/engine/storage/datamotion/pom.xml b/engine/storage/datamotion/pom.xml index 55ea472c6da..90147d9ad05 100644 --- a/engine/storage/datamotion/pom.xml +++ b/engine/storage/datamotion/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/engine/storage/image/pom.xml b/engine/storage/image/pom.xml index 98ba4f19678..37b66129a4c 100644 --- a/engine/storage/image/pom.xml +++ b/engine/storage/image/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/engine/storage/integration-test/pom.xml b/engine/storage/integration-test/pom.xml index b38fb372802..80013a0ab3c 100644 --- a/engine/storage/integration-test/pom.xml +++ b/engine/storage/integration-test/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/engine/storage/pom.xml b/engine/storage/pom.xml index 9a8dbd46ab2..1fb4e9b2816 100644 --- a/engine/storage/pom.xml +++ b/engine/storage/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/engine/storage/snapshot/pom.xml b/engine/storage/snapshot/pom.xml index 78691543bf2..0d1cfb0c821 100644 --- a/engine/storage/snapshot/pom.xml +++ b/engine/storage/snapshot/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/engine/storage/volume/pom.xml b/engine/storage/volume/pom.xml index 351f43508c2..15626620ff2 100644 --- a/engine/storage/volume/pom.xml +++ b/engine/storage/volume/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/engine/userdata/cloud-init/pom.xml b/engine/userdata/cloud-init/pom.xml index 427c4bcc449..726047be75d 100644 --- a/engine/userdata/cloud-init/pom.xml +++ b/engine/userdata/cloud-init/pom.xml @@ -23,7 +23,7 @@ cloud-engine org.apache.cloudstack - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/engine/userdata/pom.xml b/engine/userdata/pom.xml index 48073b176c3..1b803ed8355 100644 --- a/engine/userdata/pom.xml +++ b/engine/userdata/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloud-engine - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/agent-lb/pom.xml b/framework/agent-lb/pom.xml index d6d1b078fda..d575134ab4a 100644 --- a/framework/agent-lb/pom.xml +++ b/framework/agent-lb/pom.xml @@ -24,7 +24,7 @@ cloudstack-framework org.apache.cloudstack - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/ca/pom.xml b/framework/ca/pom.xml index 4f4d07acd85..0015306b08f 100644 --- a/framework/ca/pom.xml +++ b/framework/ca/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/cluster/pom.xml b/framework/cluster/pom.xml index 832023e60bd..dbe35ad2005 100644 --- a/framework/cluster/pom.xml +++ b/framework/cluster/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/config/pom.xml b/framework/config/pom.xml index d50c47f2b84..49c1c306651 100644 --- a/framework/config/pom.xml +++ b/framework/config/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/db/pom.xml b/framework/db/pom.xml index 922e915a622..2c28bb6b2cd 100644 --- a/framework/db/pom.xml +++ b/framework/db/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/direct-download/pom.xml b/framework/direct-download/pom.xml index 56d03c34ad1..d986eaf9c8d 100644 --- a/framework/direct-download/pom.xml +++ b/framework/direct-download/pom.xml @@ -25,14 +25,14 @@ org.apache.cloudstack cloud-utils - 4.18.1.1 + 4.18.1.2 compile cloudstack-framework org.apache.cloudstack - 4.18.1.1 + 4.18.1.2 ../pom.xml \ No newline at end of file diff --git a/framework/events/pom.xml b/framework/events/pom.xml index 333de2b2c8e..c1365c4a12a 100644 --- a/framework/events/pom.xml +++ b/framework/events/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/ipc/pom.xml b/framework/ipc/pom.xml index 1148b846bde..92bb0b75914 100644 --- a/framework/ipc/pom.xml +++ b/framework/ipc/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/jobs/pom.xml b/framework/jobs/pom.xml index 6f71728bc24..556c14ac682 100644 --- a/framework/jobs/pom.xml +++ b/framework/jobs/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/managed-context/pom.xml b/framework/managed-context/pom.xml index 1c72c59da78..97cc88a742e 100644 --- a/framework/managed-context/pom.xml +++ b/framework/managed-context/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/framework/pom.xml b/framework/pom.xml index d2641d2a49a..bb61e5712e1 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/framework/quota/pom.xml b/framework/quota/pom.xml index d35ce3c7f41..dc3952938b0 100644 --- a/framework/quota/pom.xml +++ b/framework/quota/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/rest/pom.xml b/framework/rest/pom.xml index da21a7fdc4b..5733894af13 100644 --- a/framework/rest/pom.xml +++ b/framework/rest/pom.xml @@ -22,7 +22,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml cloud-framework-rest diff --git a/framework/security/pom.xml b/framework/security/pom.xml index a46526f984e..c8713314203 100644 --- a/framework/security/pom.xml +++ b/framework/security/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-framework - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/framework/spring/lifecycle/pom.xml b/framework/spring/lifecycle/pom.xml index 6994b24497f..730bcd5ea98 100644 --- a/framework/spring/lifecycle/pom.xml +++ b/framework/spring/lifecycle/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/framework/spring/module/pom.xml b/framework/spring/module/pom.xml index 4913be7baf1..7631a866bb1 100644 --- a/framework/spring/module/pom.xml +++ b/framework/spring/module/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/acl/dynamic-role-based/pom.xml b/plugins/acl/dynamic-role-based/pom.xml index 4d1519b5d0d..aae1908dc81 100644 --- a/plugins/acl/dynamic-role-based/pom.xml +++ b/plugins/acl/dynamic-role-based/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/acl/project-role-based/pom.xml b/plugins/acl/project-role-based/pom.xml index 216ad4def33..c356f86c179 100644 --- a/plugins/acl/project-role-based/pom.xml +++ b/plugins/acl/project-role-based/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/acl/static-role-based/pom.xml b/plugins/acl/static-role-based/pom.xml index 851dd77f993..541975e891e 100644 --- a/plugins/acl/static-role-based/pom.xml +++ b/plugins/acl/static-role-based/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/affinity-group-processors/explicit-dedication/pom.xml b/plugins/affinity-group-processors/explicit-dedication/pom.xml index 524474a6fb6..d85230d9cfd 100644 --- a/plugins/affinity-group-processors/explicit-dedication/pom.xml +++ b/plugins/affinity-group-processors/explicit-dedication/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/affinity-group-processors/host-affinity/pom.xml b/plugins/affinity-group-processors/host-affinity/pom.xml index 21589613be7..340deda4cd0 100644 --- a/plugins/affinity-group-processors/host-affinity/pom.xml +++ b/plugins/affinity-group-processors/host-affinity/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/affinity-group-processors/host-anti-affinity/pom.xml b/plugins/affinity-group-processors/host-anti-affinity/pom.xml index 8a6dfe067ed..81947a62412 100644 --- a/plugins/affinity-group-processors/host-anti-affinity/pom.xml +++ b/plugins/affinity-group-processors/host-anti-affinity/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/affinity-group-processors/non-strict-host-affinity/pom.xml b/plugins/affinity-group-processors/non-strict-host-affinity/pom.xml index 945b5a87789..f6968c7c44f 100644 --- a/plugins/affinity-group-processors/non-strict-host-affinity/pom.xml +++ b/plugins/affinity-group-processors/non-strict-host-affinity/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/affinity-group-processors/non-strict-host-anti-affinity/pom.xml b/plugins/affinity-group-processors/non-strict-host-anti-affinity/pom.xml index aec218e073f..b90f70c0d8a 100644 --- a/plugins/affinity-group-processors/non-strict-host-anti-affinity/pom.xml +++ b/plugins/affinity-group-processors/non-strict-host-anti-affinity/pom.xml @@ -25,14 +25,14 @@ org.apache.cloudstack cloud-plugin-non-strict-host-affinity - 4.18.1.1 + 4.18.1.2 compile org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/alert-handlers/snmp-alerts/pom.xml b/plugins/alert-handlers/snmp-alerts/pom.xml index 53fa8fd9456..4c915bc72ad 100644 --- a/plugins/alert-handlers/snmp-alerts/pom.xml +++ b/plugins/alert-handlers/snmp-alerts/pom.xml @@ -24,7 +24,7 @@ cloudstack-plugins org.apache.cloudstack - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/alert-handlers/syslog-alerts/pom.xml b/plugins/alert-handlers/syslog-alerts/pom.xml index 11af0e1f226..cffc6c2734a 100644 --- a/plugins/alert-handlers/syslog-alerts/pom.xml +++ b/plugins/alert-handlers/syslog-alerts/pom.xml @@ -24,7 +24,7 @@ cloudstack-plugins org.apache.cloudstack - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/api/discovery/pom.xml b/plugins/api/discovery/pom.xml index fe5d0005d9c..c6afcbdeeef 100644 --- a/plugins/api/discovery/pom.xml +++ b/plugins/api/discovery/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/api/rate-limit/pom.xml b/plugins/api/rate-limit/pom.xml index 04af3723b64..92c6bb25fdd 100644 --- a/plugins/api/rate-limit/pom.xml +++ b/plugins/api/rate-limit/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/api/solidfire-intg-test/pom.xml b/plugins/api/solidfire-intg-test/pom.xml index cfdf8917af6..43ae554c2b9 100644 --- a/plugins/api/solidfire-intg-test/pom.xml +++ b/plugins/api/solidfire-intg-test/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/api/vmware-sioc/pom.xml b/plugins/api/vmware-sioc/pom.xml index 44d6598c122..e9b3504358e 100644 --- a/plugins/api/vmware-sioc/pom.xml +++ b/plugins/api/vmware-sioc/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/backup/dummy/pom.xml b/plugins/backup/dummy/pom.xml index e53fee435f5..0155f4a66c5 100644 --- a/plugins/backup/dummy/pom.xml +++ b/plugins/backup/dummy/pom.xml @@ -23,7 +23,7 @@ cloudstack-plugins org.apache.cloudstack - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/backup/networker/pom.xml b/plugins/backup/networker/pom.xml index 7754fea2ca3..bfcd7fb3873 100644 --- a/plugins/backup/networker/pom.xml +++ b/plugins/backup/networker/pom.xml @@ -25,7 +25,7 @@ cloudstack-plugins org.apache.cloudstack - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/backup/veeam/pom.xml b/plugins/backup/veeam/pom.xml index 643d73b64fe..793366e17e0 100644 --- a/plugins/backup/veeam/pom.xml +++ b/plugins/backup/veeam/pom.xml @@ -23,7 +23,7 @@ cloudstack-plugins org.apache.cloudstack - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/ca/root-ca/pom.xml b/plugins/ca/root-ca/pom.xml index 033889fe69a..feaed5c00b2 100644 --- a/plugins/ca/root-ca/pom.xml +++ b/plugins/ca/root-ca/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/database/mysql-ha/pom.xml b/plugins/database/mysql-ha/pom.xml index 854bb7c0a3e..563f8127636 100644 --- a/plugins/database/mysql-ha/pom.xml +++ b/plugins/database/mysql-ha/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/database/quota/pom.xml b/plugins/database/quota/pom.xml index a18039997cd..1ca1302a044 100644 --- a/plugins/database/quota/pom.xml +++ b/plugins/database/quota/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/dedicated-resources/pom.xml b/plugins/dedicated-resources/pom.xml index f0e062f3c8f..c59ca4ae6ae 100644 --- a/plugins/dedicated-resources/pom.xml +++ b/plugins/dedicated-resources/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/plugins/deployment-planners/implicit-dedication/pom.xml b/plugins/deployment-planners/implicit-dedication/pom.xml index 98a9d207e76..5765abfe6b5 100644 --- a/plugins/deployment-planners/implicit-dedication/pom.xml +++ b/plugins/deployment-planners/implicit-dedication/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/deployment-planners/user-concentrated-pod/pom.xml b/plugins/deployment-planners/user-concentrated-pod/pom.xml index e531512c258..71f8cc128f4 100644 --- a/plugins/deployment-planners/user-concentrated-pod/pom.xml +++ b/plugins/deployment-planners/user-concentrated-pod/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/deployment-planners/user-dispersing/pom.xml b/plugins/deployment-planners/user-dispersing/pom.xml index 99ca783bd1b..90b716146f1 100644 --- a/plugins/deployment-planners/user-dispersing/pom.xml +++ b/plugins/deployment-planners/user-dispersing/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/event-bus/inmemory/pom.xml b/plugins/event-bus/inmemory/pom.xml index aa068d26445..d957fbcd79b 100644 --- a/plugins/event-bus/inmemory/pom.xml +++ b/plugins/event-bus/inmemory/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/event-bus/kafka/pom.xml b/plugins/event-bus/kafka/pom.xml index 31f163448db..43c000c81b8 100644 --- a/plugins/event-bus/kafka/pom.xml +++ b/plugins/event-bus/kafka/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/event-bus/rabbitmq/pom.xml b/plugins/event-bus/rabbitmq/pom.xml index 10825ec394b..b0f49f95555 100644 --- a/plugins/event-bus/rabbitmq/pom.xml +++ b/plugins/event-bus/rabbitmq/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/ha-planners/skip-heurestics/pom.xml b/plugins/ha-planners/skip-heurestics/pom.xml index f9d1015476e..556e4afa05a 100644 --- a/plugins/ha-planners/skip-heurestics/pom.xml +++ b/plugins/ha-planners/skip-heurestics/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/host-allocators/random/pom.xml b/plugins/host-allocators/random/pom.xml index c68c5028aae..a29f1f6ae96 100644 --- a/plugins/host-allocators/random/pom.xml +++ b/plugins/host-allocators/random/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/hypervisors/baremetal/pom.xml b/plugins/hypervisors/baremetal/pom.xml index 65ab8328f17..12650a989c1 100755 --- a/plugins/hypervisors/baremetal/pom.xml +++ b/plugins/hypervisors/baremetal/pom.xml @@ -22,7 +22,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml cloud-plugin-hypervisor-baremetal diff --git a/plugins/hypervisors/hyperv/pom.xml b/plugins/hypervisors/hyperv/pom.xml index 188351e567f..17b62f40395 100644 --- a/plugins/hypervisors/hyperv/pom.xml +++ b/plugins/hypervisors/hyperv/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/hypervisors/kvm/pom.xml b/plugins/hypervisors/kvm/pom.xml index 7790fb2775e..084fe1e8746 100644 --- a/plugins/hypervisors/kvm/pom.xml +++ b/plugins/hypervisors/kvm/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/hypervisors/ovm/pom.xml b/plugins/hypervisors/ovm/pom.xml index 918e1389241..fd6fc7e2545 100644 --- a/plugins/hypervisors/ovm/pom.xml +++ b/plugins/hypervisors/ovm/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/hypervisors/ovm3/pom.xml b/plugins/hypervisors/ovm3/pom.xml index 5213058c8e6..b42c9247462 100644 --- a/plugins/hypervisors/ovm3/pom.xml +++ b/plugins/hypervisors/ovm3/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/hypervisors/simulator/pom.xml b/plugins/hypervisors/simulator/pom.xml index ae436073971..98cf4d2fa2f 100644 --- a/plugins/hypervisors/simulator/pom.xml +++ b/plugins/hypervisors/simulator/pom.xml @@ -22,7 +22,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml cloud-plugin-hypervisor-simulator diff --git a/plugins/hypervisors/ucs/pom.xml b/plugins/hypervisors/ucs/pom.xml index dfb9c7c4674..557f7a87cc7 100644 --- a/plugins/hypervisors/ucs/pom.xml +++ b/plugins/hypervisors/ucs/pom.xml @@ -23,7 +23,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml cloud-plugin-hypervisor-ucs diff --git a/plugins/hypervisors/vmware/pom.xml b/plugins/hypervisors/vmware/pom.xml index 6228b11d74a..24fc80fe706 100644 --- a/plugins/hypervisors/vmware/pom.xml +++ b/plugins/hypervisors/vmware/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/hypervisors/xenserver/pom.xml b/plugins/hypervisors/xenserver/pom.xml index ccd7f07136d..11d73dfafb6 100644 --- a/plugins/hypervisors/xenserver/pom.xml +++ b/plugins/hypervisors/xenserver/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/integrations/cloudian/pom.xml b/plugins/integrations/cloudian/pom.xml index 38db4549c29..3e3e8f4fdc2 100644 --- a/plugins/integrations/cloudian/pom.xml +++ b/plugins/integrations/cloudian/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/integrations/kubernetes-service/pom.xml b/plugins/integrations/kubernetes-service/pom.xml index 89dcbb12ea1..6f000c20b9e 100644 --- a/plugins/integrations/kubernetes-service/pom.xml +++ b/plugins/integrations/kubernetes-service/pom.xml @@ -26,7 +26,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/integrations/prometheus/pom.xml b/plugins/integrations/prometheus/pom.xml index f0d8f5ff860..9d968b13d66 100644 --- a/plugins/integrations/prometheus/pom.xml +++ b/plugins/integrations/prometheus/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/metrics/pom.xml b/plugins/metrics/pom.xml index 421063e5422..659adf8b4ea 100644 --- a/plugins/metrics/pom.xml +++ b/plugins/metrics/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/plugins/network-elements/bigswitch/pom.xml b/plugins/network-elements/bigswitch/pom.xml index 8d382127c10..8c763d584ca 100644 --- a/plugins/network-elements/bigswitch/pom.xml +++ b/plugins/network-elements/bigswitch/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/brocade-vcs/pom.xml b/plugins/network-elements/brocade-vcs/pom.xml index cbfd6b3ff9b..8dcf9b8f886 100644 --- a/plugins/network-elements/brocade-vcs/pom.xml +++ b/plugins/network-elements/brocade-vcs/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/cisco-vnmc/pom.xml b/plugins/network-elements/cisco-vnmc/pom.xml index 5598c69e166..3024266e3e1 100644 --- a/plugins/network-elements/cisco-vnmc/pom.xml +++ b/plugins/network-elements/cisco-vnmc/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/dns-notifier/pom.xml b/plugins/network-elements/dns-notifier/pom.xml index f1b1d19e602..cb2407058d2 100644 --- a/plugins/network-elements/dns-notifier/pom.xml +++ b/plugins/network-elements/dns-notifier/pom.xml @@ -22,7 +22,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml cloud-plugin-example-dns-notifier diff --git a/plugins/network-elements/elastic-loadbalancer/pom.xml b/plugins/network-elements/elastic-loadbalancer/pom.xml index a5aedfc8a43..39a9a900cd1 100644 --- a/plugins/network-elements/elastic-loadbalancer/pom.xml +++ b/plugins/network-elements/elastic-loadbalancer/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/globodns/pom.xml b/plugins/network-elements/globodns/pom.xml index 92c8d9d02f7..de24fed06cf 100644 --- a/plugins/network-elements/globodns/pom.xml +++ b/plugins/network-elements/globodns/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/internal-loadbalancer/pom.xml b/plugins/network-elements/internal-loadbalancer/pom.xml index 7b84efe3981..bc7691d3989 100644 --- a/plugins/network-elements/internal-loadbalancer/pom.xml +++ b/plugins/network-elements/internal-loadbalancer/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/juniper-contrail/pom.xml b/plugins/network-elements/juniper-contrail/pom.xml index 1b64d9150df..bd6f0d23795 100644 --- a/plugins/network-elements/juniper-contrail/pom.xml +++ b/plugins/network-elements/juniper-contrail/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/netscaler/pom.xml b/plugins/network-elements/netscaler/pom.xml index f5bba0179b4..6844062146d 100644 --- a/plugins/network-elements/netscaler/pom.xml +++ b/plugins/network-elements/netscaler/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/nicira-nvp/pom.xml b/plugins/network-elements/nicira-nvp/pom.xml index 2c6f6d50e56..fc0f18499cf 100644 --- a/plugins/network-elements/nicira-nvp/pom.xml +++ b/plugins/network-elements/nicira-nvp/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/opendaylight/pom.xml b/plugins/network-elements/opendaylight/pom.xml index 8bf864f8c3c..007baf2dce0 100644 --- a/plugins/network-elements/opendaylight/pom.xml +++ b/plugins/network-elements/opendaylight/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/ovs/pom.xml b/plugins/network-elements/ovs/pom.xml index b30e8cf72a1..c6e234e982c 100644 --- a/plugins/network-elements/ovs/pom.xml +++ b/plugins/network-elements/ovs/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/palo-alto/pom.xml b/plugins/network-elements/palo-alto/pom.xml index 41404b89d2a..d17667514a6 100644 --- a/plugins/network-elements/palo-alto/pom.xml +++ b/plugins/network-elements/palo-alto/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/stratosphere-ssp/pom.xml b/plugins/network-elements/stratosphere-ssp/pom.xml index 6c469dc2cc2..cb9320b9695 100644 --- a/plugins/network-elements/stratosphere-ssp/pom.xml +++ b/plugins/network-elements/stratosphere-ssp/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/tungsten/pom.xml b/plugins/network-elements/tungsten/pom.xml index f4d71a1d787..cac080a0d22 100644 --- a/plugins/network-elements/tungsten/pom.xml +++ b/plugins/network-elements/tungsten/pom.xml @@ -26,7 +26,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/network-elements/vxlan/pom.xml b/plugins/network-elements/vxlan/pom.xml index a8fb5e6b108..db4eb3d8caa 100644 --- a/plugins/network-elements/vxlan/pom.xml +++ b/plugins/network-elements/vxlan/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/outofbandmanagement-drivers/ipmitool/pom.xml b/plugins/outofbandmanagement-drivers/ipmitool/pom.xml index 3c35a42c996..ae135d9aedf 100644 --- a/plugins/outofbandmanagement-drivers/ipmitool/pom.xml +++ b/plugins/outofbandmanagement-drivers/ipmitool/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/outofbandmanagement-drivers/nested-cloudstack/pom.xml b/plugins/outofbandmanagement-drivers/nested-cloudstack/pom.xml index a68fd28adbc..fce742203da 100644 --- a/plugins/outofbandmanagement-drivers/nested-cloudstack/pom.xml +++ b/plugins/outofbandmanagement-drivers/nested-cloudstack/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/outofbandmanagement-drivers/redfish/pom.xml b/plugins/outofbandmanagement-drivers/redfish/pom.xml index 4b73e4bf346..1c64b26627f 100644 --- a/plugins/outofbandmanagement-drivers/redfish/pom.xml +++ b/plugins/outofbandmanagement-drivers/redfish/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/pom.xml b/plugins/pom.xml index b4d8969390f..4eef0adf578 100755 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/plugins/storage-allocators/random/pom.xml b/plugins/storage-allocators/random/pom.xml index 6db3a1fe919..fd3ddbda5f3 100644 --- a/plugins/storage-allocators/random/pom.xml +++ b/plugins/storage-allocators/random/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/storage/image/default/pom.xml b/plugins/storage/image/default/pom.xml index e2328f7607f..7d4d9f6fb02 100644 --- a/plugins/storage/image/default/pom.xml +++ b/plugins/storage/image/default/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/image/s3/pom.xml b/plugins/storage/image/s3/pom.xml index 9891a027a31..693a0d55023 100644 --- a/plugins/storage/image/s3/pom.xml +++ b/plugins/storage/image/s3/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/image/sample/pom.xml b/plugins/storage/image/sample/pom.xml index 3fbcae399c7..f9c45d5b4d8 100644 --- a/plugins/storage/image/sample/pom.xml +++ b/plugins/storage/image/sample/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/image/swift/pom.xml b/plugins/storage/image/swift/pom.xml index 9efe3b665e6..ef1bbef697a 100644 --- a/plugins/storage/image/swift/pom.xml +++ b/plugins/storage/image/swift/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/cloudbyte/pom.xml b/plugins/storage/volume/cloudbyte/pom.xml index f083bdfcd99..99c73d76f73 100644 --- a/plugins/storage/volume/cloudbyte/pom.xml +++ b/plugins/storage/volume/cloudbyte/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/datera/pom.xml b/plugins/storage/volume/datera/pom.xml index 305b8da3f79..aa49f779b9d 100644 --- a/plugins/storage/volume/datera/pom.xml +++ b/plugins/storage/volume/datera/pom.xml @@ -16,7 +16,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/default/pom.xml b/plugins/storage/volume/default/pom.xml index f4146b8ed23..e0e78fd0786 100644 --- a/plugins/storage/volume/default/pom.xml +++ b/plugins/storage/volume/default/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/linstor/pom.xml b/plugins/storage/volume/linstor/pom.xml index 4b16f181673..8b0781399fa 100644 --- a/plugins/storage/volume/linstor/pom.xml +++ b/plugins/storage/volume/linstor/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/nexenta/pom.xml b/plugins/storage/volume/nexenta/pom.xml index 073359979fb..54d4b4b2929 100644 --- a/plugins/storage/volume/nexenta/pom.xml +++ b/plugins/storage/volume/nexenta/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/sample/pom.xml b/plugins/storage/volume/sample/pom.xml index f53621c8e00..38e16255f69 100644 --- a/plugins/storage/volume/sample/pom.xml +++ b/plugins/storage/volume/sample/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/scaleio/pom.xml b/plugins/storage/volume/scaleio/pom.xml index 6e0e86d94a2..da6d2db0de7 100644 --- a/plugins/storage/volume/scaleio/pom.xml +++ b/plugins/storage/volume/scaleio/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/solidfire/pom.xml b/plugins/storage/volume/solidfire/pom.xml index 9e0b1cb71cf..8ff03e74306 100644 --- a/plugins/storage/volume/solidfire/pom.xml +++ b/plugins/storage/volume/solidfire/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/storage/volume/storpool/pom.xml b/plugins/storage/volume/storpool/pom.xml index 32f9835330e..e230d880bd6 100644 --- a/plugins/storage/volume/storpool/pom.xml +++ b/plugins/storage/volume/storpool/pom.xml @@ -17,7 +17,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../../pom.xml diff --git a/plugins/user-authenticators/ldap/pom.xml b/plugins/user-authenticators/ldap/pom.xml index 53b030d60b1..13296963ef9 100644 --- a/plugins/user-authenticators/ldap/pom.xml +++ b/plugins/user-authenticators/ldap/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/user-authenticators/md5/pom.xml b/plugins/user-authenticators/md5/pom.xml index 0010c08f21a..b82289e8c9e 100644 --- a/plugins/user-authenticators/md5/pom.xml +++ b/plugins/user-authenticators/md5/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/user-authenticators/pbkdf2/pom.xml b/plugins/user-authenticators/pbkdf2/pom.xml index b5394bf12df..87577365010 100644 --- a/plugins/user-authenticators/pbkdf2/pom.xml +++ b/plugins/user-authenticators/pbkdf2/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/user-authenticators/plain-text/pom.xml b/plugins/user-authenticators/plain-text/pom.xml index 18f2d7cefac..4f31f3f0b61 100644 --- a/plugins/user-authenticators/plain-text/pom.xml +++ b/plugins/user-authenticators/plain-text/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/user-authenticators/saml2/pom.xml b/plugins/user-authenticators/saml2/pom.xml index dca17c34399..d19026d5f94 100644 --- a/plugins/user-authenticators/saml2/pom.xml +++ b/plugins/user-authenticators/saml2/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/user-authenticators/sha256salted/pom.xml b/plugins/user-authenticators/sha256salted/pom.xml index adfd532c1b5..8d4004f0085 100644 --- a/plugins/user-authenticators/sha256salted/pom.xml +++ b/plugins/user-authenticators/sha256salted/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml diff --git a/plugins/user-two-factor-authenticators/static-pin/pom.xml b/plugins/user-two-factor-authenticators/static-pin/pom.xml index e399b8451b9..e0ed7853348 100644 --- a/plugins/user-two-factor-authenticators/static-pin/pom.xml +++ b/plugins/user-two-factor-authenticators/static-pin/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml \ No newline at end of file diff --git a/plugins/user-two-factor-authenticators/totp/pom.xml b/plugins/user-two-factor-authenticators/totp/pom.xml index 0e0100cb6c4..00e1098533f 100644 --- a/plugins/user-two-factor-authenticators/totp/pom.xml +++ b/plugins/user-two-factor-authenticators/totp/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-plugins - 4.18.1.1 + 4.18.1.2 ../../pom.xml \ No newline at end of file diff --git a/pom.xml b/pom.xml index adfdd153d3e..816a365ac71 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 pom Apache CloudStack Apache CloudStack is an IaaS ("Infrastructure as a Service") cloud orchestration platform. diff --git a/quickcloud/pom.xml b/quickcloud/pom.xml index 8fcbb2b178a..85a6663cfdf 100644 --- a/quickcloud/pom.xml +++ b/quickcloud/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/server/pom.xml b/server/pom.xml index 24f50df6bca..250c2dcef21 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/services/console-proxy/pom.xml b/services/console-proxy/pom.xml index 8456aa9aa68..cf066476215 100644 --- a/services/console-proxy/pom.xml +++ b/services/console-proxy/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack-services - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/services/console-proxy/rdpconsole/pom.xml b/services/console-proxy/rdpconsole/pom.xml index 710c74af23b..45fec486033 100644 --- a/services/console-proxy/rdpconsole/pom.xml +++ b/services/console-proxy/rdpconsole/pom.xml @@ -26,7 +26,7 @@ org.apache.cloudstack cloudstack-service-console-proxy - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/services/console-proxy/server/pom.xml b/services/console-proxy/server/pom.xml index 984597c29db..1eb1fa8cfce 100644 --- a/services/console-proxy/server/pom.xml +++ b/services/console-proxy/server/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-service-console-proxy - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/services/pom.xml b/services/pom.xml index 4df43b9c733..0cd8a92f19a 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/services/secondary-storage/controller/pom.xml b/services/secondary-storage/controller/pom.xml index 86c92a4b62f..dbf4fe12cf6 100644 --- a/services/secondary-storage/controller/pom.xml +++ b/services/secondary-storage/controller/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-service-secondary-storage - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/services/secondary-storage/pom.xml b/services/secondary-storage/pom.xml index 09bccd8306f..7640a68f614 100644 --- a/services/secondary-storage/pom.xml +++ b/services/secondary-storage/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack-services - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/services/secondary-storage/server/pom.xml b/services/secondary-storage/server/pom.xml index 12cd8485dbd..9517cece855 100644 --- a/services/secondary-storage/server/pom.xml +++ b/services/secondary-storage/server/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack-service-secondary-storage - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/systemvm/pom.xml b/systemvm/pom.xml index 2a09cf3a6ea..f661d323351 100644 --- a/systemvm/pom.xml +++ b/systemvm/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/test/pom.xml b/test/pom.xml index 505d0daaae1..940d180d475 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/tools/apidoc/pom.xml b/tools/apidoc/pom.xml index 81597840df2..280cd6b2256 100644 --- a/tools/apidoc/pom.xml +++ b/tools/apidoc/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloud-tools - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/tools/checkstyle/pom.xml b/tools/checkstyle/pom.xml index d4f2cb5f899..ad5501dd78c 100644 --- a/tools/checkstyle/pom.xml +++ b/tools/checkstyle/pom.xml @@ -22,7 +22,7 @@ Apache CloudStack Developer Tools - Checkstyle Configuration org.apache.cloudstack checkstyle - 4.18.1.1 + 4.18.1.2 UTF-8 diff --git a/tools/devcloud-kvm/pom.xml b/tools/devcloud-kvm/pom.xml index 9f24d4ce2b7..99a5eb0a927 100644 --- a/tools/devcloud-kvm/pom.xml +++ b/tools/devcloud-kvm/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloud-tools - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/tools/devcloud4/pom.xml b/tools/devcloud4/pom.xml index f7efc1e570a..b2537c5f974 100644 --- a/tools/devcloud4/pom.xml +++ b/tools/devcloud4/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloud-tools - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/tools/marvin/pom.xml b/tools/marvin/pom.xml index ee0468a6741..af4ddcb69c0 100644 --- a/tools/marvin/pom.xml +++ b/tools/marvin/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloud-tools - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/tools/marvin/setup.py b/tools/marvin/setup.py index 760e008e767..48945f171b3 100644 --- a/tools/marvin/setup.py +++ b/tools/marvin/setup.py @@ -27,7 +27,7 @@ except ImportError: raise RuntimeError("python setuptools is required to build Marvin") -VERSION = "4.18.1.1" +VERSION = "4.18.1.2" setup(name="Marvin", version=VERSION, diff --git a/tools/pom.xml b/tools/pom.xml index ca87f180401..bd3c8155efe 100644 --- a/tools/pom.xml +++ b/tools/pom.xml @@ -25,7 +25,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/usage/pom.xml b/usage/pom.xml index 1f658fa1a49..6a17a8a652a 100644 --- a/usage/pom.xml +++ b/usage/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 diff --git a/utils/pom.xml b/utils/pom.xml index 1d9336a9297..abb97af4a40 100755 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 ../pom.xml diff --git a/vmware-base/pom.xml b/vmware-base/pom.xml index e1e2f8cab63..090d1d7a83a 100644 --- a/vmware-base/pom.xml +++ b/vmware-base/pom.xml @@ -24,7 +24,7 @@ org.apache.cloudstack cloudstack - 4.18.1.1 + 4.18.1.2 From 8136db637aa8d2c71f0b39f7b5d11974189cf6b6 Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Thu, 15 Aug 2024 17:57:07 -0700 Subject: [PATCH 03/11] Added configuration key powerflex.connect.on.demand to DB and resource_reservation DDL --- .../cloud/upgrade/DatabaseUpgradeChecker.java | 2 + .../upgrade/dao/Upgrade41811to41812.java | 69 +++++++++++++++++++ .../db/schema-41811to41812-cleanup.sql | 20 ++++++ .../META-INF/db/schema-41811to41812.sql | 50 ++++++++++++++ 4 files changed, 141 insertions(+) create mode 100644 engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41811to41812.java create mode 100644 engine/schema/src/main/resources/META-INF/db/schema-41811to41812-cleanup.sql create mode 100644 engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql diff --git a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java index e5b2df77ccf..d918373a759 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java @@ -81,6 +81,7 @@ import com.cloud.upgrade.dao.Upgrade41700to41710; import com.cloud.upgrade.dao.Upgrade41710to41720; import com.cloud.upgrade.dao.Upgrade41720to41800; import com.cloud.upgrade.dao.Upgrade41800to41810; +import com.cloud.upgrade.dao.Upgrade41811to41812; import com.cloud.upgrade.dao.Upgrade420to421; import com.cloud.upgrade.dao.Upgrade421to430; import com.cloud.upgrade.dao.Upgrade430to440; @@ -218,6 +219,7 @@ public class DatabaseUpgradeChecker implements SystemIntegrityChecker { .next("4.17.1.0", new Upgrade41710to41720()) .next("4.17.2.0", new Upgrade41720to41800()) .next("4.18.0.0", new Upgrade41800to41810()) + .next("4.18.1.0", new Upgrade41811to41812()) .build(); } diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41811to41812.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41811to41812.java new file mode 100644 index 00000000000..23af4bbcf52 --- /dev/null +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41811to41812.java @@ -0,0 +1,69 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package com.cloud.upgrade.dao; + +import com.cloud.utils.exception.CloudRuntimeException; +import org.apache.log4j.Logger; + +import java.io.InputStream; +import java.sql.Connection; + +public class Upgrade41811to41812 implements DbUpgrade { + final static Logger LOG = Logger.getLogger(Upgrade41811to41812.class); + + @Override + public String[] getUpgradableVersionRange() { + return new String[]{"4.18.1.1", "4.18.1.2"}; + } + + @Override + public String getUpgradedVersion() { + return "4.18.1.2"; + } + + @Override + public boolean supportsRollingUpgrade() { + return true; + } + + @Override + public InputStream[] getPrepareScripts() { + final String scriptFile = "META-INF/db/schema-41811to41812.sql"; + final InputStream script = Thread.currentThread().getContextClassLoader().getResourceAsStream(scriptFile); + if (script == null) { + throw new CloudRuntimeException("Unable to find " + scriptFile); + } + + return new InputStream[]{script}; + } + + @Override + public void performDataMigration(Connection conn) { + } + + + @Override + public InputStream[] getCleanupScripts() { + final String scriptFile = "META-INF/db/schema-41811to41812-cleanup.sql"; + final InputStream script = Thread.currentThread().getContextClassLoader().getResourceAsStream(scriptFile); + if (script == null) { + throw new CloudRuntimeException("Unable to find " + scriptFile); + } + + return new InputStream[]{script}; + } +} diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41811to41812-cleanup.sql b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812-cleanup.sql new file mode 100644 index 00000000000..01d5cef1e5e --- /dev/null +++ b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812-cleanup.sql @@ -0,0 +1,20 @@ +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you under the Apache License, Version 2.0 (the +-- "License"); you may not use this file except in compliance +-- with the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, +-- software distributed under the License is distributed on an +-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +-- KIND, either express or implied. See the License for the +-- specific language governing permissions and limitations +-- under the License. + +--; +-- Schema upgrade cleanup from to 4.18.1.2 +--; \ No newline at end of file diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql new file mode 100644 index 00000000000..5a72bd42153 --- /dev/null +++ b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql @@ -0,0 +1,50 @@ +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you under the Apache License, Version 2.0 (the +-- "License"); you may not use this file except in compliance +-- with the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, +-- software distributed under the License is distributed on an +-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +-- KIND, either express or implied. See the License for the +-- specific language governing permissions and limitations +-- under the License. + +--; +-- Schema upgrade from 4.18.1.2 +--; + +-- Add property to enable/disable on-demand connection Host to PowerFlex storage pool +INSERT IGNORE INTO `cloud`.`configuration` ( + `category`, + `instance`, + `component`, + `scope`, + `name`, + `value`, + `default_value`, + `is_dynamic`, + `display_text`, + `description` +) VALUES ( + 'Storage', + 'DEFAULT', + 'StorageManager', + 'Global', + 'powerflex.connect.on.demand', + 'false', + 'false', + 1, + 'Connect PowerFlex client on Host on-demand', + 'Connect PowerFlex client on Host when first Volume created and disconnect when last Volume deleted (or always stay connected otherwise).' +); + +CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.resource_reservation', 'mgmt_server_id', 'bigint unsigned NULL COMMENT "management server id" '); +CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.resource_reservation', 'created', 'datetime DEFAULT NULL COMMENT "date when the reservation was created" '); + +UPDATE `cloud`.`resource_reservation` SET `created` = now() WHERE `created` IS NULL; From e1c749276867e8707cba3d7ab216e04ec527cda7 Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Thu, 22 Aug 2024 14:12:49 -0700 Subject: [PATCH 04/11] - added resource_reservation.mgmt_server_id - added resource_reservation.created to migration script --- .../META-INF/db/schema-41811to41812.sql | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql index 5a72bd42153..c5cdedf0168 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql @@ -44,7 +44,23 @@ INSERT IGNORE INTO `cloud`.`configuration` ( 'Connect PowerFlex client on Host when first Volume created and disconnect when last Volume deleted (or always stay connected otherwise).' ); -CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.resource_reservation', 'mgmt_server_id', 'bigint unsigned NULL COMMENT "management server id" '); -CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.resource_reservation', 'created', 'datetime DEFAULT NULL COMMENT "date when the reservation was created" '); - -UPDATE `cloud`.`resource_reservation` SET `created` = now() WHERE `created` IS NULL; +-- These fields have been added in 4.18.0, however due to issues with update process (sql updated after version update) +-- adding one more time here in case if migration from 4.18.0 didn't go through +CREATE PROCEDURE `cloud`.`ADD_RESOURCE_RESERVATION_MGMT_SERVER_ID_CREATED`() +BEGIN + DECLARE created_exists TINYINT DEFAULT FALSE +; IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema` = 'cloud' AND `table_name` = 'resource_reservation' AND `column_name` = 'mgmt_server_id') THEN + CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.resource_reservation', 'mgmt_server_id', 'bigint unsigned NULL COMMENT "management server id" ') +; END IF +; IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema` = 'cloud' AND `table_name` = 'resource_reservation' AND `column_name` = 'created') THEN + SET created_exists = TRUE +; END IF +; IF created_exists THEN + CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.resource_reservation', 'created', 'datetime DEFAULT NULL COMMENT "date when the reservation was created" ') +; END IF +; IF created_exists THEN + UPDATE `cloud`.`resource_reservation` SET `created` = now() WHERE `created` IS NULL +; END IF +; END; +CALL `cloud`.`ADD_RESOURCE_RESERVATION_MGMT_SERVER_ID_CREATED`(); +DROP PROCEDURE IF EXISTS `cloud`.`ADD_RESOURCE_RESERVATION_MGMT_SERVER_ID_CREATED`; From 0d553332d95abc86dbb34ac20f2ec44fbbfd39ce Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Wed, 28 Aug 2024 17:35:16 -0700 Subject: [PATCH 05/11] Implemented Configurable methods in ScaleIOPrimaryDataStoreDriver. --- .../driver/ScaleIOPrimaryDataStoreDriver.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java index f7128876d7d..60bad6683a4 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java @@ -39,6 +39,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; import org.apache.cloudstack.framework.config.ConfigKey; +import org.apache.cloudstack.framework.config.Configurable; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.resourcedetail.DiskOfferingDetailVO; import org.apache.cloudstack.resourcedetail.dao.DiskOfferingDetailsDao; @@ -109,7 +110,7 @@ import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.VMInstanceDao; import com.google.common.base.Preconditions; -public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { +public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Configurable { private static final Logger LOGGER = Logger.getLogger(ScaleIOPrimaryDataStoreDriver.class); static ConfigKey ConnectOnDemand = new ConfigKey<>("Storage", @@ -1519,4 +1520,14 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { public boolean zoneWideVolumesAvailableWithoutClusterMotion() { return true; } + + @Override + public String getConfigComponentName() { + return ScaleIOPrimaryDataStoreDriver.class.getSimpleName(); + } + + @Override + public ConfigKey[] getConfigKeys() { + return new ConfigKey[]{ConnectOnDemand}; + } } From 1ec11a148250e520db258115d2dfdfad34347e33 Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Fri, 30 Aug 2024 11:23:38 -0700 Subject: [PATCH 06/11] removed insert of powerflex.connect.on.demand as it taken care by commit 0d553332 already --- .../META-INF/db/schema-41811to41812.sql | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql index c5cdedf0168..4542f1b9084 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql @@ -19,31 +19,6 @@ -- Schema upgrade from 4.18.1.2 --; --- Add property to enable/disable on-demand connection Host to PowerFlex storage pool -INSERT IGNORE INTO `cloud`.`configuration` ( - `category`, - `instance`, - `component`, - `scope`, - `name`, - `value`, - `default_value`, - `is_dynamic`, - `display_text`, - `description` -) VALUES ( - 'Storage', - 'DEFAULT', - 'StorageManager', - 'Global', - 'powerflex.connect.on.demand', - 'false', - 'false', - 1, - 'Connect PowerFlex client on Host on-demand', - 'Connect PowerFlex client on Host when first Volume created and disconnect when last Volume deleted (or always stay connected otherwise).' -); - -- These fields have been added in 4.18.0, however due to issues with update process (sql updated after version update) -- adding one more time here in case if migration from 4.18.0 didn't go through CREATE PROCEDURE `cloud`.`ADD_RESOURCE_RESERVATION_MGMT_SERVER_ID_CREATED`() From 07218b8c3d1b02a84c89aa70b77b786ae1e34e8b Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Tue, 3 Sep 2024 14:19:42 -0700 Subject: [PATCH 07/11] Moved ConnectOnDemand logic to ScaleIO SDC Manager and made ConnectOnDemand of Zone-aware --- .../driver/ScaleIOPrimaryDataStoreDriver.java | 67 +++++++--------- .../manager/ScaleIOSDCManagerImpl.java | 31 +++++++- .../ScaleIOPrimaryDataStoreDriverTest.java | 78 ++----------------- 3 files changed, 68 insertions(+), 108 deletions(-) diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java index 60bad6683a4..3a0654eb8e7 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java @@ -38,8 +38,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; -import org.apache.cloudstack.framework.config.ConfigKey; -import org.apache.cloudstack.framework.config.Configurable; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.resourcedetail.DiskOfferingDetailVO; import org.apache.cloudstack.resourcedetail.dao.DiskOfferingDetailsDao; @@ -110,16 +108,9 @@ import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.VMInstanceDao; import com.google.common.base.Preconditions; -public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Configurable { +public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { private static final Logger LOGGER = Logger.getLogger(ScaleIOPrimaryDataStoreDriver.class); - static ConfigKey ConnectOnDemand = new ConfigKey<>("Storage", - Boolean.class, - "powerflex.connect.on.demand", - Boolean.FALSE.toString(), - "Connect PowerFlex client on Host when first Volume created and disconnect when last Volume deleted (or always stay connected otherwise).", - Boolean.TRUE); - @Inject EndPointSelector selector; @Inject @@ -164,9 +155,7 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co private boolean setVolumeLimitsOnSDC(VolumeVO volume, Host host, DataStore dataStore, Long iopsLimit, Long bandwidthLimitInKbps) throws Exception { sdcManager = ComponentContext.inject(sdcManager); - // don't connect SDC if connect on demand disabled - final String sdcId = Boolean.TRUE.equals(ConnectOnDemand.value()) ? sdcManager.prepareSDC(host, dataStore) : - sdcManager.getConnectedSdc(host, dataStore); + final String sdcId = sdcManager.prepareSDC(host, dataStore); if (StringUtils.isBlank(sdcId)) { alertHostSdcDisconnection(host); throw new CloudRuntimeException("Unable to grant access to volume: " + volume.getId() + ", no Sdc connected with host ip: " + host.getPrivateIpAddress()); @@ -203,9 +192,7 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co public boolean grantAccess(DataObject dataObject, Host host, DataStore dataStore) { try { sdcManager = ComponentContext.inject(sdcManager); - // don't connect SDC if connect on demand disabled - final String sdcId = Boolean.TRUE.equals(ConnectOnDemand.value()) ? sdcManager.prepareSDC(host, dataStore) : - sdcManager.getConnectedSdc(host, dataStore); + final String sdcId = sdcManager.prepareSDC(host, dataStore); if (StringUtils.isBlank(sdcId)) { alertHostSdcDisconnection(host); throw new CloudRuntimeException(String.format("Unable to grant access to %s: %s, no Sdc connected with host ip: %s", dataObject.getType(), dataObject.getId(), host.getPrivateIpAddress())); @@ -246,8 +233,7 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co } try { - sdcManager = ComponentContext.inject(sdcManager); - final String sdcId = sdcManager.getConnectedSdc(host, dataStore); + final String sdcId = getConnectedSdc(dataStore.getId(), host.getId()); if (StringUtils.isBlank(sdcId)) { LOGGER.warn(String.format("Unable to revoke access for %s: %s, no Sdc connected with host ip: %s", dataObject.getType(), dataObject.getId(), host.getPrivateIpAddress())); return; @@ -266,9 +252,8 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co LOGGER.debug("Revoking access for PowerFlex volume snapshot: " + snapshot.getPath()); client.unmapVolumeFromSdc(ScaleIOUtil.getVolumePath(snapshot.getPath()), sdcId); } - - // don't stop SDC if connect on demand disabled - if (Boolean.TRUE.equals(ConnectOnDemand.value()) && client.listVolumesMappedToSdc(sdcId).isEmpty()) { + if (client.listVolumesMappedToSdc(sdcId).isEmpty()) { + sdcManager = ComponentContext.inject(sdcManager); sdcManager.stopSDC(host, dataStore); } } catch (Exception e) { @@ -284,8 +269,8 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co try { LOGGER.debug("Revoking access for PowerFlex volume: " + volumePath); - sdcManager = ComponentContext.inject(sdcManager); - final String sdcId = sdcManager.getConnectedSdc(host, dataStore); + + final String sdcId = getConnectedSdc(dataStore.getId(), host.getId()); if (StringUtils.isBlank(sdcId)) { LOGGER.warn(String.format("Unable to revoke access for volume: %s, no Sdc connected with host ip: %s", volumePath, host.getPrivateIpAddress())); return; @@ -293,8 +278,8 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co final ScaleIOGatewayClient client = getScaleIOClient(dataStore.getId()); client.unmapVolumeFromSdc(ScaleIOUtil.getVolumePath(volumePath), sdcId); - // don't stop SDC if connect on demand disabled - if (Boolean.TRUE.equals(ConnectOnDemand.value()) && client.listVolumesMappedToSdc(sdcId).isEmpty()) { + if (client.listVolumesMappedToSdc(sdcId).isEmpty()) { + sdcManager = ComponentContext.inject(sdcManager); sdcManager.stopSDC(host, dataStore); } } catch (Exception e) { @@ -307,6 +292,24 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co revokeAccess(dataObject, host, dataStore); } + public String getConnectedSdc(long poolId, long hostId) { + try { + StoragePoolHostVO poolHostVO = storagePoolHostDao.findByPoolHost(poolId, hostId); + if (poolHostVO == null) { + return null; + } + + final ScaleIOGatewayClient client = getScaleIOClient(poolId); + if (client.isSdcConnected(poolHostVO.getLocalPath())) { + return poolHostVO.getLocalPath(); + } + } catch (Exception e) { + LOGGER.warn("Couldn't check SDC connection for the host: " + hostId + " and storage pool: " + poolId + " due to " + e.getMessage(), e); + } + + return null; + } + @Override public boolean requiresAccessForMigration(DataObject dataObject) { return true; @@ -553,7 +556,7 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co } } } else { - LOGGER.debug(String.format("No encryption configured for data volume %s", volumeInfo)); + LOGGER.debug(String.format("No encryption configured for data volume %s", volumeInfo)); } return answer; @@ -776,7 +779,7 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co long newSize = destData.getSize() + (1<<30); LOGGER.debug(String.format("Destination volume %s(%s) is configured for encryption. Resizing to fit headers, new size %s will be rounded up to nearest 8Gi", destInfo.getId(), destData.getSize(), newSize)); ResizeVolumePayload p = new ResizeVolumePayload(newSize, destInfo.getMinIops(), destInfo.getMaxIops(), - destInfo.getHypervisorSnapshotReserve(), false, destInfo.getAttachedVmName(), null, true); + destInfo.getHypervisorSnapshotReserve(), false, destInfo.getAttachedVmName(), null, true); destInfo.addPayload(p); resizeVolume(destInfo); } else { @@ -1520,14 +1523,4 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver, Co public boolean zoneWideVolumesAvailableWithoutClusterMotion() { return true; } - - @Override - public String getConfigComponentName() { - return ScaleIOPrimaryDataStoreDriver.class.getSimpleName(); - } - - @Override - public ConfigKey[] getConfigKeys() { - return new ConfigKey[]{ConnectOnDemand}; - } } diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java index 69ec098db02..38f10ebdc85 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java @@ -24,10 +24,13 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStore; +import org.apache.cloudstack.framework.config.ConfigKey; +import org.apache.cloudstack.framework.config.Configurable; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.storage.datastore.client.ScaleIOGatewayClient; import org.apache.cloudstack.storage.datastore.client.ScaleIOGatewayClientConnectionPool; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao; +import org.apache.cloudstack.storage.datastore.driver.ScaleIOPrimaryDataStoreDriver; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; @@ -50,9 +53,17 @@ import com.cloud.utils.db.GlobalLock; import com.cloud.utils.exception.CloudRuntimeException; @Component -public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager { +public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { private static final Logger LOGGER = Logger.getLogger(ScaleIOSDCManagerImpl.class); + static ConfigKey ConnectOnDemand = new ConfigKey<>("Storage", + Boolean.class, + "powerflex.connect.on.demand", + Boolean.FALSE.toString(), + "Connect PowerFlex client on Host when first Volume created and disconnect when last Volume deleted (or always stay connected otherwise).", + Boolean.TRUE, + ConfigKey.Scope.Zone); + @Inject AgentManager agentManager; @Inject @@ -93,6 +104,10 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager { @Override public String prepareSDC(Host host, DataStore dataStore) { + if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + return getConnectedSdc(host, dataStore); + } + String systemId = storagePoolDetailsDao.findDetail(dataStore.getId(), ScaleIOGatewayClient.STORAGE_POOL_SYSTEM_ID).getValue(); if (systemId == null) { throw new CloudRuntimeException("Unable to prepare SDC, failed to get the system id for PowerFlex storage pool: " + dataStore.getName()); @@ -226,6 +241,9 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager { @Override public boolean stopSDC(Host host, DataStore dataStore) { + if(Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + return true; + } String systemId = storagePoolDetailsDao.findDetail(dataStore.getId(), ScaleIOGatewayClient.STORAGE_POOL_SYSTEM_ID).getValue(); if (systemId == null) { throw new CloudRuntimeException("Unable to unprepare SDC, failed to get the system id for PowerFlex storage pool: " + dataStore.getName()); @@ -345,4 +363,15 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager { private ScaleIOGatewayClient getScaleIOClient(final Long storagePoolId) throws Exception { return ScaleIOGatewayClientConnectionPool.getInstance().getClient(storagePoolId, storagePoolDetailsDao); } + + + @Override + public String getConfigComponentName() { + return ScaleIOPrimaryDataStoreDriver.class.getSimpleName(); + } + + @Override + public ConfigKey[] getConfigKeys() { + return new ConfigKey[]{ConnectOnDemand}; + } } diff --git a/plugins/storage/volume/scaleio/src/test/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriverTest.java b/plugins/storage/volume/scaleio/src/test/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriverTest.java index 0a5743ac0fc..f9cd2cda4f1 100644 --- a/plugins/storage/volume/scaleio/src/test/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriverTest.java +++ b/plugins/storage/volume/scaleio/src/test/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriverTest.java @@ -20,23 +20,16 @@ package org.apache.cloudstack.storage.datastore.driver; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.isA; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Optional; -import com.cloud.utils.component.ComponentContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService; -import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.storage.RemoteHostEndPoint; import org.apache.cloudstack.storage.command.CreateObjectAnswer; @@ -45,8 +38,6 @@ import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; -import org.apache.cloudstack.storage.datastore.manager.ScaleIOSDCManager; -import org.apache.cloudstack.storage.datastore.manager.ScaleIOSDCManagerImpl; import org.apache.cloudstack.storage.to.VolumeObjectTO; import org.junit.Assert; import org.junit.Before; @@ -83,17 +74,12 @@ import com.cloud.vm.VirtualMachine; import com.cloud.vm.dao.VMInstanceDao; @RunWith(PowerMockRunner.class) -@PrepareForTest({RemoteHostEndPoint.class, ComponentContext.class}) +@PrepareForTest(RemoteHostEndPoint.class) public class ScaleIOPrimaryDataStoreDriverTest { @Spy @InjectMocks ScaleIOPrimaryDataStoreDriver scaleIOPrimaryDataStoreDriver = new ScaleIOPrimaryDataStoreDriver(); - - @Spy - @InjectMocks - ScaleIOSDCManager sdcManager = new ScaleIOSDCManagerImpl(); - @Mock StoragePoolDetailsDao storagePoolDetailsDao; @Mock @@ -463,7 +449,7 @@ public class ScaleIOPrimaryDataStoreDriverTest { } @Test - public void deleteSourceVolumeFailureScenarioAfterSuccessfulBlockCopyOnDemandDisabled() throws Exception { + public void deleteSourceVolumeFailureScenarioAfterSuccessfulBlockCopy() throws Exception { // Either Volume deletion success or failure method should complete VolumeInfo srcData = Mockito.mock(VolumeInfo.class); @@ -477,61 +463,16 @@ public class ScaleIOPrimaryDataStoreDriverTest { when(srcData.getDataStore()).thenReturn(srcStore); when(srcData.getTO()).thenReturn(volumeTO); when(volumeTO.getPath()).thenReturn(srcVolumePath); - - PowerMockito.mockStatic(ComponentContext.class); - PowerMockito.when(ComponentContext.inject(eq(sdcManager))).thenReturn(sdcManager); - String sdcId = "7332760565f6340f"; - doReturn(sdcId).when(sdcManager).getConnectedSdc(host, srcStore); + doReturn(sdcId).when(scaleIOPrimaryDataStoreDriver).getConnectedSdc(1L, 1L); ScaleIOGatewayClient client = Mockito.mock(ScaleIOGatewayClient.class); - - doReturn(client).when(scaleIOPrimaryDataStoreDriver).getScaleIOClient(any()); - - doReturn(true).when(client).unmapVolumeFromSdc(anyString(), anyString()); - doReturn(false).when(client).deleteVolume(anyString()); - - scaleIOPrimaryDataStoreDriver.deleteSourceVolumeAfterSuccessfulBlockCopy(srcData, host); - } - - @Test - public void deleteSourceVolumeFailureScenarioAfterSuccessfulBlockCopyOnDemandEnabled() throws Exception { - // Either Volume deletion success or failure method should complete - - VolumeInfo srcData = Mockito.mock(VolumeInfo.class); - Host host = Mockito.mock(Host.class); - when(host.getId()).thenReturn(1L); - String srcVolumePath = "bec0ba7700000007:vol-11-6aef-10ee"; - - DataStore srcStore = Mockito.mock(DataStore.class); - when(srcStore.getId()).thenReturn(1L); - DataTO volumeTO = Mockito.mock(DataTO.class); - when(srcData.getDataStore()).thenReturn(srcStore); - when(srcData.getTO()).thenReturn(volumeTO); - when(volumeTO.getPath()).thenReturn(srcVolumePath); - - PowerMockito.mockStatic(ComponentContext.class); - PowerMockito.when(ComponentContext.inject(eq(sdcManager))).thenReturn(sdcManager); - - String sdcId = "7332760565f6340f"; - doReturn(sdcId).when(sdcManager).getConnectedSdc(host, srcStore); - - ScaleIOGatewayClient client = Mockito.mock(ScaleIOGatewayClient.class); - doReturn(client).when(scaleIOPrimaryDataStoreDriver).getScaleIOClient(any()); - + doReturn(client).when(scaleIOPrimaryDataStoreDriver) + .getScaleIOClient(any()); doReturn(true).when(client).unmapVolumeFromSdc(any(), any()); - doReturn(false).when(client).deleteVolume(anyString()); - - ConfigKey connectOnDemand = Mockito.mock(ConfigKey.class); - doReturn(Boolean.TRUE).when(connectOnDemand).value(); - - doReturn(true).when(sdcManager).stopSDC(isA(Host.class), isA(DataStore.class)); - - scaleIOPrimaryDataStoreDriver.ConnectOnDemand = connectOnDemand; + when(client.deleteVolume(any())).thenReturn(false); scaleIOPrimaryDataStoreDriver.deleteSourceVolumeAfterSuccessfulBlockCopy(srcData, host); - - verify(sdcManager, times(1)).stopSDC(isA(Host.class), isA(DataStore.class)); } @Test @@ -549,11 +490,8 @@ public class ScaleIOPrimaryDataStoreDriverTest { when(srcData.getDataStore()).thenReturn(srcStore); when(srcData.getTO()).thenReturn(volumeTO); when(volumeTO.getPath()).thenReturn(srcVolumePath); - - PowerMockito.mockStatic(ComponentContext.class); - PowerMockito.when(ComponentContext.inject(eq(sdcManager))).thenReturn(sdcManager); - - doReturn(null).when(sdcManager).getConnectedSdc(host, srcStore); + String sdcId = "7332760565f6340f"; + doReturn(null).when(scaleIOPrimaryDataStoreDriver).getConnectedSdc(1L, 1L); scaleIOPrimaryDataStoreDriver.deleteSourceVolumeAfterSuccessfulBlockCopy(srcData, host); } From 05db34bf445746e029a053f096a882e1b47f0680 Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Wed, 4 Sep 2024 20:24:52 -0700 Subject: [PATCH 08/11] Changed ConnectOnDemand order --- .../datastore/manager/ScaleIOSDCManagerImpl.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java index 38f10ebdc85..a368801a7ef 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java @@ -104,10 +104,6 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { @Override public String prepareSDC(Host host, DataStore dataStore) { - if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { - return getConnectedSdc(host, dataStore); - } - String systemId = storagePoolDetailsDao.findDetail(dataStore.getId(), ScaleIOGatewayClient.STORAGE_POOL_SYSTEM_ID).getValue(); if (systemId == null) { throw new CloudRuntimeException("Unable to prepare SDC, failed to get the system id for PowerFlex storage pool: " + dataStore.getName()); @@ -135,6 +131,10 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { LOGGER.debug(String.format("SDC %s already connected for the pool: %d on host: %d, no need to prepare/start it", sdcId, poolId, hostId)); return sdcId; } + if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + LOGGER.debug("On-demand connect/disconnect disabled, no need to prepare it"); + return getConnectedSdc(host, dataStore); + } String storageSystemIdLockString = String.format(POWERFLEX_SDC_SYSTEMID_LOCK_FORMAT, systemId); storageSystemIdLock = GlobalLock.getInternLock(storageSystemIdLockString); @@ -241,9 +241,6 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { @Override public boolean stopSDC(Host host, DataStore dataStore) { - if(Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { - return true; - } String systemId = storagePoolDetailsDao.findDetail(dataStore.getId(), ScaleIOGatewayClient.STORAGE_POOL_SYSTEM_ID).getValue(); if (systemId == null) { throw new CloudRuntimeException("Unable to unprepare SDC, failed to get the system id for PowerFlex storage pool: " + dataStore.getName()); @@ -268,6 +265,10 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { LOGGER.debug("SDC not connected, no need to unprepare it"); return true; } + if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + LOGGER.debug("On-demand connect/disconnect disabled, no need to unprepare it"); + return true; + } return unprepareSDCOnHost(host, dataStore); } finally { From 9f072f2f1c3150420e90518c03f7ba73b4817054 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Thu, 5 Sep 2024 12:42:05 +0530 Subject: [PATCH 09/11] Revert "Changed ConnectOnDemand order" This reverts commit 05db34bf445746e029a053f096a882e1b47f0680. --- .../datastore/manager/ScaleIOSDCManagerImpl.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java index a368801a7ef..38f10ebdc85 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java @@ -104,6 +104,10 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { @Override public String prepareSDC(Host host, DataStore dataStore) { + if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + return getConnectedSdc(host, dataStore); + } + String systemId = storagePoolDetailsDao.findDetail(dataStore.getId(), ScaleIOGatewayClient.STORAGE_POOL_SYSTEM_ID).getValue(); if (systemId == null) { throw new CloudRuntimeException("Unable to prepare SDC, failed to get the system id for PowerFlex storage pool: " + dataStore.getName()); @@ -131,10 +135,6 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { LOGGER.debug(String.format("SDC %s already connected for the pool: %d on host: %d, no need to prepare/start it", sdcId, poolId, hostId)); return sdcId; } - if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { - LOGGER.debug("On-demand connect/disconnect disabled, no need to prepare it"); - return getConnectedSdc(host, dataStore); - } String storageSystemIdLockString = String.format(POWERFLEX_SDC_SYSTEMID_LOCK_FORMAT, systemId); storageSystemIdLock = GlobalLock.getInternLock(storageSystemIdLockString); @@ -241,6 +241,9 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { @Override public boolean stopSDC(Host host, DataStore dataStore) { + if(Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + return true; + } String systemId = storagePoolDetailsDao.findDetail(dataStore.getId(), ScaleIOGatewayClient.STORAGE_POOL_SYSTEM_ID).getValue(); if (systemId == null) { throw new CloudRuntimeException("Unable to unprepare SDC, failed to get the system id for PowerFlex storage pool: " + dataStore.getName()); @@ -265,10 +268,6 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { LOGGER.debug("SDC not connected, no need to unprepare it"); return true; } - if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { - LOGGER.debug("On-demand connect/disconnect disabled, no need to unprepare it"); - return true; - } return unprepareSDCOnHost(host, dataStore); } finally { From a15fe4f1f4391ce293c9fbbdf32192551890486b Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Thu, 5 Sep 2024 12:49:47 +0530 Subject: [PATCH 10/11] Added logs for on-demand connect/disconnect config --- .../storage/datastore/manager/ScaleIOSDCManagerImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java index 38f10ebdc85..0ca8b138f45 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/manager/ScaleIOSDCManagerImpl.java @@ -105,6 +105,7 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { @Override public String prepareSDC(Host host, DataStore dataStore) { if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + LOGGER.debug(String.format("On-demand connect/disconnect config %s disabled in the zone %d, no need to prepare SDC (check for connected SDC)", ConnectOnDemand.key(), host.getDataCenterId())); return getConnectedSdc(host, dataStore); } @@ -241,9 +242,11 @@ public class ScaleIOSDCManagerImpl implements ScaleIOSDCManager, Configurable { @Override public boolean stopSDC(Host host, DataStore dataStore) { - if(Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + if (Boolean.FALSE.equals(ConnectOnDemand.valueIn(host.getDataCenterId()))) { + LOGGER.debug(String.format("On-demand connect/disconnect config %s disabled in the zone %d, no need to unprepare SDC", ConnectOnDemand.key(), host.getDataCenterId())); return true; } + String systemId = storagePoolDetailsDao.findDetail(dataStore.getId(), ScaleIOGatewayClient.STORAGE_POOL_SYSTEM_ID).getValue(); if (systemId == null) { throw new CloudRuntimeException("Unable to unprepare SDC, failed to get the system id for PowerFlex storage pool: " + dataStore.getName()); From cf8dd76d4c2dd36627d1415bb955e606c5433c00 Mon Sep 17 00:00:00 2001 From: mprokopchuk Date: Fri, 6 Sep 2024 01:25:04 -0700 Subject: [PATCH 11/11] renamed created_exists to created_column_not_exists in sql migration script --- .../main/resources/META-INF/db/schema-41811to41812.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql index 4542f1b9084..62aafa640b6 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-41811to41812.sql @@ -23,17 +23,17 @@ -- adding one more time here in case if migration from 4.18.0 didn't go through CREATE PROCEDURE `cloud`.`ADD_RESOURCE_RESERVATION_MGMT_SERVER_ID_CREATED`() BEGIN - DECLARE created_exists TINYINT DEFAULT FALSE + DECLARE created_column_not_exists TINYINT DEFAULT FALSE ; IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema` = 'cloud' AND `table_name` = 'resource_reservation' AND `column_name` = 'mgmt_server_id') THEN CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.resource_reservation', 'mgmt_server_id', 'bigint unsigned NULL COMMENT "management server id" ') ; END IF ; IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema` = 'cloud' AND `table_name` = 'resource_reservation' AND `column_name` = 'created') THEN - SET created_exists = TRUE + SET created_column_not_exists = TRUE ; END IF -; IF created_exists THEN +; IF created_column_not_exists THEN CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.resource_reservation', 'created', 'datetime DEFAULT NULL COMMENT "date when the reservation was created" ') ; END IF -; IF created_exists THEN +; IF created_column_not_exists THEN UPDATE `cloud`.`resource_reservation` SET `created` = now() WHERE `created` IS NULL ; END IF ; END;