Skip to content

Commit d0090a0

Browse files
author
Alena Prokharchyk
committed
Resource details (metadata) - added support for Storage pool details
1 parent 92f9724 commit d0090a0

18 files changed

Lines changed: 93 additions & 180 deletions

api/src/com/cloud/server/ResourceTag.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ public enum ResourceObjectType {
4343
VMSnapshot (true, false),
4444
RemoteAccessVpn (true, false),
4545
Zone (false, true),
46-
ServiceOffering (false, true);
46+
ServiceOffering (false, true),
47+
Storage(false, true);
4748

4849
ResourceObjectType(boolean resourceTagsSupport, boolean resourceMetadataSupport) {
4950
this.resourceTagsSupport = resourceTagsSupport;

engine/schema/src/com/cloud/dc/dao/ResourceDetailDaoBase.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ public void addDetails(List<R> details) {
103103

104104

105105
public void addDetail(R detail) {
106+
if (detail == null) {
107+
return;
108+
}
106109
R existingDetail = findDetail(detail.getResourceId(), detail.getName());
107110
if (existingDetail != null) {
108111
remove(existingDetail.getId());

engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,7 @@
2727
@Local(value=ServiceOfferingDetailsDao.class)
2828
public class ServiceOfferingDetailsDaoImpl extends ResourceDetailDaoBase<ServiceOfferingDetailsVO>
2929
implements ServiceOfferingDetailsDao {
30-
30+
public ServiceOfferingDetailsDaoImpl() {
31+
32+
}
3133
}

engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
// under the License.
1717
package com.cloud.storage.dao;
1818

19-
import java.util.HashMap;
20-
import java.util.List;
21-
import java.util.Map;
22-
2319
import javax.ejb.Local;
2420

2521
import org.apache.cloudstack.framework.config.ConfigKey;
@@ -28,60 +24,12 @@
2824
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
2925
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
3026

31-
import com.cloud.utils.db.GenericDaoBase;
32-
import com.cloud.utils.db.SearchBuilder;
33-
import com.cloud.utils.db.SearchCriteria;
34-
import com.cloud.utils.db.TransactionLegacy;
27+
import com.cloud.dc.dao.ResourceDetailDaoBase;
3528

3629
@Local(value = StoragePoolDetailsDao.class)
37-
public class StoragePoolDetailsDaoImpl extends GenericDaoBase<StoragePoolDetailVO, Long> implements StoragePoolDetailsDao, ScopedConfigStorage {
38-
39-
protected final SearchBuilder<StoragePoolDetailVO> PoolSearch;
40-
41-
protected StoragePoolDetailsDaoImpl() {
42-
super();
43-
PoolSearch = createSearchBuilder();
44-
PoolSearch.and("pool", PoolSearch.entity().getPoolId(), SearchCriteria.Op.EQ);
45-
PoolSearch.and("name", PoolSearch.entity().getName(), SearchCriteria.Op.EQ);
46-
PoolSearch.done();
47-
}
48-
49-
@Override
50-
public void update(long poolId, Map<String, String> details) {
51-
TransactionLegacy txn = TransactionLegacy.currentTxn();
52-
SearchCriteria<StoragePoolDetailVO> sc = PoolSearch.create();
53-
sc.setParameters("pool", poolId);
54-
55-
txn.start();
56-
expunge(sc);
57-
for (Map.Entry<String, String> entry : details.entrySet()) {
58-
StoragePoolDetailVO detail = new StoragePoolDetailVO(poolId, entry.getKey(), entry.getValue());
59-
persist(detail);
60-
}
61-
txn.commit();
62-
}
63-
64-
@Override
65-
public Map<String, String> getDetails(long poolId) {
66-
SearchCriteria<StoragePoolDetailVO> sc = PoolSearch.create();
67-
sc.setParameters("pool", poolId);
68-
69-
List<StoragePoolDetailVO> details = listBy(sc);
70-
Map<String, String> detailsMap = new HashMap<String, String>();
71-
for (StoragePoolDetailVO detail : details) {
72-
detailsMap.put(detail.getName(), detail.getValue());
73-
}
74-
75-
return detailsMap;
76-
}
77-
78-
@Override
79-
public StoragePoolDetailVO findDetail(long poolId, String name) {
80-
SearchCriteria<StoragePoolDetailVO> sc = PoolSearch.create();
81-
sc.setParameters("pool", poolId);
82-
sc.setParameters("name", name);
30+
public class StoragePoolDetailsDaoImpl extends ResourceDetailDaoBase<StoragePoolDetailVO> implements StoragePoolDetailsDao, ScopedConfigStorage {
8331

84-
return findOneIncludingRemovedBy(sc);
32+
public StoragePoolDetailsDaoImpl() {
8533
}
8634

8735
@Override

engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,8 @@
2626
@Component
2727
@Local(value = VMTemplateDetailsDao.class)
2828
public class VMTemplateDetailsDaoImpl extends ResourceDetailDaoBase<VMTemplateDetailVO> implements VMTemplateDetailsDao {
29+
public VMTemplateDetailsDaoImpl(){
30+
31+
}
32+
2933
}

engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,7 @@
2626
@Component
2727
@Local(value=VolumeDetailsDao.class)
2828
public class VolumeDetailsDaoImpl extends ResourceDetailDaoBase<VolumeDetailVO> implements VolumeDetailsDao {
29-
29+
public VolumeDetailsDaoImpl() {
30+
31+
}
3032
}

engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,7 @@
2626
@Component
2727
@Local (value={NicDetailDao.class})
2828
public class NicDetailDaoImpl extends ResourceDetailDaoBase<NicDetailVO> implements NicDetailDao {
29-
29+
public NicDetailDaoImpl() {
30+
31+
}
3032
}

engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,7 @@
2626
@Component
2727
@Local(value=UserVmDetailsDao.class)
2828
public class UserVmDetailsDaoImpl extends ResourceDetailDaoBase<UserVmDetailVO> implements UserVmDetailsDao {
29-
29+
public UserVmDetailsDaoImpl() {
30+
31+
}
3032
}

engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import javax.inject.Inject;
2929
import javax.naming.ConfigurationException;
3030

31+
import org.springframework.stereotype.Component;
32+
3133
import com.cloud.host.Status;
3234
import com.cloud.hypervisor.Hypervisor.HypervisorType;
3335
import com.cloud.storage.ScopeType;
@@ -43,6 +45,7 @@
4345
import com.cloud.utils.db.TransactionLegacy;
4446
import com.cloud.utils.exception.CloudRuntimeException;
4547

48+
4649
@Local(value = { PrimaryDataStoreDao.class })
4750
@DB()
4851
public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long> implements PrimaryDataStoreDao {
@@ -52,8 +55,7 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
5255
protected final SearchBuilder<StoragePoolVO> DeleteLvmSearch;
5356
protected final GenericSearchBuilder<StoragePoolVO, Long> StatusCountSearch;
5457

55-
@Inject
56-
protected StoragePoolDetailsDao _detailsDao;
58+
@Inject protected StoragePoolDetailsDao _detailsDao;
5759

5860
private final String DetailsSqlPrefix = "SELECT storage_pool.* from storage_pool LEFT JOIN storage_pool_details ON storage_pool.id = storage_pool_details.pool_id WHERE storage_pool.removed is null and storage_pool.status = 'Up' and storage_pool.data_center_id = ? and (storage_pool.pod_id = ? or storage_pool.pod_id is null) and storage_pool.scope = ? and (";
5961
private final String DetailsSqlSuffix = ") GROUP BY storage_pool_details.pool_id HAVING COUNT(storage_pool_details.name) >= ?";
@@ -380,13 +382,17 @@ public List<String> searchForStoragePoolDetails(long poolId, String value) {
380382
@Override
381383
public void updateDetails(long poolId, Map<String, String> details) {
382384
if (details != null) {
383-
_detailsDao.update(poolId, details);
385+
List<StoragePoolDetailVO> detailsVO = new ArrayList<StoragePoolDetailVO>();
386+
for (String key : details.keySet()) {
387+
detailsVO.add(new StoragePoolDetailVO(poolId, key, details.get(key)));
388+
}
389+
_detailsDao.addDetails(detailsVO);
384390
}
385391
}
386392

387393
@Override
388394
public Map<String, String> getDetails(long poolId) {
389-
return _detailsDao.getDetails(poolId);
395+
return _detailsDao.findDetails(poolId);
390396
}
391397

392398
@Override

engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailVO.java

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,18 @@
2323
import javax.persistence.Id;
2424
import javax.persistence.Table;
2525

26+
import org.apache.cloudstack.api.ResourceDetail;
27+
2628
@Entity
2729
@Table(name = "storage_pool_details")
28-
public class PrimaryDataStoreDetailVO {
30+
public class PrimaryDataStoreDetailVO implements ResourceDetail{
2931
@Id
3032
@GeneratedValue(strategy = GenerationType.IDENTITY)
3133
@Column(name = "id")
3234
long id;
3335

3436
@Column(name = "pool_id")
35-
long poolId;
37+
long resourceId;
3638

3739
@Column(name = "name")
3840
String name;
@@ -41,39 +43,31 @@ public class PrimaryDataStoreDetailVO {
4143
String value;
4244

4345
public PrimaryDataStoreDetailVO(long poolId, String name, String value) {
44-
this.poolId = poolId;
46+
this.resourceId = poolId;
4547
this.name = name;
4648
this.value = value;
4749
}
50+
51+
protected PrimaryDataStoreDetailVO() {
52+
}
4853

54+
@Override
4955
public long getId() {
5056
return id;
5157
}
5258

53-
public long getPoolId() {
54-
return poolId;
55-
}
56-
57-
public void setPoolId(long poolId) {
58-
this.poolId = poolId;
59+
@Override
60+
public long getResourceId() {
61+
return resourceId;
5962
}
6063

64+
@Override
6165
public String getName() {
6266
return name;
6367
}
6468

65-
public void setName(String name) {
66-
this.name = name;
67-
}
68-
69+
@Override
6970
public String getValue() {
7071
return value;
7172
}
72-
73-
public void setValue(String value) {
74-
this.value = value;
75-
}
76-
77-
protected PrimaryDataStoreDetailVO() {
78-
}
7973
}

0 commit comments

Comments
 (0)