1 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.mapper;
3 import org.opendaylight.groupbasedpolicy.dto.IndexedTenant;
4 import org.opendaylight.groupbasedpolicy.dto.PolicyInfo;
5 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfContext;
6 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfWriter;
7 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.PolicyManager;
8 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.EndpointManager;
9 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.FlowUtils;
10 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.SwitchManager;
11 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Instructions;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2FloodDomainId;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoint.fields.L3Address;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoint.fields.L3AddressBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Builder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.l3endpoint.rev151217.NatAddress;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.l3endpoint.rev151217.NatAddressBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.Segmentation;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.SegmentationBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContextBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
43 import java.util.ArrayList;
44 import java.util.List;
46 public abstract class MapperUtilsTest {
48 protected static final String IPV4_1 = "170.0.0.1";
49 protected static final String IPV4_2 = "190.0.0.1";
50 protected static final String MAC_0 = "00:00:00:00:00:00";
51 protected static final String MAC_1 = "00:00:00:00:00:01";
52 protected static final String CONNECTOR_0 = "0";
53 protected static final String CONNECTOR_1 = "1";
54 protected static final String IP_PREFIX_32 = "/32";
55 protected static final String IP_PREFIX_128 = "/128";
56 protected static final String IPV6_1 = "2000:db80:85a3:08ba:0947:8a2e:3a70:7334";
57 protected static final String IPV6_2 = "0947:db80:3a70:7334:85a3:8a2e:2000:08ba";
58 protected static final String DHCP_IP = "255.255.255.255";
59 protected static final String TENANT_ID = "dummy tenant";
60 protected static final String NODE_ID = "dummy node";
61 protected static final String L2 = "L2";
62 private static final String DOMAIN_ID = "dummy id";
63 protected final NodeId nodeId = new NodeId(NODE_ID);
64 protected Short tableId;
65 protected OfContext ctx;
66 protected OfWriter ofWriter;
67 protected SwitchManager switchManager;
68 protected PolicyManager policyManager;
69 protected EndpointManager endpointManager;
70 protected PolicyInfo policyInfo;
72 protected Flow flowCreator(FlowId flowId, short tableId, Integer priority, Match match, Instructions instructions) {
73 FlowBuilder flowBuilder = FlowUtils.base(tableId);
74 flowBuilder.setId(flowId)
75 .setPriority(priority)
77 .setInstructions(instructions);
79 return flowBuilder.build();
82 protected Endpoint endpointCreator(IpAddress ip, MacAddress mac, NodeConnectorId nodeConnectorId) {
83 EndpointBuilder endpointBuilder = new EndpointBuilder();
86 endpointBuilder.setTenant(new TenantId(TENANT_ID));
90 List<L3Address> l3Addresses = new ArrayList<>();
91 L3AddressBuilder l3AddressBuilder = new L3AddressBuilder();
92 l3AddressBuilder.setIpAddress(ip);
93 l3Addresses.add(l3AddressBuilder.build());
94 endpointBuilder.setL3Address(l3Addresses);
98 endpointBuilder.setMacAddress(new MacAddress(mac));
100 // Augment node connector
101 OfOverlayContextBuilder ofOverlayContextBuilder = new OfOverlayContextBuilder();
102 ofOverlayContextBuilder.setNodeConnectorId(new NodeConnectorId(nodeConnectorId));
103 endpointBuilder.addAugmentation(OfOverlayContext.class, ofOverlayContextBuilder.build());
105 // Set network containment
106 endpointBuilder.setNetworkContainment(new NetworkDomainId(DOMAIN_ID));
108 return endpointBuilder.build();
111 protected EndpointL3 endpointL3Creator(String ip, String insideIp, String mac, String l2, boolean ipv6) {
112 EndpointL3Builder endpointL3Builder = new EndpointL3Builder();
114 // Set NAT address augmentation
117 NatAddressBuilder natAddressBuilder = new NatAddressBuilder();
118 natAddressBuilder.setNatAddress(new IpAddress(new Ipv6Address(ip)));
119 endpointL3Builder.addAugmentation(NatAddress.class, natAddressBuilder.build());
121 NatAddressBuilder natAddressBuilder = new NatAddressBuilder();
122 natAddressBuilder.setNatAddress(new IpAddress(new Ipv4Address(ip)));
123 endpointL3Builder.addAugmentation(NatAddress.class, natAddressBuilder.build());
128 if (insideIp != null) {
130 endpointL3Builder.setIpAddress(new IpAddress(new Ipv6Address(insideIp)));
132 endpointL3Builder.setIpAddress(new IpAddress(new Ipv4Address(insideIp)));
138 endpointL3Builder.setMacAddress(new MacAddress(mac));
143 endpointL3Builder.setL2Context(new L2BridgeDomainId(l2));
146 return endpointL3Builder.build();
150 protected IndexedTenant tenantCreator() {
151 TenantBuilder tenantBuilder = new TenantBuilder();
152 tenantBuilder.setId(new TenantId(TENANT_ID));
154 // Set forwarding context
155 SegmentationBuilder segmentationBuilder = new SegmentationBuilder();
156 segmentationBuilder.setSegmentationId(1);
157 List<L2FloodDomain> l2FloodDomains = new ArrayList<>();
158 L2FloodDomainBuilder l2FloodDomainBuilder = new L2FloodDomainBuilder();
159 l2FloodDomainBuilder.setId(new L2FloodDomainId("l2id"));
160 l2FloodDomainBuilder.addAugmentation(Segmentation.class, segmentationBuilder.build());
161 l2FloodDomains.add(l2FloodDomainBuilder.build());
162 ForwardingContextBuilder forwardingContextBuilder = new ForwardingContextBuilder();
163 forwardingContextBuilder.setL2FloodDomain(l2FloodDomains);
164 tenantBuilder.setForwardingContext(forwardingContextBuilder.build());
166 return new IndexedTenant(tenantBuilder.build());
169 protected List<L2FloodDomain> l2FloodDomainsCreator() {
170 SegmentationBuilder segmentationBuilder = new SegmentationBuilder();
171 segmentationBuilder.setSegmentationId(1);
172 List<L2FloodDomain> l2FloodDomains = new ArrayList<>();
173 L2FloodDomainBuilder l2FloodDomainBuilder = new L2FloodDomainBuilder();
174 l2FloodDomainBuilder.setId(new L2FloodDomainId("l2id"));
175 l2FloodDomainBuilder.addAugmentation(Segmentation.class, segmentationBuilder.build());
176 l2FloodDomains.add(l2FloodDomainBuilder.build());
177 return l2FloodDomains;