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.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;
51 public final class ServiceDataUtils {
53 private ServiceDataUtils() {
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();
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();
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();
78 public static RendererRollbackInput buildRendererRollbackInput() {
79 RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
80 rendererRollbackInputBuilder.setNodeInterface(new ArrayList<>());
81 return rendererRollbackInputBuilder.build();
84 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
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();
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();
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();
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();
129 AToZDirection atozDirection = new AToZDirectionBuilder()
131 .setAToZWavelengthNumber(20L)
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();
141 ZToADirection ztoaDirection = new ZToADirectionBuilder()
143 .setZToAWavelengthNumber(20L)
146 PathDescriptionBuilder builder = new PathDescriptionBuilder()
147 .setAToZDirection(atozDirection)
148 .setZToADirection(ztoaDirection);
149 return builder.build();
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");
157 for (String nodeId : nodeIds) {
158 for (String otherNodeId : nodeIds) {
159 TerminationPoint terminationPoint = terminationPointBuilder
160 .setTpNodeId(nodeId + '-'
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();
170 AToZDirection atozDirection = new AToZDirectionBuilder()
172 .setAToZWavelengthNumber(20L)
176 Collections.reverse(nodeIds);
177 List<ZToA> ztoAList = new ArrayList<ZToA>();
179 for (String nodeId : nodeIds) {
180 for (String otherNodeId : nodeIds) {
181 TerminationPoint terminationPoint = terminationPointBuilder
182 .setTpNodeId(nodeId + '-'
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();
192 ZToADirection ztoaDirection = new ZToADirectionBuilder()
194 .setZToAWavelengthNumber(20L)
197 PathDescriptionBuilder builder = new PathDescriptionBuilder()
198 .setAToZDirection(atozDirection)
199 .setZToADirection(ztoaDirection);
200 return builder.build();
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();
215 AToZDirection atozDirection = new AToZDirectionBuilder()
217 .setAToZWavelengthNumber(20L)
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();
227 ZToADirection ztoaDirection = new ZToADirectionBuilder()
229 .setZToAWavelengthNumber(20L)
232 PathDescriptionBuilder builder = new PathDescriptionBuilder()
233 .setAToZDirection(atozDirection)
234 .setZToADirection(ztoaDirection);
235 return builder.build();
238 public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
239 return new ServiceAEndBuilder()
240 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2-"
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())
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())
254 .setServiceRate(Long.valueOf(100))
255 .setServiceFormat(ServiceFormat.Ethernet);
258 public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
259 return new ServiceZEndBuilder()
260 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3-"
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())
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())