blob: a9b54b828da9f1512d2ea8c7db32b4f7b94b3789 [file] [log] [blame]
HIGUCHI Yuta83889492013-06-12 13:20:48 -07001package net.onrc.onos.ofcontroller.linkdiscovery.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;
HIGUCHI Yuta20514902013-06-12 11:24:16 -07007import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
8import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoLinkService;
HIGUCHI Yuta2d011582013-06-15 01:47:11 -07009import net.onrc.onos.ofcontroller.core.internal.LinkStorageImpl.ExtractLink;
Pankaj Berde15193092013-03-21 17:30:14 -070010import net.onrc.onos.util.GraphDBConnection;
Toshio Koide22f192c2013-06-13 14:01:45 -070011import net.onrc.onos.util.GraphDBOperation;
Pankaj Berde15193092013-03-21 17:30:14 -070012
13import org.slf4j.Logger;
14import org.slf4j.LoggerFactory;
15
16import com.tinkerpop.blueprints.Vertex;
17import com.tinkerpop.gremlin.java.GremlinPipeline;
Pankaj Berde5024ec12013-01-31 17:07:29 -080018
19public class TopoLinkServiceImpl implements ITopoLinkService {
20
Toshio Koide22f192c2013-06-13 14:01:45 -070021 protected GraphDBOperation op;
Pankaj Berde15193092013-03-21 17:30:14 -070022 protected static Logger log = LoggerFactory.getLogger(TopoLinkServiceImpl.class);
23
Pankaj Berde15193092013-03-21 17:30:14 -070024 public void finalize() {
25 close();
26 }
27
28 @Override
29 public void close() {
Toshio Koide22f192c2013-06-13 14:01:45 -070030 op.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
Toshio Koide22f192c2013-06-13 14:01:45 -070036 op = new GraphDBOperation(GraphDBConnection.getInstance(""));
37 op.close(); //Commit to ensure we see latest data
38 Iterable<ISwitchObject> switches = op.getActiveSwitches();
Pankaj Berde15193092013-03-21 17:30:14 -070039 List<Link> links = new ArrayList<Link>();
40 for (ISwitchObject sw : switches) {
41 GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
42 ExtractLink extractor = new ExtractLink();
43
44 pipe.start(sw.asVertex());
45 pipe.enablePath(true);
46 pipe.out("on").out("link").in("on").path().step(extractor);
47
48 while (pipe.hasNext() ) {
49 Link l = pipe.next();
50 links.add(l);
51 }
52
53 }
Toshio Koide22f192c2013-06-13 14:01:45 -070054 op.commit();
Pankaj Berde15193092013-03-21 17:30:14 -070055 return links;
Pankaj Berde5024ec12013-01-31 17:07:29 -080056 }
57
58 @Override
Pankaj Berde1cde50b2013-02-19 20:16:06 -080059 public List<Link> getLinksOnSwitch(String dpid) {
Pankaj Berde5024ec12013-01-31 17:07:29 -080060 // TODO Auto-generated method stub
Pankaj Berde15193092013-03-21 17:30:14 -070061 List<Link> links = new ArrayList<Link>();
Toshio Koide22f192c2013-06-13 14:01:45 -070062 ISwitchObject sw = op.searchSwitch(dpid);
Pankaj Berde15193092013-03-21 17:30:14 -070063 GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
64 ExtractLink extractor = new ExtractLink();
65
66 pipe.start(sw.asVertex());
67 pipe.enablePath(true);
68 pipe.out("on").out("link").in("on").path().step(extractor);
69
70 while (pipe.hasNext() ) {
71 Link l = pipe.next();
72 links.add(l);
73 }
74 return links;
75
Pankaj Berde5024ec12013-01-31 17:07:29 -080076 }
Pankaj Berde15193092013-03-21 17:30:14 -070077
Pankaj Berde5024ec12013-01-31 17:07:29 -080078}