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