Migration to TAPI 2.4 Step3
[transportpce.git] / tapi / src / test / java / org / opendaylight / transportpce / tapi / utils / TapiConnectivityDataUtils.java
1 /*
2  * Copyright © 2021 Nokia, 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.tapi.utils;
9
10 import java.nio.charset.StandardCharsets;
11 import java.util.HashMap;
12 import java.util.Map;
13 import java.util.UUID;
14 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType;
15 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ConnectionType;
16 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.RpcActions;
17 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.sdnc.request.header.SdncRequestHeaderBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.RxDirection;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.RxDirectionBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.RxDirectionKey;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirection;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirectionBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirectionKey;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.lgx.LgxBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.port.PortBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev191129.ServiceFormat;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInputBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceAEndBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceZEndBuilder;
31 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
32 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS;
33 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
34 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
35 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
36 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
37 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
38 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
39 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
40 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder;
41 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name;
42 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder;
43 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput;
44 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInputBuilder;
45 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInput;
46 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInputBuilder;
47 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ProtectionRole;
48 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType;
49 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.constraint.RequestedCapacityBuilder;
50 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
51 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
52 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
53 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection;
54 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionBuilder;
55 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey;
56 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraint;
57 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraintBuilder;
58 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.ServiceInterfacePointBuilder;
59 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint;
60 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointBuilder;
61 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointKey;
62 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraint;
63 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraintBuilder;
64 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraintKey;
65 import org.opendaylight.yangtools.yang.common.Decimal64;
66 import org.opendaylight.yangtools.yang.common.Uint32;
67 import org.opendaylight.yangtools.yang.common.Uint8;
68
69 public final class TapiConnectivityDataUtils {
70     public static CreateConnectivityServiceInput buildConnServiceCreateInput() {
71
72         EndPoint endPoint1 = getEndPoint1Builder().build();
73         EndPoint endPoint2 = getEndPoint2Builder().build();
74         Map<EndPointKey, EndPoint> endPointMap = new HashMap<>();
75         endPointMap.put(endPoint1.key(), endPoint1);
76         endPointMap.put(endPoint2.key(), endPoint2);
77
78         return new CreateConnectivityServiceInputBuilder()
79             .setEndPoint(endPointMap)
80             .setLayerProtocolName(LayerProtocolName.DSR)
81             .setConnectivityConstraint(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
82                         .create.connectivity.service.input.ConnectivityConstraintBuilder()
83                     .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).setServiceLevel("some service-level")
84                     .setRequestedCapacity(new RequestedCapacityBuilder()
85                     .setTotalSize(new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE)
86                         .setValue(Decimal64.valueOf("10")).build()).build()).build())
87             .setState(AdministrativeState.UNLOCKED)
88             .setTopologyConstraint(getTopoConstraintMap())
89             .build();
90     }
91
92     public static DeleteConnectivityServiceInput buildConnServiceDeleteInput() {
93         return new DeleteConnectivityServiceInputBuilder()
94             .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
95             .build();
96     }
97
98     private static EndPointBuilder getEndPoint2Builder() {
99         Name name = new NameBuilder().setValueName("OpenROADM node id").setValue("SPDR-SC1-XPDR1").build();
100         return new EndPointBuilder().setLayerProtocolName(LayerProtocolName.DSR)
101             .setAdministrativeState(AdministrativeState.UNLOCKED)
102             .setOperationalState(OperationalState.ENABLED)
103             .setDirection(Direction.BIDIRECTIONAL)
104             .setRole(PortRole.SYMMETRIC)
105             .setProtectionRole(ProtectionRole.NA)
106             .setLocalId("SPDR-SC1-XPDR1")
107             .setName(Map.of(name.key(), name))
108             .setServiceInterfacePoint(new ServiceInterfacePointBuilder().setServiceInterfacePointUuid(
109                 new Uuid("25812ef2-625d-3bf8-af55-5e93946d1c22")).build());
110     }
111
112     private static EndPointBuilder getEndPoint1Builder() {
113         Name name = new NameBuilder().setValueName("OpenROADM node id").setValue("SPDR-SA1-XPDR1").build();
114         return new EndPointBuilder().setLayerProtocolName(LayerProtocolName.DSR)
115             .setAdministrativeState(AdministrativeState.UNLOCKED)
116             .setOperationalState(OperationalState.ENABLED)
117             .setDirection(Direction.BIDIRECTIONAL)
118             .setRole(PortRole.SYMMETRIC)
119             .setProtectionRole(ProtectionRole.NA)
120             .setLocalId("SPDR-SA1-XPDR1")
121             .setName(Map.of(name.key(), name))
122             .setServiceInterfacePoint(new ServiceInterfacePointBuilder().setServiceInterfacePointUuid(
123                 new Uuid("c14797a0-adcc-3875-a1fe-df8949d1a2d7")).build());
124     }
125
126     public static ServiceCreateInput buildServiceCreateInput() {
127         return new ServiceCreateInputBuilder()
128             .setCommonId("commonId")
129             .setConnectionType(ConnectionType.Service)
130             .setCustomer("Customer")
131             .setServiceName(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())
132             .setServiceAEnd(getServiceAEndBuild().build())
133             .setServiceZEnd(getServiceZEndBuild().build())
134             .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
135                 .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url").build())
136             .build();
137     }
138
139     public static ServiceAEndBuilder getServiceAEndBuild() {
140         return new ServiceAEndBuilder()
141             .setClli("NodeSA").setServiceFormat(ServiceFormat.Ethernet).setServiceRate(Uint32.valueOf(10))
142             .setNodeId(new NodeIdType("SPDR-SA1"))
143             .setTxDirection(getTxDirection())
144             .setRxDirection(getRxDirection());
145     }
146
147     public static ServiceZEndBuilder getServiceZEndBuild() {
148         return new ServiceZEndBuilder()
149             .setClli("NodeSC").setServiceFormat(ServiceFormat.Ethernet).setServiceRate(Uint32.valueOf(10))
150             .setNodeId(new NodeIdType("SPDR-SC1"))
151             .setTxDirection(getTxDirection())
152             .setRxDirection(getRxDirection());
153     }
154
155     private static Map<TxDirectionKey, TxDirection> getTxDirection() {
156         return Map.of(new TxDirectionKey(Uint8.ZERO), new TxDirectionBuilder()
157             .setPort(new PortBuilder().setPortDeviceName("device name")
158             .setPortName("port name").setPortRack("port rack").setPortShelf("port shelf")
159             .setPortSlot("port slot").setPortSubSlot("port subslot").setPortType("port type").build())
160             .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name").setLgxPortName("lgx port name")
161                 .setLgxPortRack("lgx port rack").setLgxPortShelf("lgx port shelf").build())
162             .setIndex(Uint8.ZERO)
163             .build());
164     }
165
166     private static Map<RxDirectionKey, RxDirection> getRxDirection() {
167         return Map.of(new RxDirectionKey(Uint8.ZERO), new RxDirectionBuilder()
168             .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
169                 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
170                 .setPortSubSlot("port subslot").setPortType("port type").build())
171             .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
172                 .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
173                 .setLgxPortShelf("lgx port shelf").build())
174             .setIndex(Uint8.ZERO)
175             .build());
176     }
177
178     private static Map<TopologyConstraintKey, TopologyConstraint> getTopoConstraintMap() {
179         Map<TopologyConstraintKey, TopologyConstraint> topoConstraintMap = new HashMap<>();
180         TopologyConstraint topoConstraint = new TopologyConstraintBuilder()
181             .setLocalId("localIdTopoConstraint").build();
182         topoConstraintMap.put(topoConstraint.key(), topoConstraint);
183         return topoConstraintMap;
184     }
185
186     public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
187         EndPoint endPoint1 = getEndPoint1Builder().build();
188         EndPoint endPoint2 = getEndPoint2Builder().build();
189
190         org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint
191             endPoint11 = new org.opendaylight.yang.gen.v1.urn
192                 .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder(endPoint1).build();
193
194         org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint
195             endPoint12 = new org.opendaylight.yang.gen.v1.urn
196                 .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder(endPoint2).build();
197
198         Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey,
199             org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint>
200                 endPointMap = new HashMap<>();
201         endPointMap.put(endPoint11.key(), endPoint11);
202         endPointMap.put(endPoint12.key(), endPoint12);
203
204         Map<ConnectionKey, Connection> connectionMap = new HashMap<>();
205         Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
206             .build();
207         connectionMap.put(connection.key(), connection);
208
209         org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name name =
210             new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder()
211                 .setValueName("Connectivity Service Name").setValue("service 1")
212                 .build();
213         ConnectivityConstraint conCons = new ConnectivityConstraintBuilder()
214             .setServiceLevel(null)
215             .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
216             .build();
217         ConnectivityService connServ = new ConnectivityServiceBuilder()
218             .setAdministrativeState(AdministrativeState.LOCKED)
219             .setOperationalState(OperationalState.DISABLED)
220             .setLifecycleState(LifecycleState.PLANNED)
221             .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
222             .setLayerProtocolName(LayerProtocolName.DSR)
223             .setConnectivityConstraint(conCons)
224             .setDirection(ForwardingDirection.BIDIRECTIONAL)
225             .setName(Map.of(name.key(), name))
226             .setConnection(connectionMap)
227             .setEndPoint(endPointMap)
228             .build();
229         Map<ConnectivityServiceKey, ConnectivityService> connMap = new HashMap<>();
230         connMap.put(connServ.key(), connServ);
231         return connMap;
232     }
233
234     public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() {
235         return new DeleteConnectivityServiceInputBuilder()
236             .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
237             .build();
238     }
239
240     private TapiConnectivityDataUtils() {
241     }
242 }