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.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;
62 public final class TapiConnectivityDataUtils {
63 public static CreateConnectivityServiceInput buildConnServiceCreateInput() {
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);
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")
82 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput() {
83 return new DeleteConnectivityServiceInputBuilder()
84 .setServiceIdOrName(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())
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());
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());
116 public static ServiceCreateInput buildServiceCreateInput() {
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())
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());
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());
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())
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())
166 public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
167 EndPoint endPoint1 = getEndPoint1Builder().build();
168 EndPoint endPoint2 = getEndPoint2Builder().build();
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();
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();
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);
184 Map<ConnectionKey, Connection> connectionMap = new HashMap<>();
185 Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
187 connectionMap.put(connection.key(), connection);
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")
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)
205 Map<ConnectivityServiceKey, ConnectivityService> connMap = new HashMap<>();
206 connMap.put(connServ.key(), connServ);
210 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() {
211 return new DeleteConnectivityServiceInputBuilder()
212 .setServiceIdOrName("random-service").build();
215 private TapiConnectivityDataUtils() {