mirror of https://github.com/apache/cloudstack.git
bug 12856: network offerings with services w/o providers support
status 12856: resolved fixed
This commit is contained in:
parent
3612fc12c8
commit
56b3561033
|
|
@ -120,9 +120,6 @@ public interface Network extends ControlledEntity {
|
|||
public static final Provider ElasticLoadBalancerVm = new Provider("ElasticLoadBalancerVm", false);
|
||||
public static final Provider SecurityGroupProvider = new Provider("SecurityGroupProvider", false);
|
||||
public static final Provider None = new Provider("None", false);
|
||||
|
||||
//the default provider
|
||||
public static final Provider defaultProvider = VirtualRouter;
|
||||
|
||||
private String name;
|
||||
private boolean isExternal;
|
||||
|
|
|
|||
|
|
@ -2608,9 +2608,11 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||
svcRsp.setName(service.getName());
|
||||
List<ProviderResponse> providers = new ArrayList<ProviderResponse>();
|
||||
for (Provider provider : serviceProviderMap.get(service)) {
|
||||
ProviderResponse providerRsp = new ProviderResponse();
|
||||
providerRsp.setName(provider.getName());
|
||||
providers.add(providerRsp);
|
||||
if (provider != null) {
|
||||
ProviderResponse providerRsp = new ProviderResponse();
|
||||
providerRsp.setName(provider.getName());
|
||||
providers.add(providerRsp);
|
||||
}
|
||||
}
|
||||
svcRsp.setProviders(providers);
|
||||
|
||||
|
|
|
|||
|
|
@ -2950,7 +2950,6 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
|
|||
// configure service provider map
|
||||
Map<Network.Service, Set<Network.Provider>> serviceProviderMap = new HashMap<Network.Service, Set<Network.Provider>>();
|
||||
Set<Network.Provider> defaultProviders = new HashSet<Network.Provider>();
|
||||
defaultProviders.add(Network.Provider.defaultProvider);
|
||||
|
||||
//populate the services first
|
||||
for (String serviceName : cmd.getSupportedServices()) {
|
||||
|
|
@ -2993,8 +2992,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
|
|||
}
|
||||
for (String prvNameStr : svcPrv.get(serviceStr)) {
|
||||
// check if provider is supported
|
||||
Network.Provider provider;
|
||||
provider = Network.Provider.getProvider(prvNameStr);
|
||||
Network.Provider provider = Network.Provider.getProvider(prvNameStr);
|
||||
if (provider == null) {
|
||||
throw new InvalidParameterValueException("Invalid service provider: " + prvNameStr);
|
||||
}
|
||||
|
|
@ -3155,11 +3153,18 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
|
|||
// populate services and providers
|
||||
if (serviceProviderMap != null) {
|
||||
for (Network.Service service : serviceProviderMap.keySet()) {
|
||||
for (Network.Provider provider : serviceProviderMap.get(service)) {
|
||||
NetworkOfferingServiceMapVO offService = new NetworkOfferingServiceMapVO(offering.getId(), service, provider);
|
||||
Set<Provider> providers = serviceProviderMap.get(service);
|
||||
if (providers != null && !providers.isEmpty()) {
|
||||
for (Network.Provider provider : providers) {
|
||||
NetworkOfferingServiceMapVO offService = new NetworkOfferingServiceMapVO(offering.getId(), service, provider);
|
||||
_ntwkOffServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService + " with provider " + provider.getName());
|
||||
}
|
||||
} else {
|
||||
NetworkOfferingServiceMapVO offService = new NetworkOfferingServiceMapVO(offering.getId(), service, null);
|
||||
_ntwkOffServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService);
|
||||
}
|
||||
s_logger.trace("Added service for the network offering: " + offService + " with null provider");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -276,4 +276,6 @@ public interface NetworkManager extends NetworkService {
|
|||
|
||||
void checkCapabilityForProvider(Set<Provider> providers, Service service,
|
||||
Capability cap, String capValue);
|
||||
|
||||
Provider getDefaultUniqueProviderForService(String serviceName);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4640,6 +4640,19 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
|
||||
return new ArrayList<Provider>(supportedProviders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Provider getDefaultUniqueProviderForService(String serviceName) {
|
||||
List<? extends Provider> providers = listSupportedNetworkServiceProviders(serviceName);
|
||||
if (providers.isEmpty()) {
|
||||
throw new CloudRuntimeException("No providers supporting service " + serviceName + " found in cloudStack");
|
||||
}
|
||||
if (providers.size() > 1) {
|
||||
throw new CloudRuntimeException("More than 1 provider supporting service " + serviceName + " found in cloudStack");
|
||||
}
|
||||
|
||||
return providers.get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@DB
|
||||
|
|
@ -5568,6 +5581,10 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
|
||||
String service = serviceMap.getService();
|
||||
String provider = serviceMap.getProvider();
|
||||
|
||||
if (provider == null) {
|
||||
provider = getDefaultUniqueProviderForService(service).getName();
|
||||
}
|
||||
|
||||
//check that provider is supported
|
||||
if (checkPhysicalNetwork) {
|
||||
|
|
|
|||
|
|
@ -77,7 +77,9 @@ public class NetworkOfferingServiceMapVO {
|
|||
public NetworkOfferingServiceMapVO(long networkOfferingId, Service service, Provider provider) {
|
||||
this.networkOfferingId = networkOfferingId;
|
||||
this.service = service.getName();
|
||||
this.provider = provider.getName();
|
||||
if (provider != null) {
|
||||
this.provider = provider.getName();
|
||||
}
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue