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