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.rev211004.RendererRollbackInput;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInputBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.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.optical.channel.types.rev211210.FrequencyTHz;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.ConnectionType;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.port.PortBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev191129.ServiceFormat;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirection;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirectionBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirection;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirectionBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZ;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZKey;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToA;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToABuilder;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToAKey;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.ResourceBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPointBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeaderBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.optical.renderer.nodes.Nodes;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.optical.renderer.nodes.NodesBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.optical.renderer.nodes.NodesKey;
49 import org.opendaylight.yangtools.yang.common.Uint32;
52 public final class ServiceDataUtils {
54 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(Uint32.valueOf(20));
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(Uint32.valueOf(20));
75 return servicePathInputBuilder.build();
78 public static RendererRollbackInput buildRendererRollbackInput() {
79 RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
80 rendererRollbackInputBuilder.setNodeInterface(Map.of());
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 PathDescription createPathDescriptionTerminationPointResource(String tpId) {
96 Map<AToZKey,AToZ> atoZMap = new HashMap<>();
97 TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
98 List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
100 for (String nodeId : nodeIds) {
101 for (String otherNodeId : nodeIds) {
102 TerminationPoint terminationPoint = terminationPointBuilder
103 .setTpNodeId(nodeId + '-'
105 .setTpId(tpId).build();
106 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
107 .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
108 .setResource(terminationPoint).build()).build();
110 atoZMap.put(atoZ.key(),atoZ);
113 AToZDirection atozDirection = new AToZDirectionBuilder()
114 .setRate(Uint32.valueOf(20))
115 .setAToZWavelengthNumber(Uint32.valueOf(20))
116 .setAToZMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
117 .setAToZMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
121 Collections.reverse(nodeIds);
122 Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
124 for (String nodeId : nodeIds) {
125 for (String otherNodeId : nodeIds) {
126 TerminationPoint terminationPoint = terminationPointBuilder
127 .setTpNodeId(nodeId + '-'
129 .setTpId(tpId).build();
130 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
131 .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
132 .setResource(terminationPoint).build()).build();
134 ztoAMap.put(ztoA.key(),ztoA);
137 ZToADirection ztoaDirection = new ZToADirectionBuilder()
138 .setRate(Uint32.valueOf(20))
139 .setZToAWavelengthNumber(Uint32.valueOf(20))
140 .setZToAMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
141 .setZToAMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
144 PathDescriptionBuilder builder = new PathDescriptionBuilder()
145 .setAToZDirection(atozDirection)
146 .setZToADirection(ztoaDirection);
147 return builder.build();
150 public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
151 return new ServiceAEndBuilder()
152 .setClli("clli").setServiceFormat(ServiceFormat.OC)
153 .setServiceRate(Uint32.valueOf(1)).setNodeId("XPONDER-1-2-"
156 new TxDirectionBuilder()
157 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
158 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
159 .setPortSubSlot("port subslot").setPortType("port type").build())
162 new RxDirectionBuilder()
163 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
164 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
165 .setPortSubSlot("port subslot").setPortType("port type").build())
167 .setServiceRate(Uint32.valueOf(100))
168 .setServiceFormat(ServiceFormat.Ethernet);
171 public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
172 return new ServiceZEndBuilder()
173 .setClli("clli").setServiceFormat(ServiceFormat.OC)
174 .setServiceRate(Uint32.valueOf(1)).setNodeId("XPONDER-2-3-"
177 new TxDirectionBuilder()
178 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
179 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
180 .setPortSubSlot("port subslot").setPortType("port type").build())
183 new RxDirectionBuilder()
184 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
185 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
186 .setPortSubSlot("port subslot").setPortType("port type").build())