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.openroadm.common.service.types.rev161014.ServiceFormat;
15 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirection;
17 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirectionBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirection;
19 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirectionBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZ;
21 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZKey;
23 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToA;
24 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToABuilder;
25 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToAKey;
26 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.ResourceBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.Link;
28 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.LinkBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.NodeBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPoint;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPointBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.link.LinkIdentifierBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.node.NodeIdentifierBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.termination.point.TerminationPointIdentifierBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInputBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescription;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescriptionBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceAEndBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceZEndBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesKey;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInput;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInputBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInputBuilder;
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().build())
92 .setServiceZEnd(getServiceZEndBuild().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)
162 .setTpId((nodeId.equals(otherNodeId) ? "" : nodeId + "-") + otherNodeId + "-" + tpId).build())
164 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
165 .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
166 .setResource(terminationPoint).build()).build();
171 AToZDirection atozDirection = new AToZDirectionBuilder()
173 .setAToZWavelengthNumber(20L)
177 Collections.reverse(nodeIds);
178 List<ZToA> ztoAList = new ArrayList<ZToA>();
180 for (String nodeId : nodeIds) {
181 for (String otherNodeId : nodeIds) {
182 TerminationPoint terminationPoint = terminationPointBuilder
183 .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId(nodeId)
184 .setTpId((nodeId.equals(otherNodeId) ? "" : nodeId + "-") + otherNodeId + "-" + tpId).build())
186 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
187 .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
188 .setResource(terminationPoint).build()).build();
193 ZToADirection ztoaDirection = new ZToADirectionBuilder()
195 .setZToAWavelengthNumber(20L)
198 PathDescriptionBuilder builder = new PathDescriptionBuilder()
199 .setAToZDirection(atozDirection)
200 .setZToADirection(ztoaDirection);
201 return builder.build();
204 private static PathDescription createPathDescriptionLinkResource() {
205 List<AToZ> atoZList = new ArrayList<AToZ>();
206 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
207 .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
208 Link link1 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 1").build())
210 Link link2 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 2").build())
212 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
213 .setResource(link1).build()).build();
214 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
215 .setResource(link2).build()).build();
218 AToZDirection atozDirection = new AToZDirectionBuilder()
220 .setAToZWavelengthNumber(20L)
223 List<ZToA> ztoAList = new ArrayList<ZToA>();
224 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
225 .setResource(link1).build()).build();
226 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
227 .setResource(link2).build()).build();
230 ZToADirection ztoaDirection = new ZToADirectionBuilder()
232 .setZToAWavelengthNumber(20L)
235 PathDescriptionBuilder builder = new PathDescriptionBuilder()
236 .setAToZDirection(atozDirection)
237 .setZToADirection(ztoaDirection);
238 return builder.build();
241 public static ServiceAEndBuilder getServiceAEndBuild() {
242 return new ServiceAEndBuilder()
243 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
245 new TxDirectionBuilder()
246 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
247 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
248 .setPortSubSlot("port subslot").setPortType("port type").build())
251 new RxDirectionBuilder()
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())
258 public static ServiceZEndBuilder getServiceZEndBuild() {
259 return new ServiceZEndBuilder()
260 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3")
262 new TxDirectionBuilder()
263 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
264 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
265 .setPortSubSlot("port subslot").setPortType("port type").build())
268 new RxDirectionBuilder()
269 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
270 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
271 .setPortSubSlot("port subslot").setPortType("port type").build())