update IT for new SFC model changes for DPLs
[netvirt.git] / openstack / net-virt-sfc / it / src / test / java / org / opendaylight / ovsdb / openstack / netvirt / sfc / 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.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.bridge.OvsBridgeBuilder;
24 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.options.OvsOptionsBuilder;
25 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.ServiceFunctionForwardersBuilder;
26 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.ServiceFunctionForwarder;
27 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.ServiceFunctionForwarderBuilder;
28 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.ServiceFunctionDictionary;
29 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.ServiceFunctionDictionaryBuilder;
30 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.SffDataPlaneLocator;
31 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.SffDataPlaneLocatorBuilder;
32 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;
33 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;
34
35 public class ServiceFunctionForwarderUtils extends AbstractUtils {
36     public OvsOptionsBuilder ovsOptionsBuilder(OvsOptionsBuilder ovsOptionsBuilder, int port) {
37         String flow = "flow";
38         return ovsOptionsBuilder
39                 .setDstPort(String.valueOf(port))
40                 .setRemoteIp(flow)
41                 .setKey(flow)
42                 .setNsi(flow)
43                 .setNsp(flow)
44                 .setNshc1(flow)
45                 .setNshc2(flow)
46                 .setNshc3(flow)
47                 .setNshc4(flow);
48     }
49
50     public SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder(SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder,
51                                                                  DataPlaneLocatorBuilder dataPlaneLocatorBuilder,
52                                                                  String dplName) {
53         SffOvsLocatorOptionsAugmentationBuilder sffOvsLocatorOptionsAugmentationBuilder =
54                 new SffOvsLocatorOptionsAugmentationBuilder();
55         sffOvsLocatorOptionsAugmentationBuilder.setOvsOptions(
56                 ovsOptionsBuilder(new OvsOptionsBuilder(), 6633).build());
57
58         return sffDataPlaneLocatorBuilder
59                 .setName(new SffDataPlaneLocatorName(dplName))
60                 .setDataPlaneLocator(dataPlaneLocatorBuilder.build())
61                 .addAugmentation(SffOvsLocatorOptionsAugmentation.class,
62                         sffOvsLocatorOptionsAugmentationBuilder.build());
63     }
64
65     public SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder(
66             SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder, String sffDplName, String sfDplName) {
67         return sffSfDataPlaneLocatorBuilder
68                 .setSfDplName(SfDataPlaneLocatorName.getDefaultInstance(sfDplName))
69                 .setSffDplName(SffDataPlaneLocatorName.getDefaultInstance(sffDplName));
70     }
71
72     public ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder(
73             ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder,
74             SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder,
75             String sfName) {
76
77         return serviceFunctionDictionaryBuilder
78                 .setName(SfName.getDefaultInstance(sfName))
79                 .setSffSfDataPlaneLocator(sffSfDataPlaneLocatorBuilder.build());
80     }
81
82     public OvsBridgeBuilder ovsBridgeBuilder(OvsBridgeBuilder ovsBridgeBuilder, String bridgeName) {
83         return ovsBridgeBuilder.setBridgeName(bridgeName);
84     }
85
86     public ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder(
87             ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder,
88             String sffName, String serviceNodeName, String bridgeName,
89             List<SffDataPlaneLocator> sffDataPlaneLocatorList,
90             List<ServiceFunctionDictionary> serviceFunctionDictionaryList) {
91
92         SffOvsBridgeAugmentationBuilder sffOvsBridgeAugmentationBuilder = new SffOvsBridgeAugmentationBuilder();
93         sffOvsBridgeAugmentationBuilder.setOvsBridge(ovsBridgeBuilder(new OvsBridgeBuilder(), bridgeName).build());
94
95         return serviceFunctionForwarderBuilder
96                 .setName(new SffName(sffName))
97                 .setServiceNode(new SnName(serviceNodeName))
98                 .setServiceFunctionDictionary(serviceFunctionDictionaryList)
99                 .setSffDataPlaneLocator(sffDataPlaneLocatorList)
100                 .addAugmentation(SffOvsBridgeAugmentation.class, sffOvsBridgeAugmentationBuilder.build());
101     }
102
103     public ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder(
104             ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder,
105             List<ServiceFunctionForwarder> serviceFunctionForwarderList) {
106         return serviceFunctionForwardersBuilder.setServiceFunctionForwarder(serviceFunctionForwarderList);
107     }
108
109     public ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder(
110             String sffName, String sffIp, int port, String sffDplName,
111             String sfIp, String snName, String bridgeName, String sfName, String sfDplName) {
112
113         DataPlaneLocatorBuilder dataPlaneLocatorBuilder =
114                 dataPlaneLocatorBuilder(new DataPlaneLocatorBuilder(), sffIp, port);
115         SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder =
116                 sffDataPlaneLocatorBuilder( new SffDataPlaneLocatorBuilder(), dataPlaneLocatorBuilder, sffDplName);
117         List<SffDataPlaneLocator> sffDataPlaneLocatorList =
118                 list(new ArrayList<SffDataPlaneLocator>(), sffDataPlaneLocatorBuilder);
119
120         SffSfDataPlaneLocatorBuilder sffSfDataPlaneLocatorBuilder =
121                 sffSfDataPlaneLocatorBuilder(new SffSfDataPlaneLocatorBuilder(), sffDplName, sfDplName);
122         ServiceFunctionDictionaryBuilder serviceFunctionDictionaryBuilder =
123                 serviceFunctionDictionaryBuilder(new ServiceFunctionDictionaryBuilder(),
124                         sffSfDataPlaneLocatorBuilder, sfName);
125         List<ServiceFunctionDictionary> serviceFunctionDictionaryList =
126                 list(new ArrayList<ServiceFunctionDictionary>(), serviceFunctionDictionaryBuilder);
127
128         ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder =
129                 serviceFunctionForwarderBuilder(
130                         new ServiceFunctionForwarderBuilder(), sffName, snName, bridgeName,
131                         sffDataPlaneLocatorList, serviceFunctionDictionaryList);
132         return serviceFunctionForwarderBuilder;
133     }
134 }