Update .gitreview for new repo
[netvirt.git] / openstack / net-virt-sfc / it / src / test / java / org / opendaylight / netvirt / 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.netvirt.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
39 public class ServiceFunctionForwarderUtils extends AbstractUtils {
40     public OvsOptionsBuilder ovsOptionsBuilder(OvsOptionsBuilder ovsOptionsBuilder, int port) {
41         String flow = "flow";
42         return ovsOptionsBuilder
43                 .setDstPort(String.valueOf(port))
44                 .setRemoteIp(flow)
45                 .setKey(flow)
46                 .setNsi(flow)
47                 .setNsp(flow)
48                 .setNshc1(flow)
49                 .setNshc2(flow)
50                 .setNshc3(flow)
51                 .setNshc4(flow);
52     }
53
54     public SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder(SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder,
55                                                                  DataPlaneLocatorBuilder dataPlaneLocatorBuilder,
56                                                                  String dplName) {
57         SffOvsLocatorOptionsAugmentationBuilder sffOvsLocatorOptionsAugmentationBuilder =
58                 new SffOvsLocatorOptionsAugmentationBuilder();
59         sffOvsLocatorOptionsAugmentationBuilder.setOvsOptions(
60                 ovsOptionsBuilder(new OvsOptionsBuilder(), 6633).build());
61
62         return sffDataPlaneLocatorBuilder
63                 .setName(new SffDataPlaneLocatorName(dplName))
64                 .setDataPlaneLocator(dataPlaneLocatorBuilder.build())
65                 .addAugmentation(SffOvsLocatorOptionsAugmentation.class,
66                         sffOvsLocatorOptionsAugmentationBuilder.build());
67     }
68
69     public SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder(
70             SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder, String sffDplName, String sfDplName) {
71         return sffSfDataPlaneLocatorBuilder
72                 .setSfDplName(SfDataPlaneLocatorName.getDefaultInstance(sfDplName))
73                 .setSffDplName(SffDataPlaneLocatorName.getDefaultInstance(sffDplName));
74     }
75
76     public ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder(
77             ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder,
78             SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder,
79             String sfName) {
80
81         return serviceFunctionDictionaryBuilder
82                 .setName(SfName.getDefaultInstance(sfName))
83                 .setSffSfDataPlaneLocator(sffSfDataPlaneLocatorBuilder.build());
84     }
85
86     public OvsBridgeBuilder ovsBridgeBuilder(OvsBridgeBuilder ovsBridgeBuilder, String bridgeName) {
87         return ovsBridgeBuilder.setBridgeName(bridgeName);
88     }
89
90     public ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder(
91             ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder,
92             String sffName, String serviceNodeName, String bridgeName,
93             List<SffDataPlaneLocator> sffDataPlaneLocatorList,
94             List<ServiceFunctionDictionary> serviceFunctionDictionaryList,
95             OvsdbNodeRef ovsdbNodeRef) {
96
97         SffOvsBridgeAugmentationBuilder sffOvsBridgeAugmentationBuilder = new SffOvsBridgeAugmentationBuilder();
98         sffOvsBridgeAugmentationBuilder.setOvsBridge(ovsBridgeBuilder(new OvsBridgeBuilder(), bridgeName).build());
99
100         SffOvsNodeAugmentationBuilder sffOvsNodeAugmentationBuilder = new SffOvsNodeAugmentationBuilder();
101         OvsNodeBuilder ovsNodeBuilder = new OvsNodeBuilder();
102         ovsNodeBuilder.setNodeId(ovsdbNodeRef);
103         sffOvsNodeAugmentationBuilder.setOvsNode(ovsNodeBuilder.build());
104
105         return serviceFunctionForwarderBuilder
106                 .setName(new SffName(sffName))
107                 .setServiceNode(new SnName(serviceNodeName))
108                 .setServiceFunctionDictionary(serviceFunctionDictionaryList)
109                 .setSffDataPlaneLocator(sffDataPlaneLocatorList)
110                 .addAugmentation(SffOvsNodeAugmentation.class, sffOvsNodeAugmentationBuilder.build())
111                 .addAugmentation(SffOvsBridgeAugmentation.class, sffOvsBridgeAugmentationBuilder.build());
112     }
113
114     public ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder(
115             ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder,
116             List<ServiceFunctionForwarder> serviceFunctionForwarderList) {
117         return serviceFunctionForwardersBuilder.setServiceFunctionForwarder(serviceFunctionForwarderList);
118     }
119
120     public ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder(
121             String sffName, String sffIp, int port, String sffDplName,
122             String sfIp, String snName, String bridgeName, String sfName, String sfDplName,
123             OvsdbNodeRef ovsdbNodeRef) {
124
125         DataPlaneLocatorBuilder dataPlaneLocatorBuilder =
126                 dataPlaneLocatorBuilder(new DataPlaneLocatorBuilder(), sffIp, port);
127         SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder =
128                 sffDataPlaneLocatorBuilder( new SffDataPlaneLocatorBuilder(), dataPlaneLocatorBuilder, sffDplName);
129         List<SffDataPlaneLocator> sffDataPlaneLocatorList =
130                 list(new ArrayList<SffDataPlaneLocator>(), sffDataPlaneLocatorBuilder);
131
132         SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder =
133                 sffSfDataPlaneLocatorBuilder(new SffSfDataPlaneLocatorBuilder(), sffDplName, sfDplName);
134         ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder =
135                 serviceFunctionDictionaryBuilder(new ServiceFunctionDictionaryBuilder(),
136                         sffSfDataPlaneLocatorBuilder, sfName);
137         List<ServiceFunctionDictionary> serviceFunctionDictionaryList =
138                 list(new ArrayList<ServiceFunctionDictionary>(), serviceFunctionDictionaryBuilder);
139
140         ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder =
141                 serviceFunctionForwarderBuilder(
142                         new ServiceFunctionForwarderBuilder(), sffName, snName, bridgeName,
143                         sffDataPlaneLocatorList, serviceFunctionDictionaryList, ovsdbNodeRef);
144         return serviceFunctionForwarderBuilder;
145     }
146 }