afab3a21024f0afbf1df9ad1bf4cf20adccbbe57
[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.ArrayList;
11 import java.util.List;
12
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.ZToA;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev190531.topology.ZToABuilder;
27
28 public class ServiceListTopology {
29
30
31     private List<AToZ> a2zTopologyList;
32     private List<ZToA> z2aTopologyList;
33     private TopologyBuilder serviceTopology;
34
35     public ServiceListTopology() {
36
37         this.a2zTopologyList = new ArrayList<>();
38         this.z2aTopologyList = new ArrayList<>();
39         this.serviceTopology = new TopologyBuilder();
40
41     }
42
43     public void updateAtoZTopologyList(List<Ports> ports, String nodeId) {
44
45         String circuitPackName = "";
46         String portName = "";
47
48         int id = this.a2zTopologyList.size();
49
50         DeviceBuilder deviceBldr = new DeviceBuilder();
51         deviceBldr.setNodeId(new NodeIdType(nodeId));
52
53
54         for (Ports port : ports) {
55
56             id = id + 1;
57
58             //Get circuitpack name
59             circuitPackName = port.getCircuitPackName();
60
61             //Get port name
62             portName = port.getPortName().toString();
63
64             AToZBuilder a2zBldr = new AToZBuilder();
65
66             //Set Resource Id
67             a2zBldr.setId(Integer.toString(id));
68
69             //Set device Node-id
70             a2zBldr.setDevice(deviceBldr.build());
71
72             //Set hop type to internal
73             a2zBldr.setHopType(HopType.NodeInternal);
74
75             //Set Resource Type to port
76             ResourceTypeBuilder rsrcTypeBldr = new ResourceTypeBuilder();
77             rsrcTypeBldr.setType(ResourceTypeEnum.Port);
78             a2zBldr.setResourceType(rsrcTypeBldr.build());
79
80             //building port resource
81             PortBuilder portBldr = new PortBuilder();
82             portBldr.setCircuitPackName(circuitPackName);
83             portBldr.setPortName(portName);
84             org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource
85                     .PortBuilder portCase =
86                     new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource
87                             .PortBuilder();
88             portCase.setPort(portBldr.build());
89             ResourceBuilder rsrcBldr = new ResourceBuilder();
90             rsrcBldr.setResource(portCase.build());
91             a2zBldr.setResource(rsrcBldr.build());
92
93             //Add port resource to the list
94             this.a2zTopologyList.add(a2zBldr.build());
95
96         }
97
98         //update Topology
99         this.serviceTopology.setAToZ(this.a2zTopologyList);
100
101     }
102
103     public void updateZtoATopologyList(List<Ports> ports, String nodeId) {
104
105         String circuitPackName = "";
106         String portName = "";
107
108         int id = this.z2aTopologyList.size();
109
110         DeviceBuilder deviceBldr = new DeviceBuilder();
111         deviceBldr.setNodeId(new NodeIdType(nodeId));
112
113         for (Ports port : ports) {
114
115             id = id + 1;
116
117             //Get circuitpack name
118             circuitPackName = port.getCircuitPackName();
119
120             //Get port name
121             portName = port.getPortName().toString();
122
123             ZToABuilder z2aBldr = new ZToABuilder();
124
125             //Set Resource Id
126             z2aBldr.setId(Integer.toString(id));
127
128             //Set device Node-id
129             z2aBldr.setDevice(deviceBldr.build());
130
131             //Set hop type to internal
132             z2aBldr.setHopType(HopType.NodeInternal);
133
134             //Set Resource Type to port
135             ResourceTypeBuilder rsrcTypeBldr = new ResourceTypeBuilder();
136             rsrcTypeBldr.setType(ResourceTypeEnum.Port);
137             z2aBldr.setResourceType(rsrcTypeBldr.build());
138
139             //building port resource
140             PortBuilder portBldr = new PortBuilder();
141             portBldr.setCircuitPackName(circuitPackName);
142             portBldr.setPortName(portName);
143             org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource
144                     .PortBuilder portCase =
145                     new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev190531.resource.resource.resource
146                             .PortBuilder();
147             portCase.setPort(portBldr.build());
148             ResourceBuilder rsrcBldr = new ResourceBuilder();
149             rsrcBldr.setResource(portCase.build());
150             z2aBldr.setResource(rsrcBldr.build());
151
152             //Add port resource to the list
153             this.z2aTopologyList.add(z2aBldr.build());
154
155         }
156
157         //update Topology
158         this.serviceTopology.setZToA(this.z2aTopologyList);
159
160     }
161
162     public Topology getTopology() {
163         this.serviceTopology.setAToZ(this.a2zTopologyList);
164         this.serviceTopology.setZToA(this.z2aTopologyList);
165         return this.serviceTopology.build();
166     }
167
168 }