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.HashMap;
14 import java.util.List;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.RendererRollbackInput;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.RendererRollbackInputBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.ServicePathInput;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.ServicePathInputBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceImplementationRequestInput;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceImplementationRequestInputBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.service.implementation.request.input.PathDescription;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.service.implementation.request.input.PathDescriptionBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.service.implementation.request.input.ServiceAEndBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.service.implementation.request.input.ServiceZEndBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirection;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirectionBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirection;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirectionBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.atoz.direction.AToZ;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.atoz.direction.AToZBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.atoz.direction.AToZKey;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ztoa.direction.ZToA;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ztoa.direction.ZToABuilder;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ztoa.direction.ZToAKey;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.ResourceBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.Link;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.LinkBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.NodeBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.TerminationPoint;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.TerminationPointBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.olm.renderer.input.Nodes;
49 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.olm.renderer.input.NodesBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.olm.renderer.input.NodesKey;
51 import org.opendaylight.yangtools.yang.common.Uint32;
54 public final class ServiceDataUtils {
56 private ServiceDataUtils() {
60 public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
61 return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
62 .setDestTp(dstTp).build();
65 public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
66 ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
67 servicePathInputBuilder.setNodes(nodes);
68 servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(Uint32.valueOf(20));
69 return servicePathInputBuilder.build();
72 public static ServicePathInput buildServicePathInputs() {
73 ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
74 List<Nodes> nodes = new ArrayList<>();
75 nodes.add(ServiceDataUtils.createNode("node1", "src", "dst"));
76 servicePathInputBuilder.setNodes(nodes);
77 servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(Uint32.valueOf(20));
78 return servicePathInputBuilder.build();
81 public static RendererRollbackInput buildRendererRollbackInput() {
82 RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
83 rendererRollbackInputBuilder.setNodeInterface(Map.of());
84 return rendererRollbackInputBuilder.build();
87 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
89 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
90 .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
91 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
92 .setServiceAEnd(getServiceAEndBuild(tpId).build())
93 .setServiceZEnd(getServiceZEndBuild(tpId).build())
94 .setConnectionType(ConnectionType.Service);
95 return builder.build();
98 /*public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
99 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
100 .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
101 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
102 .setServiceAEnd(getServiceAEndBuild().build())
103 .setServiceZEnd(getServiceZEndBuild().build());
104 return builder.build();
107 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
108 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
109 .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
110 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
111 .setServiceAEnd(getServiceAEndBuild().build())
112 .setServiceZEnd(getServiceZEndBuild().build());
113 return builder.build();
116 private static PathDescription createPathDescriptionInvalidResource() {
117 Map<AToZKey,AToZ> atoZMap = new HashMap<>();
118 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource
119 .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
120 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource
121 .resource.resource.Node node1 = nodesBuilder
122 .setNodeId("XPONDER-1-2").build();
123 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource
124 .resource.resource.Node node2 = nodesBuilder
125 .setNodeId("XPONDER-1-2").build();
126 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
127 .setResource(node1).build()).build();
128 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
129 .setResource(node2).build()).build();
130 atoZMap.put(atoZ.key(),atoZ);
131 atoZMap.put(atoZ2.key(),atoZ2);
132 AToZDirection atozDirection = new AToZDirectionBuilder()
133 .setRate(Uint32.valueOf(20))
134 .setAToZWavelengthNumber(Uint32.valueOf(32))
137 Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
138 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
139 .setResource(node1).build()).build();
140 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
141 .setResource(node2).build()).build();
142 ztoAMap.put(ztoA.key(),ztoA);
143 ztoAMap.put(ztoA2.key(),ztoA2);
144 ZToADirection ztoaDirection = new ZToADirectionBuilder()
145 .setRate(Uint32.valueOf(20))
146 .setZToAWavelengthNumber(Uint32.valueOf(20))
149 PathDescriptionBuilder builder = new PathDescriptionBuilder()
150 .setAToZDirection(atozDirection)
151 .setZToADirection(ztoaDirection);
152 return builder.build();
155 public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
156 Map<AToZKey,AToZ> atoZMap = new HashMap<>();
157 TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
158 List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
160 for (String nodeId : nodeIds) {
161 for (String otherNodeId : nodeIds) {
162 TerminationPoint terminationPoint = terminationPointBuilder
163 .setTpNodeId(nodeId + '-'
165 .setTpId(tpId).build();
166 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
167 .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
168 .setResource(terminationPoint).build()).build();
170 atoZMap.put(atoZ.key(),atoZ);
173 AToZDirection atozDirection = new AToZDirectionBuilder()
174 .setRate(Uint32.valueOf(20))
175 .setAToZWavelengthNumber(Uint32.valueOf(20))
179 Collections.reverse(nodeIds);
180 Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
182 for (String nodeId : nodeIds) {
183 for (String otherNodeId : nodeIds) {
184 TerminationPoint terminationPoint = terminationPointBuilder
185 .setTpNodeId(nodeId + '-'
187 .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();
192 ztoAMap.put(ztoA.key(),ztoA);
195 ZToADirection ztoaDirection = new ZToADirectionBuilder()
196 .setRate(Uint32.valueOf(20))
197 .setZToAWavelengthNumber(Uint32.valueOf(20))
200 PathDescriptionBuilder builder = new PathDescriptionBuilder()
201 .setAToZDirection(atozDirection)
202 .setZToADirection(ztoaDirection);
203 return builder.build();
206 private static PathDescription createPathDescriptionLinkResource() {
207 Map<AToZKey,AToZ> atoZMap = new HashMap<>();
208 Link link1 = new LinkBuilder().setLinkId("link 1").build();
209 Link link2 = new LinkBuilder().setLinkId("link 2").build();
210 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
211 .setResource(link1).build()).build();
212 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
213 .setResource(link2).build()).build();
214 atoZMap.put(atoZ.key(),atoZ);
215 atoZMap.put(atoZ2.key(),atoZ2);
216 AToZDirection atozDirection = new AToZDirectionBuilder()
217 .setRate(Uint32.valueOf(20))
218 .setAToZWavelengthNumber(Uint32.valueOf(20))
221 Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
222 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
223 .setResource(link1).build()).build();
224 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
225 .setResource(link2).build()).build();
226 ztoAMap.put(ztoA.key(),ztoA);
227 ztoAMap.put(ztoA2.key(),ztoA2);
228 ZToADirection ztoaDirection = new ZToADirectionBuilder()
229 .setRate(Uint32.valueOf(20))
230 .setZToAWavelengthNumber(Uint32.valueOf(20))
233 PathDescriptionBuilder builder = new PathDescriptionBuilder()
234 .setAToZDirection(atozDirection)
235 .setZToADirection(ztoaDirection);
236 return builder.build();
239 public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
240 return new ServiceAEndBuilder()
241 .setClli("clli").setServiceFormat(ServiceFormat.OC)
242 .setServiceRate(Uint32.valueOf(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())
256 .setServiceRate(Uint32.valueOf(100))
257 .setServiceFormat(ServiceFormat.Ethernet);
260 public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
261 return new ServiceZEndBuilder()
262 .setClli("clli").setServiceFormat(ServiceFormat.OC)
263 .setServiceRate(Uint32.valueOf(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())