mirror of https://github.com/apache/cloudstack.git
Resource details (metadata) - added support for Storage pool details
This commit is contained in:
parent
92f97248a8
commit
d0090a0c24
|
|
@ -43,7 +43,8 @@ public interface ResourceTag extends ControlledEntity, Identity, InternalIdentit
|
|||
VMSnapshot (true, false),
|
||||
RemoteAccessVpn (true, false),
|
||||
Zone (false, true),
|
||||
ServiceOffering (false, true);
|
||||
ServiceOffering (false, true),
|
||||
Storage(false, true);
|
||||
|
||||
ResourceObjectType(boolean resourceTagsSupport, boolean resourceMetadataSupport) {
|
||||
this.resourceTagsSupport = resourceTagsSupport;
|
||||
|
|
|
|||
|
|
@ -103,6 +103,9 @@ public abstract class ResourceDetailDaoBase<R extends ResourceDetail> extends Ge
|
|||
|
||||
|
||||
public void addDetail(R detail) {
|
||||
if (detail == null) {
|
||||
return;
|
||||
}
|
||||
R existingDetail = findDetail(detail.getResourceId(), detail.getName());
|
||||
if (existingDetail != null) {
|
||||
remove(existingDetail.getId());
|
||||
|
|
|
|||
|
|
@ -27,5 +27,7 @@ import com.cloud.service.ServiceOfferingDetailsVO;
|
|||
@Local(value=ServiceOfferingDetailsDao.class)
|
||||
public class ServiceOfferingDetailsDaoImpl extends ResourceDetailDaoBase<ServiceOfferingDetailsVO>
|
||||
implements ServiceOfferingDetailsDao {
|
||||
|
||||
public ServiceOfferingDetailsDaoImpl() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,10 +16,6 @@
|
|||
// under the License.
|
||||
package com.cloud.storage.dao;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
|
|
@ -28,60 +24,12 @@ import org.apache.cloudstack.framework.config.ScopedConfigStorage;
|
|||
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.dc.dao.ResourceDetailDaoBase;
|
||||
|
||||
@Local(value = StoragePoolDetailsDao.class)
|
||||
public class StoragePoolDetailsDaoImpl extends GenericDaoBase<StoragePoolDetailVO, Long> implements StoragePoolDetailsDao, ScopedConfigStorage {
|
||||
public class StoragePoolDetailsDaoImpl extends ResourceDetailDaoBase<StoragePoolDetailVO> implements StoragePoolDetailsDao, ScopedConfigStorage {
|
||||
|
||||
protected final SearchBuilder<StoragePoolDetailVO> PoolSearch;
|
||||
|
||||
protected StoragePoolDetailsDaoImpl() {
|
||||
super();
|
||||
PoolSearch = createSearchBuilder();
|
||||
PoolSearch.and("pool", PoolSearch.entity().getPoolId(), SearchCriteria.Op.EQ);
|
||||
PoolSearch.and("name", PoolSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
PoolSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(long poolId, Map<String, String> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
SearchCriteria<StoragePoolDetailVO> sc = PoolSearch.create();
|
||||
sc.setParameters("pool", poolId);
|
||||
|
||||
txn.start();
|
||||
expunge(sc);
|
||||
for (Map.Entry<String, String> entry : details.entrySet()) {
|
||||
StoragePoolDetailVO detail = new StoragePoolDetailVO(poolId, entry.getKey(), entry.getValue());
|
||||
persist(detail);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getDetails(long poolId) {
|
||||
SearchCriteria<StoragePoolDetailVO> sc = PoolSearch.create();
|
||||
sc.setParameters("pool", poolId);
|
||||
|
||||
List<StoragePoolDetailVO> details = listBy(sc);
|
||||
Map<String, String> detailsMap = new HashMap<String, String>();
|
||||
for (StoragePoolDetailVO detail : details) {
|
||||
detailsMap.put(detail.getName(), detail.getValue());
|
||||
}
|
||||
|
||||
return detailsMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StoragePoolDetailVO findDetail(long poolId, String name) {
|
||||
SearchCriteria<StoragePoolDetailVO> sc = PoolSearch.create();
|
||||
sc.setParameters("pool", poolId);
|
||||
sc.setParameters("name", name);
|
||||
|
||||
return findOneIncludingRemovedBy(sc);
|
||||
public StoragePoolDetailsDaoImpl() {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -26,4 +26,8 @@ import com.cloud.storage.VMTemplateDetailVO;
|
|||
@Component
|
||||
@Local(value = VMTemplateDetailsDao.class)
|
||||
public class VMTemplateDetailsDaoImpl extends ResourceDetailDaoBase<VMTemplateDetailVO> implements VMTemplateDetailsDao {
|
||||
public VMTemplateDetailsDaoImpl(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,5 +26,7 @@ import com.cloud.storage.VolumeDetailVO;
|
|||
@Component
|
||||
@Local(value=VolumeDetailsDao.class)
|
||||
public class VolumeDetailsDaoImpl extends ResourceDetailDaoBase<VolumeDetailVO> implements VolumeDetailsDao {
|
||||
|
||||
public VolumeDetailsDaoImpl() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,5 +26,7 @@ import com.cloud.vm.NicDetailVO;
|
|||
@Component
|
||||
@Local (value={NicDetailDao.class})
|
||||
public class NicDetailDaoImpl extends ResourceDetailDaoBase<NicDetailVO> implements NicDetailDao {
|
||||
|
||||
public NicDetailDaoImpl() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,5 +26,7 @@ import com.cloud.vm.UserVmDetailVO;
|
|||
@Component
|
||||
@Local(value=UserVmDetailsDao.class)
|
||||
public class UserVmDetailsDaoImpl extends ResourceDetailDaoBase<UserVmDetailVO> implements UserVmDetailsDao {
|
||||
|
||||
public UserVmDetailsDaoImpl() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@ import javax.ejb.Local;
|
|||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.host.Status;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.storage.ScopeType;
|
||||
|
|
@ -43,6 +45,7 @@ import com.cloud.utils.db.SearchCriteria.Op;
|
|||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
|
||||
|
||||
@Local(value = { PrimaryDataStoreDao.class })
|
||||
@DB()
|
||||
public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long> implements PrimaryDataStoreDao {
|
||||
|
|
@ -52,8 +55,7 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||
protected final SearchBuilder<StoragePoolVO> DeleteLvmSearch;
|
||||
protected final GenericSearchBuilder<StoragePoolVO, Long> StatusCountSearch;
|
||||
|
||||
@Inject
|
||||
protected StoragePoolDetailsDao _detailsDao;
|
||||
@Inject protected StoragePoolDetailsDao _detailsDao;
|
||||
|
||||
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 (";
|
||||
private final String DetailsSqlSuffix = ") GROUP BY storage_pool_details.pool_id HAVING COUNT(storage_pool_details.name) >= ?";
|
||||
|
|
@ -380,13 +382,17 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||
@Override
|
||||
public void updateDetails(long poolId, Map<String, String> details) {
|
||||
if (details != null) {
|
||||
_detailsDao.update(poolId, details);
|
||||
List<StoragePoolDetailVO> detailsVO = new ArrayList<StoragePoolDetailVO>();
|
||||
for (String key : details.keySet()) {
|
||||
detailsVO.add(new StoragePoolDetailVO(poolId, key, details.get(key)));
|
||||
}
|
||||
_detailsDao.addDetails(detailsVO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getDetails(long poolId) {
|
||||
return _detailsDao.getDetails(poolId);
|
||||
return _detailsDao.findDetails(poolId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -23,16 +23,18 @@ import javax.persistence.GenerationType;
|
|||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name = "storage_pool_details")
|
||||
public class PrimaryDataStoreDetailVO {
|
||||
public class PrimaryDataStoreDetailVO implements ResourceDetail{
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "id")
|
||||
long id;
|
||||
|
||||
@Column(name = "pool_id")
|
||||
long poolId;
|
||||
long resourceId;
|
||||
|
||||
@Column(name = "name")
|
||||
String name;
|
||||
|
|
@ -41,39 +43,31 @@ public class PrimaryDataStoreDetailVO {
|
|||
String value;
|
||||
|
||||
public PrimaryDataStoreDetailVO(long poolId, String name, String value) {
|
||||
this.poolId = poolId;
|
||||
this.resourceId = poolId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
protected PrimaryDataStoreDetailVO() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public long getPoolId() {
|
||||
return poolId;
|
||||
}
|
||||
|
||||
public void setPoolId(long poolId) {
|
||||
this.poolId = poolId;
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
protected PrimaryDataStoreDetailVO() {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,13 +16,7 @@
|
|||
// under the License.
|
||||
package org.apache.cloudstack.storage.datastore.db;
|
||||
|
||||
import java.util.Map;
|
||||
import com.cloud.dc.dao.ResourceDetailDao;
|
||||
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
public interface PrimaryDataStoreDetailsDao extends GenericDao<PrimaryDataStoreDetailVO, Long> {
|
||||
|
||||
void update(long poolId, Map<String, String> details);
|
||||
|
||||
Map<String, String> getDetails(long poolId);
|
||||
public interface PrimaryDataStoreDetailsDao extends ResourceDetailDao<PrimaryDataStoreDetailVO> {
|
||||
}
|
||||
|
|
@ -16,8 +16,6 @@
|
|||
// under the License.
|
||||
package org.apache.cloudstack.storage.datastore.db;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
|
|
@ -25,16 +23,18 @@ import javax.persistence.GenerationType;
|
|||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name = "storage_pool_details")
|
||||
public class StoragePoolDetailVO implements InternalIdentity {
|
||||
public class StoragePoolDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "id")
|
||||
long id;
|
||||
|
||||
@Column(name = "pool_id")
|
||||
long poolId;
|
||||
long resourceId;
|
||||
|
||||
@Column(name = "name")
|
||||
String name;
|
||||
|
|
@ -43,39 +43,31 @@ public class StoragePoolDetailVO implements InternalIdentity {
|
|||
String value;
|
||||
|
||||
public StoragePoolDetailVO(long poolId, String name, String value) {
|
||||
this.poolId = poolId;
|
||||
this.resourceId = poolId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public StoragePoolDetailVO() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public long getPoolId() {
|
||||
return poolId;
|
||||
}
|
||||
|
||||
public void setPoolId(long poolId) {
|
||||
this.poolId = poolId;
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
protected StoragePoolDetailVO() {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,15 +16,8 @@
|
|||
// under the License.
|
||||
package org.apache.cloudstack.storage.datastore.db;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDao;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
public interface StoragePoolDetailsDao extends GenericDao<StoragePoolDetailVO, Long> {
|
||||
|
||||
void update(long poolId, Map<String, String> details);
|
||||
|
||||
Map<String, String> getDetails(long poolId);
|
||||
|
||||
StoragePoolDetailVO findDetail(long poolId, String name);
|
||||
public interface StoragePoolDetailsDao extends GenericDao<StoragePoolDetailVO, Long>, ResourceDetailDao<StoragePoolDetailVO> {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,59 +16,17 @@
|
|||
// under the License.
|
||||
package org.apache.cloudstack.storage.volume.db;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDetailVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDetailsDao;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.dc.dao.ResourceDetailDaoBase;
|
||||
|
||||
@Component
|
||||
public class PrimaryDataStoreDetailsDaoImpl extends GenericDaoBase<PrimaryDataStoreDetailVO, Long> implements
|
||||
public class PrimaryDataStoreDetailsDaoImpl extends ResourceDetailDaoBase<PrimaryDataStoreDetailVO> implements
|
||||
PrimaryDataStoreDetailsDao {
|
||||
|
||||
protected final SearchBuilder<PrimaryDataStoreDetailVO> PoolSearch = null;
|
||||
|
||||
protected PrimaryDataStoreDetailsDaoImpl() {
|
||||
/*
|
||||
* super(); PoolSearch = createSearchBuilder(); PoolSearch.and("pool",
|
||||
* PoolSearch.entity().getPoolId(), SearchCriteria.Op.EQ);
|
||||
* PoolSearch.done();
|
||||
*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(long poolId, Map<String, String> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
SearchCriteria<PrimaryDataStoreDetailVO> sc = PoolSearch.create();
|
||||
sc.setParameters("pool", poolId);
|
||||
|
||||
txn.start();
|
||||
expunge(sc);
|
||||
for (Map.Entry<String, String> entry : details.entrySet()) {
|
||||
PrimaryDataStoreDetailVO detail = new PrimaryDataStoreDetailVO(poolId, entry.getKey(), entry.getValue());
|
||||
persist(detail);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getDetails(long poolId) {
|
||||
SearchCriteria<PrimaryDataStoreDetailVO> sc = PoolSearch.create();
|
||||
sc.setParameters("pool", poolId);
|
||||
|
||||
List<PrimaryDataStoreDetailVO> details = listBy(sc);
|
||||
Map<String, String> detailsMap = new HashMap<String, String>();
|
||||
for (PrimaryDataStoreDetailVO detail : details) {
|
||||
detailsMap.put(detail.getName(), detail.getValue());
|
||||
}
|
||||
|
||||
return detailsMap;
|
||||
|
||||
public PrimaryDataStoreDetailsDaoImpl() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -475,14 +475,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
|
|||
throw new InvalidParameterValueException("unable to find storage pool by id " + resourceId);
|
||||
}
|
||||
StoragePoolDetailVO storagePoolDetailVO = _storagePoolDetailsDao.findDetail(resourceId, name);
|
||||
if (storagePoolDetailVO == null) {
|
||||
storagePoolDetailVO = new StoragePoolDetailVO(resourceId, name, value);
|
||||
_storagePoolDetailsDao.persist(storagePoolDetailVO);
|
||||
|
||||
} else {
|
||||
storagePoolDetailVO.setValue(value);
|
||||
_storagePoolDetailsDao.update(storagePoolDetailVO.getId(), storagePoolDetailVO);
|
||||
}
|
||||
_storagePoolDetailsDao.addDetail(storagePoolDetailVO);
|
||||
|
||||
break;
|
||||
|
||||
case Account:
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ import javax.inject.Inject;
|
|||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
|
@ -77,6 +79,8 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
VMTemplateDetailsDao _templateDetailsDao;
|
||||
@Inject
|
||||
ServiceOfferingDetailsDao _serviceOfferingDetailsDao;
|
||||
@Inject
|
||||
StoragePoolDetailsDao _storageDetailsDao;
|
||||
|
||||
private static Map<ResourceObjectType, ResourceDetailDao<? extends ResourceDetail>> _daoMap=
|
||||
new HashMap<ResourceObjectType, ResourceDetailDao<? extends ResourceDetail>>();
|
||||
|
|
@ -91,6 +95,8 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
_daoMap.put(ResourceObjectType.Nic, _nicDetailDao);
|
||||
_daoMap.put(ResourceObjectType.ServiceOffering, _serviceOfferingDetailsDao);
|
||||
_daoMap.put(ResourceObjectType.Zone, _dcDetailsDao);
|
||||
_daoMap.put(ResourceObjectType.Storage, _storageDetailsDao);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -138,6 +144,10 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
detail = new VMTemplateDetailVO(id, key, value);
|
||||
} else if (resourceType == ResourceObjectType.ServiceOffering) {
|
||||
detail = new ServiceOfferingDetailsVO(id, key, value);
|
||||
} else if (resourceType == ResourceObjectType.Storage) {
|
||||
detail = new StoragePoolDetailVO(id, key, value);
|
||||
} else {
|
||||
throw new UnsupportedOperationException("ResourceType " + resourceType + " doesn't support metadata");
|
||||
}
|
||||
newDetailDaoHelper.addDetail(detail);
|
||||
|
||||
|
|
@ -174,6 +184,9 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
|
||||
private void addDetail(ResourceDetail detail) {
|
||||
ResourceDetailDao<ResourceDetail> dao = (ResourceDetailDao<ResourceDetail>)_daoMap.get(resourceType);
|
||||
if (dao == null) {
|
||||
throw new UnsupportedOperationException("ResourceType " + resourceType + " doesn't support metadata");
|
||||
}
|
||||
dao.addDetail(detail);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -706,7 +706,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
|||
Map<String, String> updatedDetails = new HashMap<String, String>();
|
||||
|
||||
if (tags != null) {
|
||||
Map<String, String> existingDetails = _storagePoolDetailsDao.getDetails(id);
|
||||
Map<String, String> existingDetails = _storagePoolDetailsDao.findDetails(id);
|
||||
Set<String> existingKeys = existingDetails.keySet();
|
||||
|
||||
Map<String, String> existingDetailsToKeep = new HashMap<String, String>();
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import javax.inject.Inject;
|
|||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
|
@ -131,6 +132,8 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
|
|||
DataCenterDao _dataCenterDao;
|
||||
@Inject
|
||||
ServiceOfferingDao _serviceOffDao;
|
||||
@Inject
|
||||
PrimaryDataStoreDao _storagePoolDao;
|
||||
|
||||
|
||||
@Override
|
||||
|
|
@ -155,6 +158,8 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
|
|||
_daoMap.put(ResourceObjectType.RemoteAccessVpn, _vpnDao);
|
||||
_daoMap.put(ResourceObjectType.Zone, _dataCenterDao);
|
||||
_daoMap.put(ResourceObjectType.ServiceOffering, _serviceOffDao);
|
||||
_daoMap.put(ResourceObjectType.Storage, _storagePoolDao);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue