X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=neutronvpn%2Fneutronvpn-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fneutronvpn%2FNeutronvpnUtils.java;h=3acc5ce43b90c8ca480945b7110a2f34266a497d;hb=00790a95c5e403cb62d2cc544af55e8ab3fef03b;hp=f9e7e3d32966bbe412e650428cb1c06c4a49e140;hpb=4110307879cad1aa54943aedbf937b2f21575b4c;p=vpnservice.git diff --git a/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnUtils.java b/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnUtils.java index f9e7e3d3..3acc5ce4 100644 --- a/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnUtils.java +++ b/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnUtils.java @@ -20,13 +20,17 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces. import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.binding.rev150712.PortBindingExtension; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.Routers; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.Router; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.RouterKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeBase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeVxlan; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.Networks; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.Network; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.NetworkKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.provider.ext.rev150712.NetworkProviderExtension; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.provider.ext.rev150712.neutron.networks.network.Segments; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.Ports; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.PortKey; @@ -68,6 +72,7 @@ import java.util.concurrent.Future; public class NeutronvpnUtils { private static final Logger logger = LoggerFactory.getLogger(NeutronvpnUtils.class); + public static final String VNIC_TYPE_NORMAL = "normal"; protected static Subnetmap getSubnetmap(DataBroker broker, Uuid subnetId) { InstanceIdentifier id = buildSubnetMapIdentifier(subnetId); @@ -188,6 +193,17 @@ public class NeutronvpnUtils { NetworkProviderExtension providerExtension = network.getAugmentation(NetworkProviderExtension.class); if (providerExtension != null) { segmentationId = providerExtension.getSegmentationId(); + if (segmentationId == null) { + List providerSegments = providerExtension.getSegments(); + if (providerSegments != null && providerSegments.size() > 0) { + for (Segments providerSegment: providerSegments) { + if (isNetworkSegmentTypeVxlan(providerSegment)) { + segmentationId = providerSegment.getSegmentationId(); + break; + } + } + } + } } return segmentationId; } @@ -227,6 +243,16 @@ public class NeutronvpnUtils { return new StringBuilder().append("tap").append(tapId).toString(); } + protected static boolean isPortVnicTypeNormal(Port port) { + PortBindingExtension portBinding = port.getAugmentation(PortBindingExtension.class); + if(portBinding == null || portBinding.getVnicType() == null) { + // By default, VNIC_TYPE is NORMAL + return true; + } + String vnicType = portBinding.getVnicType().trim().toLowerCase(); + return vnicType.equals(VNIC_TYPE_NORMAL); + } + protected static boolean lock(LockManagerService lockManager, String lockName) { TryLockInput input = new TryLockInputBuilder().setLockName(lockName).setTime(5L).setTimeUnit (TimeUnits.Milliseconds).build(); @@ -340,4 +366,8 @@ public class NeutronvpnUtils { return result; } + static boolean isNetworkSegmentTypeVxlan(Segments providerSegment) { + Class networkType = providerSegment.getNetworkType(); + return (networkType != null && networkType.isAssignableFrom(NetworkTypeVxlan.class)); + } }