Default service provider to VirtualRouter (should make this parameter configurable in the future)

This commit is contained in:
alena 2011-10-12 17:14:51 -07:00
parent 7433d5314a
commit 2d228dfcbb
4 changed files with 81 additions and 39 deletions

View File

@ -18,6 +18,9 @@
package com.cloud.api.commands;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.log4j.Logger;
@ -28,6 +31,7 @@ import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.NetworkOfferingResponse;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.offering.NetworkOffering;
import com.cloud.offering.NetworkOffering.Availability;
import com.cloud.user.Account;
@ -127,7 +131,7 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
}
public String getAvailability() {
return availability == null ? Availability.Required.toString() : availability;
return availability == null ? Availability.Optional.toString() : availability;
}
public Integer getNetworkRate() {
@ -147,43 +151,56 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
}
public Boolean getDhcpService() {
return dhcpService;
return dhcpService == null ? false : dhcpService;
}
public Boolean getDnsService() {
return dnsService;
return dnsService == null ? false : dnsService;
}
public Boolean getGatewayService() {
return gatewayService;
return gatewayService == null ? false : gatewayService;
}
public Boolean getFirewallService() {
return firewallService;
return firewallService == null ? false : firewallService;
}
public Boolean getLbService() {
return lbService;
return lbService == null ? false : lbService;
}
public Boolean getUserdataService() {
return userdataService;
return userdataService == null ? false : userdataService;
}
public Boolean getSourceNatService() {
return sourceNatService;
return sourceNatService == null ? false : sourceNatService;
}
public Boolean getVpnService() {
return vpnService;
return vpnService == null ? false : vpnService;
}
public Map getServiceProviderList() {
return serviceProviderList;
public Map<String, String> getServiceProviderList() {
Map<String, String> serviceProviderMap = null;
if (serviceProviderList != null && !serviceProviderList.isEmpty()) {
serviceProviderMap = new HashMap<String, String>();
Collection servicesCollection = serviceProviderList.values();
Iterator iter = servicesCollection.iterator();
while (iter.hasNext()) {
HashMap<String, String> services = (HashMap<String, String>) iter.next();
String service = (String)services.get("service");
String provider = (String) services.get("provider");
serviceProviderMap.put(service, provider);
}
}
return serviceProviderMap;
}
public Boolean getSecurityGroupEnabled() {
return securityGroupEnabled;
return securityGroupEnabled == null ? false : securityGroupEnabled;
}
/////////////////////////////////////////////////////

View File

@ -109,6 +109,7 @@ public interface Network extends ControlledEntity {
public static final Provider ExternalDhcpServer = new Provider("ExternalDhcpServer");
public static final Provider ExternalGateWay = new Provider("ExternalGateWay");
public static final Provider ElasticLoadBalancerVm = new Provider("ElasticLoadBalancerVm");
public static final Provider defaultProvider = VirtualRouter;
public static final Provider None = new Provider("None");

View File

@ -2893,40 +2893,57 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
Map<Network.Service, Network.Provider> serviceProviderMap = new HashMap<Network.Service, Network.Provider>();
//populate all services first
if (cmd.getDhcpService()) {
serviceProviderMap.put(Network.Service.Dhcp, null);
} else if (cmd.getDnsService()) {
serviceProviderMap.put(Network.Service.Dns, null);
} else if (cmd.getFirewallService()) {
serviceProviderMap.put(Network.Service.Firewall, null);
} else if (cmd.getGatewayService()) {
serviceProviderMap.put(Network.Service.Gateway, null);
} else if (cmd.getLbService()) {
serviceProviderMap.put(Network.Service.Lb, null);
} else if (cmd.getSourceNatService()) {
serviceProviderMap.put(Network.Service.SourceNat, null);
} else if (cmd.getUserdataService()) {
serviceProviderMap.put(Network.Service.UserData, null);
} else if (cmd.getVpnService()) {
serviceProviderMap.put(Network.Service.Vpn, null);
serviceProviderMap.put(Network.Service.Dhcp, Network.Provider.defaultProvider);
}
if (cmd.getDnsService()) {
serviceProviderMap.put(Network.Service.Dns, Network.Provider.defaultProvider);
}
if (cmd.getFirewallService()) {
serviceProviderMap.put(Network.Service.Firewall, Network.Provider.defaultProvider);
}
if (cmd.getGatewayService()) {
serviceProviderMap.put(Network.Service.Gateway, Network.Provider.defaultProvider);
}
if (cmd.getLbService()) {
serviceProviderMap.put(Network.Service.Lb, Network.Provider.defaultProvider);
}
if (cmd.getSourceNatService()) {
serviceProviderMap.put(Network.Service.SourceNat, Network.Provider.defaultProvider);
}
if (cmd.getUserdataService()) {
serviceProviderMap.put(Network.Service.UserData, Network.Provider.defaultProvider);
}
if (cmd.getVpnService()) {
serviceProviderMap.put(Network.Service.Vpn, Network.Provider.defaultProvider);
}
//populate providers
Map<String, String> svcPrv = (Map<String, String>)cmd.getServiceProviderList();
for (String serviceStr : svcPrv.keySet()) {
if (serviceProviderMap.containsKey(serviceStr)) {
if (svcPrv != null) {
for (String serviceStr : svcPrv.keySet()) {
Network.Service service = Network.Service.getService(serviceStr);
//check if provider is supported
Network.Provider provider;
String prvNameStr = svcPrv.get(serviceStr);
provider = Network.Provider.getProvider(prvNameStr);
if (provider == null) {
throw new InvalidParameterValueException("Invalid service provider: " + prvNameStr);
}
serviceProviderMap.put(service, provider);
} else {
throw new InvalidParameterValueException("Service " + serviceStr + " is not enabled for the network offering, can't add a provider to it");
if (serviceProviderMap.containsKey(service)) {
//check if provider is supported
Network.Provider provider;
String prvNameStr = svcPrv.get(serviceStr);
provider = Network.Provider.getProvider(prvNameStr);
if (provider == null) {
throw new InvalidParameterValueException("Invalid service provider: " + prvNameStr);
}
serviceProviderMap.put(service, provider);
} else {
throw new InvalidParameterValueException("Service " + serviceStr + " is not enabled for the network offering, can't add a provider to it");
}
}
}
return createNetworkOffering(userId, name, displayText, trafficType, tags, maxConnections, specifyVlan, availability, guestIpType, networkRate, serviceProviderMap, false, isSecurityGroupEnabled);
}

View File

@ -124,4 +124,11 @@ public class NetworkOfferingDaoImpl extends GenericDaoBase<NetworkOfferingVO, Lo
return listBy(sc, null);
}
@Override
public boolean remove(Long networkOfferingId){
NetworkOfferingVO offering = findById(networkOfferingId);
offering.setName(null);
update(networkOfferingId, offering);
return super.remove(networkOfferingId);
}
}