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.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;
69 public final class TapiConnectivityDataUtils {
70 public static CreateConnectivityServiceInput buildConnServiceCreateInput() {
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);
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())
92 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput() {
93 return new DeleteConnectivityServiceInputBuilder()
94 .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
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());
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());
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())
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());
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());
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)
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)
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;
186 public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
187 EndPoint endPoint1 = getEndPoint1Builder().build();
188 EndPoint endPoint2 = getEndPoint2Builder().build();
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();
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();
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);
204 Map<ConnectionKey, Connection> connectionMap = new HashMap<>();
205 Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
207 connectionMap.put(connection.key(), connection);
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")
213 ConnectivityConstraint conCons = new ConnectivityConstraintBuilder()
214 .setServiceLevel(null)
215 .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
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)
229 Map<ConnectivityServiceKey, ConnectivityService> connMap = new HashMap<>();
230 connMap.put(connServ.key(), connServ);
234 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() {
235 return new DeleteConnectivityServiceInputBuilder()
236 .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
240 private TapiConnectivityDataUtils() {