/* * Copyright (c) 2014 Cisco Systems, Inc. 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.openflowplugin.applications.topology.manager; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNodeBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNodeConnectorBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.DestinationBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.SourceBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder; public final class FlowCapableNodeMapping { private FlowCapableNodeMapping() { throw new UnsupportedOperationException("Utility class."); } public static NodeKey getNodeKey(final NodeRef ref) { return ref.getValue().firstKeyOf(Node.class, NodeKey.class); } public static NodeKey getNodeKey(final NodeConnectorRef ref) { return ref.getValue().firstKeyOf(Node.class, NodeKey.class); } public static NodeConnectorKey getNodeConnectorKey(final NodeConnectorRef ref) { return ref.getValue().firstKeyOf(NodeConnector.class, NodeConnectorKey.class); } public static NodeId toTopologyNodeId( final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId nodeId) { return new NodeId(nodeId); } private static NodeId toTopologyNodeId(final NodeConnectorRef source) { return toTopologyNodeId(getNodeKey(source).getId()); } public static TpId toTerminationPointId(final NodeConnectorId id) { return new TpId(id); } private static TpId toTerminationPointId(final NodeConnectorRef source) { return toTerminationPointId(getNodeConnectorKey(source).getId()); } public static org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node toTopologyNode( final NodeId nodeId, final NodeRef invNodeRef) { return new NodeBuilder() .setNodeId(nodeId) .addAugmentation(InventoryNode.class, new InventoryNodeBuilder() .setInventoryNodeRef(invNodeRef) .build()) .build(); } public static TerminationPoint toTerminationPoint(final TpId id, final NodeConnectorRef invNodeConnectorRef) { return new TerminationPointBuilder() .setTpId(id) .addAugmentation(InventoryNodeConnector.class, new InventoryNodeConnectorBuilder() .setInventoryNodeConnectorRef(invNodeConnectorRef) .build()) .build(); } public static Link toTopologyLink( final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.topology.discovery.rev130819.Link link) { return new LinkBuilder() .setSource(new SourceBuilder() .setSourceNode(toTopologyNodeId(link.getSource())) .setSourceTp(toTerminationPointId(link.getSource())) .build()) .setDestination(new DestinationBuilder() .setDestNode(toTopologyNodeId(link.getDestination())) .setDestTp(toTerminationPointId(link.getDestination())) .build()) .setLinkId(new LinkId(getNodeConnectorKey(link.getSource()).getId())) .build(); } }