mirror of https://github.com/apache/cloudstack.git
Merging listSupportedNetworkServices and listSupportedNetworkServiceProviders.
listSupportedNetworkServiceProviders returs list of services with providers and capabilities of each service. It supports 2 parameters: -service : list providers and capabilities of this service -provider: list services of this provider - if none is specified, lists all services supported
This commit is contained in:
parent
b378964e81
commit
b0cdb86d9e
|
|
@ -85,7 +85,6 @@ import com.cloud.host.Host;
|
|||
import com.cloud.hypervisor.HypervisorCapabilities;
|
||||
import com.cloud.network.IpAddress;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.Provider;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.PhysicalNetwork;
|
||||
import com.cloud.network.PhysicalNetworkServiceProvider;
|
||||
|
|
@ -254,8 +253,6 @@ public interface ResponseGenerator {
|
|||
|
||||
ServiceResponse createNetworkServiceResponse(Service service);
|
||||
|
||||
ProviderResponse createNetworkServiceProviderResponse(Provider serviceProvider);
|
||||
|
||||
ProviderResponse createNetworkServiceProviderResponse(PhysicalNetworkServiceProvider result);
|
||||
|
||||
TrafficTypeResponse createTrafficTypeResponse(PhysicalNetworkTrafficType result);
|
||||
|
|
|
|||
|
|
@ -1,88 +0,0 @@
|
|||
/**
|
||||
* Copyright (C) 2011 Citrix Systems, Inc. All rights reserved.
|
||||
*
|
||||
* This software is licensed under the GNU General Public License v3 or later.
|
||||
*
|
||||
* It is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or any later version.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.cloud.api.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.api.ApiConstants;
|
||||
import com.cloud.api.BaseListCmd;
|
||||
import com.cloud.api.Implementation;
|
||||
import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.ProviderResponse;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.user.Account;
|
||||
|
||||
|
||||
@Implementation(description="Lists all network serviceproviders supported by CloudStack or for the given service.", responseObject=ProviderResponse.class)
|
||||
public class ListSupportedNetworkServiceProvidersCmd extends BaseListCmd {
|
||||
public static final Logger s_logger = Logger.getLogger(ListSupportedNetworkServiceProvidersCmd.class.getName());
|
||||
private static final String _name = "listsupportednetworkserviceprovidersresponse";
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name=ApiConstants.SERVICE_NAME, type=CommandType.STRING, description="network service name")
|
||||
private String serviceName;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
|
||||
public void setServiceName(String serviceName) {
|
||||
this.serviceName = serviceName;
|
||||
}
|
||||
|
||||
public String getServiceName() {
|
||||
return serviceName;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////// API Implementation///////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
@Override
|
||||
public String getCommandName() {
|
||||
return _name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getEntityOwnerId() {
|
||||
return Account.ACCOUNT_ID_SYSTEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends Network.Provider> serviceProviders = _networkService.listSupportedNetworkServiceProviders(getServiceName());
|
||||
ListResponse<ProviderResponse> response = new ListResponse<ProviderResponse>();
|
||||
List<ProviderResponse> serviceProvidersResponses = new ArrayList<ProviderResponse>();
|
||||
for (Network.Provider serviceProvider : serviceProviders) {
|
||||
ProviderResponse serviceProviderResponse = _responseGenerator.createNetworkServiceProviderResponse(serviceProvider);
|
||||
serviceProvidersResponses.add(serviceProviderResponse);
|
||||
}
|
||||
|
||||
response.setResponses(serviceProvidersResponses);
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
}
|
||||
|
|
@ -29,6 +29,7 @@ import com.cloud.api.Implementation;
|
|||
import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.ServiceResponse;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.user.Account;
|
||||
|
||||
|
|
@ -40,6 +41,9 @@ public class ListSupportedNetworkServicesCmd extends BaseListCmd {
|
|||
|
||||
@Parameter(name=ApiConstants.PROVIDER, type=CommandType.STRING, description="network service provider name")
|
||||
private String providerName;
|
||||
|
||||
@Parameter(name=ApiConstants.SERVICE, type=CommandType.STRING, description="network service name to list providers and capabilities of")
|
||||
private String serviceName;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
//////////////// API parameters /////////////////////
|
||||
|
|
@ -58,6 +62,11 @@ public class ListSupportedNetworkServicesCmd extends BaseListCmd {
|
|||
return providerName;
|
||||
}
|
||||
|
||||
|
||||
public String getServiceName() {
|
||||
return serviceName;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////// API Implementation///////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -73,7 +82,22 @@ public class ListSupportedNetworkServicesCmd extends BaseListCmd {
|
|||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends Network.Service> services = _networkService.listNetworkServices(getProviderName());
|
||||
List<? extends Network.Service> services;
|
||||
if(getServiceName() != null){
|
||||
Network.Service service = null;
|
||||
if(serviceName != null){
|
||||
service = Network.Service.getService(serviceName);
|
||||
if(service == null){
|
||||
throw new InvalidParameterValueException("Invalid Network Service=" + serviceName);
|
||||
}
|
||||
}
|
||||
List<Network.Service> serviceList = new ArrayList<Network.Service>();
|
||||
serviceList.add(service);
|
||||
services = serviceList;
|
||||
}else{
|
||||
services = _networkService.listNetworkServices(getProviderName());
|
||||
}
|
||||
|
||||
ListResponse<ServiceResponse> response = new ListResponse<ServiceResponse>();
|
||||
List<ServiceResponse> servicesResponses = new ArrayList<ServiceResponse>();
|
||||
for (Network.Service service : services) {
|
||||
|
|
|
|||
|
|
@ -297,7 +297,6 @@ updatePhysicalNetwork=com.cloud.api.commands.UpdatePhysicalNetworkCmd;1
|
|||
|
||||
#### Physical Network Service Provider commands
|
||||
listSupportedNetworkServices=com.cloud.api.commands.ListSupportedNetworkServicesCmd;1
|
||||
listSupportedNetworkServiceProviders=com.cloud.api.commands.ListSupportedNetworkServiceProvidersCmd;1
|
||||
addNetworkServiceProvider=com.cloud.api.commands.AddNetworkServiceProviderCmd;1
|
||||
deleteNetworkServiceProvider=com.cloud.api.commands.DeleteNetworkServiceProviderCmd;1
|
||||
listNetworkServiceProviders=com.cloud.api.commands.ListNetworkServiceProvidersCmd;1
|
||||
|
|
|
|||
|
|
@ -688,6 +688,10 @@ public class ApiDBUtils {
|
|||
public static List<Service> getElementServices(Provider provider) {
|
||||
return _networkMgr.getElementServices(provider);
|
||||
}
|
||||
|
||||
public static List<? extends Provider> getProvidersForService(Service service) {
|
||||
return _networkMgr.listSupportedNetworkServiceProviders(service.getName());
|
||||
}
|
||||
|
||||
public static boolean canElementEnableIndividualServices(Provider serviceProvider) {
|
||||
return _networkMgr.canElementEnableIndividualServices(serviceProvider);
|
||||
|
|
|
|||
|
|
@ -2832,28 +2832,26 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||
capabilityResponses.add(capabilityResponse);
|
||||
}
|
||||
response.setCapabilities(capabilityResponses);
|
||||
|
||||
|
||||
//set list of providers providing this service
|
||||
List<? extends Network.Provider> serviceProviders = ApiDBUtils.getProvidersForService(service);
|
||||
List<ProviderResponse> serviceProvidersResponses = new ArrayList<ProviderResponse>();
|
||||
for (Network.Provider serviceProvider : serviceProviders) {
|
||||
ProviderResponse serviceProviderResponse = createServiceProviderResponse(serviceProvider);
|
||||
serviceProvidersResponses.add(serviceProviderResponse);
|
||||
}
|
||||
response.setProviders(serviceProvidersResponses);
|
||||
|
||||
response.setObjectName("networkservice");
|
||||
return response;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProviderResponse createNetworkServiceProviderResponse(Provider serviceProvider) {
|
||||
private ProviderResponse createServiceProviderResponse(Provider serviceProvider) {
|
||||
ProviderResponse response = new ProviderResponse();
|
||||
response.setName(serviceProvider.getName());
|
||||
|
||||
//set details from network element
|
||||
List<Service> supportedServices = ApiDBUtils.getElementServices(serviceProvider);
|
||||
List<String> services = new ArrayList<String>();
|
||||
for (Service service: supportedServices){
|
||||
services.add(service.getName());
|
||||
}
|
||||
response.setServices(services);
|
||||
boolean canEnableIndividualServices = ApiDBUtils.canElementEnableIndividualServices(serviceProvider);
|
||||
response.setCanEnableIndividualServices(canEnableIndividualServices);
|
||||
|
||||
response.setObjectName("networkserviceprovider");
|
||||
return response;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue