mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Display capability info in listNetwork response (#3804)
* Display capability info in listNetwork response Co-authored-by: Rakesh Venkatesh <r.venkatesh@global.leaseweb.com> Co-authored-by: Rakesh Venkatesh <rakeshv@apache.org>
This commit is contained in:
parent
910d02466e
commit
56ef349b0e
@ -20,6 +20,7 @@ import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
|
|||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
@ -2166,6 +2167,27 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||||||
return response;
|
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
|
@Override
|
||||||
public NetworkResponse createNetworkResponse(ResponseView view, Network network) {
|
public NetworkResponse createNetworkResponse(ResponseView view, Network network) {
|
||||||
// need to get network profile in order to retrieve dns information from
|
// 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());
|
response.setDns2(profile.getDns2());
|
||||||
// populate capability
|
// populate capability
|
||||||
Map<Service, Map<Capability, String>> serviceCapabilitiesMap = ApiDBUtils.getNetworkCapabilities(network.getId(), network.getDataCenterId());
|
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>();
|
List<ServiceResponse> serviceResponses = new ArrayList<ServiceResponse>();
|
||||||
if (serviceCapabilitiesMap != null) {
|
if (serviceCapabilitiesMap != null) {
|
||||||
for (Map.Entry<Service, Map<Capability, String>>entry : serviceCapabilitiesMap.entrySet()) {
|
for (Map.Entry<Service, Map<Capability, String>>entry : serviceCapabilitiesMap.entrySet()) {
|
||||||
@ -2311,21 +2334,59 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||||||
serviceResponse.setName(service.getName());
|
serviceResponse.setName(service.getName());
|
||||||
|
|
||||||
// set list of capabilities for the service
|
// set list of capabilities for the service
|
||||||
List<CapabilityResponse> capabilityResponses = new ArrayList<CapabilityResponse>();
|
List<CapabilityResponse> capabilityResponses = new ArrayList<>();
|
||||||
Map<Capability, String> serviceCapabilities = entry.getValue();
|
Map<Capability, String> serviceCapabilities = entry.getValue();
|
||||||
if (serviceCapabilities != null) {
|
if (serviceCapabilities != null) {
|
||||||
for (Map.Entry<Capability,String> ser_cap_entries : serviceCapabilities.entrySet()) {
|
for (Map.Entry<Capability,String> ser_cap_entries : serviceCapabilities.entrySet()) {
|
||||||
Capability capability = ser_cap_entries.getKey();
|
Capability capability = ser_cap_entries.getKey();
|
||||||
CapabilityResponse capabilityResponse = new CapabilityResponse();
|
|
||||||
String capabilityValue = ser_cap_entries.getValue();
|
String capabilityValue = ser_cap_entries.getValue();
|
||||||
capabilityResponse.setName(capability.getName());
|
if (Service.Lb == service && capability.getName().equals(Capability.SupportedLBIsolation.getName())) {
|
||||||
capabilityResponse.setValue(capabilityValue);
|
capabilityValue = networkOffering.isDedicatedLB() ? "dedicated" : "shared";
|
||||||
capabilityResponse.setObjectName("capability");
|
}
|
||||||
capabilityResponses.add(capabilityResponse);
|
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
serviceResponse.setCapabilities(capabilityResponses);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.setProviders(providers);
|
||||||
|
|
||||||
serviceResponse.setObjectName("service");
|
serviceResponse.setObjectName("service");
|
||||||
serviceResponses.add(serviceResponse);
|
serviceResponses.add(serviceResponse);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user