blob: b692e8ee0db6a2dfb847499ba2ec849831694735 [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;
Pankaj Berde38646d62013-06-21 11:34:04 -07007import net.onrc.onos.graph.GraphDBOperation;
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;
Pankaj Berde5024ec12013-01-31 17:07:29 -080017
18public class TopoLinkServiceImpl implements ITopoLinkService {
19
Toshio Koide22f192c2013-06-13 14:01:45 -070020 protected GraphDBOperation op;
Yuta HIGUCHI6ac8d182013-10-22 15:24:56 -070021 protected final static Logger log = LoggerFactory.getLogger(TopoLinkServiceImpl.class);
Pankaj Berde15193092013-03-21 17:30:14 -070022
Pankaj Berde15193092013-03-21 17:30:14 -070023 public void finalize() {
24 close();
25 }
26
27 @Override
28 public void close() {
Toshio Koide22f192c2013-06-13 14:01:45 -070029 op.close();
Pankaj Berde15193092013-03-21 17:30:14 -070030 }
Pankaj Berde5024ec12013-01-31 17:07:29 -080031
Pankaj Berde5024ec12013-01-31 17:07:29 -080032 @Override
Pankaj Berde1cde50b2013-02-19 20:16:06 -080033 public List<Link> getActiveLinks() {
Pankaj Berde5024ec12013-01-31 17:07:29 -080034 // TODO Auto-generated method stub
Toshio Koidebfe9b922013-06-18 10:56:05 -070035 op = new GraphDBOperation("");
36 op.commit(); //Commit to ensure we see latest data
Toshio Koide22f192c2013-06-13 14:01:45 -070037 Iterable<ISwitchObject> switches = op.getActiveSwitches();
Pankaj Berde15193092013-03-21 17:30:14 -070038 List<Link> links = new ArrayList<Link>();
39 for (ISwitchObject sw : switches) {
40 GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
41 ExtractLink extractor = new ExtractLink();
42
43 pipe.start(sw.asVertex());
44 pipe.enablePath(true);
45 pipe.out("on").out("link").in("on").path().step(extractor);
46
47 while (pipe.hasNext() ) {
48 Link l = pipe.next();
49 links.add(l);
50 }
51
52 }
Toshio Koide22f192c2013-06-13 14:01:45 -070053 op.commit();
Pankaj Berde15193092013-03-21 17:30:14 -070054 return links;
Pankaj Berde5024ec12013-01-31 17:07:29 -080055 }
56
57 @Override
Pankaj Berde1cde50b2013-02-19 20:16:06 -080058 public List<Link> getLinksOnSwitch(String dpid) {
Pankaj Berde5024ec12013-01-31 17:07:29 -080059 // TODO Auto-generated method stub
Pankaj Berde15193092013-03-21 17:30:14 -070060 List<Link> links = new ArrayList<Link>();
Toshio Koide22f192c2013-06-13 14:01:45 -070061 ISwitchObject sw = op.searchSwitch(dpid);
Pankaj Berde15193092013-03-21 17:30:14 -070062 GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
63 ExtractLink extractor = new ExtractLink();
64
65 pipe.start(sw.asVertex());
66 pipe.enablePath(true);
67 pipe.out("on").out("link").in("on").path().step(extractor);
68
69 while (pipe.hasNext() ) {
70 Link l = pipe.next();
71 links.add(l);
72 }
73 return links;
74
Pankaj Berde5024ec12013-01-31 17:07:29 -080075 }
Pankaj Berde15193092013-03-21 17:30:14 -070076
Pankaj Berde5024ec12013-01-31 17:07:29 -080077}