Migrate renderer module to Aluminium
[transportpce.git] / renderer / src / main / java / org / opendaylight / transportpce / renderer / provisiondevice / servicepath / ServiceListTopology.java
1 /*
2  * Copyright © 2017 AT&T and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.transportpce.renderer.provisiondevice.servicepath;
9
10 import java.util.HashMap;
11 import java.util.List;
12 import java.util.Map;
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;
29
30 public class ServiceListTopology {
31
32
33     private Map<AToZKey,AToZ> a2zTopologyList = new HashMap<>();
34     private Map<ZToAKey,ZToA> z2aTopologyList = new HashMap<>();
35     private TopologyBuilder serviceTopology = new TopologyBuilder();
36
37     public void updateAtoZTopologyList(List<Ports> ports, String nodeId) {
38
39         String circuitPackName = "";
40         String portName = "";
41
42         int id = this.a2zTopologyList.size();
43
44         DeviceBuilder deviceBldr = new DeviceBuilder();
45         deviceBldr.setNodeId(new NodeIdType(nodeId));
46
47
48         for (Ports port : ports) {
49
50             id = id + 1;
51
52             //Get circuitpack name
53             circuitPackName = port.getCircuitPackName();
54
55             //Get port name
56             portName = port.getPortName().toString();
57
58             AToZBuilder a2zBldr = new AToZBuilder();
59
60             //Set Resource Id
61             a2zBldr.setId(Integer.toString(id));
62
63             //Set device Node-id
64             a2zBldr.setDevice(deviceBldr.build());
65
66             //Set hop type to internal
67             a2zBldr.setHopType(HopType.NodeInternal);
68
69             //Set Resource Type to port
70             ResourceTypeBuilder rsrcTypeBldr = new ResourceTypeBuilder();
71             rsrcTypeBldr.setType(ResourceTypeEnum.Port);
72             a2zBldr.setResourceType(rsrcTypeBldr.build());
73
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
81                             .PortBuilder();
82             portCase.setPort(portBldr.build());
83             ResourceBuilder rsrcBldr = new ResourceBuilder();
84             rsrcBldr.setResource(portCase.build());
85             a2zBldr.setResource(rsrcBldr.build());
86
87             //Add port resource to the list
88             AToZ a2z = a2zBldr.build();
89             this.a2zTopologyList.put(a2z.key(),a2z);
90
91         }
92
93         //update Topology
94         this.serviceTopology.setAToZ(this.a2zTopologyList);
95
96     }
97
98     public void updateZtoATopologyList(List<Ports> ports, String nodeId) {
99
100         String circuitPackName = "";
101         String portName = "";
102
103         int id = this.z2aTopologyList.size();
104
105         DeviceBuilder deviceBldr = new DeviceBuilder();
106         deviceBldr.setNodeId(new NodeIdType(nodeId));
107
108         for (Ports port : ports) {
109
110             id = id + 1;
111
112             //Get circuitpack name
113             circuitPackName = port.getCircuitPackName();
114
115             //Get port name
116             portName = port.getPortName().toString();
117
118             ZToABuilder z2aBldr = new ZToABuilder();
119
120             //Set Resource Id
121             z2aBldr.setId(Integer.toString(id));
122
123             //Set device Node-id
124             z2aBldr.setDevice(deviceBldr.build());
125
126             //Set hop type to internal
127             z2aBldr.setHopType(HopType.NodeInternal);
128
129             //Set Resource Type to port
130             ResourceTypeBuilder rsrcTypeBldr = new ResourceTypeBuilder();
131             rsrcTypeBldr.setType(ResourceTypeEnum.Port);
132             z2aBldr.setResourceType(rsrcTypeBldr.build());
133
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
141                             .PortBuilder();
142             portCase.setPort(portBldr.build());
143             ResourceBuilder rsrcBldr = new ResourceBuilder();
144             rsrcBldr.setResource(portCase.build());
145             z2aBldr.setResource(rsrcBldr.build());
146
147             //Add port resource to the list
148             ZToA z2a = z2aBldr.build();
149             this.z2aTopologyList.put(z2a.key(),z2a);
150
151         }
152
153         //update Topology
154         this.serviceTopology.setZToA(this.z2aTopologyList);
155
156     }
157
158     public Topology getTopology() {
159         this.serviceTopology.setAToZ(this.a2zTopologyList);
160         this.serviceTopology.setZToA(this.z2aTopologyList);
161         return this.serviceTopology.build();
162     }
163
164 }