2 * Copyright © 2021 Nokia, Inc. and others. All rights reserved.
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
8 package org.opendaylight.transportpce.tapi.utils;
10 import java.nio.charset.StandardCharsets;
11 import java.util.HashMap;
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;
66 public final class TapiConnectivityDataUtils {
67 public static CreateConnectivityServiceInput buildConnServiceCreateInput() {
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);
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)
88 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput() {
89 return new DeleteConnectivityServiceInputBuilder()
90 .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
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());
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());
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())
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());
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());
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)
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)
174 public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
175 EndPoint endPoint1 = getEndPoint1Builder().build();
176 EndPoint endPoint2 = getEndPoint2Builder().build();
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();
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();
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);
192 Map<ConnectionKey, Connection> connectionMap = new HashMap<>();
193 Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
195 connectionMap.put(connection.key(), connection);
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")
201 ConnectivityConstraint conCons = new ConnectivityConstraintBuilder()
202 .setServiceLevel(null)
203 .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
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)
217 Map<ConnectivityServiceKey, ConnectivityService> connMap = new HashMap<>();
218 connMap.put(connServ.key(), connServ);
222 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() {
223 return new DeleteConnectivityServiceInputBuilder()
224 .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
228 private TapiConnectivityDataUtils() {