You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/11/01 01:21:13 UTC
[02/50] [abbrv] git commit: updated refs/heads/rbac to 2ef4d52
ResourceDetails: added "display" field to a bunch of VOs - determines whether the detail should be returned to the regular user
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/591dcd1d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/591dcd1d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/591dcd1d
Branch: refs/heads/rbac
Commit: 591dcd1d1c3c9e547631610bcee79a5f5120b661
Parents: 30aea0b
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Mon Oct 28 16:01:56 2013 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Tue Oct 29 09:18:11 2013 -0700
----------------------------------------------------------------------
.../cloud/server/ResourceMetaDataService.java | 7 +--
.../org/apache/cloudstack/api/ApiConstants.java | 1 +
.../apache/cloudstack/api/ResourceDetail.java | 2 +
.../user/volume/ListResourceDetailsCmd.java | 41 +++++++++++-----
.../api/response/ResourceDetailResponse.java | 15 +++---
.../apache/cloudstack/query/QueryService.java | 2 +-
client/tomcatconf/commands.properties.in | 2 +-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 16 ++----
.../src/com/cloud/dc/DataCenterDetailVO.java | 8 +++
.../src/com/cloud/dc/dao/DataCenterDaoImpl.java | 4 +-
.../cloud/dc/dao/DataCenterDetailsDaoImpl.java | 4 +-
.../com/cloud/network/dao/NetworkDetailVO.java | 8 +++
.../network/dao/NetworkDetailsDaoImpl.java | 4 +-
.../cloud/service/ServiceOfferingDetailsVO.java | 8 +++
.../service/dao/ServiceOfferingDaoImpl.java | 4 +-
.../dao/ServiceOfferingDetailsDaoImpl.java | 4 +-
.../com/cloud/storage/VMTemplateDetailVO.java | 8 +++
.../src/com/cloud/storage/VolumeDetailVO.java | 9 +++-
.../storage/dao/StoragePoolDetailsDaoImpl.java | 4 +-
.../cloud/storage/dao/VMTemplateDaoImpl.java | 6 +--
.../storage/dao/VMTemplateDetailsDaoImpl.java | 4 +-
.../cloud/storage/dao/VolumeDetailsDaoImpl.java | 4 +-
engine/schema/src/com/cloud/vm/NicDetailVO.java | 7 +++
.../schema/src/com/cloud/vm/UserVmDetailVO.java | 8 +++
.../src/com/cloud/vm/dao/NicDetailsDaoImpl.java | 4 +-
.../src/com/cloud/vm/dao/UserVmDaoImpl.java | 4 +-
.../com/cloud/vm/dao/UserVmDetailsDaoImpl.java | 4 +-
.../resourcedetail/FirewallRuleDetailVO.java | 8 +++
.../resourcedetail/ResourceDetailsDao.java | 45 ++++++++++++++---
.../resourcedetail/ResourceDetailsDaoBase.java | 31 ++++++++++--
.../dao/FirewallRuleDetailsDaoImpl.java | 4 +-
.../datastore/db/PrimaryDataStoreDaoImpl.java | 4 +-
.../datastore/db/PrimaryDataStoreDetailVO.java | 8 +++
.../datastore/db/StoragePoolDetailVO.java | 8 +++
.../db/PrimaryDataStoreDetailsDaoImpl.java | 4 +-
.../cloud/deploy/ImplicitDedicationPlanner.java | 2 +-
.../implicitplanner/ImplicitPlannerTest.java | 2 +-
server/src/com/cloud/api/ApiDBUtils.java | 29 +++++------
.../com/cloud/api/query/QueryManagerImpl.java | 25 +++++-----
.../api/query/dao/DataCenterJoinDaoImpl.java | 2 +-
.../query/dao/ServiceOfferingJoinDaoImpl.java | 3 +-
.../configuration/ConfigurationManagerImpl.java | 8 ++-
.../consoleproxy/ConsoleProxyManagerImpl.java | 2 +-
.../cloud/hypervisor/HypervisorGuruBase.java | 2 +-
.../metadata/ResourceMetaDataManagerImpl.java | 51 +++++++++++---------
.../VirtualNetworkApplianceManagerImpl.java | 2 +-
.../com/cloud/storage/StorageManagerImpl.java | 2 +-
.../secondary/SecondaryStorageManagerImpl.java | 2 +-
.../com/cloud/template/TemplateManagerImpl.java | 2 +-
server/src/com/cloud/vm/UserVmManagerImpl.java | 4 +-
setup/db/db/schema-421to430.sql | 14 +++++-
51 files changed, 307 insertions(+), 149 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/api/src/com/cloud/server/ResourceMetaDataService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/server/ResourceMetaDataService.java b/api/src/com/cloud/server/ResourceMetaDataService.java
index 46f1c4a..a71cfe7 100644
--- a/api/src/com/cloud/server/ResourceMetaDataService.java
+++ b/api/src/com/cloud/server/ResourceMetaDataService.java
@@ -44,10 +44,11 @@ public interface ResourceMetaDataService {
public boolean deleteResourceMetaData(String resourceId, ResourceObjectType resourceType, String key);
- List<? extends ResourceDetail> getDetails(long resourceId, ResourceObjectType resourceType);
+ ResourceDetail getDetail(long resourceId, ResourceObjectType resourceType, String key);
- ResourceDetail getDetail(long resourceId, ResourceObjectType resourceType, String key);
+ Map<String, String> getDetailsMap(long resourceId, ResourceObjectType resourceType, Boolean forDisplay);
+ List<? extends ResourceDetail> getDetailsList(long resourceId, ResourceObjectType resourceType, Boolean forDisplay);
- }
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/api/src/org/apache/cloudstack/api/ApiConstants.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java
index e10c37b..e56fdbc 100755
--- a/api/src/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/org/apache/cloudstack/api/ApiConstants.java
@@ -523,6 +523,7 @@ public class ApiConstants {
public static final String SERVICE_STATE = "servicestate";
public static final String RESOURCE_DETAILS = "resourcedetails";
public static final String EXPUNGE = "expunge";
+ public static final String FOR_DISPLAY = "fordisplay";
public enum HostDetails {
all, capacity, events, stats, min;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/api/src/org/apache/cloudstack/api/ResourceDetail.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/ResourceDetail.java b/api/src/org/apache/cloudstack/api/ResourceDetail.java
index 7a2570b..4914c78 100644
--- a/api/src/org/apache/cloudstack/api/ResourceDetail.java
+++ b/api/src/org/apache/cloudstack/api/ResourceDetail.java
@@ -23,5 +23,7 @@ public interface ResourceDetail extends InternalIdentity{
public String getName();
public String getValue();
+
+ public boolean isDisplay();
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/api/src/org/apache/cloudstack/api/command/user/volume/ListResourceDetailsCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/ListResourceDetailsCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/ListResourceDetailsCmd.java
index 18accac..1e522b2 100644
--- a/api/src/org/apache/cloudstack/api/command/user/volume/ListResourceDetailsCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/volume/ListResourceDetailsCmd.java
@@ -26,6 +26,7 @@ import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.ResourceDetailResponse;
import org.apache.cloudstack.api.response.ResourceTagResponse;
+import org.apache.cloudstack.context.CallContext;
import com.cloud.server.ResourceTag;
@@ -41,6 +42,31 @@ public class ListResourceDetailsCmd extends BaseListProjectAndAccountResourcesCm
@Parameter(name=ApiConstants.KEY, type=CommandType.STRING, description="list by key")
private String key;
+
+ @Parameter(name=ApiConstants.FOR_DISPLAY, type=CommandType.BOOLEAN, description="if set to true, only details marked with display=true, are returned." +
+ " Always false is the call is made by the regular user", since="4.3")
+ private Boolean forDisplay;
+
+ public String getResourceId() {
+ return resourceId;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ @Override
+ public String getCommandName() {
+ return s_name;
+ }
+
+ public Boolean forDisplay() {
+ if (!_accountService.isAdmin(CallContext.current().getCallingAccount().getType())) {
+ return true;
+ }
+
+ return forDisplay;
+ }
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
@@ -50,7 +76,7 @@ public class ListResourceDetailsCmd extends BaseListProjectAndAccountResourcesCm
public void execute() {
ListResponse<ResourceDetailResponse> response = new ListResponse<ResourceDetailResponse>();
- List<ResourceDetailResponse> resourceDetailResponse = _queryService.listResource(this);
+ List<ResourceDetailResponse> resourceDetailResponse = _queryService.listResourceDetails(this);
response.setResponses(resourceDetailResponse);
response.setResponseName(getCommandName());
this.setResponseObject(response);
@@ -60,17 +86,6 @@ public class ListResourceDetailsCmd extends BaseListProjectAndAccountResourcesCm
return _taggedResourceService.getResourceType(resourceType);
}
- public String getResourceId() {
- return resourceId;
- }
-
- public String getKey() {
- return key;
- }
-
- @Override
- public String getCommandName() {
- return s_name;
- }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/api/src/org/apache/cloudstack/api/response/ResourceDetailResponse.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/response/ResourceDetailResponse.java b/api/src/org/apache/cloudstack/api/response/ResourceDetailResponse.java
index 0e917d7..989a126 100644
--- a/api/src/org/apache/cloudstack/api/response/ResourceDetailResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/ResourceDetailResponse.java
@@ -16,14 +16,8 @@
// under the License.
package org.apache.cloudstack.api.response;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.BaseResponse;
-import org.apache.cloudstack.api.EntityReference;
import com.cloud.serializer.Param;
import com.google.gson.annotations.SerializedName;
@@ -47,6 +41,11 @@ public class ResourceDetailResponse extends BaseResponse{
@Param(description = "value of the resource detail")
private String value;
+
+ @SerializedName(ApiConstants.FOR_DISPLAY)
+ @Param(description = "if detail is returned to the regular user", since="4.3")
+ private boolean forDisplay;
+
public String getResourceId() {
return resourceId;
}
@@ -78,4 +77,8 @@ public class ResourceDetailResponse extends BaseResponse{
public void setValue(String value) {
this.value = value;
}
+
+ public void setForDisplay(boolean forDisplay) {
+ this.forDisplay = forDisplay;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/api/src/org/apache/cloudstack/query/QueryService.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/query/QueryService.java b/api/src/org/apache/cloudstack/query/QueryService.java
index a203564..4a9e218 100644
--- a/api/src/org/apache/cloudstack/query/QueryService.java
+++ b/api/src/org/apache/cloudstack/query/QueryService.java
@@ -100,7 +100,7 @@ public interface QueryService {
String affinityGroupType, Long vmId, String accountName, Long domainId, boolean isRecursive,
boolean listAll, Long startIndex, Long pageSize);
- public List<ResourceDetailResponse> listResource(ListResourceDetailsCmd cmd);
+ public List<ResourceDetailResponse> listResourceDetails(ListResourceDetailsCmd cmd);
ListResponse<DomainRouterResponse> searchForInternalLbVms(ListInternalLBVMsCmd cmd);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in
index 81fd985..b106b9f 100644
--- a/client/tomcatconf/commands.properties.in
+++ b/client/tomcatconf/commands.properties.in
@@ -473,7 +473,7 @@ listTags=15
#### Meta Data commands
addResourceDetail=1
removeResourceDetail=1
-listResourceDetails=1
+listResourceDetails=15
### Site-to-site VPN commands
createVpnCustomerGateway=15
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
index 539936f..b74b4c5 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -35,7 +35,6 @@ import javax.ejb.Local;
import javax.inject.Inject;
import javax.naming.ConfigurationException;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
@@ -51,6 +50,7 @@ import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
import org.apache.cloudstack.storage.to.VolumeObjectTO;
import org.apache.cloudstack.utils.identity.ManagementServerNode;
+import org.apache.log4j.Logger;
import com.cloud.agent.AgentManager;
import com.cloud.agent.Listener;
@@ -162,8 +162,6 @@ import com.cloud.utils.db.DB;
import com.cloud.utils.db.EntityManager;
import com.cloud.utils.db.GlobalLock;
import com.cloud.utils.db.Transaction;
-import com.cloud.utils.db.TransactionCallback;
-import com.cloud.utils.db.TransactionCallbackNoReturn;
import com.cloud.utils.db.TransactionCallbackWithException;
import com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn;
import com.cloud.utils.db.TransactionStatus;
@@ -803,15 +801,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
//storing the value of overcommit in the vm_details table for doing a capacity check in case the cluster overcommit ratio is changed.
if (_uservmDetailsDao.findDetail(vm.getId(), "cpuOvercommitRatio") == null &&
((Float.parseFloat(cluster_detail_cpu.getValue()) > 1f || Float.parseFloat(cluster_detail_ram.getValue()) > 1f))) {
- UserVmDetailVO vmDetail_cpu = new UserVmDetailVO(vm.getId(), "cpuOvercommitRatio", cluster_detail_cpu.getValue());
- UserVmDetailVO vmDetail_ram = new UserVmDetailVO(vm.getId(), "memoryOvercommitRatio", cluster_detail_ram.getValue());
- _uservmDetailsDao.persist(vmDetail_cpu);
- _uservmDetailsDao.persist(vmDetail_ram);
+ _uservmDetailsDao.addDetail(vm.getId(), "cpuOvercommitRatio", cluster_detail_cpu.getValue());
+ _uservmDetailsDao.addDetail(vm.getId(), "memoryOvercommitRatio", cluster_detail_ram.getValue());
} else if (_uservmDetailsDao.findDetail(vm.getId(), "cpuOvercommitRatio") != null) {
- UserVmDetailVO vmDetail_cpu = _uservmDetailsDao.findDetail(vm.getId(), "cpuOvercommitRatio");
- UserVmDetailVO vmDetail_ram = _uservmDetailsDao.findDetail(vm.getId(), "memoryOvercommitRatio");
- _uservmDetailsDao.addDetail(vmDetail_cpu);
- _uservmDetailsDao.addDetail(vmDetail_ram);
+ _uservmDetailsDao.addDetail(vm.getId(), "cpuOvercommitRatio", cluster_detail_cpu.getValue());
+ _uservmDetailsDao.addDetail(vm.getId(), "memoryOvercommitRatio", cluster_detail_ram.getValue());
}
vmProfile.setCpuOvercommitRatio(Float.parseFloat(cluster_detail_cpu.getValue()));
vmProfile.setMemoryOvercommitRatio(Float.parseFloat(cluster_detail_ram.getValue()));
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/dc/DataCenterDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/DataCenterDetailVO.java b/engine/schema/src/com/cloud/dc/DataCenterDetailVO.java
index 6771ef8..0ff7865 100644
--- a/engine/schema/src/com/cloud/dc/DataCenterDetailVO.java
+++ b/engine/schema/src/com/cloud/dc/DataCenterDetailVO.java
@@ -42,6 +42,9 @@ public class DataCenterDetailVO implements ResourceDetail {
@Column(name="value")
private String value;
+ @Column(name="display")
+ private boolean display;
+
protected DataCenterDetailVO() {
}
@@ -71,4 +74,9 @@ public class DataCenterDetailVO implements ResourceDetail {
public long getResourceId() {
return resourceId;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java
index 9d90241..9cc43ef 100755
--- a/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java
+++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDaoImpl.java
@@ -358,7 +358,7 @@ public class DataCenterDaoImpl extends GenericDaoBase<DataCenterVO, Long> implem
@Override
public void loadDetails(DataCenterVO zone) {
- Map<String, String> details =_detailsDao.findDetails(zone.getId());
+ Map<String, String> details =_detailsDao.listDetailsKeyPairs(zone.getId());
zone.setDetails(details);
}
@@ -374,7 +374,7 @@ public class DataCenterDaoImpl extends GenericDaoBase<DataCenterVO, Long> implem
resourceDetails.add(new DataCenterDetailVO(zone.getId(), key, details.get(key)));
}
- _detailsDao.addDetails(resourceDetails);
+ _detailsDao.saveDetails(resourceDetails);
}
@Override
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
index 93c08ec..49092f8 100644
--- a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
@@ -42,8 +42,8 @@ public class DataCenterDetailsDaoImpl extends ResourceDetailsDaoBase<DataCenterD
}
@Override
- public DataCenterDetailVO createDetail(long resourceId, String key, String value) {
- return new DataCenterDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new DataCenterDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/network/dao/NetworkDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailVO.java b/engine/schema/src/com/cloud/network/dao/NetworkDetailVO.java
index c7006c4..b7c4db8 100644
--- a/engine/schema/src/com/cloud/network/dao/NetworkDetailVO.java
+++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailVO.java
@@ -41,6 +41,9 @@ public class NetworkDetailVO implements ResourceDetail {
@Column(name="value", length=1024)
private String value;
+
+ @Column(name="display")
+ private boolean display;
public NetworkDetailVO() {}
@@ -69,4 +72,9 @@ public class NetworkDetailVO implements ResourceDetail {
public long getResourceId() {
return resourceId;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
index db5c44f..b42481c 100644
--- a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
@@ -27,8 +27,8 @@ import org.springframework.stereotype.Component;
public class NetworkDetailsDaoImpl extends ResourceDetailsDaoBase<NetworkDetailVO> implements NetworkDetailsDao {
@Override
- public NetworkDetailVO createDetail(long resourceId, String key, String value) {
- return new NetworkDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new NetworkDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/service/ServiceOfferingDetailsVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/service/ServiceOfferingDetailsVO.java b/engine/schema/src/com/cloud/service/ServiceOfferingDetailsVO.java
index 8b70b77..4ab3134 100644
--- a/engine/schema/src/com/cloud/service/ServiceOfferingDetailsVO.java
+++ b/engine/schema/src/com/cloud/service/ServiceOfferingDetailsVO.java
@@ -41,6 +41,9 @@ public class ServiceOfferingDetailsVO implements ResourceDetail {
@Column(name="value")
private String value;
+
+ @Column(name="display")
+ boolean display;
protected ServiceOfferingDetailsVO() {
}
@@ -70,4 +73,9 @@ public class ServiceOfferingDetailsVO implements ResourceDetail {
public long getId() {
return id;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java
index 648e4d0..f807f0d 100644
--- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java
+++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java
@@ -162,7 +162,7 @@ public class ServiceOfferingDaoImpl extends GenericDaoBase<ServiceOfferingVO, Lo
@Override
public void loadDetails(ServiceOfferingVO serviceOffering) {
- Map<String, String> details = detailsDao.findDetails(serviceOffering.getId());
+ Map<String, String> details = detailsDao.listDetailsKeyPairs(serviceOffering.getId());
serviceOffering.setDetails(details);
}
@@ -178,6 +178,6 @@ public class ServiceOfferingDaoImpl extends GenericDaoBase<ServiceOfferingVO, Lo
resourceDetails.add(new ServiceOfferingDetailsVO(serviceOffering.getId(), key, details.get(key)));
}
- detailsDao.addDetails(resourceDetails);
+ detailsDao.saveDetails(resourceDetails);
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
index 8a78b17..5d81861 100644
--- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
@@ -29,8 +29,8 @@ public class ServiceOfferingDetailsDaoImpl extends ResourceDetailsDaoBase<Servic
implements ServiceOfferingDetailsDao {
@Override
- public ServiceOfferingDetailsVO createDetail(long resourceId, String key, String value) {
- return new ServiceOfferingDetailsVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new ServiceOfferingDetailsVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/storage/VMTemplateDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/VMTemplateDetailVO.java b/engine/schema/src/com/cloud/storage/VMTemplateDetailVO.java
index 59b490b..52efe3b 100644
--- a/engine/schema/src/com/cloud/storage/VMTemplateDetailVO.java
+++ b/engine/schema/src/com/cloud/storage/VMTemplateDetailVO.java
@@ -41,6 +41,9 @@ public class VMTemplateDetailVO implements ResourceDetail {
@Column(name = "value", length = 1024)
private String value;
+
+ @Column(name="display")
+ private boolean display;
public VMTemplateDetailVO() {
}
@@ -70,4 +73,9 @@ public class VMTemplateDetailVO implements ResourceDetail {
public String getValue() {
return value;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/storage/VolumeDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/VolumeDetailVO.java b/engine/schema/src/com/cloud/storage/VolumeDetailVO.java
index 499be86..f9b7653 100644
--- a/engine/schema/src/com/cloud/storage/VolumeDetailVO.java
+++ b/engine/schema/src/com/cloud/storage/VolumeDetailVO.java
@@ -23,7 +23,6 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
-import org.apache.cloudstack.api.InternalIdentity;
import org.apache.cloudstack.api.ResourceDetail;
@Entity
@@ -42,6 +41,9 @@ public class VolumeDetailVO implements ResourceDetail {
@Column(name="value", length=1024)
private String value;
+
+ @Column(name="display")
+ private boolean display;
public VolumeDetailVO() {}
@@ -70,5 +72,10 @@ public class VolumeDetailVO implements ResourceDetail {
public long getResourceId() {
return resourceId;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
index 3c177d0..ed10270 100644
--- a/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
@@ -44,7 +44,7 @@ public class StoragePoolDetailsDaoImpl extends ResourceDetailsDaoBase<StoragePoo
}
@Override
- public StoragePoolDetailVO createDetail(long resourceId, String key, String value) {
- return new StoragePoolDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new StoragePoolDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/storage/dao/VMTemplateDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VMTemplateDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VMTemplateDaoImpl.java
index d4bb367..73b68ea 100755
--- a/engine/schema/src/com/cloud/storage/dao/VMTemplateDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VMTemplateDaoImpl.java
@@ -405,7 +405,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
@Override
public void loadDetails(VMTemplateVO tmpl) {
- Map<String, String> details = _templateDetailsDao.findDetails(tmpl.getId());
+ Map<String, String> details = _templateDetailsDao.listDetailsKeyPairs(tmpl.getId());
tmpl.setDetails(details);
}
@@ -421,7 +421,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
details.add(detail);
}
- _templateDetailsDao.addDetails(details);
+ _templateDetailsDao.saveDetails(details);
}
@@ -756,7 +756,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
for (String key : tmplt.getDetails().keySet()) {
details.add(new VMTemplateDetailVO(tmplt.getId(), key, tmplt.getDetails().get(key)));
}
- _templateDetailsDao.addDetails(details);
+ _templateDetailsDao.saveDetails(details);
}
}
VMTemplateZoneVO tmpltZoneVO = _templateZoneDao.findByZoneTemplate(zoneId, tmplt.getId());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
index e2f5abf..327f854 100644
--- a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
@@ -28,7 +28,7 @@ import com.cloud.storage.VMTemplateDetailVO;
public class VMTemplateDetailsDaoImpl extends ResourceDetailsDaoBase<VMTemplateDetailVO> implements VMTemplateDetailsDao {
@Override
- public VMTemplateDetailVO createDetail(long resourceId, String key, String value) {
- return new VMTemplateDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new VMTemplateDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
index 1afa6a2..7bb540a 100644
--- a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
@@ -28,8 +28,8 @@ import com.cloud.storage.VolumeDetailVO;
public class VolumeDetailsDaoImpl extends ResourceDetailsDaoBase<VolumeDetailVO> implements VolumeDetailsDao {
@Override
- public VolumeDetailVO createDetail(long resourceId, String key, String value) {
- return new VolumeDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new VolumeDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/vm/NicDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/NicDetailVO.java b/engine/schema/src/com/cloud/vm/NicDetailVO.java
index 4be5723..93d0d32 100644
--- a/engine/schema/src/com/cloud/vm/NicDetailVO.java
+++ b/engine/schema/src/com/cloud/vm/NicDetailVO.java
@@ -41,6 +41,9 @@ public class NicDetailVO implements ResourceDetail {
@Column(name="value", length=1024)
private String value;
+
+ @Column(name="display")
+ private boolean display;
public NicDetailVO() {}
@@ -70,4 +73,8 @@ public class NicDetailVO implements ResourceDetail {
return resourceId;
}
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/vm/UserVmDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/UserVmDetailVO.java b/engine/schema/src/com/cloud/vm/UserVmDetailVO.java
index 62c924b..82bf32d 100644
--- a/engine/schema/src/com/cloud/vm/UserVmDetailVO.java
+++ b/engine/schema/src/com/cloud/vm/UserVmDetailVO.java
@@ -42,6 +42,9 @@ public class UserVmDetailVO implements ResourceDetail {
@Column(name="value", length=1024)
private String value;
+ @Column(name="display")
+ private boolean display;
+
public UserVmDetailVO() {}
public UserVmDetailVO(long vmId, String name, String value) {
@@ -69,5 +72,10 @@ public class UserVmDetailVO implements ResourceDetail {
public long getResourceId() {
return resourceId;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
index d442982..013c87b 100644
--- a/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
@@ -28,7 +28,7 @@ import com.cloud.vm.NicDetailVO;
public class NicDetailsDaoImpl extends ResourceDetailsDaoBase<NicDetailVO> implements NicDetailsDao {
@Override
- public NicDetailVO createDetail(long resourceId, String key, String value) {
- return new NicDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new NicDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java
index 1992ef47..2108069 100755
--- a/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java
@@ -332,7 +332,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
@Override
public void loadDetails(UserVmVO vm) {
- Map<String, String> details = _detailsDao.findDetails(vm.getId());
+ Map<String, String> details = _detailsDao.listDetailsKeyPairs(vm.getId());
vm.setDetails(details);
}
@@ -347,7 +347,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
details.add(new UserVmDetailVO(vm.getId(), key, detailsStr.get(key)));
}
- _detailsDao.addDetails(details);
+ _detailsDao.saveDetails(details);
}
@Override
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
index 0445419..fad9ace 100644
--- a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
@@ -28,8 +28,8 @@ import com.cloud.vm.UserVmDetailVO;
public class UserVmDetailsDaoImpl extends ResourceDetailsDaoBase<UserVmDetailVO> implements UserVmDetailsDao {
@Override
- public UserVmDetailVO createDetail(long resourceId, String key, String value) {
- return new UserVmDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new UserVmDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/org/apache/cloudstack/resourcedetail/FirewallRuleDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/resourcedetail/FirewallRuleDetailVO.java b/engine/schema/src/org/apache/cloudstack/resourcedetail/FirewallRuleDetailVO.java
index d7e90e8..88d2b00 100644
--- a/engine/schema/src/org/apache/cloudstack/resourcedetail/FirewallRuleDetailVO.java
+++ b/engine/schema/src/org/apache/cloudstack/resourcedetail/FirewallRuleDetailVO.java
@@ -41,6 +41,9 @@ public class FirewallRuleDetailVO implements ResourceDetail{
@Column(name="value", length=1024)
private String value;
+
+ @Column(name="display")
+ private boolean display;
public FirewallRuleDetailVO() {}
@@ -69,4 +72,9 @@ public class FirewallRuleDetailVO implements ResourceDetail{
public long getResourceId() {
return resourceId;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java b/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java
index 043c833..4689543 100644
--- a/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java
+++ b/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java
@@ -24,19 +24,48 @@ import org.apache.cloudstack.api.ResourceDetail;
import com.cloud.utils.db.GenericDao;
public interface ResourceDetailsDao<R extends ResourceDetail> extends GenericDao<R, Long>{
+ /**
+ * Finds detail by resourceId and key
+ * @param resourceId
+ * @param name
+ * @return
+ */
public R findDetail(long resourceId, String name);
-
- public Map<String, String> findDetails(long resourceId);
-
- public List<R> findDetailsList(long resourceId);
-
+
+ /**
+ * Removes all details for the resource specified
+ * @param resourceId
+ */
public void removeDetails(long resourceId);
+ /**
+ * Removes detail having resourceId and key specified (unique combination)
+ * @param resourceId
+ * @param key
+ */
public void removeDetail(long resourceId, String key);
- public void addDetails(List<R> details);
+ /**
+ * Lists all details for the resourceId
+ * @param resourceId
+ * @return list of details each implementing ResourceDetail interface
+ */
+ public List<R> listDetails(long resourceId);
- public void addDetail(R detail);
+ /**
+ * List details for resourceId having display field = forDisplay value passed in
+ * @param resourceId
+ * @param forDisplay
+ * @return
+ */
+ public List<R> listDetails(long resourceId, boolean forDisplay);
+
+ public Map<String, String> listDetailsKeyPairs(long resourceId);
+
+ public Map<String, String> listDetailsKeyPairs(long resourceId, boolean forDisplay);
- public R createDetail(long resourceId, String key, String value);
+ public void saveDetails(List<R> details);
+
+ public void addDetail(long resourceId, String key, String value);
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java b/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java
index a514b1e..4ecebf8 100644
--- a/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java
+++ b/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java
@@ -35,6 +35,7 @@ public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends G
AllFieldsSearch = createSearchBuilder();
AllFieldsSearch.and("resourceId", AllFieldsSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
AllFieldsSearch.and("name", AllFieldsSearch.entity().getName(), SearchCriteria.Op.EQ);
+ AllFieldsSearch.and("display", AllFieldsSearch.entity().isDisplay(), SearchCriteria.Op.EQ);
AllFieldsSearch.done();
}
@@ -47,7 +48,7 @@ public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends G
}
- public Map<String, String> findDetails(long resourceId) {
+ public Map<String, String> listDetailsKeyPairs(long resourceId) {
SearchCriteria<R> sc = AllFieldsSearch.create();
sc.setParameters("resourceId", resourceId);
@@ -59,7 +60,7 @@ public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends G
return details;
}
- public List<R> findDetailsList(long resourceId) {
+ public List<R> listDetails(long resourceId) {
SearchCriteria<R> sc = AllFieldsSearch.create();
sc.setParameters("resourceId", resourceId);
@@ -84,7 +85,7 @@ public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends G
}
- public void addDetails(List<R> details) {
+ public void saveDetails(List<R> details) {
if (details.isEmpty()) {
return;
}
@@ -102,7 +103,7 @@ public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends G
}
- public void addDetail(R detail) {
+ protected void addDetail(R detail) {
if (detail == null) {
return;
}
@@ -112,5 +113,27 @@ public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends G
}
persist(detail);
}
+
+ public Map<String, String> listDetailsKeyPairs(long resourceId, boolean forDisplay) {
+ SearchCriteria<R> sc = AllFieldsSearch.create();
+ sc.setParameters("resourceId", resourceId);
+ sc.setParameters("display", forDisplay);
+
+ List<R> results = search(sc, null);
+ Map<String, String> details = new HashMap<String, String>(results.size());
+ for (R result : results) {
+ details.put(result.getName(), result.getValue());
+ }
+ return details;
+ }
+
+ public List<R> listDetails(long resourceId, boolean forDisplay) {
+ SearchCriteria<R> sc = AllFieldsSearch.create();
+ sc.setParameters("resourceId", resourceId);
+ sc.setParameters("display", forDisplay);
+
+ List<R> results = search(sc, null);
+ return results;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
index bff86db..35613d6 100644
--- a/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
+++ b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
@@ -28,7 +28,7 @@ import org.springframework.stereotype.Component;
public class FirewallRuleDetailsDaoImpl extends ResourceDetailsDaoBase<FirewallRuleDetailVO> implements FirewallRuleDetailsDao {
@Override
- public FirewallRuleDetailVO createDetail(long resourceId, String key, String value) {
- return new FirewallRuleDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new FirewallRuleDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
index bee76f5..d35aa44 100644
--- a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
+++ b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
@@ -386,13 +386,13 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
for (String key : details.keySet()) {
detailsVO.add(new StoragePoolDetailVO(poolId, key, details.get(key)));
}
- _detailsDao.addDetails(detailsVO);
+ _detailsDao.saveDetails(detailsVO);
}
}
@Override
public Map<String, String> getDetails(long poolId) {
- return _detailsDao.findDetails(poolId);
+ return _detailsDao.listDetailsKeyPairs(poolId);
}
@Override
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailVO.java b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailVO.java
index badb637..68da2e2 100644
--- a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailVO.java
+++ b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailVO.java
@@ -41,6 +41,9 @@ public class PrimaryDataStoreDetailVO implements ResourceDetail{
@Column(name = "value")
String value;
+
+ @Column(name="display")
+ private boolean display;
public PrimaryDataStoreDetailVO(long poolId, String name, String value) {
this.resourceId = poolId;
@@ -70,4 +73,9 @@ public class PrimaryDataStoreDetailVO implements ResourceDetail{
public String getValue() {
return value;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailVO.java b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailVO.java
index 9499df0..5968fd2 100644
--- a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailVO.java
+++ b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailVO.java
@@ -42,6 +42,9 @@ public class StoragePoolDetailVO implements ResourceDetail {
@Column(name = "value")
String value;
+ @Column(name="display")
+ private boolean display;
+
public StoragePoolDetailVO(long poolId, String name, String value) {
this.resourceId = poolId;
this.name = name;
@@ -70,4 +73,9 @@ public class StoragePoolDetailVO implements ResourceDetail {
public String getValue() {
return value;
}
+
+ @Override
+ public boolean isDisplay() {
+ return display;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
index 61125f6..ee45053 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
@@ -27,8 +27,8 @@ public class PrimaryDataStoreDetailsDaoImpl extends ResourceDetailsDaoBase<Prima
PrimaryDataStoreDetailsDao {
@Override
- public PrimaryDataStoreDetailVO createDetail(long resourceId, String key, String value) {
- return new PrimaryDataStoreDetailVO(resourceId, key, value);
+ public void addDetail(long resourceId, String key, String value) {
+ super.addDetail(new PrimaryDataStoreDetailVO(resourceId, key, value));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/plugins/deployment-planners/implicit-dedication/src/com/cloud/deploy/ImplicitDedicationPlanner.java
----------------------------------------------------------------------
diff --git a/plugins/deployment-planners/implicit-dedication/src/com/cloud/deploy/ImplicitDedicationPlanner.java b/plugins/deployment-planners/implicit-dedication/src/com/cloud/deploy/ImplicitDedicationPlanner.java
index 6eee28d..e73bc72 100644
--- a/plugins/deployment-planners/implicit-dedication/src/com/cloud/deploy/ImplicitDedicationPlanner.java
+++ b/plugins/deployment-planners/implicit-dedication/src/com/cloud/deploy/ImplicitDedicationPlanner.java
@@ -223,7 +223,7 @@ public class ImplicitDedicationPlanner extends FirstFitPlanner implements Deploy
private boolean isServiceOfferingUsingPlannerInPreferredMode(long serviceOfferingId) {
boolean preferred = false;
- Map<String, String> details = serviceOfferingDetailsDao.findDetails(serviceOfferingId);
+ Map<String, String> details = serviceOfferingDetailsDao.listDetailsKeyPairs(serviceOfferingId);
if (details != null && !details.isEmpty()) {
String preferredAttribute = details.get("ImplicitDedicationMode");
if (preferredAttribute != null && preferredAttribute.equals("Preferred")) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java
----------------------------------------------------------------------
diff --git a/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java b/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java
index c0ce9d0..f1fa71c 100644
--- a/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java
+++ b/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java
@@ -405,7 +405,7 @@ public class ImplicitPlannerTest {
Map<String, String> details = new HashMap<String, String>();
details.put("ImplicitDedicationMode", plannerMode);
- when(serviceOfferingDetailsDao.findDetails(offeringId)).thenReturn(details);
+ when(serviceOfferingDetailsDao.listDetailsKeyPairs(offeringId)).thenReturn(details);
// Initialize hosts in clusters
HostVO host1 = mock(HostVO.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/api/ApiDBUtils.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java
index aec25e5..d36604c 100755
--- a/server/src/com/cloud/api/ApiDBUtils.java
+++ b/server/src/com/cloud/api/ApiDBUtils.java
@@ -52,6 +52,7 @@ import org.apache.cloudstack.api.response.UserResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.VolumeResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
+import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
@@ -59,7 +60,6 @@ import org.apache.cloudstack.framework.jobs.AsyncJob;
import org.apache.cloudstack.framework.jobs.AsyncJobManager;
import org.apache.cloudstack.framework.jobs.dao.AsyncJobDao;
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
-import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
@@ -117,7 +117,6 @@ import com.cloud.dc.ClusterDetailsDao;
import com.cloud.dc.ClusterDetailsVO;
import com.cloud.dc.ClusterVO;
import com.cloud.dc.DataCenter;
-import com.cloud.dc.DataCenterDetailVO;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.Vlan;
@@ -219,6 +218,7 @@ import com.cloud.region.ha.GlobalLoadBalancingRulesService;
import com.cloud.resource.ResourceManager;
import com.cloud.server.Criteria;
import com.cloud.server.ManagementServer;
+import com.cloud.server.ResourceMetaDataService;
import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.server.StatsCollector;
@@ -401,11 +401,8 @@ public class ApiDBUtils {
static AffinityGroupJoinDao _affinityGroupJoinDao;
static GlobalLoadBalancingRulesService _gslbService;
static NetworkACLDao _networkACLDao;
- static ServiceOfferingDetailsDao _serviceOfferingDetailsDao;
static AccountService _accountService;
- static DataCenterDetailsDao _zoneDetailsDao;
-
-
+ static ResourceMetaDataService _resourceDetailsService;
@Inject
private ManagementServer ms;
@@ -520,6 +517,7 @@ public class ApiDBUtils {
@Inject private AccountService accountService;
@Inject private ConfigurationManager configMgr;
@Inject private DataCenterDetailsDao zoneDetailsDao;
+ @Inject private ResourceMetaDataService resourceDetailsService;
@PostConstruct
void init() {
@@ -629,9 +627,8 @@ public class ApiDBUtils {
// Note: stats collector should already have been initialized by this time, otherwise a null instance is returned
_statsCollector = StatsCollector.getInstance();
_networkACLDao = networkACLDao;
- _serviceOfferingDetailsDao = serviceOfferingDetailsDao;
_accountService = accountService;
- _zoneDetailsDao = zoneDetailsDao;
+ _resourceDetailsService = resourceDetailsService;
}
@@ -894,7 +891,7 @@ public class ApiDBUtils {
public static VMTemplateVO findTemplateById(Long templateId) {
VMTemplateVO template = _templateDao.findByIdIncludingRemoved(templateId);
if(template != null) {
- Map details = _templateDetailsDao.findDetails(templateId);
+ Map<String, String> details = _templateDetailsDao.listDetailsKeyPairs(templateId);
if(details != null && !details.isEmpty()) {
template.setDetails(details);
}
@@ -1687,8 +1684,13 @@ public class ApiDBUtils {
return providerDnsName;
}
- public static Map<String, String> getServiceOfferingDetails(long serviceOfferingId) {
- Map<String, String> details = _serviceOfferingDetailsDao.findDetails(serviceOfferingId);
+ public static Map<String, String> getResourceDetails(long resourceId, ResourceObjectType resourceType) {
+ Map<String, String> details = null;
+ if (isAdmin(CallContext.current().getCallingAccount())) {
+ details = _resourceDetailsService.getDetailsMap(resourceId, resourceType, null);
+ } else {
+ details = _resourceDetailsService.getDetailsMap(resourceId, resourceType, true);
+ }
return details.isEmpty() ? null : details;
}
@@ -1699,9 +1701,4 @@ public class ApiDBUtils {
public static List<ResourceTagJoinVO> listResourceTagViewByResourceUUID(String resourceUUID, ResourceObjectType resourceType){
return _tagJoinDao.listBy(resourceUUID, resourceType);
}
-
- public static Map<String, String> getZoneDetails(long zoneId) {
- Map<String, String> details = _zoneDetailsDao.findDetails(zoneId);
- return details.isEmpty() ? null : details;
- }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java
index a7d85cf..0e3f7c9 100644
--- a/server/src/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/com/cloud/api/query/QueryManagerImpl.java
@@ -3260,8 +3260,9 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
}
@Override
- public List<ResourceDetailResponse> listResource(ListResourceDetailsCmd cmd) {
+ public List<ResourceDetailResponse> listResourceDetails(ListResourceDetailsCmd cmd) {
String key = cmd.getKey();
+ Boolean forDisplay = cmd.forDisplay();
ResourceTag.ResourceObjectType resourceType = cmd.getResourceType();
String resourceIdStr = cmd.getResourceId();
long resourceId = _taggedResourceMgr.getResourceId(resourceIdStr, resourceType);
@@ -3269,20 +3270,21 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
ResourceDetail requestedDetail = null;
if (key == null) {
- detailList = _resourceMetaDataMgr.getDetails(resourceId, resourceType);
+ detailList = _resourceMetaDataMgr.getDetailsList(resourceId, resourceType, forDisplay);
} else {
requestedDetail = _resourceMetaDataMgr.getDetail(resourceId, resourceType, key);
+ if (forDisplay != null && requestedDetail.isDisplay() != forDisplay) {
+ requestedDetail = null;
+ }
}
List<ResourceDetailResponse> responseList = new ArrayList<ResourceDetailResponse>();
if (requestedDetail != null) {
- ResourceDetailResponse detailResponse = createResourceDetailsResponse(resourceId, requestedDetail.getName(), requestedDetail.getValue(),
- resourceType);
+ ResourceDetailResponse detailResponse = createResourceDetailsResponse(requestedDetail, resourceType);
responseList.add(detailResponse);
} else {
for (ResourceDetail detail : detailList) {
- ResourceDetailResponse detailResponse = createResourceDetailsResponse(resourceId, detail.getName(), detail.getValue(),
- resourceType);
+ ResourceDetailResponse detailResponse = createResourceDetailsResponse(detail, resourceType);
responseList.add(detailResponse);
}
}
@@ -3291,12 +3293,13 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
}
- protected ResourceDetailResponse createResourceDetailsResponse(long resourceId, String key, String value, ResourceTag.ResourceObjectType type) {
+ protected ResourceDetailResponse createResourceDetailsResponse(ResourceDetail requestedDetail, ResourceTag.ResourceObjectType resourceType) {
ResourceDetailResponse resourceDetailResponse = new ResourceDetailResponse();
- resourceDetailResponse.setResourceId(String.valueOf(resourceId));
- resourceDetailResponse.setName(key);
- resourceDetailResponse.setValue(value);
- resourceDetailResponse.setResourceType(type.toString());
+ resourceDetailResponse.setResourceId(String.valueOf(requestedDetail.getResourceId()));
+ resourceDetailResponse.setName(requestedDetail.getName());
+ resourceDetailResponse.setValue(requestedDetail.getValue());
+ resourceDetailResponse.setForDisplay(requestedDetail.isDisplay());
+ resourceDetailResponse.setResourceType(resourceType.toString().toString());
resourceDetailResponse.setObjectName("resourcedetail");
return resourceDetailResponse;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java
index 5198555..c06e294 100644
--- a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java
+++ b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java
@@ -105,7 +105,7 @@ public class DataCenterJoinDaoImpl extends GenericDaoBase<DataCenterJoinVO, Long
zoneResponse.addTag(tagResponse);
}
- zoneResponse.setResourceDetails(ApiDBUtils.getZoneDetails(dataCenter.getId()));
+ zoneResponse.setResourceDetails(ApiDBUtils.getResourceDetails(dataCenter.getId(), ResourceObjectType.Zone));
zoneResponse.setObjectName("zone");
return zoneResponse;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
index 1727034..3bc6c78 100644
--- a/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
+++ b/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
@@ -27,6 +27,7 @@ import org.springframework.stereotype.Component;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.query.vo.ServiceOfferingJoinVO;
import com.cloud.offering.ServiceOffering;
+import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
@@ -79,7 +80,7 @@ public class ServiceOfferingJoinDaoImpl extends GenericDaoBase<ServiceOfferingJo
offeringResponse.setBytesWriteRate(offering.getBytesWriteRate());
offeringResponse.setIopsReadRate(offering.getIopsReadRate());
offeringResponse.setIopsWriteRate(offering.getIopsWriteRate());
- offeringResponse.setDetails(ApiDBUtils.getServiceOfferingDetails(offering.getId()));
+ offeringResponse.setDetails(ApiDBUtils.getResourceDetails(offering.getId(), ResourceObjectType.ServiceOffering));
offeringResponse.setObjectName("serviceoffering");
return offeringResponse;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 998e3ef..e3aa4fa 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -451,8 +451,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
if (zone == null) {
throw new InvalidParameterValueException("unable to find zone by id " + resourceId);
}
- DataCenterDetailVO dcDetailVO = new DataCenterDetailVO(resourceId, name, value);
- _dcDetailsDao.addDetail(dcDetailVO);
+ _dcDetailsDao.addDetail(resourceId, name, value);
break;
case Cluster:
ClusterVO cluster = _clusterDao.findById(resourceId);
@@ -474,8 +473,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
if (pool == null) {
throw new InvalidParameterValueException("unable to find storage pool by id " + resourceId);
}
- StoragePoolDetailVO storagePoolDetailVO = _storagePoolDetailsDao.findDetail(resourceId, name);
- _storagePoolDetailsDao.addDetail(storagePoolDetailVO);
+ _storagePoolDetailsDao.addDetail(resourceId, name, value);
break;
@@ -2107,7 +2105,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
detailsVO.add(new ServiceOfferingDetailsVO(offering.getId(), key, details.get(key)));
}
- _serviceOfferingDetailsDao.addDetails(detailsVO);
+ _serviceOfferingDetailsDao.saveDetails(detailsVO);
}
CallContext.current().setEventDetails("Service offering id=" + offering.getId());
return offering;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index e55477a..e82aaba 100755
--- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -1326,7 +1326,7 @@ VirtualMachineGuru, SystemVmLoadScanHandler<Long>, ResourceStateAdapter {
public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) {
ConsoleProxyVO vm = _consoleProxyDao.findById(profile.getId());
- Map<String, String> details = _vmDetailsDao.findDetails(vm.getId());
+ Map<String, String> details = _vmDetailsDao.listDetailsKeyPairs(vm.getId());
vm.setDetails(details);
StringBuilder buf = profile.getBootArgsBuilder();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
index a528334..4e28a6a 100644
--- a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
+++ b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
@@ -115,7 +115,7 @@ public abstract class HypervisorGuruBase extends AdapterBase implements Hypervis
to.setArch("x86_64");
}
- Map<String, String> detailsInVm = _userVmDetailsDao.findDetails(vm.getId());
+ Map<String, String> detailsInVm = _userVmDetailsDao.listDetailsKeyPairs(vm.getId());
if(detailsInVm != null) {
to.setDetails(detailsInVm);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
index ec5b7ea..5f7ad4b 100644
--- a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
+++ b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
@@ -16,7 +16,6 @@
// under the License.
package com.cloud.metadata;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -122,14 +121,7 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
}
DetailDaoHelper newDetailDaoHelper = new DetailDaoHelper(resourceType);
- ResourceDetail detail = newDetailDaoHelper.createDetail( _taggedResourceMgr.getResourceId(resourceId, resourceType), key, value);
-
- if (detail == null) {
- throw new UnsupportedOperationException("ResourceType " + resourceType + " doesn't support metadata");
-
- }
- newDetailDaoHelper.addDetail(detail);
-
+ newDetailDaoHelper.addDetail( _taggedResourceMgr.getResourceId(resourceId, resourceType), key, value);
}
return true;
@@ -166,39 +158,50 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
this.dao = (ResourceDetailsDao)_daoMap.get(resourceType);
}
- private void addDetail(ResourceDetail detail) {
- dao.addDetail(detail);
- }
-
private void removeDetail(long resourceId, String key) {
dao.removeDetail(resourceId, key);
}
- private List<? extends ResourceDetail> getDetails(long resourceId) {
- List<? extends ResourceDetail> detailList = new ArrayList<ResourceDetail>();
- detailList = dao.findDetailsList(resourceId);
- return detailList;
- }
-
private ResourceDetail getDetail(long resourceId, String key) {
return dao.findDetail(resourceId, key);
}
- private ResourceDetail createDetail(long resourceId, String key, String value) {
- return dao.createDetail(resourceId, key, value);
+ private void addDetail(long resourceId, String key, String value) {
+ dao.addDetail(resourceId, key, value);
+ }
+
+ private Map<String, String> getDetailsMap(long resourceId, Boolean forDisplay) {
+ if (forDisplay == null) {
+ return dao.listDetailsKeyPairs(resourceId);
+ } else {
+ return dao.listDetailsKeyPairs(resourceId, forDisplay);
+ }
}
+ private List<? extends ResourceDetail> getDetailsList(long resourceId, Boolean forDisplay) {
+ if (forDisplay == null) {
+ return dao.listDetails(resourceId);
+ } else {
+ return dao.listDetails(resourceId, forDisplay);
+ }
+ }
}
@Override
- public List<? extends ResourceDetail> getDetails(long resourceId, ResourceObjectType resourceType) {
+ public List<? extends ResourceDetail> getDetailsList(long resourceId, ResourceObjectType resourceType, Boolean forDisplay) {
DetailDaoHelper newDetailDaoHelper = new DetailDaoHelper(resourceType);
- return newDetailDaoHelper.getDetails(resourceId);
+ return newDetailDaoHelper.getDetailsList(resourceId, forDisplay);
}
@Override
public ResourceDetail getDetail(long resourceId, ResourceObjectType resourceType, String key) {
DetailDaoHelper newDetailDaoHelper = new DetailDaoHelper(resourceType);
- return newDetailDaoHelper.getDetail(resourceId, key);
+ return newDetailDaoHelper.getDetail(resourceId, key);
+ }
+
+ @Override
+ public Map<String, String> getDetailsMap(long resourceId, ResourceObjectType resourceType, Boolean forDisplay) {
+ DetailDaoHelper newDetailDaoHelper = new DetailDaoHelper(resourceType);
+ return newDetailDaoHelper.getDetailsMap(resourceId, forDisplay);
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 48fdc35..a93480b 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -2008,7 +2008,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
//1) Set router details
DomainRouterVO router = _routerDao.findById(profile.getVirtualMachine().getId());
- Map<String, String> details = _vmDetailsDao.findDetails(router.getId());
+ Map<String, String> details = _vmDetailsDao.listDetailsKeyPairs(router.getId());
router.setDetails(details);
//2) Prepare boot loader elements related with Control network
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/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 7342653..a301639 100755
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -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.findDetails(id);
+ Map<String, String> existingDetails = _storagePoolDetailsDao.listDetailsKeyPairs(id);
Set<String> existingKeys = existingDetails.keySet();
Map<String, String> existingDetailsToKeep = new HashMap<String, String>();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/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 007557d..7743dca 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -1006,7 +1006,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) {
SecondaryStorageVmVO vm = _secStorageVmDao.findById(profile.getId());
- Map<String, String> details = _vmDetailsDao.findDetails(vm.getId());
+ Map<String, String> details = _vmDetailsDao.listDetailsKeyPairs(vm.getId());
vm.setDetails(details);
DataStore secStore = _dataStoreMgr.getImageStore(dest.getDataCenter().getId());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java
index d32776a..50e557a 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -1639,7 +1639,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager,
for (String key : detailsStr.keySet()) {
details.add(new VMTemplateDetailVO(template.getId(), key, detailsStr.get(key)));
}
- _templateDetailsDao.addDetails(details);
+ _templateDetailsDao.saveDetails(details);
}
_resourceLimitMgr.incrementResourceCount(templateOwner.getId(), ResourceType.template);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index f202784..a0c7151 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -3002,7 +3002,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
@Override
public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) {
UserVmVO vm = _vmDao.findById(profile.getId());
- Map<String, String> details = _vmDetailsDao.findDetails(vm.getId());
+ Map<String, String> details = _vmDetailsDao.listDetailsKeyPairs(vm.getId());
vm.setDetails(details);
if (vm.getIsoId() != null) {
@@ -4202,7 +4202,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
private boolean isServiceOfferingUsingPlannerInPreferredMode(long serviceOfferingId) {
boolean preferred = false;
- Map<String, String> details = serviceOfferingDetailsDao.findDetails(serviceOfferingId);
+ Map<String, String> details = serviceOfferingDetailsDao.listDetailsKeyPairs(serviceOfferingId);
if (details != null && !details.isEmpty()) {
String preferredAttribute = details.get("ImplicitDedicationMode");
if (preferredAttribute != null && preferredAttribute.equals("Preferred")) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/591dcd1d/setup/db/db/schema-421to430.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-421to430.sql b/setup/db/db/schema-421to430.sql
index 0e78875..803f1d9 100644
--- a/setup/db/db/schema-421to430.sql
+++ b/setup/db/db/schema-421to430.sql
@@ -464,10 +464,20 @@ CREATE VIEW `cloud`.`storage_pool_view` AS
CREATE TABLE `cloud`.`firewall_rule_details` (
`id` bigint unsigned NOT NULL auto_increment,
- `firewall_rule_id` bigint unsigned NOT NULL COMMENT 'firewall rule id',
+ `firewall_rule_id` bigint unsigned NOT NULL COMMENT 'Firewall rule id',
`name` varchar(255) NOT NULL,
`value` varchar(1024) NOT NULL,
- `display_detail` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if detail can be displayed to the end user',
+ `display` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user',
PRIMARY KEY (`id`),
CONSTRAINT `fk_firewall_rule_details__firewall_rule_id` FOREIGN KEY `fk_firewall_rule_details__firewall_rule_id`(`firewall_rule_id`) REFERENCES `firewall_rules`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+
+ALTER TABLE `cloud`.`data_center_details` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user';
+ALTER TABLE `cloud`.`network_details` CHANGE `display_detail` `display` tinyint(0) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user';
+ALTER TABLE `cloud`.`vm_template_details` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user';
+ALTER TABLE `cloud`.`volume_details` CHANGE `display_detail` `display` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user';
+ALTER TABLE `cloud`.`nic_details` CHANGE `display_detail` `display` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user';
+ALTER TABLE `cloud`.`user_vm_details` CHANGE `display_detail` `display` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user';
+ALTER TABLE `cloud`.`service_offering_details` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user';
+ALTER TABLE `cloud`.`storage_pool_details` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if the detail can be displayed to the end user';