blob: dd3c2ec1369dc2bf5e037202be9baddee5941f8a [file] [log] [blame]
Pankaj Berde6a97eb82013-03-28 12:12:43 -07001package net.onrc.onos.util;
2
Pankaj Berde6a97eb82013-03-28 12:12:43 -07003import net.onrc.onos.flow.FlowManagerImpl;
4import net.onrc.onos.flow.IFlowManager;
HIGUCHI Yuta20514902013-06-12 11:24:16 -07005import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
Pankaj Berde6a97eb82013-03-28 12:12:43 -07006
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;
Pankaj Berde6a97eb82013-03-28 12:12:43 -070014
Pankaj Berde2239f0d2013-04-04 09:42:43 -070015public class LocalTopologyEventListener implements LocalGraphChangedListener {
Pankaj Berde6a97eb82013-03-28 12:12:43 -070016
17 protected static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
Pankaj Berde2239f0d2013-04-04 09:42:43 -070018 protected static GraphDBConnection conn;
19
20 public LocalTopologyEventListener(GraphDBConnection conn) {
21 LocalTopologyEventListener.conn = conn;
22 }
Pankaj Berde6a97eb82013-03-28 12:12:43 -070023
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
Pankaj Berde6a97eb82013-03-28 12:12:43 -070030
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
Pankaj Berde6a97eb82013-03-28 12:12:43 -070068 public void vertexPropertyRemoved(Vertex arg0, String arg1, Object arg2) {
69 // TODO Auto-generated method stub
70
71 }
72
73 @Override
Pankaj Berde2239f0d2013-04-04 09:42:43 -070074 public void vertexRemoved(Vertex vertex) {
Pankaj Berde6a97eb82013-03-28 12:12:43 -070075 // TODO Auto-generated method stub
Pankaj Berde2239f0d2013-04-04 09:42:43 -070076 // 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 }
Pankaj Berde6a97eb82013-03-28 12:12:43 -070088
Pankaj Berde2239f0d2013-04-04 09:42:43 -070089
90 @Override
Pankaj Berde5d506412013-04-23 15:03:02 -070091 public void edgePropertyChanged(Edge arg0, String arg1, Object arg2,
92 Object arg3) {
Pankaj Berde2239f0d2013-04-04 09:42:43 -070093 // TODO Auto-generated method stub
94
95 }
96
97 @Override
Pankaj Berde5d506412013-04-23 15:03:02 -070098 public void vertexPropertyChanged(Vertex arg0, String arg1, Object arg2,
99 Object arg3) {
Pankaj Berde2239f0d2013-04-04 09:42:43 -0700100 // TODO Auto-generated method stub
101
Pankaj Berde6a97eb82013-03-28 12:12:43 -0700102 }
103
104}