Updated Branches: refs/heads/zone-primarystorage-vmware bb5bbf207 -> 10c8f74eb
CLOUDSTACK-2029 zone wide primary storage support for cloudstack over vmware deployments DB changes to support hypervisor specific zone wide storage pool. Added method findZoneWideStoragePoolsByHypervisor to PrimaryStorageDaoImpl to find suitable zone wide storage pool of specific hypervisor type. Added column 'hypervisor' to table storage_pool. This column can be NULL. Used/populated only for zone wide primary storage pools. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/10c8f74e Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/10c8f74e Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/10c8f74e Branch: refs/heads/zone-primarystorage-vmware Commit: 10c8f74eb4edc1752c35a9c9a4e705a4dfe5ef5f Parents: bb5bbf2 Author: Sateesh Chodapuneedi <[email protected]> Authored: Wed May 29 00:34:32 2013 +0530 Committer: Sateesh Chodapuneedi <[email protected]> Committed: Wed May 29 00:34:32 2013 +0530 ---------------------------------------------------------------------- .../storage/datastore/db/PrimaryDataStoreDao.java | 3 ++ .../datastore/db/PrimaryDataStoreDaoImpl.java | 11 ++++++ .../storage/datastore/db/StoragePoolVO.java | 13 +++++++ .../api/query/dao/StoragePoolJoinDaoImpl.java | 6 +++ .../com/cloud/api/query/vo/StoragePoolJoinVO.java | 29 +++++++++++---- 5 files changed, 55 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/10c8f74e/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java ---------------------------------------------------------------------- diff --git a/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java b/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java index 4d84525..d436762 100644 --- a/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java +++ b/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java @@ -22,6 +22,7 @@ import java.util.Map; import org.apache.cloudstack.engine.subsystem.api.storage.ScopeType; +import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.storage.StoragePoolStatus; import com.cloud.utils.db.GenericDao; /** @@ -109,4 +110,6 @@ public interface PrimaryDataStoreDao extends GenericDao<StoragePoolVO, Long> { Long clusterId, String[] tags); List<StoragePoolVO> findZoneWideStoragePoolsByTags(long dcId, String[] tags); + + List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/10c8f74e/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java b/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java index 7fcddf1..d461d58 100644 --- a/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java +++ b/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java @@ -32,6 +32,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.ScopeType; import org.springframework.stereotype.Component; import com.cloud.host.Status; +import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.storage.StoragePoolStatus; @@ -427,4 +428,14 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long> return listBy(sc); } + + @Override + public List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType) { + SearchCriteriaService<StoragePoolVO, StoragePoolVO> sc = SearchCriteria2.create(StoragePoolVO.class); + sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dataCenterId); + sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up); + sc.addAnd(sc.getEntity().getScope(), Op.EQ, ScopeType.ZONE); + sc.addAnd(sc.getEntity().getHypervisor(), Op.EQ, hypervisorType); + return sc.list(); + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/10c8f74e/engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java ---------------------------------------------------------------------- diff --git a/engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java b/engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java index 55b2314..0262f65 100644 --- a/engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java +++ b/engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java @@ -31,6 +31,7 @@ import javax.persistence.TemporalType; import org.apache.cloudstack.engine.subsystem.api.storage.ScopeType; +import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.storage.Storage.StoragePoolType; import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePoolStatus; @@ -102,6 +103,10 @@ public class StoragePoolVO implements StoragePool{ @Enumerated(value = EnumType.STRING) private ScopeType scope; + @Column(name = "hypervisor") + @Enumerated(value = EnumType.STRING) + private HypervisorType hypervisor; + public long getId() { return id; } @@ -276,6 +281,14 @@ public class StoragePoolVO implements StoragePool{ return this.scope; } + public HypervisorType getHypervisor() { + return hypervisor; + } + + public void setHypervisor(HypervisorType hypervisor) { + this.hypervisor = hypervisor; + } + @Override public boolean equals(Object obj) { if (!(obj instanceof StoragePoolVO) || obj == null) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/10c8f74e/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 e401f44..e276978 100644 --- a/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java @@ -85,6 +85,9 @@ public class StoragePoolJoinDaoImpl extends GenericDaoBase<StoragePoolJoinVO, Lo poolResponse.setPodName(pool.getPodName()); poolResponse.setCreated(pool.getCreated()); poolResponse.setScope(pool.getScope().toString()); + if (pool.getHypervisor() != null) { + poolResponse.setHypervisor(pool.getHypervisor().toString()); + } long allocatedSize = pool.getUsedCapacity() + pool.getReservedCapacity(); @@ -143,6 +146,9 @@ public class StoragePoolJoinDaoImpl extends GenericDaoBase<StoragePoolJoinVO, Lo poolResponse.setPodName(pool.getPodName()); poolResponse.setCreated(pool.getCreated()); poolResponse.setScope(pool.getScope().toString()); + if (pool.getHypervisor() != null) { + poolResponse.setHypervisor(pool.getHypervisor().toString()); + } long allocatedSize = pool.getUsedCapacity() + pool.getReservedCapacity(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/10c8f74e/server/src/com/cloud/api/query/vo/StoragePoolJoinVO.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/query/vo/StoragePoolJoinVO.java b/server/src/com/cloud/api/query/vo/StoragePoolJoinVO.java index d86726c..29e97f4 100644 --- a/server/src/com/cloud/api/query/vo/StoragePoolJoinVO.java +++ b/server/src/com/cloud/api/query/vo/StoragePoolJoinVO.java @@ -24,15 +24,17 @@ import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.Id; import javax.persistence.Table; -import com.cloud.org.Cluster; -import com.cloud.storage.StoragePoolStatus; -import com.cloud.storage.Storage.StoragePoolType; -import com.cloud.utils.db.GenericDao; import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.engine.subsystem.api.storage.ScopeType; +import com.cloud.hypervisor.Hypervisor.HypervisorType; +import com.cloud.org.Cluster; +import com.cloud.storage.Storage.StoragePoolType; +import com.cloud.storage.StoragePoolStatus; +import com.cloud.utils.db.GenericDao; + /** * Storage Pool DB view. * @@ -99,7 +101,7 @@ public class StoragePoolJoinVO extends BaseViewVO implements InternalIdentity, I @Column(name="data_center_type") private String zoneType; - + @Column(name="pod_id") private long podId; @@ -128,11 +130,16 @@ public class StoragePoolJoinVO extends BaseViewVO implements InternalIdentity, I @Column(name="job_status") private int jobStatus; - + @Column(name = "scope") @Enumerated(value = EnumType.STRING) private ScopeType scope; + + @Column(name = "hypervisor") + @Enumerated(value = EnumType.STRING) + private HypervisorType hypervisor; + /** * @return the scope */ @@ -147,6 +154,14 @@ public class StoragePoolJoinVO extends BaseViewVO implements InternalIdentity, I this.scope = scope; } + public HypervisorType getHypervisor() { + return hypervisor; + } + + public void setHypervisor(HypervisorType hypervisor) { + this.hypervisor = hypervisor; + } + @Override public long getId() { return id; @@ -293,7 +308,7 @@ public class StoragePoolJoinVO extends BaseViewVO implements InternalIdentity, I public void setZoneType(String zoneType) { this.zoneType = zoneType; } - + public long getPodId() { return podId; }
