blob: 72227d5f3d90d87c351dfb57aa571d6b27b1f551 [file] [log] [blame]
Pankaj Berde85016ab2013-06-21 11:34:53 -07001package net.onrc.onos.graph;
2
Jonathan Hartf371e982014-01-15 10:02:50 -08003import java.util.Map;
4
Pankaj Berde85016ab2013-06-21 11:34:53 -07005import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
6
7import org.slf4j.Logger;
8import org.slf4j.LoggerFactory;
9
10import com.thinkaurelius.titan.core.TitanEdge;
11import com.tinkerpop.blueprints.Direction;
12import com.tinkerpop.blueprints.Edge;
13import com.tinkerpop.blueprints.Vertex;
14
15public class LocalTopologyEventListener implements LocalGraphChangedListener {
Yuta HIGUCHIf86fdcc2014-01-23 21:00:29 -080016
Yuta HIGUCHI6ac8d182013-10-22 15:24:56 -070017 protected final static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
yoshi0fee3de2013-11-23 09:13:37 -080018 protected static DBConnection conn;
Yuta HIGUCHIf86fdcc2014-01-23 21:00:29 -080019
yoshi0fee3de2013-11-23 09:13:37 -080020 public LocalTopologyEventListener(DBConnection conn) {
Yuta HIGUCHIf86fdcc2014-01-23 21:00:29 -080021 LocalTopologyEventListener.conn = conn;
Pankaj Berde85016ab2013-06-21 11:34:53 -070022 }
23
24 @Override
25 public void edgeAdded(Edge arg0) {
26 // TODO Auto-generated method stub
27 // Convert this Event into NetMapEvent (LinkAdded, FlowEntryEnabled, HostAttached, PortEnabled)
28 }
29
30
31 @Override
32 public void edgePropertyRemoved(Edge arg0, String arg1, Object arg2) {
33 // TODO Auto-generated method stub
34 // Currently not needed
35
36 }
37
38 @Override
Jonathan Hartf371e982014-01-15 10:02:50 -080039 public void edgeRemoved(Edge e, Map<String, Object> arg1) {
Pankaj Berde85016ab2013-06-21 11:34:53 -070040 // TODO Auto-generated method stub
41 // Fire NetMapEvents (LinkRemoved, FlowEntryRemoved, HostRemoved, PortRemoved)
42 TitanEdge edge = (TitanEdge) e;
Yuta HIGUCHI5302ddf2014-01-06 12:53:35 -080043 log.debug("TopologyEvents: Received edge removed event: {}",edge);
Pankaj Berde85016ab2013-06-21 11:34:53 -070044 String label = edge.getLabel();
45 if (label.equals("link")) {
46 Vertex v = edge.getVertex(Direction.IN);
yoshi0fee3de2013-11-23 09:13:37 -080047 IPortObject src_port = (IPortObject) conn.getFramedGraph().frame(v, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070048 v = edge.getVertex(Direction.OUT);
yoshi0fee3de2013-11-23 09:13:37 -080049 IPortObject dest_port = (IPortObject) conn.getFramedGraph().frame(v, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070050
51 log.debug("TopologyEvents: link broken {}", new Object []{src_port.getSwitch().getDPID(),
52 src_port.getNumber(),
53 dest_port.getSwitch().getDPID(),
54 dest_port.getNumber()});
Pankaj Berde85016ab2013-06-21 11:34:53 -070055 // TODO: Find the flows and add to reconcile queue
Pavlin Radoslavovfcf42222013-12-02 16:57:24 -080056 //
57 // NOTE: Old code/logic.
58 //
59 // IFlowService flowManager = ...
60 // flowManager.reconcileFlows(src_port);
Pankaj Berde85016ab2013-06-21 11:34:53 -070061 }
62 }
63
64 @Override
65 public void vertexAdded(Vertex arg0) {
66 // TODO Auto-generated method stub
67
68 }
69
70 @Override
71 public void vertexPropertyRemoved(Vertex arg0, String arg1, Object arg2) {
72 // TODO Auto-generated method stub
73
74 }
75
76 @Override
Jonathan Hartf371e982014-01-15 10:02:50 -080077 public void vertexRemoved(Vertex vertex, Map<String, Object> arg1) {
Pankaj Berde85016ab2013-06-21 11:34:53 -070078 // TODO Auto-generated method stub
Yuta HIGUCHIf86fdcc2014-01-23 21:00:29 -080079 // Generate NetMapEvents
Pankaj Berde85016ab2013-06-21 11:34:53 -070080 String type = (String) vertex.getProperty("type");
Yuta HIGUCHI5302ddf2014-01-06 12:53:35 -080081 log.debug("TopologyEvents: Received vertex removed event: {}",vertex);
Pankaj Berde85016ab2013-06-21 11:34:53 -070082 if (type.equals("port")) {
83 // port is removed...lets fire reconcile here directly for now
Yuta HIGUCHIf86fdcc2014-01-23 21:00:29 -080084
yoshi0fee3de2013-11-23 09:13:37 -080085 IPortObject src_port = (IPortObject) conn.getFramedGraph().frame(vertex, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070086 log.debug("TopologyEvents: Port removed: {}:{}",src_port.getSwitch().getDPID(),src_port.getNumber());
Pavlin Radoslavovfcf42222013-12-02 16:57:24 -080087
88 // NOTE: Old code/logic.
89 //
90 // IFlowService flowManager = ...
91 // flowManager.reconcileFlows(src_port);
Pankaj Berde85016ab2013-06-21 11:34:53 -070092 }
93 }
94
95
96 @Override
97 public void edgePropertyChanged(Edge arg0, String arg1, Object arg2,
98 Object arg3) {
99 // TODO Auto-generated method stub
Yuta HIGUCHIf86fdcc2014-01-23 21:00:29 -0800100
Pankaj Berde85016ab2013-06-21 11:34:53 -0700101 }
102
103 @Override
104 public void vertexPropertyChanged(Vertex arg0, String arg1, Object arg2,
105 Object arg3) {
106 // TODO Auto-generated method stub
Pankaj Berde85016ab2013-06-21 11:34:53 -0700107
yoshi0fee3de2013-11-23 09:13:37 -0800108 }
109
Pankaj Berde85016ab2013-06-21 11:34:53 -0700110}