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