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.openroadm.common.service.types.rev161014.ServiceFormat;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirection;
21 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirectionBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirection;
23 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirectionBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZ;
25 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZKey;
27 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToA;
28 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToABuilder;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToAKey;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.ResourceBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.Link;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.LinkBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.NodeBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPoint;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPointBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.link.LinkIdentifierBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.node.NodeIdentifierBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.termination.point.TerminationPointIdentifierBuilder;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInputBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescription;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescriptionBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceAEndBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceZEndBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
49 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesKey;
53 public final class ServiceDataUtils {
55 private ServiceDataUtils() {
59 public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
60 return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
61 .setDestTp(dstTp).build();
64 public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
65 ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
66 servicePathInputBuilder.setNodes(nodes);
67 servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
68 return servicePathInputBuilder.build();
71 public static ServicePathInput buildServicePathInputs() {
72 ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
73 List<Nodes> nodes = new ArrayList<>();
74 nodes.add(ServiceDataUtils.createNode("node1", "src", "dst"));
75 servicePathInputBuilder.setNodes(nodes);
76 servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
77 return servicePathInputBuilder.build();
80 public static RendererRollbackInput buildRendererRollbackInput() {
81 RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
82 rendererRollbackInputBuilder.setNodeInterface(new ArrayList<>());
83 return rendererRollbackInputBuilder.build();
86 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
88 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
89 .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
90 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
91 .setServiceAEnd(getServiceAEndBuild(tpId).build())
92 .setServiceZEnd(getServiceZEndBuild(tpId).build());
93 return builder.build();
96 /*public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
97 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
98 .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
99 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
100 .setServiceAEnd(getServiceAEndBuild().build())
101 .setServiceZEnd(getServiceZEndBuild().build());
102 return builder.build();
105 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
106 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
107 .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
108 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
109 .setServiceAEnd(getServiceAEndBuild().build())
110 .setServiceZEnd(getServiceZEndBuild().build());
111 return builder.build();
114 private static PathDescription createPathDescriptionInvalidResource() {
115 List<AToZ> atoZList = new ArrayList<AToZ>();
116 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
117 .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
118 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
119 .resource.resource.Node node1 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
120 .setNodeId("XPONDER-1-2").build()).build();
121 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
122 .resource.resource.Node node2 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
123 .setNodeId("XPONDER-1-2").build()).build();
124 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
125 .setResource(node1).build()).build();
126 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
127 .setResource(node2).build()).build();
130 AToZDirection atozDirection = new AToZDirectionBuilder()
132 .setAToZWavelengthNumber(20L)
135 List<ZToA> ztoAList = new ArrayList<ZToA>();
136 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
137 .setResource(node1).build()).build();
138 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
139 .setResource(node2).build()).build();
142 ZToADirection ztoaDirection = new ZToADirectionBuilder()
144 .setZToAWavelengthNumber(20L)
147 PathDescriptionBuilder builder = new PathDescriptionBuilder()
148 .setAToZDirection(atozDirection)
149 .setZToADirection(ztoaDirection);
150 return builder.build();
153 public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
154 List<AToZ> atoZList = new ArrayList<AToZ>();
155 TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
156 List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
158 for (String nodeId : nodeIds) {
159 for (String otherNodeId : nodeIds) {
160 TerminationPoint terminationPoint = terminationPointBuilder
161 .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId(nodeId + '-'
163 .setTpId(tpId).build())
165 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
166 .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
167 .setResource(terminationPoint).build()).build();
172 AToZDirection atozDirection = new AToZDirectionBuilder()
174 .setAToZWavelengthNumber(20L)
178 Collections.reverse(nodeIds);
179 List<ZToA> ztoAList = new ArrayList<ZToA>();
181 for (String nodeId : nodeIds) {
182 for (String otherNodeId : nodeIds) {
183 TerminationPoint terminationPoint = terminationPointBuilder
184 .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId(nodeId + '-'
186 .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();
195 ZToADirection ztoaDirection = new ZToADirectionBuilder()
197 .setZToAWavelengthNumber(20L)
200 PathDescriptionBuilder builder = new PathDescriptionBuilder()
201 .setAToZDirection(atozDirection)
202 .setZToADirection(ztoaDirection);
203 return builder.build();
206 private static PathDescription createPathDescriptionLinkResource() {
207 List<AToZ> atoZList = new ArrayList<AToZ>();
208 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
209 .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
210 Link link1 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 1").build())
212 Link link2 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 2").build())
214 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
215 .setResource(link1).build()).build();
216 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
217 .setResource(link2).build()).build();
220 AToZDirection atozDirection = new AToZDirectionBuilder()
222 .setAToZWavelengthNumber(20L)
225 List<ZToA> ztoAList = new ArrayList<ZToA>();
226 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
227 .setResource(link1).build()).build();
228 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
229 .setResource(link2).build()).build();
232 ZToADirection ztoaDirection = new ZToADirectionBuilder()
234 .setZToAWavelengthNumber(20L)
237 PathDescriptionBuilder builder = new PathDescriptionBuilder()
238 .setAToZDirection(atozDirection)
239 .setZToADirection(ztoaDirection);
240 return builder.build();
243 public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
244 return new ServiceAEndBuilder()
245 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2-"
248 new TxDirectionBuilder()
249 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
250 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
251 .setPortSubSlot("port subslot").setPortType("port type").build())
254 new RxDirectionBuilder()
255 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
256 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
257 .setPortSubSlot("port subslot").setPortType("port type").build())
261 public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
262 return new ServiceZEndBuilder()
263 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3-"
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())
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())