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.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;
65 public final class TapiConnectivityDataUtils {
66 public static CreateConnectivityServiceInput buildConnServiceCreateInput() {
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);
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")
85 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput() {
86 return new DeleteConnectivityServiceInputBuilder()
87 .setServiceIdOrName(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())
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());
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());
119 public static ServiceCreateInput buildServiceCreateInput() {
120 return new ServiceCreateInputBuilder()
121 .setCommonId("commonId")
122 .setConnectionType(ConnectionType.Service)
123 .setCustomer("Customer")
124 .setServiceName(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())
125 .setServiceAEnd(getServiceAEndBuild().build())
126 .setServiceZEnd(getServiceZEndBuild().build())
127 .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
128 .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url").build())
132 public static ServiceAEndBuilder getServiceAEndBuild() {
133 return new ServiceAEndBuilder()
134 .setClli("NodeSA").setServiceFormat(ServiceFormat.Ethernet).setServiceRate(Uint32.valueOf(10))
135 .setNodeId(new NodeIdType("SPDR-SA1"))
136 .setTxDirection(getTxDirection())
137 .setRxDirection(getRxDirection());
140 public static ServiceZEndBuilder getServiceZEndBuild() {
141 return new ServiceZEndBuilder()
142 .setClli("NodeSC").setServiceFormat(ServiceFormat.Ethernet).setServiceRate(Uint32.valueOf(10))
143 .setNodeId(new NodeIdType("SPDR-SC1"))
144 .setTxDirection(getTxDirection())
145 .setRxDirection(getRxDirection());
148 private static Map<TxDirectionKey, TxDirection> getTxDirection() {
149 return Map.of(new TxDirectionKey(Uint8.ZERO), new TxDirectionBuilder()
150 .setPort(new PortBuilder().setPortDeviceName("device name")
151 .setPortName("port name").setPortRack("port rack").setPortShelf("port shelf")
152 .setPortSlot("port slot").setPortSubSlot("port subslot").setPortType("port type").build())
153 .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name").setLgxPortName("lgx port name")
154 .setLgxPortRack("lgx port rack").setLgxPortShelf("lgx port shelf").build())
155 .setIndex(Uint8.ZERO)
159 private static Map<RxDirectionKey, RxDirection> getRxDirection() {
160 return Map.of(new RxDirectionKey(Uint8.ZERO), new RxDirectionBuilder()
161 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
162 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
163 .setPortSubSlot("port subslot").setPortType("port type").build())
164 .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
165 .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
166 .setLgxPortShelf("lgx port shelf").build())
167 .setIndex(Uint8.ZERO)
171 public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
172 EndPoint endPoint1 = getEndPoint1Builder().build();
173 EndPoint endPoint2 = getEndPoint2Builder().build();
175 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint
176 endPoint11 = new org.opendaylight.yang.gen.v1.urn
177 .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder(endPoint1).build();
179 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint
180 endPoint12 = new org.opendaylight.yang.gen.v1.urn
181 .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder(endPoint2).build();
183 Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey,
184 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint>
185 endPointMap = new HashMap<>();
186 endPointMap.put(endPoint11.key(), endPoint11);
187 endPointMap.put(endPoint12.key(), endPoint12);
189 Map<ConnectionKey, Connection> connectionMap = new HashMap<>();
190 Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
192 connectionMap.put(connection.key(), connection);
194 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name name =
195 new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder()
196 .setValueName("Connectivity Service Name").setValue("service 1")
198 ConnectivityService connServ = new ConnectivityServiceBuilder()
199 .setAdministrativeState(AdministrativeState.LOCKED)
200 .setOperationalState(OperationalState.DISABLED)
201 .setLifecycleState(LifecycleState.PLANNED)
202 .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
203 .setServiceLayer(LayerProtocolName.DSR)
204 .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
205 .setConnectivityDirection(ForwardingDirection.BIDIRECTIONAL)
206 .setName(Map.of(name.key(), name))
207 .setConnection(connectionMap)
208 .setEndPoint(endPointMap)
210 Map<ConnectivityServiceKey, ConnectivityService> connMap = new HashMap<>();
211 connMap.put(connServ.key(), connServ);
215 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() {
216 return new DeleteConnectivityServiceInputBuilder()
217 .setServiceIdOrName("random-service").build();
220 private TapiConnectivityDataUtils() {