blob: 6b955b62369b76b0709eeff3bbe9e59bd9596711 [file] [log] [blame]
Pankaj Berde85016ab2013-06-21 11:34:53 -07001package net.onrc.onos.graph;
2
mininet34a59772013-12-03 11:14:23 -08003import java.util.Map;
4
Pankaj Berde85016ab2013-06-21 11:34:53 -07005import net.onrc.onos.flow.FlowManagerImpl;
6import net.onrc.onos.flow.IFlowManager;
7import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
8
9import org.slf4j.Logger;
10import org.slf4j.LoggerFactory;
11
12import com.thinkaurelius.titan.core.TitanEdge;
13import com.tinkerpop.blueprints.Direction;
14import com.tinkerpop.blueprints.Edge;
15import com.tinkerpop.blueprints.Vertex;
16
17public class LocalTopologyEventListener implements LocalGraphChangedListener {
18
Yuta HIGUCHI6ac8d182013-10-22 15:24:56 -070019 protected final static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070020 protected static GraphDBConnection conn;
21
22 public LocalTopologyEventListener(GraphDBConnection conn) {
23 LocalTopologyEventListener.conn = conn;
24 }
25
26 @Override
27 public void edgeAdded(Edge arg0) {
28 // TODO Auto-generated method stub
29 // Convert this Event into NetMapEvent (LinkAdded, FlowEntryEnabled, HostAttached, PortEnabled)
30 }
31
32
33 @Override
34 public void edgePropertyRemoved(Edge arg0, String arg1, Object arg2) {
35 // TODO Auto-generated method stub
36 // Currently not needed
37
38 }
39
40 @Override
mininet34a59772013-12-03 11:14:23 -080041 public void edgeRemoved(Edge e, Map<String, Object> arg1) {
Pankaj Berde85016ab2013-06-21 11:34:53 -070042 // TODO Auto-generated method stub
43 // Fire NetMapEvents (LinkRemoved, FlowEntryRemoved, HostRemoved, PortRemoved)
44 TitanEdge edge = (TitanEdge) e;
45 log.debug("TopologyEvents: Received edge removed event: {}",edge.toString());
46 String label = edge.getLabel();
47 if (label.equals("link")) {
48 Vertex v = edge.getVertex(Direction.IN);
49 IPortObject src_port = conn.getFramedGraph().frame(v, IPortObject.class);
50 v = edge.getVertex(Direction.OUT);
51 IPortObject dest_port = conn.getFramedGraph().frame(v, IPortObject.class);
52
53 log.debug("TopologyEvents: link broken {}", new Object []{src_port.getSwitch().getDPID(),
54 src_port.getNumber(),
55 dest_port.getSwitch().getDPID(),
56 dest_port.getNumber()});
57 IFlowManager manager = new FlowManagerImpl();
58 // TODO: Find the flows and add to reconcile queue
59 manager.reconcileFlows(src_port);
60 }
61 }
62
63 @Override
64 public void vertexAdded(Vertex arg0) {
65 // TODO Auto-generated method stub
66
67 }
68
69 @Override
70 public void vertexPropertyRemoved(Vertex arg0, String arg1, Object arg2) {
71 // TODO Auto-generated method stub
72
73 }
74
75 @Override
mininet34a59772013-12-03 11:14:23 -080076 public void vertexRemoved(Vertex vertex, Map<String, Object> arg1) {
Pankaj Berde85016ab2013-06-21 11:34:53 -070077 // TODO Auto-generated method stub
78 // Generate NetMapEvents
79 String type = (String) vertex.getProperty("type");
80 log.debug("TopologyEvents: Received vertex removed event: {}",vertex.toString());
81 if (type.equals("port")) {
82 // port is removed...lets fire reconcile here directly for now
83
84 IPortObject src_port = conn.getFramedGraph().frame(vertex, IPortObject.class);
85 log.debug("TopologyEvents: Port removed: {}:{}",src_port.getSwitch().getDPID(),src_port.getNumber());
86 IFlowManager manager = new FlowManagerImpl();
87 manager.reconcileFlows(src_port);
88 }
89 }
90
91
92 @Override
93 public void edgePropertyChanged(Edge arg0, String arg1, Object arg2,
94 Object arg3) {
95 // TODO Auto-generated method stub
96
97 }
98
99 @Override
100 public void vertexPropertyChanged(Vertex arg0, String arg1, Object arg2,
101 Object arg3) {
102 // TODO Auto-generated method stub
103
104 }
105
mininet34a59772013-12-03 11:14:23 -0800106
107
Pankaj Berde85016ab2013-06-21 11:34:53 -0700108}