You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by su...@apache.org on 2021/09/22 09:24:59 UTC
[cloudstack] branch main updated: Display capability info in
listNetwork response (#3804)
This is an automated email from the ASF dual-hosted git repository.
sureshanaparti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 56ef349 Display capability info in listNetwork response (#3804)
56ef349 is described below
commit 56ef349b0e49d00d21c63d2c2ef7bee6669e82a2
Author: Rakesh <ra...@gmail.com>
AuthorDate: Wed Sep 22 11:24:34 2021 +0200
Display capability info in listNetwork response (#3804)
* Display capability info in listNetwork response
Co-authored-by: Rakesh Venkatesh <r....@global.leaseweb.com>
Co-authored-by: Rakesh Venkatesh <ra...@apache.org>
---
.../main/java/com/cloud/api/ApiResponseHelper.java | 75 ++++++++++++++++++++--
1 file changed, 68 insertions(+), 7 deletions(-)
diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
index af4402a..95aebc8 100644
--- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
@@ -20,6 +20,7 @@ import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
import java.text.DecimalFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.EnumSet;
@@ -2166,6 +2167,27 @@ public class ApiResponseHelper implements ResponseGenerator {
return response;
}
+ private void createCapabilityResponse(List<CapabilityResponse> capabilityResponses,
+ String name,
+ String value,
+ boolean canChoose,
+ String objectName) {
+ CapabilityResponse capabilityResponse = new CapabilityResponse();
+ capabilityResponse.setName(name);
+ capabilityResponse.setValue(value);
+ capabilityResponse.setCanChoose(canChoose);
+ capabilityResponse.setObjectName(objectName);
+
+ capabilityResponses.add(capabilityResponse);
+ }
+
+ private void createCapabilityResponse(List<CapabilityResponse> capabilityResponses,
+ String name,
+ String value,
+ boolean canChoose) {
+ createCapabilityResponse(capabilityResponses, name, value, canChoose, null);
+ }
+
@Override
public NetworkResponse createNetworkResponse(ResponseView view, Network network) {
// need to get network profile in order to retrieve dns information from
@@ -2299,6 +2321,7 @@ public class ApiResponseHelper implements ResponseGenerator {
response.setDns2(profile.getDns2());
// populate capability
Map<Service, Map<Capability, String>> serviceCapabilitiesMap = ApiDBUtils.getNetworkCapabilities(network.getId(), network.getDataCenterId());
+ Map<Service, Set<Provider>> serviceProviderMap = ApiDBUtils.listNetworkOfferingServices(network.getNetworkOfferingId());
List<ServiceResponse> serviceResponses = new ArrayList<ServiceResponse>();
if (serviceCapabilitiesMap != null) {
for (Map.Entry<Service, Map<Capability, String>>entry : serviceCapabilitiesMap.entrySet()) {
@@ -2311,20 +2334,58 @@ public class ApiResponseHelper implements ResponseGenerator {
serviceResponse.setName(service.getName());
// set list of capabilities for the service
- List<CapabilityResponse> capabilityResponses = new ArrayList<CapabilityResponse>();
+ List<CapabilityResponse> capabilityResponses = new ArrayList<>();
Map<Capability, String> serviceCapabilities = entry.getValue();
if (serviceCapabilities != null) {
for (Map.Entry<Capability,String> ser_cap_entries : serviceCapabilities.entrySet()) {
Capability capability = ser_cap_entries.getKey();
- CapabilityResponse capabilityResponse = new CapabilityResponse();
String capabilityValue = ser_cap_entries.getValue();
- capabilityResponse.setName(capability.getName());
- capabilityResponse.setValue(capabilityValue);
- capabilityResponse.setObjectName("capability");
- capabilityResponses.add(capabilityResponse);
+ if (Service.Lb == service && capability.getName().equals(Capability.SupportedLBIsolation.getName())) {
+ capabilityValue = networkOffering.isDedicatedLB() ? "dedicated" : "shared";
+ }
+
+ Set<String> capabilitySet = new HashSet<>(Arrays.asList(Capability.SupportedLBIsolation.getName(),
+ Capability.SupportedSourceNatTypes.getName(),
+ Capability.RedundantRouter.getName()));
+ boolean canChoose = capabilitySet.contains(capability.getName());
+
+ createCapabilityResponse(capabilityResponses, capability.getName(),
+ capabilityValue, canChoose, "capability");
+ }
+ }
+
+ if (Service.SourceNat == service) {
+ // overwrite
+ capabilityResponses = new ArrayList<>();
+ createCapabilityResponse(capabilityResponses, Capability.SupportedSourceNatTypes.getName(),
+ networkOffering.isSharedSourceNat() ? "perzone" : "peraccount", true);
+
+ createCapabilityResponse(capabilityResponses, Capability.RedundantRouter.getName(),
+ networkOffering.isRedundantRouter() ? "true" : "false", true);
+ } else if (service == Service.StaticNat) {
+ createCapabilityResponse(capabilityResponses, Capability.ElasticIp.getName(),
+ networkOffering.isElasticIp() ? "true" : "false", false);
+
+ createCapabilityResponse(capabilityResponses, Capability.AssociatePublicIP.getName(),
+ networkOffering.isAssociatePublicIP() ? "true" : "false", false);
+ } else if (Service.Lb == service) {
+ createCapabilityResponse(capabilityResponses, Capability.ElasticLb.getName(),
+ networkOffering.isElasticLb() ? "true" : "false", false);
+
+ createCapabilityResponse(capabilityResponses, Capability.InlineMode.getName(),
+ networkOffering.isInline() ? "true" : "false", false);
+ }
+ serviceResponse.setCapabilities(capabilityResponses);
+
+ List<ProviderResponse> providers = new ArrayList<>();
+ for (Provider provider : serviceProviderMap.get(service)) {
+ if (provider != null) {
+ ProviderResponse providerRsp = new ProviderResponse();
+ providerRsp.setName(provider.getName());
+ providers.add(providerRsp);
}
- serviceResponse.setCapabilities(capabilityResponses);
}
+ serviceResponse.setProviders(providers);
serviceResponse.setObjectName("service");
serviceResponses.add(serviceResponse);