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:
prachi 2011-11-17 12:54:10 -08:00
parent b378964e81
commit b0cdb86d9e
6 changed files with 40 additions and 106 deletions

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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) {

View File

@ -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

View File

@ -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);

View File

@ -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;
}