VLAN support for external networks
[groupbasedpolicy.git] / renderers / ofoverlay / src / test / java / org / opendaylight / groupbasedpolicy / renderer / ofoverlay / flow / OfTableTest.java
index 405b78b1b60521da3c8ec903a4dfbdc75ad7a36f..a4cbd9a303bfe6fb3e5a25ddac78ef764de362a7 100755 (executable)
@@ -27,6 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionName;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClauseName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;\r
@@ -40,28 +41,34 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.Segmentation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.SegmentationBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.action.refs.ActionRefBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRefBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomainBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstancesBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubnetBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstanceBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstanceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContextBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstancesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstanceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;\r
 \r
@@ -84,9 +91,11 @@ public class OfTableTest {
     L3ContextId l3c = new L3ContextId("2cf51ee4-e996-467e-a277-2d380334a91d");\r
     L2BridgeDomainId bd = new L2BridgeDomainId("c95182ba-7807-43f8-98f7-6c7c720b7639");\r
     L2FloodDomainId fd = new L2FloodDomainId("98e1439e-52d2-46f8-bd69-5136e6088771");\r
+    L2FloodDomainId ext_fd = new L2FloodDomainId("d8024f7a-b83e-11e5-9912-ba0be0483c18");\r
     SubnetId sub = new SubnetId("4fcf8dfc-53b5-4aef-84d3-6b5586992fcb");\r
     SubnetId sub2 = new SubnetId("c285a59f-fcb8-42e6-bf29-87ea522fd626");\r
     SubnetId sub3 = new SubnetId("a0380d52-2a25-48ef-882c-a4d4cd9e00ec");\r
+    SubnetId ext_sub = new SubnetId("8da17ad9-3261-4dc9-bcff-928a2f73cce7");\r
     TenantId tid = new TenantId("1118c691-8520-47ad-80b8-4cf5e3fe3302");\r
     EndpointGroupId eg = new EndpointGroupId("36dec84a-08c7-497b-80b6-a0035af72a12");\r
     EndpointGroupId eg2 = new EndpointGroupId("632e5e11-7988-4eb5-8fe6-6c182d890276");\r
@@ -104,91 +113,101 @@ public class OfTableTest {
     }\r
 \r
     protected TenantBuilder baseTenant() {\r
-        return new TenantBuilder()\r
-            .setId(tid)\r
-            .setEndpointGroup(ImmutableList.of(new EndpointGroupBuilder()\r
-                    .setId(eg)\r
-                    .setNetworkDomain(sub)\r
-                    .setConsumerNamedSelector(ImmutableList.of(new ConsumerNamedSelectorBuilder()\r
-                        .setName(new SelectorName("cns1"))\r
-                        .setContract(ImmutableList.of(cid))\r
-                        .build()))\r
-                    .build(),\r
-                new EndpointGroupBuilder()\r
-                    .setId(eg2)\r
-                    .setNetworkDomain(sub2)\r
-                    .setProviderNamedSelector(ImmutableList.of(new ProviderNamedSelectorBuilder()\r
-                        .setName(new SelectorName("pns1"))\r
-                        .setContract(ImmutableList.of(cid))\r
-                        .build()))\r
-                    .build()))\r
-            .setL3Context(ImmutableList.of(new L3ContextBuilder()\r
-                .setId(l3c)\r
-                .build()))\r
-            .setL2BridgeDomain(ImmutableList.of(new L2BridgeDomainBuilder()\r
-                .setId(bd)\r
-                .setParent(l3c)\r
-                .build()))\r
-            .setL2FloodDomain(ImmutableList.of(new L2FloodDomainBuilder()\r
-                .setId(fd)\r
-                .setParent(bd)\r
-                .build()))\r
-            .setSubnet(ImmutableList.of(new SubnetBuilder()\r
-                    .setId(sub2)\r
-                    .setParent(fd)\r
-                    .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.1.0/24")))\r
-                    .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.1.1")))\r
-                    .build(),\r
-                new SubnetBuilder()\r
-                    .setId(sub)\r
-                    .setParent(fd)\r
-                    .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.0.0/24")))\r
-                    .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.0.1")))\r
-                    .build(),\r
-                new SubnetBuilder()\r
-                    .setId(sub3)\r
-                    .setParent(bd)\r
-                    .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.2.0/24")))\r
-                    .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.2.1")))\r
-                    .build()))\r
-            .setSubjectFeatureInstances(new SubjectFeatureInstancesBuilder()\r
-                .setClassifierInstance(ImmutableList.of(new ClassifierInstanceBuilder()\r
-                     .setName(new ClassifierName("tcp_dst_80"))\r
-                     .setClassifierDefinitionId(L4ClassifierDefinition.DEFINITION.getId())\r
-                     .setParameterValue(ImmutableList.of(new ParameterValueBuilder()\r
-                              .setName(new ParameterName("destport"))\r
-                              .setIntValue(Long.valueOf(80))\r
-                              .build(),\r
-                          new ParameterValueBuilder()\r
-                             .setName(new ParameterName("proto"))\r
-                             .setIntValue(Long.valueOf(6))\r
-                             .build()))\r
-                     .build(),\r
-                     new ClassifierInstanceBuilder()\r
-                     .setName(new ClassifierName("tcp_src_80"))\r
-                     .setClassifierDefinitionId(Classifier.L4_CL.getId())\r
-                     .setParameterValue(ImmutableList.of(new ParameterValueBuilder()\r
-                              .setName(new ParameterName("sourceport"))\r
-                              .setIntValue(Long.valueOf(80))\r
-                              .build(),\r
-                          new ParameterValueBuilder()\r
-                             .setName(new ParameterName("proto"))\r
-                             .setIntValue(Long.valueOf(6))\r
-                             .build()))\r
-                     .build(),\r
-                     new ClassifierInstanceBuilder()\r
-                     .setName(new ClassifierName("ether_type"))\r
-                     .setClassifierDefinitionId(Classifier.ETHER_TYPE_CL.getId())\r
-                     .setParameterValue(ImmutableList.of(new ParameterValueBuilder()\r
-                              .setName(new ParameterName("ethertype"))\r
-                              .setIntValue(Long.valueOf(FlowUtils.IPv4))\r
-                              .build()))\r
-                     .build()))\r
-                .setActionInstance(ImmutableList.of(new ActionInstanceBuilder()\r
-                    .setName(new ActionName("allow"))\r
-                    .setActionDefinitionId(new AllowAction().getId())\r
-                    .build()))\r
-                .build());\r
+        return new TenantBuilder().setId(tid)\r
+            .setPolicy(new PolicyBuilder()\r
+                .setEndpointGroup(ImmutableList.of(\r
+                        new EndpointGroupBuilder().setId(eg)\r
+                            .setNetworkDomain(sub)\r
+                            .setConsumerNamedSelector(ImmutableList.of(new ConsumerNamedSelectorBuilder()\r
+                                .setName(new SelectorName("cns1")).setContract(ImmutableList.of(cid)).build()))\r
+                            .build(),\r
+                        new EndpointGroupBuilder().setId(eg2)\r
+                            .setNetworkDomain(sub2)\r
+                            .setProviderNamedSelector(ImmutableList.of(new ProviderNamedSelectorBuilder()\r
+                                .setName(new SelectorName("pns1")).setContract(ImmutableList.of(cid)).build()))\r
+                            .build()))\r
+                .setSubjectFeatureInstances(\r
+                        new SubjectFeatureInstancesBuilder()\r
+                            .setClassifierInstance(\r
+                                    ImmutableList\r
+                                        .of(new ClassifierInstanceBuilder().setName(new ClassifierName("tcp_dst_80"))\r
+                                            .setClassifierDefinitionId(L4ClassifierDefinition.DEFINITION.getId())\r
+                                            .setParameterValue(ImmutableList.of(\r
+                                                    new ParameterValueBuilder().setName(new ParameterName("destport"))\r
+                                                        .setIntValue(Long.valueOf(80))\r
+                                                        .build(),\r
+                                                    new ParameterValueBuilder().setName(new ParameterName("proto"))\r
+                                                        .setIntValue(Long.valueOf(6))\r
+                                                        .build()))\r
+                                            .build(), new ClassifierInstanceBuilder()\r
+                                                .setName(new ClassifierName("tcp_src_80"))\r
+                                                .setClassifierDefinitionId(Classifier.L4_CL.getId())\r
+                                                .setParameterValue(ImmutableList.of(\r
+                                                        new ParameterValueBuilder()\r
+                                                            .setName(new ParameterName("sourceport"))\r
+                                                            .setIntValue(Long.valueOf(80))\r
+                                                            .build(),\r
+                                                        new ParameterValueBuilder().setName(new ParameterName("proto"))\r
+                                                            .setIntValue(Long.valueOf(6))\r
+                                                            .build()))\r
+                                                .build(),\r
+                                                new ClassifierInstanceBuilder()\r
+                                                    .setName(new ClassifierName("ether_type"))\r
+                                                    .setClassifierDefinitionId(Classifier.ETHER_TYPE_CL.getId())\r
+                                                    .setParameterValue(ImmutableList.of(new ParameterValueBuilder()\r
+                                                        .setName(new ParameterName("ethertype"))\r
+                                                        .setIntValue(Long.valueOf(FlowUtils.IPv4))\r
+                                                        .build()))\r
+                                                    .build()))\r
+                            .setActionInstance(\r
+                                    ImmutableList.of(new ActionInstanceBuilder().setName(new ActionName("allow"))\r
+                                        .setActionDefinitionId(new AllowAction().getId())\r
+                                        .build()))\r
+                            .build())\r
+                .build())\r
+            .setForwardingContext(\r
+                    new ForwardingContextBuilder()\r
+                        .setL3Context(ImmutableList.of(new L3ContextBuilder().setId(l3c).build()))\r
+                        .setL2BridgeDomain(\r
+                                ImmutableList.of(new L2BridgeDomainBuilder().setId(bd).setParent(l3c).build()))\r
+                        .setL2FloodDomain(ImmutableList.of(\r
+                                new L2FloodDomainBuilder()\r
+                                    .setId(fd)\r
+                                    .setParent(bd)\r
+                                    .addAugmentation(Segmentation.class,\r
+                                        new SegmentationBuilder()\r
+                                        .setSegmentationId(Integer.valueOf(216))\r
+                                        .build())\r
+                                    .build(),\r
+                                new L2FloodDomainBuilder()\r
+                                    .setId(ext_fd)\r
+                                    .addAugmentation(Segmentation.class,\r
+                                        new SegmentationBuilder()\r
+                                        .setSegmentationId(Integer.valueOf(2016))\r
+                                        .build())\r
+                                    .build()))\r
+                        .setSubnet(ImmutableList.of(\r
+                                new SubnetBuilder().setId(sub2)\r
+                                    .setParent(fd)\r
+                                    .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.1.0/24")))\r
+                                    .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.1.1")))\r
+                                    .build(),\r
+                                new SubnetBuilder().setId(sub)\r
+                                    .setParent(fd)\r
+                                    .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.0.0/24")))\r
+                                    .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.0.1")))\r
+                                    .build(),\r
+                                new SubnetBuilder().setId(sub3)\r
+                                    .setParent(bd)\r
+                                    .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.2.0/24")))\r
+                                    .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.2.1")))\r
+                                    .build(),\r
+                                new SubnetBuilder()\r
+                                    .setId(ext_sub)\r
+                                    .setIpPrefix(new IpPrefix(new Ipv4Prefix("192.168.111.0/24")))\r
+                                    .setParent(ext_fd)\r
+                                    .build()))\r
+                       .build());\r
     }\r
 \r
     protected ContractBuilder baseContract(List<Subject> subjects) {\r