blob: 5c0080624a13a08363efc2d07e9c5a5af8acac55 [file] [log] [blame]
HIGUCHI Yutaf05c4802013-06-17 11:15:50 -07001package net.onrc.onos.ofcontroller.core.internal;
Pankaj Berde5024ec12013-01-31 17:07:29 -08002
Pankaj Berde15193092013-03-21 17:30:14 -07003import java.util.ArrayList;
Pankaj Berde5024ec12013-01-31 17:07:29 -08004import java.util.List;
5
Pankaj Berde5024ec12013-01-31 17:07:29 -08006import net.floodlightcontroller.routing.Link;
yoshi2db7ff42013-11-25 19:30:25 -08007import net.onrc.onos.graph.DBOperation;
HIGUCHI Yuta20514902013-06-12 11:24:16 -07008import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
9import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoLinkService;
HIGUCHI Yuta2d011582013-06-15 01:47:11 -070010import net.onrc.onos.ofcontroller.core.internal.LinkStorageImpl.ExtractLink;
Pankaj Berde15193092013-03-21 17:30:14 -070011
12import org.slf4j.Logger;
13import org.slf4j.LoggerFactory;
14
15import com.tinkerpop.blueprints.Vertex;
16import com.tinkerpop.gremlin.java.GremlinPipeline;
yoshi2db7ff42013-11-25 19:30:25 -080017import net.onrc.onos.graph.GraphDBManager;
Pankaj Berde5024ec12013-01-31 17:07:29 -080018
19public class TopoLinkServiceImpl implements ITopoLinkService {
20
yoshi2db7ff42013-11-25 19:30:25 -080021 protected DBOperation dbop;
Yuta HIGUCHI6ac8d182013-10-22 15:24:56 -070022 protected final static Logger log = LoggerFactory.getLogger(TopoLinkServiceImpl.class);
Pankaj Berde15193092013-03-21 17:30:14 -070023
Pankaj Berde15193092013-03-21 17:30:14 -070024 public void finalize() {
25 close();
26 }
27
28 @Override
29 public void close() {
yoshi2db7ff42013-11-25 19:30:25 -080030 dbop.close();
Pankaj Berde15193092013-03-21 17:30:14 -070031 }
Pankaj Berde5024ec12013-01-31 17:07:29 -080032
Pankaj Berde5024ec12013-01-31 17:07:29 -080033 @Override
Pankaj Berde1cde50b2013-02-19 20:16:06 -080034 public List<Link> getActiveLinks() {
Pankaj Berde5024ec12013-01-31 17:07:29 -080035 // TODO Auto-generated method stub
yoshid38cd312013-12-02 19:54:44 -080036 dbop = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloudconf");
37 //dbop = GraphDBManager.getDBOperation("", "");
yoshi9535fc82013-12-05 11:34:52 -080038 //dbop.commit(); //Commit to ensure we see latest data
yoshi2db7ff42013-11-25 19:30:25 -080039 Iterable<ISwitchObject> switches = dbop.getActiveSwitches();
Pankaj Berde15193092013-03-21 17:30:14 -070040 List<Link> links = new ArrayList<Link>();
41 for (ISwitchObject sw : switches) {
42 GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
43 ExtractLink extractor = new ExtractLink();
44
45 pipe.start(sw.asVertex());
46 pipe.enablePath(true);
47 pipe.out("on").out("link").in("on").path().step(extractor);
48
49 while (pipe.hasNext() ) {
50 Link l = pipe.next();
51 links.add(l);
52 }
53
54 }
yoshi2db7ff42013-11-25 19:30:25 -080055 dbop.commit();
Pankaj Berde15193092013-03-21 17:30:14 -070056 return links;
Pankaj Berde5024ec12013-01-31 17:07:29 -080057 }
58
59 @Override
Pankaj Berde1cde50b2013-02-19 20:16:06 -080060 public List<Link> getLinksOnSwitch(String dpid) {
Pankaj Berde5024ec12013-01-31 17:07:29 -080061 // TODO Auto-generated method stub
Pankaj Berde15193092013-03-21 17:30:14 -070062 List<Link> links = new ArrayList<Link>();
yoshi2db7ff42013-11-25 19:30:25 -080063 ISwitchObject sw = dbop.searchSwitch(dpid);
Pankaj Berde15193092013-03-21 17:30:14 -070064 GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
65 ExtractLink extractor = new ExtractLink();
66
67 pipe.start(sw.asVertex());
68 pipe.enablePath(true);
69 pipe.out("on").out("link").in("on").path().step(extractor);
70
71 while (pipe.hasNext() ) {
72 Link l = pipe.next();
73 links.add(l);
74 }
75 return links;
76
Pankaj Berde5024ec12013-01-31 17:07:29 -080077 }
Pankaj Berde15193092013-03-21 17:30:14 -070078
Pankaj Berde5024ec12013-01-31 17:07:29 -080079}