blob: 5388233f5c1696c5e9fd108cde2650e50d9fca64 [file] [log] [blame]
Pankaj Berde85016ab2013-06-21 11:34:53 -07001package net.onrc.onos.graph;
2
3import net.onrc.onos.flow.FlowManagerImpl;
4import net.onrc.onos.flow.IFlowManager;
5import 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
39 public void edgeRemoved(Edge e) {
40 // 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()});
55 IFlowManager manager = new FlowManagerImpl();
56 // TODO: Find the flows and add to reconcile queue
57 manager.reconcileFlows(src_port);
58 }
59 }
60
61 @Override
62 public void vertexAdded(Vertex arg0) {
63 // TODO Auto-generated method stub
64
65 }
66
67 @Override
68 public void vertexPropertyRemoved(Vertex arg0, String arg1, Object arg2) {
69 // TODO Auto-generated method stub
70
71 }
72
73 @Override
74 public void vertexRemoved(Vertex vertex) {
75 // TODO Auto-generated method stub
76 // Generate NetMapEvents
77 String type = (String) vertex.getProperty("type");
78 log.debug("TopologyEvents: Received vertex removed event: {}",vertex.toString());
79 if (type.equals("port")) {
80 // port is removed...lets fire reconcile here directly for now
81
82 IPortObject src_port = conn.getFramedGraph().frame(vertex, IPortObject.class);
83 log.debug("TopologyEvents: Port removed: {}:{}",src_port.getSwitch().getDPID(),src_port.getNumber());
84 IFlowManager manager = new FlowManagerImpl();
85 manager.reconcileFlows(src_port);
86 }
87 }
88
89
90 @Override
91 public void edgePropertyChanged(Edge arg0, String arg1, Object arg2,
92 Object arg3) {
93 // TODO Auto-generated method stub
94
95 }
96
97 @Override
98 public void vertexPropertyChanged(Vertex arg0, String arg1, Object arg2,
99 Object arg3) {
100 // TODO Auto-generated method stub
101
102 }
103
104}