network: allow advanced zones with security groups and VXLAN isolation type (#2693)

Not possible to deploy an Advanced zone with Security Groups, and VXLAN isolation method on KVM. Exception: "Unable to convert network offering with specified id to network profile" is logged.
This commit is contained in:
Nicolas Vazquez 2018-06-08 04:43:25 -03:00 committed by Rohit Yadav
parent 779649f5ee
commit a5856a6447

View File

@ -133,9 +133,20 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
return TrafficTypes; return TrafficTypes;
} }
/**
* True for Advanced zones, with VXLAN isolation method and Security Groups enabled
*/
private boolean isMyIsolationMethodVxlanWithSecurityGroups(NetworkOffering offering, DataCenter dc, PhysicalNetwork physnet) {
return dc.getNetworkType().equals(NetworkType.Advanced) &&
_networkModel.areServicesSupportedByNetworkOffering(offering.getId(), Service.SecurityGroup) &&
physnet.getIsolationMethods().contains("VXLAN");
}
protected boolean canHandle(NetworkOffering offering, DataCenter dc, PhysicalNetwork physnet) { protected boolean canHandle(NetworkOffering offering, DataCenter dc, PhysicalNetwork physnet) {
// this guru handles only Guest networks in Advance zone with source nat service disabled // this guru handles only Guest networks in Advance zone with source nat service disabled
if (dc.getNetworkType() == NetworkType.Advanced && isMyTrafficType(offering.getTrafficType()) && isMyIsolationMethod(physnet) && offering.getGuestType() == GuestType.Shared boolean vxlanWithSecurityGroups = isMyIsolationMethodVxlanWithSecurityGroups(offering, dc, physnet);
if (dc.getNetworkType() == NetworkType.Advanced && isMyTrafficType(offering.getTrafficType()) &&
(isMyIsolationMethod(physnet) || vxlanWithSecurityGroups) && offering.getGuestType() == GuestType.Shared
&& !_ntwkOfferingSrvcDao.isProviderForNetworkOffering(offering.getId(), Network.Provider.NuageVsp) && !_ntwkOfferingSrvcDao.isProviderForNetworkOffering(offering.getId(), Network.Provider.NuageVsp)
&& !_ntwkOfferingSrvcDao.isProviderForNetworkOffering(offering.getId(), Network.Provider.NiciraNvp)) { && !_ntwkOfferingSrvcDao.isProviderForNetworkOffering(offering.getId(), Network.Provider.NiciraNvp)) {
return true; return true;