Bug 5354 - getPortNumberFromNode is not correctly calculating the port number from...
[netvirt.git] / openstack / net-virt-sfc / it / src / test / java / org / opendaylight / ovsdb / openstack / netvirt / sfc / it / utils / ServiceFunctionForwarderUtils.java
1 /*
2  * Copyright © 2015 Red Hat, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
10
11 import java.util.ArrayList;
12 import java.util.List;
13
14 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SfDataPlaneLocatorName;
15 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SfName;
16 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffDataPlaneLocatorName;
17 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffName;
18 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SnName;
19 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsBridgeAugmentation;
20 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsBridgeAugmentationBuilder;
21 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsLocatorOptionsAugmentation;
22 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsLocatorOptionsAugmentationBuilder;
23 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsNodeAugmentation;
24 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsNodeAugmentationBuilder;
25 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.bridge.OvsBridgeBuilder;
26 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.node.OvsNodeBuilder;
27 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.options.OvsOptionsBuilder;
28 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.ServiceFunctionForwardersBuilder;
29 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.ServiceFunctionForwarder;
30 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.ServiceFunctionForwarderBuilder;
31 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.ServiceFunctionDictionary;
32 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.ServiceFunctionDictionaryBuilder;
33 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.SffDataPlaneLocator;
34 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.SffDataPlaneLocatorBuilder;
35 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.service.function.dictionary.SffSfDataPlaneLocatorBuilder;
36 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.sff.data.plane.locator.DataPlaneLocatorBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
38 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
39 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
40
41 public class ServiceFunctionForwarderUtils extends AbstractUtils {
42     public OvsOptionsBuilder ovsOptionsBuilder(OvsOptionsBuilder ovsOptionsBuilder, int port) {
43         String flow = "flow";
44         return ovsOptionsBuilder
45                 .setDstPort(String.valueOf(port))
46                 .setRemoteIp(flow)
47                 .setKey(flow)
48                 .setNsi(flow)
49                 .setNsp(flow)
50                 .setNshc1(flow)
51                 .setNshc2(flow)
52                 .setNshc3(flow)
53                 .setNshc4(flow);
54     }
55
56     public SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder(SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder,
57                                                                  DataPlaneLocatorBuilder dataPlaneLocatorBuilder,
58                                                                  String dplName) {
59         SffOvsLocatorOptionsAugmentationBuilder sffOvsLocatorOptionsAugmentationBuilder =
60                 new SffOvsLocatorOptionsAugmentationBuilder();
61         sffOvsLocatorOptionsAugmentationBuilder.setOvsOptions(
62                 ovsOptionsBuilder(new OvsOptionsBuilder(), 6633).build());
63
64         return sffDataPlaneLocatorBuilder
65                 .setName(new SffDataPlaneLocatorName(dplName))
66                 .setDataPlaneLocator(dataPlaneLocatorBuilder.build())
67                 .addAugmentation(SffOvsLocatorOptionsAugmentation.class,
68                         sffOvsLocatorOptionsAugmentationBuilder.build());
69     }
70
71     public SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder(
72             SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder, String sffDplName, String sfDplName) {
73         return sffSfDataPlaneLocatorBuilder
74                 .setSfDplName(SfDataPlaneLocatorName.getDefaultInstance(sfDplName))
75                 .setSffDplName(SffDataPlaneLocatorName.getDefaultInstance(sffDplName));
76     }
77
78     public ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder(
79             ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder,
80             SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder,
81             String sfName) {
82
83         return serviceFunctionDictionaryBuilder
84                 .setName(SfName.getDefaultInstance(sfName))
85                 .setSffSfDataPlaneLocator(sffSfDataPlaneLocatorBuilder.build());
86     }
87
88     public OvsBridgeBuilder ovsBridgeBuilder(OvsBridgeBuilder ovsBridgeBuilder, String bridgeName) {
89         return ovsBridgeBuilder.setBridgeName(bridgeName);
90     }
91
92     public ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder(
93             ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder,
94             String sffName, String serviceNodeName, String bridgeName,
95             List<SffDataPlaneLocator> sffDataPlaneLocatorList,
96             List<ServiceFunctionDictionary> serviceFunctionDictionaryList,
97             OvsdbNodeRef ovsdbNodeRef) {
98
99         SffOvsBridgeAugmentationBuilder sffOvsBridgeAugmentationBuilder = new SffOvsBridgeAugmentationBuilder();
100         sffOvsBridgeAugmentationBuilder.setOvsBridge(ovsBridgeBuilder(new OvsBridgeBuilder(), bridgeName).build());
101
102         SffOvsNodeAugmentationBuilder sffOvsNodeAugmentationBuilder = new SffOvsNodeAugmentationBuilder();
103         OvsNodeBuilder ovsNodeBuilder = new OvsNodeBuilder();
104         ovsNodeBuilder.setNodeId(ovsdbNodeRef);
105         sffOvsNodeAugmentationBuilder.setOvsNode(ovsNodeBuilder.build());
106
107         return serviceFunctionForwarderBuilder
108                 .setName(new SffName(sffName))
109                 .setServiceNode(new SnName(serviceNodeName))
110                 .setServiceFunctionDictionary(serviceFunctionDictionaryList)
111                 .setSffDataPlaneLocator(sffDataPlaneLocatorList)
112                 .addAugmentation(SffOvsNodeAugmentation.class, sffOvsNodeAugmentationBuilder.build())
113                 .addAugmentation(SffOvsBridgeAugmentation.class, sffOvsBridgeAugmentationBuilder.build());
114     }
115
116     public ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder(
117             ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder,
118             List<ServiceFunctionForwarder> serviceFunctionForwarderList) {
119         return serviceFunctionForwardersBuilder.setServiceFunctionForwarder(serviceFunctionForwarderList);
120     }
121
122     public ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder(
123             String sffName, String sffIp, int port, String sffDplName,
124             String sfIp, String snName, String bridgeName, String sfName, String sfDplName,
125             OvsdbNodeRef ovsdbNodeRef) {
126
127         DataPlaneLocatorBuilder dataPlaneLocatorBuilder =
128                 dataPlaneLocatorBuilder(new DataPlaneLocatorBuilder(), sffIp, port);
129         SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder =
130                 sffDataPlaneLocatorBuilder( new SffDataPlaneLocatorBuilder(), dataPlaneLocatorBuilder, sffDplName);
131         List<SffDataPlaneLocator> sffDataPlaneLocatorList =
132                 list(new ArrayList<SffDataPlaneLocator>(), sffDataPlaneLocatorBuilder);
133
134         SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder =
135                 sffSfDataPlaneLocatorBuilder(new SffSfDataPlaneLocatorBuilder(), sffDplName, sfDplName);
136         ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder =
137                 serviceFunctionDictionaryBuilder(new ServiceFunctionDictionaryBuilder(),
138                         sffSfDataPlaneLocatorBuilder, sfName);
139         List<ServiceFunctionDictionary> serviceFunctionDictionaryList =
140                 list(new ArrayList<ServiceFunctionDictionary>(), serviceFunctionDictionaryBuilder);
141
142         ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder =
143                 serviceFunctionForwarderBuilder(
144                         new ServiceFunctionForwarderBuilder(), sffName, snName, bridgeName,
145                         sffDataPlaneLocatorList, serviceFunctionDictionaryList, ovsdbNodeRef);
146         return serviceFunctionForwarderBuilder;
147     }
148 }