X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=neutronvpn%2Fneutronvpn-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fneutronvpn%2FNeutronPortChangeListener.java;h=c4ba484b8ea6a103d6e9bea3ab93ffa9ef0c3e4f;hb=0c3fd2f89bcc0ee030ed8edcb007091b59cc665e;hp=50dc8ad6f099e2847e85cefe252f37362fe949a0;hpb=15efaff98fdbbfa3471712ef5c5f0e55aad59a1c;p=vpnservice.git diff --git a/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronPortChangeListener.java b/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronPortChangeListener.java index 50dc8ad6..c4ba484b 100644 --- a/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronPortChangeListener.java +++ b/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronPortChangeListener.java @@ -29,6 +29,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.E import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.elan.interfaces.ElanInterface; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.elan.interfaces.ElanInterfaceBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.elan.interfaces.ElanInterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfL2vlan; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfL2vlanBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.ParentRefs; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.ParentRefsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.neutronvpn.rev150602.neutron.port.data .PortFixedipToPortNameBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.neutronvpn.rev150602.neutron.port.data @@ -129,7 +133,7 @@ public class NeutronPortChangeListener extends AbstractDataChangeListener // Create of-port interface for this neutron port createOfPortInterface(port, portVlanId); LOG.debug("Creating ELAN Interface"); - createElanInterface(port, portVlanId); + createElanInterface(port); LOG.debug("Add port to subnet"); // add port to local Subnets DS Uuid vpnId = addPortToSubnets(port); @@ -161,14 +165,14 @@ public class NeutronPortChangeListener extends AbstractDataChangeListener private void handleNeutronPortUpdated(Port portoriginal, Port portupdate) { LOG.debug("Add port to subnet"); - // add port FixedIPs to local Subnets DS + // add port FixedIP to local Subnets DS Uuid vpnIdup = addPortToSubnets(portupdate); if (vpnIdup != null) { nvpnManager.createVpnInterface(vpnIdup, portupdate); } - // remove port FixedIPs from local Subnets DS + // remove port FixedIP from local Subnets DS Uuid vpnIdor = removePortFromSubnets(portoriginal); if (vpnIdor != null) { @@ -189,7 +193,10 @@ public class NeutronPortChangeListener extends AbstractDataChangeListener interfaceIdentifier); if (!optionalInf.isPresent()) { // handle these for trunkport extensions : portVlanId, isVlanTransparent - Interface inf = new InterfaceBuilder().setEnabled(true).setName(name).setType(L2vlan.class).build(); + IfL2vlan l2vlan = new IfL2vlanBuilder().setL2vlanMode(IfL2vlan.L2vlanMode.Trunk).build(); + ParentRefs parentRefs = new ParentRefsBuilder().setParentInterface(name).build(); + Interface inf = new InterfaceBuilder().setEnabled(true).setName(name).setType(L2vlan.class) + .addAugmentation(IfL2vlan.class, l2vlan).addAugmentation(ParentRefs.class, parentRefs).build(); MDSALUtil.syncWrite(broker, LogicalDatastoreType.CONFIGURATION, interfaceIdentifier, inf); } else { LOG.error("Interface {} is already present", name); @@ -227,18 +234,16 @@ public class NeutronPortChangeListener extends AbstractDataChangeListener .getUuid()); } - private void createElanInterface(Port port, int portVlanId) { + private void createElanInterface(Port port) { String name = NeutronvpnUtils.uuidToTapPortName(port.getUuid()); - String interfaceName = new StringBuilder(name).append(":").append(Integer.toString(portVlanId)).toString(); String elanInstanceName = port.getNetworkId().getValue(); List physAddresses = new ArrayList<>(); physAddresses.add(new PhysAddress(port.getMacAddress())); InstanceIdentifier id = InstanceIdentifier.builder(ElanInterfaces.class).child(ElanInterface - .class, new ElanInterfaceKey(interfaceName)).build(); + .class, new ElanInterfaceKey(name)).build(); ElanInterface elanInterface = new ElanInterfaceBuilder().setElanInstanceName(elanInstanceName) - .setName(interfaceName).setStaticMacEntries(physAddresses). - setKey(new ElanInterfaceKey(interfaceName)).build(); + .setName(name).setStaticMacEntries(physAddresses).setKey(new ElanInterfaceKey(name)).build(); MDSALUtil.syncWrite(broker, LogicalDatastoreType.CONFIGURATION, id, elanInterface); LOG.debug("Creating new ELan Interface {}", elanInterface); } @@ -247,25 +252,22 @@ public class NeutronPortChangeListener extends AbstractDataChangeListener private Uuid addPortToSubnets(Port port) { Uuid subnetId = null; Uuid vpnId = null; - String name = NeutronvpnUtils.uuidToTapPortName(port.getUuid()); - - // find all subnets to which this port is associated - List ips = port.getFixedIps(); - for (FixedIps ip : ips) { - String ipValue = ip.getIpAddress().getIpv4Address().getValue(); - - InstanceIdentifier id = NeutronvpnUtils.buildFixedIpToPortNameIdentifier(ipValue); - PortFixedipToPortNameBuilder builder = new PortFixedipToPortNameBuilder().setPortFixedip(ipValue) - .setPortName(name); - MDSALUtil.syncWrite(broker, LogicalDatastoreType.CONFIGURATION, id, builder.build()); - LOG.debug("fixedIp-name map for neutron port with fixedIp: {}, name: {} added to NeutronPortData DS", - ipValue, name); - - subnetId = ip.getSubnetId(); - Subnetmap subnetmap = nvpnManager.updateSubnetNode(subnetId, null, null, null, null, port.getUuid()); - if (vpnId == null && subnetmap != null) { - vpnId = subnetmap.getVpnId(); - } + Subnetmap subnetmap = null; + String infName = port.getUuid().getValue(); + + // find the subnet to which this port is associated + FixedIps ip = port.getFixedIps().get(0); + String ipValue = ip.getIpAddress().getIpv4Address().getValue(); + InstanceIdentifier id = NeutronvpnUtils.buildFixedIpToPortNameIdentifier(ipValue); + PortFixedipToPortNameBuilder builder = new PortFixedipToPortNameBuilder().setPortFixedip(ipValue) + .setPortName(infName); + MDSALUtil.syncWrite(broker, LogicalDatastoreType.CONFIGURATION, id, builder.build()); + LOG.debug("fixedIp-name map for neutron port with fixedIp: {}, name: {} added to NeutronPortData DS", + ipValue, infName); + subnetId = ip.getSubnetId(); + subnetmap = nvpnManager.updateSubnetNode(subnetId, null, null, null, null, null, port.getUuid()); + if (subnetmap != null) { + vpnId = subnetmap.getVpnId(); } return vpnId; } @@ -273,21 +275,18 @@ public class NeutronPortChangeListener extends AbstractDataChangeListener private Uuid removePortFromSubnets(Port port) { Uuid subnetId = null; Uuid vpnId = null; - - // find all Subnets to which this port is associated - List ips = port.getFixedIps(); - for (FixedIps ip : ips) { - String ipValue = ip.getIpAddress().getIpv4Address().getValue(); - - InstanceIdentifier id = NeutronvpnUtils.buildFixedIpToPortNameIdentifier(ipValue); - MDSALUtil.syncDelete(broker, LogicalDatastoreType.CONFIGURATION, id); - LOG.debug("fixedIp-name map for neutron port with fixedIp: {} deleted from NeutronPortData DS", ipValue); - - subnetId = ip.getSubnetId(); - Subnetmap subnetmap = nvpnManager.removeFromSubnetNode(subnetId, null, null, null, port.getUuid()); - if (vpnId == null && subnetmap != null) { - vpnId = subnetmap.getVpnId(); - } + Subnetmap subnetmap = null; + + // find the subnet to which this port is associated + FixedIps ip = port.getFixedIps().get(0); + String ipValue = ip.getIpAddress().getIpv4Address().getValue(); + InstanceIdentifier id = NeutronvpnUtils.buildFixedIpToPortNameIdentifier(ipValue); + MDSALUtil.syncDelete(broker, LogicalDatastoreType.CONFIGURATION, id); + LOG.debug("fixedIp-name map for neutron port with fixedIp: {} deleted from NeutronPortData DS", ipValue); + subnetId = ip.getSubnetId(); + subnetmap = nvpnManager.removeFromSubnetNode(subnetId, null, null, null, port.getUuid()); + if (subnetmap != null) { + vpnId = subnetmap.getVpnId(); } return vpnId; }