Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E7FB4F330 for ; Fri, 5 Apr 2013 21:03:06 +0000 (UTC) Received: (qmail 75465 invoked by uid 500); 5 Apr 2013 21:02:59 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 75360 invoked by uid 500); 5 Apr 2013 21:02:59 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 74405 invoked by uid 99); 5 Apr 2013 21:02:58 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Apr 2013 21:02:58 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 024B81EC31; Fri, 5 Apr 2013 21:02:58 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: prachidamle@apache.org To: commits@cloudstack.apache.org Date: Fri, 05 Apr 2013 21:03:33 -0000 Message-Id: In-Reply-To: <50a0b3e8441e465e86a772c009e58d65@git.apache.org> References: <50a0b3e8441e465e86a772c009e58d65@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [38/50] [abbrv] git commit: updated refs/heads/affinity_groups to ca1a794 fix bunch of bugs related to zone wide storage Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f18a1d6f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f18a1d6f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f18a1d6f Branch: refs/heads/affinity_groups Commit: f18a1d6f140608ba77b54fec9976ed5318495ec4 Parents: bb841d6 Author: Edison Su Authored: Wed Apr 3 21:51:17 2013 -0700 Committer: Edison Su Committed: Wed Apr 3 21:51:17 2013 -0700 ---------------------------------------------------------------------- .../api/response/StoragePoolResponse.java | 17 ++ .../subsystem/api/storage/DataStoreStatus.java | 23 --- .../ClusterScopeStoragePoolAllocator.java | 1 + .../GarbageCollectingStoragePoolAllocator.java | 2 +- .../allocator/LocalStoragePoolAllocator.java | 9 +- .../allocator/ZoneWideStoragePoolAllocator.java | 1 + plugins/hypervisors/kvm/pom.xml | 123 ++++++++++----- .../kvm/resource/LibvirtComputingResource.java | 3 + .../CloudStackPrimaryDataStoreLifeCycleImpl.java | 2 + .../api/query/dao/StoragePoolJoinDaoImpl.java | 1 + .../com/cloud/api/query/vo/StoragePoolJoinVO.java | 19 +++ .../configuration/ConfigurationManagerImpl.java | 2 +- server/src/com/cloud/deploy/FirstFitPlanner.java | 2 +- .../src/com/cloud/storage/StorageManagerImpl.java | 27 ++-- .../secondary/SecondaryStorageManagerImpl.java | 3 +- .../src/com/cloud/upgrade/dao/Upgrade410to420.java | 43 +++++- setup/db/db/schema-40to410.sql | 1 + 17 files changed, 193 insertions(+), 86 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java b/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java index 66dde36..0b16226 100644 --- a/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java +++ b/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java @@ -79,9 +79,26 @@ public class StoragePoolResponse extends BaseResponse { @SerializedName(ApiConstants.STATE) @Param(description="the state of the storage pool") private StoragePoolStatus state; + + @SerializedName(ApiConstants.SCOPE) @Param(description="the scope of the storage pool") + private String scope; + /** + * @return the scope + */ + public String getScope() { + return scope; + } + + /** + * @param scope the scope to set + */ + public void setScope(String scope) { + this.scope = scope; + } + @Override public String getObjectId() { return this.getId(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreStatus.java ---------------------------------------------------------------------- diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreStatus.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreStatus.java deleted file mode 100644 index 2388795..0000000 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreStatus.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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 org.apache.cloudstack.engine.subsystem.api.storage; - -public enum DataStoreStatus { - Initial, Initialized, Creating, Attaching, Up, PrepareForMaintenance, ErrorInMaintenance, CancelMaintenance, Maintenance, Removed; -} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/engine/storage/src/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java b/engine/storage/src/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java index 747e258..0dd55d1 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java +++ b/engine/storage/src/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java @@ -51,6 +51,7 @@ public class ClusterScopeStoragePoolAllocator extends AbstractStoragePoolAllocat @Override protected List select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo) { + s_logger.debug("ClusterScopeStoragePoolAllocator looking for storage pool"); List suitablePools = new ArrayList(); long dcId = plan.getDataCenterId(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/engine/storage/src/org/apache/cloudstack/storage/allocator/GarbageCollectingStoragePoolAllocator.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/allocator/GarbageCollectingStoragePoolAllocator.java b/engine/storage/src/org/apache/cloudstack/storage/allocator/GarbageCollectingStoragePoolAllocator.java index 91bc25c..02032ee 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/allocator/GarbageCollectingStoragePoolAllocator.java +++ b/engine/storage/src/org/apache/cloudstack/storage/allocator/GarbageCollectingStoragePoolAllocator.java @@ -48,7 +48,7 @@ public class GarbageCollectingStoragePoolAllocator extends AbstractStoragePoolAl @Override public List select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo) { - + s_logger.debug("GarbageCollectingStoragePoolAllocator looking for storage pool"); if (!_storagePoolCleanupEnabled) { s_logger.debug("Storage pool cleanup is not enabled, so GarbageCollectingStoragePoolAllocator is being skipped."); return null; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/engine/storage/src/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java b/engine/storage/src/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java index a8d5173..7447d98 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java +++ b/engine/storage/src/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java @@ -69,11 +69,12 @@ public class LocalStoragePoolAllocator extends AbstractStoragePoolAllocator { List suitablePools = new ArrayList(); - - if (s_logger.isDebugEnabled()) { - s_logger.debug("LocalStoragePoolAllocator trying to find storage pool to fit the vm"); - } + s_logger.debug("LocalStoragePoolAllocator trying to find storage pool to fit the vm"); + if (!dskCh.useLocalStorage()) { + return suitablePools; + } + // data disk and host identified from deploying vm (attach volume case) if (dskCh.getType() == Volume.Type.DATADISK && plan.getHostId() != null) { List hostPools = _poolHostDao.listByHostId(plan.getHostId()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/engine/storage/src/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java b/engine/storage/src/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java index a4aa3d5..7c6c946 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java +++ b/engine/storage/src/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java @@ -55,6 +55,7 @@ public class ZoneWideStoragePoolAllocator extends AbstractStoragePoolAllocator { protected List select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo) { + s_logger.debug("ZoneWideStoragePoolAllocator to find storage pool"); List suitablePools = new ArrayList(); HypervisorType hypervisor = dskCh.getHypersorType(); if (hypervisor != null) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/plugins/hypervisors/kvm/pom.xml ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/kvm/pom.xml b/plugins/hypervisors/kvm/pom.xml index 3a1ba3a..613c817 100644 --- a/plugins/hypervisors/kvm/pom.xml +++ b/plugins/hypervisors/kvm/pom.xml @@ -1,22 +1,15 @@ - - + + 4.0.0 cloud-plugin-hypervisor-kvm Apache CloudStack Plugin - Hypervisor KVM @@ -45,29 +38,29 @@ - install - src - test - - - org.apache.maven.plugins - maven-dependency-plugin - 2.5.1 - - - copy-dependencies - package - - copy-dependencies - - - ${project.build.directory}/dependencies - runtime - - - - - + install + src + test + + + org.apache.maven.plugins + maven-dependency-plugin + 2.5.1 + + + copy-dependencies + package + + copy-dependencies + + + ${project.build.directory}/dependencies + runtime + + + + + org.apache.maven.plugins maven-surefire-plugin 2.14 @@ -77,6 +70,52 @@ + + maven-assembly-plugin + 2.3 + + kvm-agent + false + + agent-descriptor.xml + + + + + make-agent + package + + single + + + + + + maven-resources-plugin + 2.6 + + + copy-resources + + package + + copy-resources + + + dist + + + target + + kvm-agent.zip + + + + + + + + http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 526107f..362e0a5 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -666,6 +666,9 @@ ServerResource { if (_localStoragePath == null) { _localStoragePath = "/var/lib/libvirt/images/"; } + + File storagePath = new File(_localStoragePath); + _localStoragePath = storagePath.getAbsolutePath(); _localStorageUUID = (String) params.get("local.storage.uuid"); if (_localStorageUUID == null) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java ---------------------------------------------------------------------- diff --git a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java index b8b0859..51ea212 100644 --- a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java +++ b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java @@ -348,6 +348,7 @@ public class CloudStackPrimaryDataStoreLifeCycleImpl implements new String(storageHost + hostPath).getBytes()).toString(); } + List spHandles = primaryDataStoreDao .findIfDuplicatePoolsExistByUUID(uuid); if ((spHandles != null) && (spHandles.size() > 0)) { @@ -358,6 +359,7 @@ public class CloudStackPrimaryDataStoreLifeCycleImpl implements "Another active pool with the same uuid already exists"); } + String poolName = (String) dsInfos.get("name"); parameters.setUuid(uuid); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java index 66aecc2..58968df 100644 --- a/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java @@ -82,6 +82,7 @@ public class StoragePoolJoinDaoImpl extends GenericDaoBase _storagePoolAllocators; public List getStoragePoolAllocators() { return _storagePoolAllocators; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/server/src/com/cloud/storage/StorageManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index a33d524..4e410e4 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -51,7 +51,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreStatus; import org.apache.cloudstack.engine.subsystem.api.storage.HostScope; import org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; @@ -381,7 +380,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C if (pools == null || pools.size() == 0 || (pools.size() == 1 && pools.get(0).getStatus() - .equals(DataStoreStatus.Maintenance))) { + .equals(StoragePoolStatus.Maintenance))) { return false; } else { return true; @@ -1000,8 +999,16 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C if (capacities.size() == 0) { CapacityVO capacity = new CapacityVO(storagePool.getId(), storagePool.getDataCenterId(), storagePool.getPodId(), storagePool.getClusterId(), allocated, totalOverProvCapacity, capacityType); - CapacityState capacityState = _configMgr.findClusterAllocationState(ApiDBUtils.findClusterById(storagePool.getClusterId())) == AllocationState.Disabled ? + AllocationState allocationState = null; + if (storagePool.getScope() == ScopeType.ZONE) { + DataCenterVO dc = ApiDBUtils.findZoneById(storagePool.getDataCenterId()); + allocationState = dc.getAllocationState(); + } else { + allocationState = _configMgr.findClusterAllocationState(ApiDBUtils.findClusterById(storagePool.getClusterId())); + } + CapacityState capacityState = (allocationState == AllocationState.Disabled) ? CapacityState.Disabled : CapacityState.Enabled; + capacity.setCapacityState(capacityState); _capacityDao.persist(capacity); } else { @@ -1419,9 +1426,9 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C } } - if (!primaryStorage.getStatus().equals(DataStoreStatus.Up) + if (!primaryStorage.getStatus().equals(StoragePoolStatus.Up) && !primaryStorage.getStatus().equals( - DataStoreStatus.ErrorInMaintenance)) { + StoragePoolStatus.ErrorInMaintenance)) { throw new InvalidParameterValueException("Primary storage with id " + primaryStorageId + " is not ready for migration, as the status is:" @@ -1458,9 +1465,9 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C throw new InvalidParameterValueException(msg); } - if (primaryStorage.getStatus().equals(DataStoreStatus.Up) + if (primaryStorage.getStatus().equals(StoragePoolStatus.Up) || primaryStorage.getStatus().equals( - DataStoreStatus.PrepareForMaintenance)) { + StoragePoolStatus.PrepareForMaintenance)) { throw new StorageUnavailableException("Primary storage with id " + primaryStorageId + " is not ready to complete migration, as the status is:" @@ -1519,11 +1526,11 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C // check if pool is in an inconsistent state if (pool != null && (pool.getStatus().equals( - DataStoreStatus.ErrorInMaintenance) + StoragePoolStatus.ErrorInMaintenance) || pool.getStatus() - .equals(DataStoreStatus.PrepareForMaintenance) || pool + .equals(StoragePoolStatus.PrepareForMaintenance) || pool .getStatus() - .equals(DataStoreStatus.CancelMaintenance))) { + .equals(StoragePoolStatus.CancelMaintenance))) { _storagePoolWorkDao.removePendingJobsOnMsRestart( vo.getMsid(), poolId); pool.setStatus(StoragePoolStatus.ErrorInMaintenance); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index 9a4d6b0..c94224b 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -742,7 +742,8 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar return true; } else { if (s_logger.isDebugEnabled()) { - s_logger.debug("Primary storage is not ready, wait until it is ready to launch secondary storage vm"); + s_logger.debug("Primary storage is not ready, wait until it is ready to launch secondary storage vm. dcId: " + dataCenterId + " system.vm.use.local.storage: " + _useLocalStorage + + "If you want to use local storage to start ssvm, need to set system.vm.use.local.storage to true"); } } } else { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/server/src/com/cloud/upgrade/dao/Upgrade410to420.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/upgrade/dao/Upgrade410to420.java b/server/src/com/cloud/upgrade/dao/Upgrade410to420.java index 8ce118f..434430a 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade410to420.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade410to420.java @@ -62,7 +62,13 @@ public class Upgrade410to420 implements DbUpgrade { upgradeVmwareLabels(conn); createPlaceHolderNics(conn); updateRemoteAccessVpn(conn); - PreparedStatement sql = null; + updateSystemVmTemplates(conn); + updateCluster_details(conn); + updatePrimaryStore(conn); + } + + private void updateSystemVmTemplates(Connection conn) { + PreparedStatement sql = null; try { sql = conn.prepareStatement("update vm_template set image_data_store_id = 1 where type = 'SYSTEM' or type = 'BUILTIN'"); sql.executeUpdate(); @@ -76,8 +82,39 @@ public class Upgrade410to420 implements DbUpgrade { } } } - updateCluster_details(conn); - } + } + + private void updatePrimaryStore(Connection conn) { + PreparedStatement sql = null; + PreparedStatement sql2 = null; + try { + sql = conn.prepareStatement("update storage_pool set storage_provider_name = ? , scope = ? where pool_type = 'Filesystem' or pool_type = 'LVM'"); + sql.setString(1, "ancient primary data store provider"); + sql.setString(2, "HOST"); + sql.executeUpdate(); + + sql2 = conn.prepareStatement("update storage_pool set storage_provider_name = ? , scope = ? where pool_type != 'Filesystem' and pool_type != 'LVM'"); + sql2.setString(1, "ancient primary data store provider"); + sql2.setString(2, "CLUSTER"); + sql2.executeUpdate(); + } catch (SQLException e) { + throw new CloudRuntimeException("Failed to upgrade vm template data store uuid: " + e.toString()); + } finally { + if (sql != null) { + try { + sql.close(); + } catch (SQLException e) { + } + } + + if (sql2 != null) { + try { + sql2.close(); + } catch (SQLException e) { + } + } + } + } //update the cluster_details table with default overcommit ratios. private void updateCluster_details(Connection conn) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f18a1d6f/setup/db/db/schema-40to410.sql ---------------------------------------------------------------------- diff --git a/setup/db/db/schema-40to410.sql b/setup/db/db/schema-40to410.sql index e333810..77225b9 100644 --- a/setup/db/db/schema-40to410.sql +++ b/setup/db/db/schema-40to410.sql @@ -1479,6 +1479,7 @@ CREATE VIEW `cloud`.`storage_pool_view` AS storage_pool.created, storage_pool.removed, storage_pool.capacity_bytes, + storage_pool.scope, cluster.id cluster_id, cluster.uuid cluster_uuid, cluster.name cluster_name,