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.rev210618.RendererRollbackInput;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInputBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInputBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.PathDescription;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.PathDescriptionBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.ServiceAEndBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.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.rev210705.path.description.AToZDirection;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirectionBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirection;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirectionBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZ;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZKey;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToA;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToABuilder;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToAKey;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.ResourceBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.Link;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.LinkBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.Node;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.NodeBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPoint;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPointBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder;
49 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
50 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.NodesBuilder;
51 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.NodesKey;
52 import org.opendaylight.yangtools.yang.common.Uint32;
55 public final class ServiceDataUtils {
57 private ServiceDataUtils() {
61 public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
62 return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
63 .setDestTp(dstTp).build();
66 public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
67 ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
68 servicePathInputBuilder.setNodes(nodes);
69 servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(Uint32.valueOf(20));
70 return servicePathInputBuilder.build();
73 public static ServicePathInput buildServicePathInputs() {
74 ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
75 List<Nodes> nodes = new ArrayList<>();
76 nodes.add(ServiceDataUtils.createNode("node1", "src", "dst"));
77 servicePathInputBuilder.setNodes(nodes);
78 servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(Uint32.valueOf(20));
79 return servicePathInputBuilder.build();
82 public static RendererRollbackInput buildRendererRollbackInput() {
83 RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
84 rendererRollbackInputBuilder.setNodeInterface(Map.of());
85 return rendererRollbackInputBuilder.build();
88 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
90 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
91 .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
92 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
93 .setServiceAEnd(getServiceAEndBuild(tpId).build())
94 .setServiceZEnd(getServiceZEndBuild(tpId).build())
95 .setConnectionType(ConnectionType.Service);
96 return builder.build();
99 /*public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
100 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
101 .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
102 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
103 .setServiceAEnd(getServiceAEndBuild().build())
104 .setServiceZEnd(getServiceZEndBuild().build());
105 return builder.build();
108 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
109 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
110 .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
111 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
112 .setServiceAEnd(getServiceAEndBuild().build())
113 .setServiceZEnd(getServiceZEndBuild().build());
114 return builder.build();
117 private static PathDescription createPathDescriptionInvalidResource() {
118 Map<AToZKey,AToZ> atoZMap = new HashMap<>();
119 Node node = new NodeBuilder().setNodeId("XPONDER-1-2").build();
120 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
121 .setResource(node).build()).build();
122 atoZMap.put(atoZ.key(),atoZ);
123 AToZDirection atozDirection = new AToZDirectionBuilder()
124 .setRate(Uint32.valueOf(20))
125 .setAToZWavelengthNumber(Uint32.valueOf(32))
128 Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
129 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
130 .setResource(node).build()).build();
131 ztoAMap.put(ztoA.key(),ztoA);
132 ZToADirection ztoaDirection = new ZToADirectionBuilder()
133 .setRate(Uint32.valueOf(20))
134 .setZToAWavelengthNumber(Uint32.valueOf(20))
137 PathDescriptionBuilder builder = new PathDescriptionBuilder()
138 .setAToZDirection(atozDirection)
139 .setZToADirection(ztoaDirection);
140 return builder.build();
143 public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
144 Map<AToZKey,AToZ> atoZMap = new HashMap<>();
145 TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
146 List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
148 for (String nodeId : nodeIds) {
149 for (String otherNodeId : nodeIds) {
150 TerminationPoint terminationPoint = terminationPointBuilder
151 .setTpNodeId(nodeId + '-'
153 .setTpId(tpId).build();
154 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
155 .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
156 .setResource(terminationPoint).build()).build();
158 atoZMap.put(atoZ.key(),atoZ);
161 AToZDirection atozDirection = new AToZDirectionBuilder()
162 .setRate(Uint32.valueOf(20))
163 .setAToZWavelengthNumber(Uint32.valueOf(20))
167 Collections.reverse(nodeIds);
168 Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
170 for (String nodeId : nodeIds) {
171 for (String otherNodeId : nodeIds) {
172 TerminationPoint terminationPoint = terminationPointBuilder
173 .setTpNodeId(nodeId + '-'
175 .setTpId(tpId).build();
176 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
177 .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
178 .setResource(terminationPoint).build()).build();
180 ztoAMap.put(ztoA.key(),ztoA);
183 ZToADirection ztoaDirection = new ZToADirectionBuilder()
184 .setRate(Uint32.valueOf(20))
185 .setZToAWavelengthNumber(Uint32.valueOf(20))
188 PathDescriptionBuilder builder = new PathDescriptionBuilder()
189 .setAToZDirection(atozDirection)
190 .setZToADirection(ztoaDirection);
191 return builder.build();
194 private static PathDescription createPathDescriptionLinkResource() {
195 Map<AToZKey,AToZ> atoZMap = new HashMap<>();
196 Link link1 = new LinkBuilder().setLinkId("link 1").build();
197 Link link2 = new LinkBuilder().setLinkId("link 2").build();
198 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
199 .setResource(link1).build()).build();
200 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
201 .setResource(link2).build()).build();
202 atoZMap.put(atoZ.key(),atoZ);
203 atoZMap.put(atoZ2.key(),atoZ2);
204 AToZDirection atozDirection = new AToZDirectionBuilder()
205 .setRate(Uint32.valueOf(20))
206 .setAToZWavelengthNumber(Uint32.valueOf(20))
209 Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
210 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
211 .setResource(link1).build()).build();
212 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
213 .setResource(link2).build()).build();
214 ztoAMap.put(ztoA.key(),ztoA);
215 ztoAMap.put(ztoA2.key(),ztoA2);
216 ZToADirection ztoaDirection = new ZToADirectionBuilder()
217 .setRate(Uint32.valueOf(20))
218 .setZToAWavelengthNumber(Uint32.valueOf(20))
221 PathDescriptionBuilder builder = new PathDescriptionBuilder()
222 .setAToZDirection(atozDirection)
223 .setZToADirection(ztoaDirection);
224 return builder.build();
227 public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
228 return new ServiceAEndBuilder()
229 .setClli("clli").setServiceFormat(ServiceFormat.OC)
230 .setServiceRate(Uint32.valueOf(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())
244 .setServiceRate(Uint32.valueOf(100))
245 .setServiceFormat(ServiceFormat.Ethernet);
248 public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
249 return new ServiceZEndBuilder()
250 .setClli("clli").setServiceFormat(ServiceFormat.OC)
251 .setServiceRate(Uint32.valueOf(1)).setNodeId("XPONDER-2-3-"
254 new TxDirectionBuilder()
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())
260 new RxDirectionBuilder()
261 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
262 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
263 .setPortSubSlot("port subslot").setPortType("port type").build())