2 * Copyright © 2018 Orange Systems, 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.renderer.utils;
10 import java.util.ArrayList;
11 import java.util.List;
12 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
13 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
14 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirection;
15 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirectionBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirection;
17 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirectionBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZ;
19 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZKey;
21 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToA;
22 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToABuilder;
23 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToAKey;
24 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.ResourceBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.Link;
26 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.LinkBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.NodeBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPoint;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPointBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.link.LinkIdentifierBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.node.NodeIdentifierBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.termination.point.TerminationPointIdentifierBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInputBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescription;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescriptionBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceAEndBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceZEndBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesKey;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInput;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInputBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInputBuilder;
51 public final class ServiceDataUtils {
53 public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
54 return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
55 .setDestTp(dstTp).build();
58 public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
59 ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
60 servicePathInputBuilder.setNodes(nodes);
61 servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
62 return servicePathInputBuilder.build();
65 public static ServicePathInput buildServicePathInputs() {
66 ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
67 List<Nodes> nodes = new ArrayList<>();
68 nodes.add(ServiceDataUtils.createNode("node1", "src", "dst"));
69 servicePathInputBuilder.setNodes(nodes);
70 servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
71 return servicePathInputBuilder.build();
74 public static RendererRollbackInput buildRendererRollbackInput() {
75 RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
76 rendererRollbackInputBuilder.setNodeInterface(new ArrayList<>());
77 return rendererRollbackInputBuilder.build();
80 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
82 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
83 .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
84 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
85 .setServiceAEnd(getServiceAEndBuild().build())
86 .setServiceZEnd(getServiceZEndBuild().build());
87 return builder.build();
90 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
91 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
92 .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
93 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
94 .setServiceAEnd(getServiceAEndBuild().build())
95 .setServiceZEnd(getServiceZEndBuild().build());
96 return builder.build();
99 public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
100 ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
101 .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
102 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
103 .setServiceAEnd(getServiceAEndBuild().build())
104 .setServiceZEnd(getServiceZEndBuild().build());
105 return builder.build();
108 private static PathDescription createPathDescriptionInvalidResource() {
109 List<AToZ> atoZList = new ArrayList<AToZ>();
110 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
111 .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
112 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
113 .resource.resource.Node node1 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
114 .setNodeId("XPONDER-1-2").build()).build();
115 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
116 .resource.resource.Node node2 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
117 .setNodeId("XPONDER-1-2").build()).build();
118 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
119 .setResource(node1).build()).build();
120 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
121 .setResource(node2).build()).build();
124 AToZDirection atozDirection = new AToZDirectionBuilder()
126 .setAToZWavelengthNumber(20L)
129 List<ZToA> ztoAList = new ArrayList<ZToA>();
130 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
131 .setResource(node1).build()).build();
132 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
133 .setResource(node2).build()).build();
136 ZToADirection ztoaDirection = new ZToADirectionBuilder()
138 .setZToAWavelengthNumber(20L)
141 PathDescriptionBuilder builder = new PathDescriptionBuilder()
142 .setAToZDirection(atozDirection)
143 .setZToADirection(ztoaDirection);
144 return builder.build();
147 public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
148 List<AToZ> atoZList = new ArrayList<AToZ>();
149 TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
150 TerminationPoint terminationPoint = terminationPointBuilder
151 .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("XPONDER-1-2")
152 .setTpId("XPONDER-1-2-" + tpId).build()).build();
153 TerminationPoint terminationPoint2 = terminationPointBuilder
154 .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("XPONDER-1-2")
155 .setTpId("XPONDER-1-2-" + tpId).build()).build();
156 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
157 .setResource(terminationPoint).build()).build();
158 AToZ atoZ2 = new AToZBuilder().setId("2").withKey(new AToZKey("2")).setResource(new ResourceBuilder()
159 .setResource(terminationPoint2).build()).build();
162 AToZDirection atozDirection = new AToZDirectionBuilder()
164 .setAToZWavelengthNumber(20L)
167 List<ZToA> ztoAList = new ArrayList<ZToA>();
168 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
169 .setResource(terminationPoint).build()).build();
170 ZToA ztoA2 = new ZToABuilder().setId("2").withKey(new ZToAKey("2")).setResource(new ResourceBuilder()
171 .setResource(terminationPoint).build()).build();
174 ZToADirection ztoaDirection = new ZToADirectionBuilder()
176 .setZToAWavelengthNumber(20L)
179 PathDescriptionBuilder builder = new PathDescriptionBuilder()
180 .setAToZDirection(atozDirection)
181 .setZToADirection(ztoaDirection);
182 return builder.build();
185 private static PathDescription createPathDescriptionLinkResource() {
186 List<AToZ> atoZList = new ArrayList<AToZ>();
187 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
188 .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
189 Link link1 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 1").build())
191 Link link2 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 2").build())
193 AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
194 .setResource(link1).build()).build();
195 AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
196 .setResource(link2).build()).build();
199 AToZDirection atozDirection = new AToZDirectionBuilder()
201 .setAToZWavelengthNumber(20L)
204 List<ZToA> ztoAList = new ArrayList<ZToA>();
205 ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
206 .setResource(link1).build()).build();
207 ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
208 .setResource(link2).build()).build();
211 ZToADirection ztoaDirection = new ZToADirectionBuilder()
213 .setZToAWavelengthNumber(20L)
216 PathDescriptionBuilder builder = new PathDescriptionBuilder()
217 .setAToZDirection(atozDirection)
218 .setZToADirection(ztoaDirection);
219 return builder.build();
222 public static ServiceAEndBuilder getServiceAEndBuild() {
223 return new ServiceAEndBuilder()
224 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
226 new TxDirectionBuilder()
227 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
228 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
229 .setPortSubSlot("port subslot").setPortType("port type").build())
232 new RxDirectionBuilder()
233 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
234 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
235 .setPortSubSlot("port subslot").setPortType("port type").build())
239 public static ServiceZEndBuilder getServiceZEndBuild() {
240 return new ServiceZEndBuilder()
241 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
243 new TxDirectionBuilder()
244 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
245 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
246 .setPortSubSlot("port subslot").setPortType("port type").build())
249 new RxDirectionBuilder()
250 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
251 .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
252 .setPortSubSlot("port subslot").setPortType("port type").build())
256 private ServiceDataUtils() {