2 * Copyright © 2018 Orange Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.transportpce.renderer.utils;
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.rev190531.service.port.PortBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
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;
50 public final class ServiceDataUtils {
52 private ServiceDataUtils() {
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();
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();
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();
77 public static RendererRollbackInput buildRendererRollbackInput() {
78 RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
79 rendererRollbackInputBuilder.setNodeInterface(new ArrayList<>());
80 return rendererRollbackInputBuilder.build();
83 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
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();
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();
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();
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();
127 AToZDirection atozDirection = new AToZDirectionBuilder()
129 .setAToZWavelengthNumber(20L)
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();
139 ZToADirection ztoaDirection = new ZToADirectionBuilder()
141 .setZToAWavelengthNumber(20L)
144 PathDescriptionBuilder builder = new PathDescriptionBuilder()
145 .setAToZDirection(atozDirection)
146 .setZToADirection(ztoaDirection);
147 return builder.build();
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");
155 for (String nodeId : nodeIds) {
156 for (String otherNodeId : nodeIds) {
157 TerminationPoint terminationPoint = terminationPointBuilder
158 .setTpNodeId(nodeId + '-'
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();
168 AToZDirection atozDirection = new AToZDirectionBuilder()
170 .setAToZWavelengthNumber(20L)
174 Collections.reverse(nodeIds);
175 List<ZToA> ztoAList = new ArrayList<ZToA>();
177 for (String nodeId : nodeIds) {
178 for (String otherNodeId : nodeIds) {
179 TerminationPoint terminationPoint = terminationPointBuilder
180 .setTpNodeId(nodeId + '-'
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();
190 ZToADirection ztoaDirection = new ZToADirectionBuilder()
192 .setZToAWavelengthNumber(20L)
195 PathDescriptionBuilder builder = new PathDescriptionBuilder()
196 .setAToZDirection(atozDirection)
197 .setZToADirection(ztoaDirection);
198 return builder.build();
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();
213 AToZDirection atozDirection = new AToZDirectionBuilder()
215 .setAToZWavelengthNumber(20L)
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();
225 ZToADirection ztoaDirection = new ZToADirectionBuilder()
227 .setZToAWavelengthNumber(20L)
230 PathDescriptionBuilder builder = new PathDescriptionBuilder()
231 .setAToZDirection(atozDirection)
232 .setZToADirection(ztoaDirection);
233 return builder.build();
236 public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
237 return new ServiceAEndBuilder()
238 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2-"
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())
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())
254 public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
255 return new ServiceZEndBuilder()
256 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3-"
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())
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())