diff --git a/api/src/com/cloud/api/ResponseGenerator.java b/api/src/com/cloud/api/ResponseGenerator.java index b72eb06bf11..0e6733ff3e9 100755 --- a/api/src/com/cloud/api/ResponseGenerator.java +++ b/api/src/com/cloud/api/ResponseGenerator.java @@ -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); diff --git a/api/src/com/cloud/api/commands/ListSupportedNetworkServiceProvidersCmd.java b/api/src/com/cloud/api/commands/ListSupportedNetworkServiceProvidersCmd.java deleted file mode 100644 index fd64e217237..00000000000 --- a/api/src/com/cloud/api/commands/ListSupportedNetworkServiceProvidersCmd.java +++ /dev/null @@ -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 . - * - */ - -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 serviceProviders = _networkService.listSupportedNetworkServiceProviders(getServiceName()); - ListResponse response = new ListResponse(); - List serviceProvidersResponses = new ArrayList(); - for (Network.Provider serviceProvider : serviceProviders) { - ProviderResponse serviceProviderResponse = _responseGenerator.createNetworkServiceProviderResponse(serviceProvider); - serviceProvidersResponses.add(serviceProviderResponse); - } - - response.setResponses(serviceProvidersResponses); - response.setResponseName(getCommandName()); - this.setResponseObject(response); - } -} diff --git a/api/src/com/cloud/api/commands/ListSupportedNetworkServicesCmd.java b/api/src/com/cloud/api/commands/ListSupportedNetworkServicesCmd.java index 13a869fb82d..8aa6dad8e11 100644 --- a/api/src/com/cloud/api/commands/ListSupportedNetworkServicesCmd.java +++ b/api/src/com/cloud/api/commands/ListSupportedNetworkServicesCmd.java @@ -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 services = _networkService.listNetworkServices(getProviderName()); + List 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 serviceList = new ArrayList(); + serviceList.add(service); + services = serviceList; + }else{ + services = _networkService.listNetworkServices(getProviderName()); + } + ListResponse response = new ListResponse(); List servicesResponses = new ArrayList(); for (Network.Service service : services) { diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in index ecf58492611..ba8b099e52c 100755 --- a/client/tomcatconf/commands.properties.in +++ b/client/tomcatconf/commands.properties.in @@ -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 diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 6015f5ac8a6..bc4bffde878 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -688,6 +688,10 @@ public class ApiDBUtils { public static List getElementServices(Provider provider) { return _networkMgr.getElementServices(provider); } + + public static List getProvidersForService(Service service) { + return _networkMgr.listSupportedNetworkServiceProviders(service.getName()); + } public static boolean canElementEnableIndividualServices(Provider serviceProvider) { return _networkMgr.canElementEnableIndividualServices(serviceProvider); diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index fa5722b9085..decaca7f407 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -2832,28 +2832,26 @@ public class ApiResponseHelper implements ResponseGenerator { capabilityResponses.add(capabilityResponse); } response.setCapabilities(capabilityResponses); - + + //set list of providers providing this service + List serviceProviders = ApiDBUtils.getProvidersForService(service); + List serviceProvidersResponses = new ArrayList(); + 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 supportedServices = ApiDBUtils.getElementServices(serviceProvider); - List services = new ArrayList(); - for (Service service: supportedServices){ - services.add(service.getName()); - } - response.setServices(services); boolean canEnableIndividualServices = ApiDBUtils.canElementEnableIndividualServices(serviceProvider); response.setCanEnableIndividualServices(canEnableIndividualServices); - - response.setObjectName("networkserviceprovider"); return response; }