Reintroduce SP 1.6 models in TPCE
[transportpce.git] / renderer / src / test / java / org / opendaylight / transportpce / renderer / utils / ServiceDataUtils.java
1 /*
2  * Copyright © 2018 Orange Systems, 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 package org.opendaylight.transportpce.renderer.utils;
9
10 import java.util.ArrayList;
11 import java.util.Arrays;
12 import java.util.Collections;
13 import java.util.List;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.RendererRollbackInput;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.RendererRollbackInputBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.ServicePathInput;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.ServicePathInputBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceImplementationRequestInput;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceImplementationRequestInputBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation.request.input.PathDescription;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation.request.input.PathDescriptionBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation.request.input.ServiceAEndBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation.request.input.ServiceZEndBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirection;
27 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirectionBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirection;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirectionBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.atoz.direction.AToZ;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.atoz.direction.AToZBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.atoz.direction.AToZKey;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ztoa.direction.ZToA;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ztoa.direction.ZToABuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ztoa.direction.ZToAKey;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.ResourceBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.resource.resource.Link;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.resource.resource.LinkBuilder;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.resource.resource.NodeBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.resource.resource.TerminationPoint;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.resource.resource.TerminationPointBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.endpoint.sp.RxDirectionBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.endpoint.sp.TxDirectionBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.handler.header.ServiceHandlerHeaderBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesKey;
48
49
50 public final class ServiceDataUtils {
51
52     private ServiceDataUtils() {
53
54     }
55
56     public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
57         return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
58                 .setDestTp(dstTp).build();
59     }
60
61     public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
62         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
63         servicePathInputBuilder.setNodes(nodes);
64         servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
65         return servicePathInputBuilder.build();
66     }
67
68     public static ServicePathInput buildServicePathInputs() {
69         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
70         List<Nodes> nodes = new ArrayList<>();
71         nodes.add(ServiceDataUtils.createNode("node1", "src", "dst"));
72         servicePathInputBuilder.setNodes(nodes);
73         servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
74         return servicePathInputBuilder.build();
75     }
76
77     public static RendererRollbackInput buildRendererRollbackInput() {
78         RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
79         rendererRollbackInputBuilder.setNodeInterface(new ArrayList<>());
80         return rendererRollbackInputBuilder.build();
81     }
82
83     public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
84         String tpId) {
85         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
86             .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
87             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
88             .setServiceAEnd(getServiceAEndBuild(tpId).build())
89             .setServiceZEnd(getServiceZEndBuild(tpId).build());
90         return builder.build();
91     }
92
93     /*public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
94         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
95             .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
96             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
97             .setServiceAEnd(getServiceAEndBuild().build())
98             .setServiceZEnd(getServiceZEndBuild().build());
99         return builder.build();
100     }
101
102     public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
103         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
104             .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
105             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
106             .setServiceAEnd(getServiceAEndBuild().build())
107             .setServiceZEnd(getServiceZEndBuild().build());
108         return builder.build();
109     }*/
110
111     private static PathDescription createPathDescriptionInvalidResource() {
112         List<AToZ> atoZList = new ArrayList<AToZ>();
113         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource
114             .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
115         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource
116             .resource.resource.Node node1 = nodesBuilder.setNodeId("XPONDER-1-2").build();
117         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource
118             .resource.resource.Node node2 = nodesBuilder.setNodeId("XPONDER-1-2").build();
119         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
120             .setResource(node1).build()).build();
121         AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
122             .setResource(node2).build()).build();
123         atoZList.add(atoZ);
124         atoZList.add(atoZ2);
125         AToZDirection atozDirection = new AToZDirectionBuilder()
126             .setRate(20L)
127             .setAToZWavelengthNumber(20L)
128             .setAToZ(atoZList)
129             .build();
130         List<ZToA> ztoAList = new ArrayList<ZToA>();
131         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
132             .setResource(node1).build()).build();
133         ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
134             .setResource(node2).build()).build();
135         ztoAList.add(ztoA);
136         ztoAList.add(ztoA2);
137         ZToADirection ztoaDirection = new ZToADirectionBuilder()
138             .setRate(20L)
139             .setZToAWavelengthNumber(20L)
140             .setZToA(ztoAList)
141             .build();
142         PathDescriptionBuilder builder = new PathDescriptionBuilder()
143             .setAToZDirection(atozDirection)
144             .setZToADirection(ztoaDirection);
145         return builder.build();
146     }
147
148     public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
149         List<AToZ> atoZList = new ArrayList<AToZ>();
150         TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
151         List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
152         Integer atozId = 1;
153         for (String nodeId : nodeIds) {
154             for (String otherNodeId : nodeIds) {
155                 TerminationPoint terminationPoint = terminationPointBuilder.setTpNodeId(nodeId + '-' + tpId)
156                         .setTpId(tpId).build();
157                 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
158                     .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
159                         .setResource(terminationPoint).build()).build();
160                 atozId++;
161                 atoZList.add(atoZ);
162             }
163         }
164         AToZDirection atozDirection = new AToZDirectionBuilder()
165             .setRate(20L)
166             .setAToZWavelengthNumber(20L)
167             .setAToZ(atoZList)
168             .build();
169
170         Collections.reverse(nodeIds);
171         List<ZToA> ztoAList = new ArrayList<ZToA>();
172         Integer ztoaId = 1;
173         for (String nodeId : nodeIds) {
174             for (String otherNodeId : nodeIds) {
175                 TerminationPoint terminationPoint = terminationPointBuilder.setTpNodeId(nodeId + '-' + tpId)
176                         .setTpId(tpId).build();
177                 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
178                     .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
179                         .setResource(terminationPoint).build()).build();
180                 ztoaId++;
181                 ztoAList.add(ztoA);
182             }
183         }
184         ZToADirection ztoaDirection = new ZToADirectionBuilder()
185             .setRate(20L)
186             .setZToAWavelengthNumber(20L)
187             .setZToA(ztoAList)
188             .build();
189         PathDescriptionBuilder builder = new PathDescriptionBuilder()
190             .setAToZDirection(atozDirection)
191             .setZToADirection(ztoaDirection);
192         return builder.build();
193     }
194
195     private static PathDescription createPathDescriptionLinkResource() {
196         List<AToZ> atoZList = new ArrayList<AToZ>();
197         Link link1 = new LinkBuilder().setLinkId("link 1").build();
198         Link link2 = new LinkBuilder().setLinkId("link 2").build();
199         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
200             .setResource(link1).build()).build();
201         AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
202             .setResource(link2).build()).build();
203         atoZList.add(atoZ);
204         atoZList.add(atoZ2);
205         AToZDirection atozDirection = new AToZDirectionBuilder()
206             .setRate(20L)
207             .setAToZWavelengthNumber(20L)
208             .setAToZ(atoZList)
209             .build();
210         List<ZToA> ztoAList = new ArrayList<ZToA>();
211         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
212             .setResource(link1).build()).build();
213         ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
214             .setResource(link2).build()).build();
215         ztoAList.add(ztoA);
216         ztoAList.add(ztoA2);
217         ZToADirection ztoaDirection = new ZToADirectionBuilder()
218             .setRate(20L)
219             .setZToAWavelengthNumber(20L)
220             .setZToA(ztoAList)
221             .build();
222         PathDescriptionBuilder builder = new PathDescriptionBuilder()
223             .setAToZDirection(atozDirection)
224             .setZToADirection(ztoaDirection);
225         return builder.build();
226     }
227
228     public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
229         return new ServiceAEndBuilder()
230             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2-"
231                     + tpId)
232             .setTxDirection(
233                 new TxDirectionBuilder()
234                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
235                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
236                         .setPortSubSlot("port subslot").setPortType("port type").build())
237                     .build())
238             .setRxDirection(
239                 new RxDirectionBuilder()
240                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
241                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
242                         .setPortSubSlot("port subslot").setPortType("port type").build())
243                     .build());
244     }
245
246     public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
247         return new ServiceZEndBuilder()
248             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3-"
249                     + tpId)
250             .setTxDirection(
251                 new TxDirectionBuilder()
252                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
253                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
254                         .setPortSubSlot("port subslot").setPortType("port type").build())
255                     .build())
256             .setRxDirection(
257                 new RxDirectionBuilder()
258                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
259                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
260                         .setPortSubSlot("port subslot").setPortType("port type").build())
261                     .build());
262     }
263
264 }