From: Sam Hague Date: Thu, 14 Apr 2016 20:51:23 +0000 (-0400) Subject: Use dpl portId X-Git-Tag: release/boron~387^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=7ad128f9d0f8b4a69bd3bb66d03d65fa3ab0942a;p=netvirt.git Use dpl portId Change-Id: Ib5418ca31a4e6f696c47230016fcb59eed97726d Signed-off-by: Sam Hague --- diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/SfcUtils.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/SfcUtils.java index 857f49b3cc..e65d807391 100644 --- a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/SfcUtils.java +++ b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/SfcUtils.java @@ -22,12 +22,15 @@ import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev1407 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePathKey; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.rendered.service.path.RenderedServicePathHop; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.ServiceFunctions; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.function.entry.SfDataPlaneLocator; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunctionKey; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.ServiceFunctionForwarder; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfp.rev140701.ServiceFunctionPaths; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfp.rev140701.service.function.paths.ServiceFunctionPath; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.data.plane.locator.locator.type.Ip; +import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.sfc.sf.ovs.rev160107.SfDplOvsAugmentation; +import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.sfc.sf.ovs.rev160107.connected.port.OvsPort; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessLists; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.AccessListEntries; @@ -195,6 +198,27 @@ public class SfcUtils { return sfDplName; } + public String getSfDplPortId(ServiceFunction serviceFunction) { + String sfDplName = null; + if (serviceFunction != null && + serviceFunction.getSfDataPlaneLocator() != null && + serviceFunction.getSfDataPlaneLocator().get(0) != null && + serviceFunction.getSfDataPlaneLocator().get(0).getAugmentation(SfDplOvsAugmentation.class) != null ) { + + SfDplOvsAugmentation sfDplOvsAugmentation = + serviceFunction.getSfDataPlaneLocator().get(0).getAugmentation(SfDplOvsAugmentation.class); + if (sfDplOvsAugmentation.getOvsPort() != null) { + sfDplName = sfDplOvsAugmentation.getOvsPort().getPortId(); + } else { + LOG.warn("getSfDplPortId: OvsPort is null"); + } + } else { + LOG.warn("getSfDplPortId: ServiceFunction is null"); + } + + return sfDplName; + } + public Ip getSffIp(ServiceFunctionForwarder serviceFunctionForwarder) { if (serviceFunctionForwarder != null && serviceFunctionForwarder.getSffDataPlaneLocator() != null && diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/NetvirtSfcWorkaroundOF13Provider.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/NetvirtSfcWorkaroundOF13Provider.java index ee8b4a8bbb..5ea5f02043 100644 --- a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/NetvirtSfcWorkaroundOF13Provider.java +++ b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/NetvirtSfcWorkaroundOF13Provider.java @@ -270,8 +270,8 @@ public class NetvirtSfcWorkaroundOF13Provider implements INetvirtSfcOF13Provider LOG.info("handleSff: last hop processing {} - {}", bridgeNode.getNodeId().getValue(), serviceFunctionForwarder.getName().getValue()); short lastServiceindex = (short)((lastHop.getServiceIndex()).intValue() - 1); - String sfDplName = sfcUtils.getSfDplName(serviceFunction); - long sfOfPort = getSfPort(bridgeNode, sfDplName); + String sfDplPortName = sfcUtils.getSfDplPortId(serviceFunction); + long sfOfPort = getSfPort(bridgeNode, sfDplPortName); // TODO: Coexistence: SFC flows should take this using new egressTable REST sfcClassifierService.programEgressClassifier(dataPathId, vxGpeOfPort, rsp.getPathId(), lastServiceindex, sfOfPort, 0, rsp.getName().getValue(), true); @@ -294,18 +294,18 @@ public class NetvirtSfcWorkaroundOF13Provider implements INetvirtSfcOF13Provider Ip ip = sfcUtils.getSfIp(serviceFunction); String sfIpAddr = String.valueOf(ip.getIp().getValue()); int sfIpPort = ip.getPort().getValue(); //GPE_PORT - String sfDplName = sfcUtils.getSfDplName(serviceFunction); - long sfOfPort = getSfPort(bridgeNode, sfDplName); - String sfMac = getMacFromExternalIds(bridgeNode, sfDplName); + String sfDplPortName = sfcUtils.getSfDplPortId(serviceFunction); + long sfOfPort = getSfPort(bridgeNode, sfDplPortName); + String sfMac = getMacFromExternalIds(bridgeNode, sfDplPortName); if (sfMac == null) { - LOG.warn("handleSff: could not find mac for {} on {}", sfDplName, bridgeNode); + LOG.warn("handleSff: could not find mac for {} on {}", sfDplPortName, bridgeNode); return; } //should be sffdplport, but they should all be the same 6633/4790 // TODO: Coexistence: SFC flows should take this using new sf dpl augmentation if (addSfFlows == true) { sfcClassifierService.program_sfEgress(dataPathId, sfIpPort, rsp.getName().getValue(), true); - sfcClassifierService.program_sfIngress(dataPathId, sfIpPort, sfOfPort, sfIpAddr, sfDplName, + sfcClassifierService.program_sfIngress(dataPathId, sfIpPort, sfOfPort, sfIpAddr, sfDplPortName, rsp.getName().getValue(), true); } sfcClassifierService.programStaticArpEntry(dataPathId, 0L, sfMac, sfIpAddr, @@ -347,8 +347,8 @@ public class NetvirtSfcWorkaroundOF13Provider implements INetvirtSfcOF13Provider } private boolean isSfOnBridge(Node bridgeNode, ServiceFunction serviceFunction) { - String sfDplName = sfcUtils.getSfDplName(serviceFunction); - long sfOfPort = getSfPort(bridgeNode, sfDplName); + String sfDplPortName = sfcUtils.getSfDplPortId(serviceFunction); + long sfOfPort = getSfPort(bridgeNode, sfDplPortName); LOG.info("isSfOnBridge: {}: {}, sfOfPort: {}", bridgeNode.getNodeId().getValue(), sfOfPort != 0L, sfOfPort); return sfOfPort != 0L; } diff --git a/openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/NetvirtSfcIT.java b/openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/NetvirtSfcIT.java index 14c6173394..a5eef0e334 100644 --- a/openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/NetvirtSfcIT.java +++ b/openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/NetvirtSfcIT.java @@ -189,6 +189,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase { private static final String SF2IP = "10.2.1.2"; private static final String SF1DPLNAME = "sf1"; private static final String SF2DPLNAME = "sf2"; + private static final String SF1DPLPORTNAME = "tap-123456789ab"; // Use 192.168.50.70 when running against vagrant vm for workaround testing, eg. netvirtsfc-env. // Use 192.168.1.129 (or whatever address is dhcp'ed) for tacker-vm. // "192.168.50.70"; "127.0.0.1"; "192.168.1.129"; @@ -508,10 +509,12 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase { String sf1Ip = SF1IP; String sff1Name = SFF1NAME; String sf1DplName = SF1DPLNAME; + String sf1DplportName = SF1DPLPORTNAME; int port = GPEUDPPORT; ServiceFunctionBuilder serviceFunctionBuilder = - serviceFunctionUtils.serviceFunctionBuilder(sf1Ip, port, sf1DplName, sff1Name, sf1Name); + serviceFunctionUtils.serviceFunctionBuilder(sf1Ip, port, sf1DplName, sf1DplportName, + sff1Name, sf1Name); List serviceFunctionList = serviceFunctionUtils.list( new ArrayList(), serviceFunctionBuilder); @@ -672,7 +675,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase { Map externalIds = Maps.newHashMap(); externalIds.put("attached-mac", "f6:00:00:0f:00:01"); - southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, SF1DPLNAME, "internal", null, externalIds); + southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, SF1DPLPORTNAME, "internal", null, externalIds); externalIds.clear(); externalIds.put("attached-mac", "f6:00:00:0c:00:01"); southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, "vm1", "internal"); @@ -681,7 +684,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase { southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, "vm2", "internal"); InstanceIdentifier tpIid = - southboundUtils.createTerminationPointInstanceIdentifier(nodeInfo.bridgeNode, SFFDPL1NAME); + southboundUtils.createTerminationPointInstanceIdentifier(nodeInfo.bridgeNode, SF1DPLPORTNAME); final NotifyingDataChangeListener portOperationalListener = new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, tpIid, waitList); portOperationalListener.registerDataChangeListener(dataBroker); @@ -736,7 +739,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase { //verifyFlow(nodeInfo.datapathId, flowId, Service.CLASSIFIER.getTable()); LOG.info("check for flows!!!!!!!!!!!!!"); - Thread.sleep(30000); + //Thread.sleep(30000); InstanceIdentifier flowIid = createFlowIid(nodeInfo.datapathId, flowId, pipelineOrchestrator.getTable(Service.CLASSIFIER)); diff --git a/openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ServiceFunctionUtils.java b/openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ServiceFunctionUtils.java index 50b721abbe..926a0b6b53 100644 --- a/openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ServiceFunctionUtils.java +++ b/openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ServiceFunctionUtils.java @@ -28,9 +28,10 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types. public class ServiceFunctionUtils extends AbstractUtils { public SfDataPlaneLocatorBuilder sfDataPlaneLocatorBuilder(SfDataPlaneLocatorBuilder sfDataPlaneLocatorBuilder, - String ip, int port, String dplName, String sffName) { + String ip, int port, String dplName, + String sf1DplPortName, String sffName) { SfDplOvsAugmentationBuilder sfDplOvsAugmentationBuilder = new SfDplOvsAugmentationBuilder(); - OvsPortBuilder ovsPortBuilder = new OvsPortBuilder().setPortId(dplName); + OvsPortBuilder ovsPortBuilder = new OvsPortBuilder().setPortId(sf1DplPortName); sfDplOvsAugmentationBuilder.setOvsPort(ovsPortBuilder.build()); return sfDataPlaneLocatorBuilder @@ -59,9 +60,11 @@ public class ServiceFunctionUtils extends AbstractUtils { } public ServiceFunctionBuilder serviceFunctionBuilder(String sfIp, int port, String sf1DplName, + String sf1DplPortName, String sffname, String sfName) { SfDataPlaneLocatorBuilder sfDataPlaneLocator = - sfDataPlaneLocatorBuilder(new SfDataPlaneLocatorBuilder(), sfIp, port, sf1DplName, sffname); + sfDataPlaneLocatorBuilder(new SfDataPlaneLocatorBuilder(), sfIp, port, sf1DplName, + sf1DplPortName, sffname); List sfDataPlaneLocatorList = list(new ArrayList(), sfDataPlaneLocator); return serviceFunctionBuilder(