Bug 509: Improve logging in InMemoryDataStore.
[controller.git] / opendaylight / md-sal / topology-manager / src / main / java / org / opendaylight / md / controller / topology / manager / FlowCapableNodeMapping.xtend
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. 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.md.controller.topology.manager
9
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef
12 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef
17 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated
19 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder
20 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId
24 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder
25 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.SourceBuilder
26 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.DestinationBuilder
27 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkBuilder
28 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkKey
29 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNodeBuilder
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNode
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNodeConnector
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNodeConnectorBuilder
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode
35
36 class FlowCapableNodeMapping {
37
38     static def NodeKey getNodeKey(NodeRef ref) {
39         (ref?.value?.path?.get(1) as IdentifiableItem<Node,NodeKey>).key
40     }
41
42     static def NodeKey getNodeKey(NodeConnectorRef ref) {
43         (ref?.value?.path?.get(1) as IdentifiableItem<Node,NodeKey>).key
44     }
45
46     static def NodeConnectorKey getNodeConnectorKey(NodeConnectorRef ref) {
47         (ref?.value?.path?.get(2) as IdentifiableItem<NodeConnector,NodeConnectorKey>).key
48     }
49
50     static def NodeId toToplogyNodeId(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId nodeId) {
51         return new NodeId(nodeId);
52     }
53
54     static def toTerminationPointId(NodeConnectorId id) {
55         return new TpId(id);
56     }
57     
58     static def toTopologyNode(NodeId nodeId,NodeRef invNodeRef) {
59         val nb = new NodeBuilder();
60         nb.setNodeId(nodeId)
61         val inb = new InventoryNodeBuilder
62         inb.setInventoryNodeRef(invNodeRef)
63         nb.addAugmentation(InventoryNode,inb.build)
64         return nb.build();
65     }
66     
67     static def toTerminationPoint(TpId id, NodeConnectorRef invNodeConnectorRef) {
68         val tpb = new TerminationPointBuilder
69         tpb.setTpId(id);
70         val incb = new InventoryNodeConnectorBuilder
71         incb.setInventoryNodeConnectorRef(invNodeConnectorRef)
72         tpb.addAugmentation(InventoryNodeConnector,incb.build())
73         return tpb.build();
74     }
75     
76     static def toTopologyLink(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.topology.discovery.rev130819.Link link) {
77         val sb = new SourceBuilder();
78         sb.setSourceNode(link.source.nodeKey.id.toToplogyNodeId)
79         sb.setSourceTp(link.source.nodeConnectorKey.id.toTerminationPointId)
80         val db = new DestinationBuilder();
81         db.setDestNode(link.destination.nodeKey.id.toToplogyNodeId)
82         db.setDestTp(link.destination.nodeConnectorKey.id.toTerminationPointId)
83         val lb = new LinkBuilder();
84         lb.setSource(sb.build())
85         lb.setDestination(db.build());
86         lb.setLinkId(new LinkId(lb.source.sourceTp.value))
87         return lb.build();
88     } 
89 }