diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java index 61eeb958429..e10c37b9adf 100755 --- a/api/src/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/org/apache/cloudstack/api/ApiConstants.java @@ -521,7 +521,7 @@ public class ApiConstants { public static final String ROUTING = "isrouting"; public static final String MAX_CONNECTIONS = "maxconnections"; public static final String SERVICE_STATE = "servicestate"; - public static final String RESOURCE_DETAIL = "resourcedetail"; + public static final String RESOURCE_DETAILS = "resourcedetails"; public static final String EXPUNGE = "expunge"; public enum HostDetails { diff --git a/api/src/org/apache/cloudstack/api/response/ZoneResponse.java b/api/src/org/apache/cloudstack/api/response/ZoneResponse.java index 85f9ecfe474..2f93e9159ce 100644 --- a/api/src/org/apache/cloudstack/api/response/ZoneResponse.java +++ b/api/src/org/apache/cloudstack/api/response/ZoneResponse.java @@ -18,6 +18,7 @@ package org.apache.cloudstack.api.response; import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Set; import org.apache.cloudstack.api.ApiConstants; @@ -105,6 +106,10 @@ public class ZoneResponse extends BaseResponse { responseObject = ResourceTagResponse.class, since="4.3") private Set tags; + @SerializedName(ApiConstants.RESOURCE_DETAILS) + @Param(description = "Meta data associated with the zone (key/value pairs)", since = "4.3.0") + private Map resourceDetails; + public ZoneResponse(){ tags = new LinkedHashSet(); @@ -213,4 +218,8 @@ public class ZoneResponse extends BaseResponse { public void addTag(ResourceTagResponse tag){ this.tags.add(tag); } + + public void setResourceDetails(Map details) { + this.resourceDetails = details; + } } diff --git a/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml b/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml index f4bbb23c819..a70cd0052b3 100644 --- a/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml +++ b/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml @@ -138,7 +138,7 @@ - + diff --git a/engine/schema/src/com/cloud/dc/DcDetailVO.java b/engine/schema/src/com/cloud/dc/DataCenterDetailVO.java similarity index 91% rename from engine/schema/src/com/cloud/dc/DcDetailVO.java rename to engine/schema/src/com/cloud/dc/DataCenterDetailVO.java index 158a8ed93e4..4476a6fdecb 100644 --- a/engine/schema/src/com/cloud/dc/DcDetailVO.java +++ b/engine/schema/src/com/cloud/dc/DataCenterDetailVO.java @@ -28,7 +28,7 @@ import org.apache.cloudstack.api.ResourceDetail; @Entity @Table(name="data_center_details") -public class DcDetailVO implements InternalIdentity, ResourceDetail { +public class DataCenterDetailVO implements InternalIdentity, ResourceDetail { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="id") @@ -43,10 +43,10 @@ public class DcDetailVO implements InternalIdentity, ResourceDetail { @Column(name="value") private String value; - protected DcDetailVO() { + protected DataCenterDetailVO() { } - public DcDetailVO(long dcId, String name, String value) { + public DataCenterDetailVO(long dcId, String name, String value) { this.dcId = dcId; this.name = name; this.value = value; diff --git a/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java index e3b70a2f9af..aaa372f23cc 100755 --- a/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java +++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java @@ -70,7 +70,7 @@ public class DataCenterDaoImpl extends GenericDaoBase implem @Inject protected DataCenterLinkLocalIpAddressDao _LinkLocalIpAllocDao = null; @Inject protected DataCenterVnetDao _vnetAllocDao = null; @Inject protected PodVlanDao _podVlanAllocDao = null; - @Inject protected DcDetailsDao _detailsDao = null; + @Inject protected DataCenterDetailsDao _detailsDao = null; @Inject protected AccountGuestVlanMapDao _accountGuestVlanMapDao = null; protected long _prefix; diff --git a/engine/schema/src/com/cloud/dc/dao/DcDetailsDao.java b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java similarity index 78% rename from engine/schema/src/com/cloud/dc/dao/DcDetailsDao.java rename to engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java index 814c7afa449..2cc7df8eecf 100644 --- a/engine/schema/src/com/cloud/dc/dao/DcDetailsDao.java +++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java @@ -19,19 +19,19 @@ package com.cloud.dc.dao; import java.util.List; import java.util.Map; -import com.cloud.dc.DcDetailVO; +import com.cloud.dc.DataCenterDetailVO; import com.cloud.utils.db.GenericDao; -public interface DcDetailsDao extends GenericDao { +public interface DataCenterDetailsDao extends GenericDao { Map findDetails(long dcId); void persist(long dcId, Map details); - DcDetailVO findDetail(long dcId, String name); + DataCenterDetailVO findDetail(long dcId, String name); void deleteDetails(long dcId); - void removeDetails(Long id, String key); + void removeDetails(long id, String key); - List findDetailsList(long dcId); + List findDetailsList(long dcId); } \ No newline at end of file diff --git a/engine/schema/src/com/cloud/dc/dao/DcDetailsDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java similarity index 69% rename from engine/schema/src/com/cloud/dc/dao/DcDetailsDaoImpl.java rename to engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java index 5f2b0b968ee..b8a36f06dee 100644 --- a/engine/schema/src/com/cloud/dc/dao/DcDetailsDaoImpl.java +++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java @@ -27,18 +27,18 @@ import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.ConfigKey.Scope; import org.apache.cloudstack.framework.config.ScopedConfigStorage; -import com.cloud.dc.DcDetailVO; +import com.cloud.dc.DataCenterDetailVO; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.TransactionLegacy; -@Local(value=DcDetailsDao.class) -public class DcDetailsDaoImpl extends GenericDaoBase implements DcDetailsDao, ScopedConfigStorage { - protected final SearchBuilder DcSearch; - protected final SearchBuilder DetailSearch; +@Local(value=DataCenterDetailsDao.class) +public class DataCenterDetailsDaoImpl extends GenericDaoBase implements DataCenterDetailsDao, ScopedConfigStorage { + protected final SearchBuilder DcSearch; + protected final SearchBuilder DetailSearch; - public DcDetailsDaoImpl() { + public DataCenterDetailsDaoImpl() { DcSearch = createSearchBuilder(); DcSearch.and("dcId", DcSearch.entity().getDcId(), SearchCriteria.Op.EQ); DcSearch.done(); @@ -50,8 +50,8 @@ public class DcDetailsDaoImpl extends GenericDaoBase implement } @Override - public DcDetailVO findDetail(long dcId, String name) { - SearchCriteria sc = DetailSearch.create(); + public DataCenterDetailVO findDetail(long dcId, String name) { + SearchCriteria sc = DetailSearch.create(); sc.setParameters("dcId", dcId); sc.setParameters("name", name); @@ -60,42 +60,42 @@ public class DcDetailsDaoImpl extends GenericDaoBase implement @Override public Map findDetails(long dcId) { - SearchCriteria sc = DcSearch.create(); + SearchCriteria sc = DcSearch.create(); sc.setParameters("dcId", dcId); - List results = search(sc, null); + List results = search(sc, null); Map details = new HashMap(results.size()); - for (DcDetailVO result : results) { + for (DataCenterDetailVO result : results) { details.put(result.getName(), result.getValue()); } return details; } @Override - public List findDetailsList(long dcId) { - SearchCriteria sc = DcSearch.create(); + public List findDetailsList(long dcId) { + SearchCriteria sc = DcSearch.create(); sc.setParameters("dcId", dcId); - List results = search(sc, null); + List results = search(sc, null); return results; } @Override public void deleteDetails(long dcId) { - SearchCriteria sc = DcSearch.create(); + SearchCriteria sc = DcSearch.create(); sc.setParameters("dcId", dcId); - List results = search(sc, null); - for (DcDetailVO result : results) { + List results = search(sc, null); + for (DataCenterDetailVO result : results) { remove(result.getId()); } } @Override - public void removeDetails(Long id, String key) { + public void removeDetails(long id, String key) { if(key != null){ - DcDetailVO detail = findDetail(id, key); + DataCenterDetailVO detail = findDetail(id, key); if(detail != null){ remove(detail.getId()); } @@ -108,12 +108,12 @@ public class DcDetailsDaoImpl extends GenericDaoBase implement public void persist(long dcId, Map details) { TransactionLegacy txn = TransactionLegacy.currentTxn(); txn.start(); - SearchCriteria sc = DcSearch.create(); + SearchCriteria sc = DcSearch.create(); sc.setParameters("dcId", dcId); expunge(sc); for (Map.Entry detail : details.entrySet()) { - DcDetailVO vo = new DcDetailVO(dcId, detail.getKey(), detail.getValue()); + DataCenterDetailVO vo = new DataCenterDetailVO(dcId, detail.getKey(), detail.getValue()); persist(vo); } txn.commit(); @@ -126,7 +126,7 @@ public class DcDetailsDaoImpl extends GenericDaoBase implement @Override public String getConfigValue(long id, ConfigKey key) { - DcDetailVO vo = findDetail(id, key.key()); + DataCenterDetailVO vo = findDetail(id, key.key()); return vo == null ? null : vo.getValue(); } diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java index f788534a0e1..930e8f895c9 100644 --- a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java +++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java @@ -30,6 +30,6 @@ public interface NetworkDetailsDao extends GenericDao { void deleteDetails(long networkId); - public void removeDetails(Long networkId, String key); + public void removeDetails(long networkId, String key); } \ No newline at end of file diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java index 453a95a11ec..29bac958e48 100644 --- a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java +++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java @@ -80,7 +80,7 @@ public class NetworkDetailsDaoImpl extends GenericDaoBase } @Override - public void removeDetails(Long networkId, String key) { + public void removeDetails(long networkId, String key) { if(key != null){ NetworkDetailVO detail = findDetail(networkId, key); if(detail != null){ diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java index 38169105819..e6ff6e5e90a 100644 --- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java +++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java @@ -26,4 +26,5 @@ public interface ServiceOfferingDetailsDao extends GenericDao details); ServiceOfferingDetailsVO findDetail(long serviceOfferingId, String name); void deleteDetails(long serviceOfferingId); + void removeDetails(long offId, String key); } \ No newline at end of file diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java index 70fd5701507..de99cf29bfd 100644 --- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java +++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java @@ -95,4 +95,17 @@ public class ServiceOfferingDetailsDaoImpl extends GenericDaoBase listResourceTagViewByResourceUUID(String resourceUUID, ResourceObjectType resourceType){ return _tagJoinDao.listBy(resourceUUID, resourceType); } + + public static Map getZoneDetails(long zoneId) { + Map details = _zoneDetailsDao.findDetails(zoneId); + return details.isEmpty() ? null : details; + } } diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index 79eb1b4dae7..e92680f3eca 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -129,7 +129,7 @@ import com.cloud.api.query.vo.UserAccountJoinVO; import com.cloud.api.query.vo.UserVmJoinVO; import com.cloud.api.query.vo.VolumeJoinVO; import com.cloud.dc.DedicatedResourceVO; -import com.cloud.dc.dao.DcDetailsDao; +import com.cloud.dc.dao.DataCenterDetailsDao; import com.cloud.dc.dao.DedicatedResourceDao; import com.cloud.domain.Domain; import com.cloud.domain.DomainVO; @@ -328,7 +328,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { private DedicatedResourceDao _dedicatedDao; @Inject - DcDetailsDao _dcDetailsDao; + DataCenterDetailsDao _dcDetailsDao; @Inject DomainManager _domainMgr; diff --git a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java index 6e2649e9d0a..5198555a3fa 100644 --- a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java @@ -105,6 +105,8 @@ public class DataCenterJoinDaoImpl extends GenericDaoBase