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