/* * Copyright © 2017 AT&T and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.transportpce.renderer.provisiondevice.servicepath; import java.util.HashMap; import java.util.List; import java.util.Map; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.Topology; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.TopologyBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.get.connection.port.trail.output.Ports; import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev211210.resource.DeviceBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev211210.resource.ResourceBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev211210.resource.ResourceTypeBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev211210.resource.resource.resource.port.PortBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev210924.ResourceTypeEnum; import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev211210.Hop.HopType; import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev211210.topology.AToZ; import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev211210.topology.AToZBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev211210.topology.AToZKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev211210.topology.ZToA; import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev211210.topology.ZToABuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev211210.topology.ZToAKey; public class ServiceListTopology { private Map a2zTopologyList = new HashMap<>(); private Map z2aTopologyList = new HashMap<>(); private TopologyBuilder serviceTopology = new TopologyBuilder(); public void updateAtoZTopologyList(List ports, String nodeId) { String circuitPackName = ""; String portName = ""; int id = this.a2zTopologyList.size(); DeviceBuilder deviceBldr = new DeviceBuilder(); deviceBldr.setNodeId(new NodeIdType(nodeId)); for (Ports port : ports) { id = id + 1; //Get circuitpack name circuitPackName = port.getCircuitPackName(); //Get port name portName = port.getPortName(); AToZBuilder a2zBldr = new AToZBuilder(); //Set Resource Id a2zBldr.setId(Integer.toString(id)); //Set device Node-id a2zBldr.setDevice(deviceBldr.build()); //Set hop type to internal a2zBldr.setHopType(HopType.NodeInternal); //Set Resource Type to port ResourceTypeBuilder rsrcTypeBldr = new ResourceTypeBuilder(); rsrcTypeBldr.setType(ResourceTypeEnum.Port); a2zBldr.setResourceType(rsrcTypeBldr.build()); //building port resource PortBuilder portBldr = new PortBuilder(); portBldr.setCircuitPackName(circuitPackName); portBldr.setPortName(portName); org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev211210.resource.resource.resource .PortBuilder portCase = new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev211210.resource.resource.resource .PortBuilder(); portCase.setPort(portBldr.build()); ResourceBuilder rsrcBldr = new ResourceBuilder(); rsrcBldr.setResource(portCase.build()); a2zBldr.setResource(rsrcBldr.build()); //Add port resource to the list AToZ a2z = a2zBldr.build(); this.a2zTopologyList.put(a2z.key(),a2z); } //update Topology this.serviceTopology.setAToZ(this.a2zTopologyList); } public void updateZtoATopologyList(List ports, String nodeId) { String circuitPackName = ""; String portName = ""; int id = this.z2aTopologyList.size(); DeviceBuilder deviceBldr = new DeviceBuilder(); deviceBldr.setNodeId(new NodeIdType(nodeId)); for (Ports port : ports) { id = id + 1; //Get circuitpack name circuitPackName = port.getCircuitPackName(); //Get port name portName = port.getPortName(); ZToABuilder z2aBldr = new ZToABuilder(); //Set Resource Id z2aBldr.setId(Integer.toString(id)); //Set device Node-id z2aBldr.setDevice(deviceBldr.build()); //Set hop type to internal z2aBldr.setHopType(HopType.NodeInternal); //Set Resource Type to port ResourceTypeBuilder rsrcTypeBldr = new ResourceTypeBuilder(); rsrcTypeBldr.setType(ResourceTypeEnum.Port); z2aBldr.setResourceType(rsrcTypeBldr.build()); //building port resource PortBuilder portBldr = new PortBuilder(); portBldr.setCircuitPackName(circuitPackName); portBldr.setPortName(portName); org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev211210.resource.resource.resource .PortBuilder portCase = new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev211210.resource.resource.resource .PortBuilder(); portCase.setPort(portBldr.build()); ResourceBuilder rsrcBldr = new ResourceBuilder(); rsrcBldr.setResource(portCase.build()); z2aBldr.setResource(rsrcBldr.build()); //Add port resource to the list ZToA z2a = z2aBldr.build(); this.z2aTopologyList.put(z2a.key(),z2a); } //update Topology this.serviceTopology.setZToA(this.z2aTopologyList); } public Topology getTopology() { this.serviceTopology.setAToZ(this.a2zTopologyList); this.serviceTopology.setZToA(this.z2aTopologyList); return this.serviceTopology.build(); } }