Skip to content

Commit 2bf6690

Browse files
committed
only return details that are meant for display
Signed-off-by: Abhishek Kumar <[email protected]>
1 parent fe79499 commit 2bf6690

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed

engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.cloudstack.api.ResourceDetail;
2323

24+
import com.cloud.utils.Pair;
2425
import com.cloud.utils.db.GenericDao;
2526

2627
public interface ResourceDetailsDao<R extends ResourceDetail> extends GenericDao<R, Long> {
@@ -94,6 +95,8 @@ public interface ResourceDetailsDao<R extends ResourceDetail> extends GenericDao
9495

9596
Map<String, Boolean> listDetailsVisibility(long resourceId);
9697

98+
Pair<Map<String, String>, Map<String, String>> listDetailsKeyPairsWithVisibility(long resourceId);
99+
97100
void saveDetails(List<R> details);
98101

99102
void addDetail(long resourceId, String key, String value, boolean display);

engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import org.apache.commons.collections.CollectionUtils;
2525

26+
import com.cloud.utils.Pair;
2627
import com.cloud.utils.crypt.DBEncryptionUtil;
2728
import com.cloud.utils.db.GenericDaoBase;
2829
import com.cloud.utils.db.GenericSearchBuilder;
@@ -127,6 +128,19 @@ public Map<String, Boolean> listDetailsVisibility(long resourceId) {
127128
return details;
128129
}
129130

131+
@Override
132+
public Pair<Map<String, String>, Map<String, String>> listDetailsKeyPairsWithVisibility(long resourceId) {
133+
SearchCriteria<R> sc = AllFieldsSearch.create();
134+
sc.setParameters("resourceId", resourceId);
135+
List<R> results = search(sc, null);
136+
Map<Boolean, Map<String, String>> partitioned = results.stream()
137+
.collect(Collectors.partitioningBy(
138+
R::isDisplay,
139+
Collectors.toMap(R::getName, R::getValue)
140+
));
141+
return new Pair<>(partitioned.get(true), partitioned.get(false));
142+
}
143+
130144
public List<R> listDetails(long resourceId) {
131145
SearchCriteria<R> sc = AllFieldsSearch.create();
132146
sc.setParameters("resourceId", resourceId);

framework/extensions/src/main/java/org/apache/cloudstack/framework/extensions/manager/ExtensionsManagerImpl.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -459,11 +459,11 @@ protected Map<String, Object> getExternalAccessDetails(Map<String, String> actio
459459
if (resourceMap == null) {
460460
return externalDetails;
461461
}
462-
Map<String, String> resourceDetails = extensionResourceMapDetailsDao.listDetailsKeyPairs(resourceMap.getId());
462+
Map<String, String> resourceDetails = extensionResourceMapDetailsDao.listDetailsKeyPairs(resourceMap.getId(), true);
463463
if (MapUtils.isNotEmpty(resourceDetails)) {
464464
externalDetails.put(ApiConstants.RESOURCE_MAP, resourceDetails);
465465
}
466-
Map<String, String> extensionDetails = extensionDetailsDao.listDetailsKeyPairs(resourceMap.getExtensionId());
466+
Map<String, String> extensionDetails = extensionDetailsDao.listDetailsKeyPairs(resourceMap.getExtensionId(), true);
467467
externalDetails.put(ApiConstants.EXTENSION, extensionDetails);
468468
return externalDetails;
469469
}
@@ -779,7 +779,7 @@ public ExtensionResponse createExtensionResponse(Extension extension,
779779
extensionResourceResponse.setName(cluster.getName());
780780
}
781781
Map<String, String> details = extensionResourceMapDetailsDao.listDetailsKeyPairs(
782-
extensionResourceMapVO.getId());
782+
extensionResourceMapVO.getId(), true);
783783
if (MapUtils.isNotEmpty(details)) {
784784
extensionResourceResponse.setDetails(details);
785785
}
@@ -791,7 +791,7 @@ public ExtensionResponse createExtensionResponse(Extension extension,
791791
}
792792
if (viewDetails.contains(ApiConstants.ExtensionDetails.all) ||
793793
viewDetails.contains(ApiConstants.ExtensionDetails.external)) {
794-
Map<String, String> extensionDetails = extensionDetailsDao.listDetailsKeyPairs(extension.getId());
794+
Map<String, String> extensionDetails = extensionDetailsDao.listDetailsKeyPairs(extension.getId(), true);
795795
if (MapUtils.isNotEmpty(extensionDetails)) {
796796
response.setDetails(extensionDetails);
797797
}
@@ -1165,12 +1165,11 @@ public CustomActionResultResponse runCustomAction(RunCustomActionCmd cmd) {
11651165
}
11661166

11671167
List<ExtensionCustomAction.Parameter> actionParameters = null;
1168-
Map<String, String> details =
1169-
extensionCustomActionDetailsDao.listDetailsKeyPairs(customActionVO.getId());
1170-
if (details.containsKey(ApiConstants.PARAMETERS)) {
1168+
Pair<Map<String, String>, Map<String, String>> allDetails =
1169+
extensionCustomActionDetailsDao.listDetailsKeyPairsWithVisibility(customActionVO.getId());
1170+
if (allDetails.second().containsKey(ApiConstants.PARAMETERS)) {
11711171
actionParameters =
1172-
ExtensionCustomAction.Parameter.toListFromJson(details.get(ApiConstants.PARAMETERS));
1173-
details.remove(ApiConstants.PARAMETERS);
1172+
ExtensionCustomAction.Parameter.toListFromJson(allDetails.second().get(ApiConstants.PARAMETERS));
11741173
}
11751174
Map<String, Object> parameters = null;
11761175
if (CollectionUtils.isNotEmpty(actionParameters)) {
@@ -1185,7 +1184,7 @@ public CustomActionResultResponse runCustomAction(RunCustomActionCmd cmd) {
11851184
response.setSuccess(false);
11861185
result.put(ApiConstants.MESSAGE, getActionMessage(false, customActionVO, extensionVO,
11871186
actionResourceType, entity));
1188-
Map<String, Object> externalDetails = getExternalAccessDetails(details, hostId, extensionResource);
1187+
Map<String, Object> externalDetails = getExternalAccessDetails(allDetails.first(), hostId, extensionResource);
11891188
runCustomActionCommand.setParameters(parameters);
11901189
runCustomActionCommand.setExternalDetails(externalDetails);
11911190
try {
@@ -1236,8 +1235,9 @@ public ExtensionCustomActionResponse createCustomActionResponse(ExtensionCustomA
12361235
response.setExtensionId(extensionVO.getUuid());
12371236
response.setExtensionName(extensionVO.getName());
12381237
});
1239-
Optional.ofNullable(extensionCustomActionDetailsDao.findDetail(customAction.getId(), ApiConstants.PARAMETERS))
1240-
.map(ExtensionCustomActionDetailsVO::getValue)
1238+
Pair<Map<String, String>, Map<String, String>> allDetails =
1239+
extensionCustomActionDetailsDao.listDetailsKeyPairsWithVisibility(customAction.getId());
1240+
Optional.ofNullable(allDetails.second().get(ApiConstants.PARAMETERS))
12411241
.map(ExtensionCustomAction.Parameter::toListFromJson)
12421242
.ifPresent(parameters -> {
12431243
Set<ExtensionCustomActionParameterResponse> paramResponses = parameters.stream()
@@ -1246,9 +1246,7 @@ public ExtensionCustomActionResponse createCustomActionResponse(ExtensionCustomA
12461246
.collect(Collectors.toSet());
12471247
response.setParameters(paramResponses);
12481248
});
1249-
Map<String, String> details =
1250-
extensionCustomActionDetailsDao.listDetailsKeyPairs(customAction.getId(), true);
1251-
response.setDetails(details);
1249+
response.setDetails(allDetails.first());
12521250
response.setObjectName(ExtensionCustomAction.class.getSimpleName().toLowerCase());
12531251
return response;
12541252
}

0 commit comments

Comments
 (0)