2 * Copyright © 2017 AT&T 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.provisiondevice.servicepath;
10 import java.util.HashMap;
11 import java.util.List;
13 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.NodeIdType;
14 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.Topology;
15 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.TopologyBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.get.connection.port.trail.output.Ports;
17 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.DeviceBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.ResourceBuilder;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.ResourceTypeBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource.port.PortBuilder;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev181130.ResourceTypeEnum;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev190531.Hop.HopType;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev190531.topology.AToZ;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev190531.topology.AToZBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev190531.topology.AToZKey;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev190531.topology.ZToA;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev190531.topology.ZToABuilder;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev190531.topology.ZToAKey;
30 public class ServiceListTopology {
33 private Map<AToZKey,AToZ> a2zTopologyList = new HashMap<>();
34 private Map<ZToAKey,ZToA> z2aTopologyList = new HashMap<>();
35 private TopologyBuilder serviceTopology = new TopologyBuilder();
37 public void updateAtoZTopologyList(List<Ports> ports, String nodeId) {
39 String circuitPackName = "";
42 int id = this.a2zTopologyList.size();
44 DeviceBuilder deviceBldr = new DeviceBuilder();
45 deviceBldr.setNodeId(new NodeIdType(nodeId));
48 for (Ports port : ports) {
52 //Get circuitpack name
53 circuitPackName = port.getCircuitPackName();
56 portName = port.getPortName();
58 AToZBuilder a2zBldr = new AToZBuilder();
61 a2zBldr.setId(Integer.toString(id));
64 a2zBldr.setDevice(deviceBldr.build());
66 //Set hop type to internal
67 a2zBldr.setHopType(HopType.NodeInternal);
69 //Set Resource Type to port
70 ResourceTypeBuilder rsrcTypeBldr = new ResourceTypeBuilder();
71 rsrcTypeBldr.setType(ResourceTypeEnum.Port);
72 a2zBldr.setResourceType(rsrcTypeBldr.build());
74 //building port resource
75 PortBuilder portBldr = new PortBuilder();
76 portBldr.setCircuitPackName(circuitPackName);
77 portBldr.setPortName(portName);
78 org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource
79 .PortBuilder portCase =
80 new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource
82 portCase.setPort(portBldr.build());
83 ResourceBuilder rsrcBldr = new ResourceBuilder();
84 rsrcBldr.setResource(portCase.build());
85 a2zBldr.setResource(rsrcBldr.build());
87 //Add port resource to the list
88 AToZ a2z = a2zBldr.build();
89 this.a2zTopologyList.put(a2z.key(),a2z);
94 this.serviceTopology.setAToZ(this.a2zTopologyList);
98 public void updateZtoATopologyList(List<Ports> ports, String nodeId) {
100 String circuitPackName = "";
101 String portName = "";
103 int id = this.z2aTopologyList.size();
105 DeviceBuilder deviceBldr = new DeviceBuilder();
106 deviceBldr.setNodeId(new NodeIdType(nodeId));
108 for (Ports port : ports) {
112 //Get circuitpack name
113 circuitPackName = port.getCircuitPackName();
116 portName = port.getPortName();
118 ZToABuilder z2aBldr = new ZToABuilder();
121 z2aBldr.setId(Integer.toString(id));
124 z2aBldr.setDevice(deviceBldr.build());
126 //Set hop type to internal
127 z2aBldr.setHopType(HopType.NodeInternal);
129 //Set Resource Type to port
130 ResourceTypeBuilder rsrcTypeBldr = new ResourceTypeBuilder();
131 rsrcTypeBldr.setType(ResourceTypeEnum.Port);
132 z2aBldr.setResourceType(rsrcTypeBldr.build());
134 //building port resource
135 PortBuilder portBldr = new PortBuilder();
136 portBldr.setCircuitPackName(circuitPackName);
137 portBldr.setPortName(portName);
138 org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource
139 .PortBuilder portCase =
140 new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource
142 portCase.setPort(portBldr.build());
143 ResourceBuilder rsrcBldr = new ResourceBuilder();
144 rsrcBldr.setResource(portCase.build());
145 z2aBldr.setResource(rsrcBldr.build());
147 //Add port resource to the list
148 ZToA z2a = z2aBldr.build();
149 this.z2aTopologyList.put(z2a.key(),z2a);
154 this.serviceTopology.setZToA(this.z2aTopologyList);
158 public Topology getTopology() {
159 this.serviceTopology.setAToZ(this.a2zTopologyList);
160 this.serviceTopology.setZToA(this.z2aTopologyList);
161 return this.serviceTopology.build();