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.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.rev171016.service.endpoint.sp.RxDirectionBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.endpoint.sp.TxDirectionBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.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.setNodeId("XPONDER-1-2").build();
117 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource
118 .resource.resource.Node node2 = nodesBuilder.setNodeId("XPONDER-1-2").build();
119 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
120 .setResource(node1).build()).build();
121 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
122 .setResource(node2).build()).build();
125 AToZDirection atozDirection = new AToZDirectionBuilder()
127 .setAToZWavelengthNumber(20L)
130 List<ZToA> ztoAList = new ArrayList<ZToA>();
131 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
132 .setResource(node1).build()).build();
133 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
134 .setResource(node2).build()).build();
137 ZToADirection ztoaDirection = new ZToADirectionBuilder()
139 .setZToAWavelengthNumber(20L)
142 PathDescriptionBuilder builder = new PathDescriptionBuilder()
143 .setAToZDirection(atozDirection)
144 .setZToADirection(ztoaDirection);
145 return builder.build();
148 public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
149 List<AToZ> atoZList = new ArrayList<AToZ>();
150 TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
151 List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
153 for (String nodeId : nodeIds) {
154 for (String otherNodeId : nodeIds) {
155 TerminationPoint terminationPoint = terminationPointBuilder.setTpNodeId(nodeId + '-' + tpId)
156 .setTpId(tpId).build();
157 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
158 .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
159 .setResource(terminationPoint).build()).build();
164 AToZDirection atozDirection = new AToZDirectionBuilder()
166 .setAToZWavelengthNumber(20L)
170 Collections.reverse(nodeIds);
171 List<ZToA> ztoAList = new ArrayList<ZToA>();
173 for (String nodeId : nodeIds) {
174 for (String otherNodeId : nodeIds) {
175 TerminationPoint terminationPoint = terminationPointBuilder.setTpNodeId(nodeId + '-' + tpId)
176 .setTpId(tpId).build();
177 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
178 .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
179 .setResource(terminationPoint).build()).build();
184 ZToADirection ztoaDirection = new ZToADirectionBuilder()
186 .setZToAWavelengthNumber(20L)
189 PathDescriptionBuilder builder = new PathDescriptionBuilder()
190 .setAToZDirection(atozDirection)
191 .setZToADirection(ztoaDirection);
192 return builder.build();
195 private static PathDescription createPathDescriptionLinkResource() {
196 List<AToZ> atoZList = new ArrayList<AToZ>();
197 Link link1 = new LinkBuilder().setLinkId("link 1").build();
198 Link link2 = new LinkBuilder().setLinkId("link 2").build();
199 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
200 .setResource(link1).build()).build();
201 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
202 .setResource(link2).build()).build();
205 AToZDirection atozDirection = new AToZDirectionBuilder()
207 .setAToZWavelengthNumber(20L)
210 List<ZToA> ztoAList = new ArrayList<ZToA>();
211 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
212 .setResource(link1).build()).build();
213 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
214 .setResource(link2).build()).build();
217 ZToADirection ztoaDirection = new ZToADirectionBuilder()
219 .setZToAWavelengthNumber(20L)
222 PathDescriptionBuilder builder = new PathDescriptionBuilder()
223 .setAToZDirection(atozDirection)
224 .setZToADirection(ztoaDirection);
225 return builder.build();
228 public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
229 return new ServiceAEndBuilder()
230 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2-"
233 new TxDirectionBuilder()
234 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
235 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
236 .setPortSubSlot("port subslot").setPortType("port type").build())
239 new RxDirectionBuilder()
240 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
241 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
242 .setPortSubSlot("port subslot").setPortType("port type").build())
246 public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
247 return new ServiceZEndBuilder()
248 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3-"
251 new TxDirectionBuilder()
252 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
253 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
254 .setPortSubSlot("port subslot").setPortType("port type").build())
257 new RxDirectionBuilder()
258 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
259 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
260 .setPortSubSlot("port subslot").setPortType("port type").build())