blob: 8bb83ea16f2473d226c7711477f5f9b9eb1f00f0 [file] [log] [blame]
Pankaj Berdeda809572013-02-22 15:31:20 -08001package net.onrc.onos.util;
2
3import com.thinkaurelius.titan.core.TitanGraph;
4import com.thinkaurelius.titan.graphdb.transaction.VertexIterable;
5import com.tinkerpop.blueprints.Vertex;
6import com.tinkerpop.frames.FramedGraph;
7import com.tinkerpop.frames.FramedVertexIterable;
8import com.tinkerpop.gremlin.java.GremlinPipeline;
9
10import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
11import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
12import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
13import net.floodlightcontroller.routing.Link;
14
15public class GraphDBUtils implements IDBUtils {
16
17 @Override
18 public ISwitchObject searchSwitch(GraphDBConnection conn, String dpid) {
19 // TODO Auto-generated method stub
20 FramedGraph<TitanGraph> fg = conn.getFramedGraph();
21
22 return fg.getVertices("dpid",dpid).iterator().hasNext() ?
23 fg.getVertices("dpid",dpid,ISwitchObject.class).iterator().next() : null;
24
25 }
26
27 @Override
28 public IDeviceObject searchDevice(GraphDBConnection conn, String macAddr) {
29 // TODO Auto-generated method stub
30 FramedGraph<TitanGraph> fg = conn.getFramedGraph();
31 return fg.getVertices("dl_address",macAddr).iterator().hasNext() ? fg.getVertices("dl_address",macAddr,
32 IDeviceObject.class).iterator().next() : null;
33
34 }
35
36 @Override
37 public IPortObject searchPort(GraphDBConnection conn, String dpid, short number) {
38 ISwitchObject sw = searchSwitch(conn, dpid);
39 GremlinPipeline<Vertex, IPortObject> pipe = new GremlinPipeline<Vertex, IPortObject>();
40 pipe.start(sw.asVertex());
41 pipe.out("on").has("number", number);
42 FramedVertexIterable<IPortObject> r = new FramedVertexIterable(conn.getFramedGraph(), pipe, IPortObject.class);
43 return r.iterator().hasNext() ? r.iterator().next() : null;
44 }
45
46 @Override
47 public IDeviceObject newDevice(GraphDBConnection conn) {
48 FramedGraph<TitanGraph> fg = conn.getFramedGraph();
49 IDeviceObject obj = fg.addVertex(null,IDeviceObject.class);
50 return obj;
51 }
52
53 @Override
54 public void removeDevice(GraphDBConnection conn, IDeviceObject dev) {
55 FramedGraph<TitanGraph> fg = conn.getFramedGraph();
56 fg.removeVertex(dev.asVertex());
57 }
58
59}