blob: 1bd6421d4764a92af45c3167d5004e20f2a80288 [file] [log] [blame]
Pankaj Berde5024ec12013-01-31 17:07:29 -08001package net.floodlightcontroller.linkdiscovery.internal;
2
Pankaj Berde15193092013-03-21 17:30:14 -07003import java.util.ArrayList;
Pankaj Berde5024ec12013-01-31 17:07:29 -08004import java.util.List;
5
Pankaj Berde15193092013-03-21 17:30:14 -07006import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
Pankaj Berde5024ec12013-01-31 17:07:29 -08007import net.floodlightcontroller.core.INetMapTopologyService.ITopoLinkService;
Pankaj Berde15193092013-03-21 17:30:14 -07008import net.floodlightcontroller.linkdiscovery.internal.LinkStorageImpl.ExtractLink;
Pankaj Berde5024ec12013-01-31 17:07:29 -08009import net.floodlightcontroller.routing.Link;
Pankaj Berde15193092013-03-21 17:30:14 -070010import net.onrc.onos.util.GraphDBConnection;
11
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
Pankaj Berde15193092013-03-21 17:30:14 -070020 public GraphDBConnection conn;
21 protected static Logger log = LoggerFactory.getLogger(TopoLinkServiceImpl.class);
22
23
24 public void finalize() {
25 close();
26 }
27
28 @Override
29 public void close() {
30 conn.close();
31 }
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
Pankaj Berde15193092013-03-21 17:30:14 -070036 conn = GraphDBConnection.getInstance("");
Jonathan Harte6e91872013-04-13 11:10:32 -070037 conn.close(); //Commit to ensure we see latest data
Pankaj Berde15193092013-03-21 17:30:14 -070038 Iterable<ISwitchObject> switches = conn.utils().getActiveSwitches(conn);
39 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 }
54 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>();
61 ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
62 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}