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