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() {
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())
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());
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());
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)
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)
172 public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
173 EndPoint endPoint1 = getEndPoint1Builder().build();
174 EndPoint endPoint2 = getEndPoint2Builder().build();
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();
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();
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);
190 Map<ConnectionKey, Connection> connectionMap = new HashMap<>();
191 Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
193 connectionMap.put(connection.key(), connection);
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")
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)
211 Map<ConnectivityServiceKey, ConnectivityService> connMap = new HashMap<>();
212 connMap.put(connServ.key(), connServ);
216 public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() {
217 return new DeleteConnectivityServiceInputBuilder()
218 .setServiceIdOrName("random-service").build();
221 private TapiConnectivityDataUtils() {