aff6798effd85b99fe9d8006f9c94a402ee7d89e
[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.yangtools.yang.common.Decimal64;
63 import org.opendaylight.yangtools.yang.common.Uint32;
64 import org.opendaylight.yangtools.yang.common.Uint8;
65
66 public final class TapiConnectivityDataUtils {
67     public static CreateConnectivityServiceInput buildConnServiceCreateInput() {
68
69         EndPoint endPoint1 = getEndPoint1Builder().build();
70         EndPoint endPoint2 = getEndPoint2Builder().build();
71         Map<EndPointKey, EndPoint> endPointMap = new HashMap<>();
72         endPointMap.put(endPoint1.key(), endPoint1);
73         endPointMap.put(endPoint2.key(), endPoint2);
74
75         return new CreateConnectivityServiceInputBuilder()
76             .setEndPoint(endPointMap)
77             .setLayerProtocolName(LayerProtocolName.DSR)
78             .setConnectivityConstraint(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
79                     .create.connectivity.service.input.ConnectivityConstraintBuilder()
80                     .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).setServiceLevel("some service-level")
81             .setRequestedCapacity(new RequestedCapacityBuilder()
82                     .setTotalSize(new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE)
83                         .setValue(Decimal64.valueOf("10")).build()).build()).build())
84             .setState(AdministrativeState.UNLOCKED)
85             .build();
86     }
87
88     public static DeleteConnectivityServiceInput buildConnServiceDeleteInput() {
89         return new DeleteConnectivityServiceInputBuilder()
90             .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
91             .build();
92     }
93
94     private static EndPointBuilder getEndPoint2Builder() {
95         Name name = new NameBuilder().setValueName("OpenROADM node id").setValue("SPDR-SC1-XPDR1").build();
96         return new EndPointBuilder().setLayerProtocolName(LayerProtocolName.DSR)
97             .setAdministrativeState(AdministrativeState.UNLOCKED)
98             .setOperationalState(OperationalState.ENABLED)
99             .setDirection(Direction.BIDIRECTIONAL)
100             .setRole(PortRole.SYMMETRIC)
101             .setProtectionRole(ProtectionRole.NA)
102             .setLocalId("SPDR-SC1-XPDR1")
103             .setName(Map.of(name.key(), name))
104             .setServiceInterfacePoint(new ServiceInterfacePointBuilder().setServiceInterfacePointUuid(
105                 new Uuid("25812ef2-625d-3bf8-af55-5e93946d1c22")).build());
106     }
107
108     private static EndPointBuilder getEndPoint1Builder() {
109         Name name = new NameBuilder().setValueName("OpenROADM node id").setValue("SPDR-SA1-XPDR1").build();
110         return new EndPointBuilder().setLayerProtocolName(LayerProtocolName.DSR)
111             .setAdministrativeState(AdministrativeState.UNLOCKED)
112             .setOperationalState(OperationalState.ENABLED)
113             .setDirection(Direction.BIDIRECTIONAL)
114             .setRole(PortRole.SYMMETRIC)
115             .setProtectionRole(ProtectionRole.NA)
116             .setLocalId("SPDR-SA1-XPDR1")
117             .setName(Map.of(name.key(), name))
118             .setServiceInterfacePoint(new ServiceInterfacePointBuilder().setServiceInterfacePointUuid(
119                 new Uuid("c14797a0-adcc-3875-a1fe-df8949d1a2d7")).build());
120     }
121
122     public static ServiceCreateInput buildServiceCreateInput() {
123         return new ServiceCreateInputBuilder()
124             .setCommonId("commonId")
125             .setConnectionType(ConnectionType.Service)
126             .setCustomer("Customer")
127             .setServiceName(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())
128             .setServiceAEnd(getServiceAEndBuild().build())
129             .setServiceZEnd(getServiceZEndBuild().build())
130             .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
131                 .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url").build())
132             .build();
133     }
134
135     public static ServiceAEndBuilder getServiceAEndBuild() {
136         return new ServiceAEndBuilder()
137             .setClli("NodeSA").setServiceFormat(ServiceFormat.Ethernet).setServiceRate(Uint32.valueOf(10))
138             .setNodeId(new NodeIdType("SPDR-SA1"))
139             .setTxDirection(getTxDirection())
140             .setRxDirection(getRxDirection());
141     }
142
143     public static ServiceZEndBuilder getServiceZEndBuild() {
144         return new ServiceZEndBuilder()
145             .setClli("NodeSC").setServiceFormat(ServiceFormat.Ethernet).setServiceRate(Uint32.valueOf(10))
146             .setNodeId(new NodeIdType("SPDR-SC1"))
147             .setTxDirection(getTxDirection())
148             .setRxDirection(getRxDirection());
149     }
150
151     private static Map<TxDirectionKey, TxDirection> getTxDirection() {
152         return Map.of(new TxDirectionKey(Uint8.ZERO), new TxDirectionBuilder()
153             .setPort(new PortBuilder().setPortDeviceName("device name")
154             .setPortName("port name").setPortRack("port rack").setPortShelf("port shelf")
155             .setPortSlot("port slot").setPortSubSlot("port subslot").setPortType("port type").build())
156             .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name").setLgxPortName("lgx port name")
157                 .setLgxPortRack("lgx port rack").setLgxPortShelf("lgx port shelf").build())
158             .setIndex(Uint8.ZERO)
159             .build());
160     }
161
162     private static Map<RxDirectionKey, RxDirection> getRxDirection() {
163         return Map.of(new RxDirectionKey(Uint8.ZERO), new RxDirectionBuilder()
164             .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
165                 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
166                 .setPortSubSlot("port subslot").setPortType("port type").build())
167             .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
168                 .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
169                 .setLgxPortShelf("lgx port shelf").build())
170             .setIndex(Uint8.ZERO)
171             .build());
172     }
173
174     public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
175         EndPoint endPoint1 = getEndPoint1Builder().build();
176         EndPoint endPoint2 = getEndPoint2Builder().build();
177
178         org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint
179             endPoint11 = new org.opendaylight.yang.gen.v1.urn
180                 .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder(endPoint1).build();
181
182         org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint
183             endPoint12 = new org.opendaylight.yang.gen.v1.urn
184                 .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder(endPoint2).build();
185
186         Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey,
187             org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint>
188                 endPointMap = new HashMap<>();
189         endPointMap.put(endPoint11.key(), endPoint11);
190         endPointMap.put(endPoint12.key(), endPoint12);
191
192         Map<ConnectionKey, Connection> connectionMap = new HashMap<>();
193         Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
194             .build();
195         connectionMap.put(connection.key(), connection);
196
197         org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name name =
198             new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder()
199                 .setValueName("Connectivity Service Name").setValue("service 1")
200                 .build();
201         ConnectivityConstraint conCons = new ConnectivityConstraintBuilder()
202             .setServiceLevel(null)
203             .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
204             .build();
205         ConnectivityService connServ = new ConnectivityServiceBuilder()
206             .setAdministrativeState(AdministrativeState.LOCKED)
207             .setOperationalState(OperationalState.DISABLED)
208             .setLifecycleState(LifecycleState.PLANNED)
209             .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
210             .setLayerProtocolName(LayerProtocolName.DSR)
211             .setConnectivityConstraint(conCons)
212             .setDirection(ForwardingDirection.BIDIRECTIONAL)
213             .setName(Map.of(name.key(), name))
214             .setConnection(connectionMap)
215             .setEndPoint(endPointMap)
216             .build();
217         Map<ConnectivityServiceKey, ConnectivityService> connMap = new HashMap<>();
218         connMap.put(connServ.key(), connServ);
219         return connMap;
220     }
221
222     public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() {
223         return new DeleteConnectivityServiceInputBuilder()
224             .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
225             .build();
226     }
227
228     private TapiConnectivityDataUtils() {
229     }
230 }