Update release in docs/conf.yaml
[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.rev230526.FrequencyTHz;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ConnectionType;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.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;
50
51
52 public final class ServiceDataUtils {
53
54     private ServiceDataUtils() {
55     }
56
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();
60     }
61
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();
67     }
68
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();
76     }
77
78     public static RendererRollbackInput buildRendererRollbackInput() {
79         RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
80         rendererRollbackInputBuilder.setNodeInterface(Map.of());
81         return rendererRollbackInputBuilder.build();
82     }
83
84     public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
85         String tpId) {
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();
93     }
94
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");
99         Integer atozId = 1;
100         for (String nodeId : nodeIds) {
101             for (String otherNodeId : nodeIds) {
102                 TerminationPoint terminationPoint = terminationPointBuilder
103                     .setTpNodeId(nodeId + '-'
104                             + tpId)
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();
109                 atozId++;
110                 atoZMap.put(atoZ.key(),atoZ);
111             }
112         }
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"))
118             .setAToZ(atoZMap)
119             .build();
120
121         Collections.reverse(nodeIds);
122         Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
123         Integer ztoaId = 1;
124         for (String nodeId : nodeIds) {
125             for (String otherNodeId : nodeIds) {
126                 TerminationPoint terminationPoint = terminationPointBuilder
127                     .setTpNodeId(nodeId + '-'
128                             + tpId)
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();
133                 ztoaId++;
134                 ztoAMap.put(ztoA.key(),ztoA);
135             }
136         }
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"))
142             .setZToA(ztoAMap)
143             .build();
144         PathDescriptionBuilder builder = new PathDescriptionBuilder()
145             .setAToZDirection(atozDirection)
146             .setZToADirection(ztoaDirection);
147         return builder.build();
148     }
149
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-"
154                     + tpId)
155             .setTxDirection(
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())
160                     .build())
161             .setRxDirection(
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())
166                     .build())
167             .setServiceRate(Uint32.valueOf(100))
168                 .setServiceFormat(ServiceFormat.Ethernet);
169     }
170
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-"
175                     + tpId)
176             .setTxDirection(
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())
181                     .build())
182             .setRxDirection(
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())
187                     .build());
188     }
189 }