blob: c34ba69062d94d8a89be9a1ff341a7eeee06edd4 [file] [log] [blame]
Pankaj Berde85016ab2013-06-21 11:34:53 -07001package net.onrc.onos.graph;
2
mininet73e7fb72013-12-03 14:25:53 -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 {
16
Yuta HIGUCHI6ac8d182013-10-22 15:24:56 -070017 protected final static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070018 protected static GraphDBConnection conn;
19
20 public LocalTopologyEventListener(GraphDBConnection conn) {
21 LocalTopologyEventListener.conn = conn;
22 }
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
Pankaj Berde0ecc3922013-12-09 17:16:42 -080039 public void edgeRemoved(Edge e) {
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;
43 log.debug("TopologyEvents: Received edge removed event: {}",edge.toString());
44 String label = edge.getLabel();
45 if (label.equals("link")) {
46 Vertex v = edge.getVertex(Direction.IN);
47 IPortObject src_port = conn.getFramedGraph().frame(v, IPortObject.class);
48 v = edge.getVertex(Direction.OUT);
49 IPortObject dest_port = conn.getFramedGraph().frame(v, IPortObject.class);
50
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
Pankaj Berde0ecc3922013-12-09 17:16:42 -080077 public void vertexRemoved(Vertex vertex) {
Pankaj Berde85016ab2013-06-21 11:34:53 -070078 // TODO Auto-generated method stub
79 // Generate NetMapEvents
80 String type = (String) vertex.getProperty("type");
81 log.debug("TopologyEvents: Received vertex removed event: {}",vertex.toString());
82 if (type.equals("port")) {
83 // port is removed...lets fire reconcile here directly for now
84
85 IPortObject src_port = conn.getFramedGraph().frame(vertex, IPortObject.class);
86 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
100
101 }
102
103 @Override
104 public void vertexPropertyChanged(Vertex arg0, String arg1, Object arg2,
105 Object arg3) {
106 // TODO Auto-generated method stub
107
108 }
109
Pankaj Berde85016ab2013-06-21 11:34:53 -0700110}