upgrade models to OpenROADM service 5.1.0
[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.rev191009.service.endpoint.sp.RxDirectionBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev191009.service.endpoint.sp.TxDirectionBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev191009.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
117             .setNodeId("XPONDER-1-2").build();
118         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource
119             .resource.resource.Node node2 = nodesBuilder
120             .setNodeId("XPONDER-1-2").build();
121         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
122             .setResource(node1).build()).build();
123         AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
124             .setResource(node2).build()).build();
125         atoZList.add(atoZ);
126         atoZList.add(atoZ2);
127         AToZDirection atozDirection = new AToZDirectionBuilder()
128             .setRate(20L)
129             .setAToZWavelengthNumber(20L)
130             .setAToZ(atoZList)
131             .build();
132         List<ZToA> ztoAList = new ArrayList<ZToA>();
133         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
134             .setResource(node1).build()).build();
135         ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
136             .setResource(node2).build()).build();
137         ztoAList.add(ztoA);
138         ztoAList.add(ztoA2);
139         ZToADirection ztoaDirection = new ZToADirectionBuilder()
140             .setRate(20L)
141             .setZToAWavelengthNumber(20L)
142             .setZToA(ztoAList)
143             .build();
144         PathDescriptionBuilder builder = new PathDescriptionBuilder()
145             .setAToZDirection(atozDirection)
146             .setZToADirection(ztoaDirection);
147         return builder.build();
148     }
149
150     public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
151         List<AToZ> atoZList = new ArrayList<AToZ>();
152         TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
153         List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
154         Integer atozId = 1;
155         for (String nodeId : nodeIds) {
156             for (String otherNodeId : nodeIds) {
157                 TerminationPoint terminationPoint = terminationPointBuilder
158                     .setTpNodeId(nodeId + '-'
159                             + tpId)
160                         .setTpId(tpId).build();
161                 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
162                     .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
163                         .setResource(terminationPoint).build()).build();
164                 atozId++;
165                 atoZList.add(atoZ);
166             }
167         }
168         AToZDirection atozDirection = new AToZDirectionBuilder()
169             .setRate(20L)
170             .setAToZWavelengthNumber(20L)
171             .setAToZ(atoZList)
172             .build();
173
174         Collections.reverse(nodeIds);
175         List<ZToA> ztoAList = new ArrayList<ZToA>();
176         Integer ztoaId = 1;
177         for (String nodeId : nodeIds) {
178             for (String otherNodeId : nodeIds) {
179                 TerminationPoint terminationPoint = terminationPointBuilder
180                     .setTpNodeId(nodeId + '-'
181                             + tpId)
182                         .setTpId(tpId).build();
183                 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
184                     .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
185                         .setResource(terminationPoint).build()).build();
186                 ztoaId++;
187                 ztoAList.add(ztoA);
188             }
189         }
190         ZToADirection ztoaDirection = new ZToADirectionBuilder()
191             .setRate(20L)
192             .setZToAWavelengthNumber(20L)
193             .setZToA(ztoAList)
194             .build();
195         PathDescriptionBuilder builder = new PathDescriptionBuilder()
196             .setAToZDirection(atozDirection)
197             .setZToADirection(ztoaDirection);
198         return builder.build();
199     }
200
201     private static PathDescription createPathDescriptionLinkResource() {
202         List<AToZ> atoZList = new ArrayList<AToZ>();
203 //        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource
204 //            .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
205         Link link1 = new LinkBuilder().setLinkId("link 1").build();
206         Link link2 = new LinkBuilder().setLinkId("link 2").build();
207         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
208             .setResource(link1).build()).build();
209         AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
210             .setResource(link2).build()).build();
211         atoZList.add(atoZ);
212         atoZList.add(atoZ2);
213         AToZDirection atozDirection = new AToZDirectionBuilder()
214             .setRate(20L)
215             .setAToZWavelengthNumber(20L)
216             .setAToZ(atoZList)
217             .build();
218         List<ZToA> ztoAList = new ArrayList<ZToA>();
219         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
220             .setResource(link1).build()).build();
221         ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
222             .setResource(link2).build()).build();
223         ztoAList.add(ztoA);
224         ztoAList.add(ztoA2);
225         ZToADirection ztoaDirection = new ZToADirectionBuilder()
226             .setRate(20L)
227             .setZToAWavelengthNumber(20L)
228             .setZToA(ztoAList)
229             .build();
230         PathDescriptionBuilder builder = new PathDescriptionBuilder()
231             .setAToZDirection(atozDirection)
232             .setZToADirection(ztoaDirection);
233         return builder.build();
234     }
235
236     public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
237         return new ServiceAEndBuilder()
238             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2-"
239                     + tpId)
240             .setTxDirection(
241                 new TxDirectionBuilder()
242                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
243                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
244                         .setPortSubSlot("port subslot").setPortType("port type").build())
245                     .build())
246             .setRxDirection(
247                 new RxDirectionBuilder()
248                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
249                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
250                         .setPortSubSlot("port subslot").setPortType("port type").build())
251                     .build());
252     }
253
254     public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
255         return new ServiceZEndBuilder()
256             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3-"
257                     + tpId)
258             .setTxDirection(
259                 new TxDirectionBuilder()
260                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
261                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
262                         .setPortSubSlot("port subslot").setPortType("port type").build())
263                     .build())
264             .setRxDirection(
265                 new RxDirectionBuilder()
266                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
267                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
268                         .setPortSubSlot("port subslot").setPortType("port type").build())
269                     .build());
270     }
271
272 }