Power control support for 87.5GHz spectrum width
[transportpce.git] / renderer / src / test / java / org / opendaylight / transportpce / renderer / utils / ServiceDataUtils.java
1 /*
2  * Copyright © 2018 Orange Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.transportpce.renderer.utils;
9
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;
15 import java.util.Map;
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.rev200529.FrequencyTHz;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirection;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirectionBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirection;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirectionBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZ;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZKey;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToA;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToABuilder;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToAKey;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.ResourceBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.Link;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.LinkBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.Node;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.NodeBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPoint;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPointBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
49 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
51 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesBuilder;
52 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesKey;
53 import org.opendaylight.yangtools.yang.common.Uint32;
54
55
56 public final class ServiceDataUtils {
57
58     private ServiceDataUtils() {
59
60     }
61
62     public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
63         return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
64                 .setDestTp(dstTp).build();
65     }
66
67     public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
68         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
69         servicePathInputBuilder.setNodes(nodes);
70         servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(Uint32.valueOf(20));
71         return servicePathInputBuilder.build();
72     }
73
74     public static ServicePathInput buildServicePathInputs() {
75         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
76         List<Nodes> nodes = new ArrayList<>();
77         nodes.add(ServiceDataUtils.createNode("node1", "src", "dst"));
78         servicePathInputBuilder.setNodes(nodes);
79         servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(Uint32.valueOf(20));
80         return servicePathInputBuilder.build();
81     }
82
83     public static RendererRollbackInput buildRendererRollbackInput() {
84         RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
85         rendererRollbackInputBuilder.setNodeInterface(Map.of());
86         return rendererRollbackInputBuilder.build();
87     }
88
89     public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
90         String tpId) {
91         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
92             .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
93             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
94             .setServiceAEnd(getServiceAEndBuild(tpId).build())
95             .setServiceZEnd(getServiceZEndBuild(tpId).build())
96             .setConnectionType(ConnectionType.Service);
97         return builder.build();
98     }
99
100     /*public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
101         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
102             .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
103             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
104             .setServiceAEnd(getServiceAEndBuild().build())
105             .setServiceZEnd(getServiceZEndBuild().build());
106         return builder.build();
107     }
108
109     public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
110         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
111             .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
112             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
113             .setServiceAEnd(getServiceAEndBuild().build())
114             .setServiceZEnd(getServiceZEndBuild().build());
115         return builder.build();
116     }*/
117
118     private static PathDescription createPathDescriptionInvalidResource() {
119         Map<AToZKey,AToZ> atoZMap = new HashMap<>();
120         Node node = new NodeBuilder().setNodeId("XPONDER-1-2").build();
121         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
122             .setResource(node).build()).build();
123         atoZMap.put(atoZ.key(),atoZ);
124         AToZDirection atozDirection = new AToZDirectionBuilder()
125             .setRate(Uint32.valueOf(20))
126             .setAToZWavelengthNumber(Uint32.valueOf(32))
127             .setAToZ(atoZMap)
128             .build();
129         Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
130         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
131             .setResource(node).build()).build();
132         ztoAMap.put(ztoA.key(),ztoA);
133         ZToADirection ztoaDirection = new ZToADirectionBuilder()
134             .setRate(Uint32.valueOf(20))
135             .setZToAWavelengthNumber(Uint32.valueOf(20))
136             .setZToA(ztoAMap)
137             .build();
138         PathDescriptionBuilder builder = new PathDescriptionBuilder()
139             .setAToZDirection(atozDirection)
140             .setZToADirection(ztoaDirection);
141         return builder.build();
142     }
143
144     public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
145         Map<AToZKey,AToZ> atoZMap = new HashMap<>();
146         TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
147         List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
148         Integer atozId = 1;
149         for (String nodeId : nodeIds) {
150             for (String otherNodeId : nodeIds) {
151                 TerminationPoint terminationPoint = terminationPointBuilder
152                     .setTpNodeId(nodeId + '-'
153                             + tpId)
154                         .setTpId(tpId).build();
155                 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
156                     .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
157                         .setResource(terminationPoint).build()).build();
158                 atozId++;
159                 atoZMap.put(atoZ.key(),atoZ);
160             }
161         }
162         FrequencyTHz value;
163         AToZDirection atozDirection = new AToZDirectionBuilder()
164             .setRate(Uint32.valueOf(20))
165             .setAToZWavelengthNumber(Uint32.valueOf(20))
166             .setAToZMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
167             .setAToZMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
168             .setAToZ(atoZMap)
169             .build();
170
171         Collections.reverse(nodeIds);
172         Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
173         Integer ztoaId = 1;
174         for (String nodeId : nodeIds) {
175             for (String otherNodeId : nodeIds) {
176                 TerminationPoint terminationPoint = terminationPointBuilder
177                     .setTpNodeId(nodeId + '-'
178                             + tpId)
179                         .setTpId(tpId).build();
180                 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
181                     .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
182                         .setResource(terminationPoint).build()).build();
183                 ztoaId++;
184                 ztoAMap.put(ztoA.key(),ztoA);
185             }
186         }
187         ZToADirection ztoaDirection = new ZToADirectionBuilder()
188             .setRate(Uint32.valueOf(20))
189             .setZToAWavelengthNumber(Uint32.valueOf(20))
190             .setZToAMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
191             .setZToAMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
192             .setZToA(ztoAMap)
193             .build();
194         PathDescriptionBuilder builder = new PathDescriptionBuilder()
195             .setAToZDirection(atozDirection)
196             .setZToADirection(ztoaDirection);
197         return builder.build();
198     }
199
200     private static PathDescription createPathDescriptionLinkResource() {
201         Map<AToZKey,AToZ> atoZMap = new HashMap<>();
202         Link link1 = new LinkBuilder().setLinkId("link 1").build();
203         Link link2 = new LinkBuilder().setLinkId("link 2").build();
204         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
205             .setResource(link1).build()).build();
206         AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
207             .setResource(link2).build()).build();
208         atoZMap.put(atoZ.key(),atoZ);
209         atoZMap.put(atoZ2.key(),atoZ2);
210         AToZDirection atozDirection = new AToZDirectionBuilder()
211             .setRate(Uint32.valueOf(20))
212             .setAToZWavelengthNumber(Uint32.valueOf(20))
213             .setAToZ(atoZMap)
214             .build();
215         Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
216         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
217             .setResource(link1).build()).build();
218         ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
219             .setResource(link2).build()).build();
220         ztoAMap.put(ztoA.key(),ztoA);
221         ztoAMap.put(ztoA2.key(),ztoA2);
222         ZToADirection ztoaDirection = new ZToADirectionBuilder()
223             .setRate(Uint32.valueOf(20))
224             .setZToAWavelengthNumber(Uint32.valueOf(20))
225             .setZToA(ztoAMap)
226             .build();
227         PathDescriptionBuilder builder = new PathDescriptionBuilder()
228             .setAToZDirection(atozDirection)
229             .setZToADirection(ztoaDirection);
230         return builder.build();
231     }
232
233     public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
234         return new ServiceAEndBuilder()
235             .setClli("clli").setServiceFormat(ServiceFormat.OC)
236             .setServiceRate(Uint32.valueOf(1)).setNodeId("XPONDER-1-2-"
237                     + tpId)
238             .setTxDirection(
239                 new TxDirectionBuilder()
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())
243                     .build())
244             .setRxDirection(
245                 new RxDirectionBuilder()
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())
249                     .build())
250             .setServiceRate(Uint32.valueOf(100))
251                 .setServiceFormat(ServiceFormat.Ethernet);
252     }
253
254     public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
255         return new ServiceZEndBuilder()
256             .setClli("clli").setServiceFormat(ServiceFormat.OC)
257             .setServiceRate(Uint32.valueOf(1)).setNodeId("XPONDER-2-3-"
258                     + tpId)
259             .setTxDirection(
260                 new TxDirectionBuilder()
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())
264                     .build())
265             .setRxDirection(
266                 new RxDirectionBuilder()
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())
270                     .build());
271     }
272
273 }