blob: fc8a196bd3a308295fdd27d2ebdfb43b2e6d7bd9 [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;
yoshi2fd4c7e2013-11-22 15:47:55 -080014import com.tinkerpop.blueprints.impls.ramcloud.*;
15import java.util.Map;
Pankaj Berde85016ab2013-06-21 11:34:53 -070016
17public class LocalTopologyEventListener implements LocalGraphChangedListener {
Pankaj Berde85016ab2013-06-21 11:34:53 -070018
yoshi2fd4c7e2013-11-22 15:47:55 -080019 protected static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
20 protected static DBConnection conn;
Pankaj Berde85016ab2013-06-21 11:34:53 -070021
yoshi2fd4c7e2013-11-22 15:47:55 -080022 public LocalTopologyEventListener(DBConnection conn) {
23 LocalTopologyEventListener.conn = conn;
24 }
Pankaj Berde85016ab2013-06-21 11:34:53 -070025
yoshi2fd4c7e2013-11-22 15:47:55 -080026 @Override
27 public void edgeAdded(Edge arg0) {
28 // TODO Auto-generated method stub
29 // Convert this Event into NetMapEvent (LinkAdded, FlowEntryEnabled, HostAttached, PortEnabled)
30 }
Pankaj Berde85016ab2013-06-21 11:34:53 -070031
yoshi2fd4c7e2013-11-22 15:47:55 -080032 @Override
33 public void edgePropertyRemoved(Edge arg0, String arg1, Object arg2) {
34 // TODO Auto-generated method stub
35 // Currently not needed
36 }
Pankaj Berde85016ab2013-06-21 11:34:53 -070037
yoshi2fd4c7e2013-11-22 15:47:55 -080038 public void edgeRemoved(Edge e) {
39 Edge edge;
40 if (e instanceof com.tinkerpop.blueprints.impls.ramcloud.RamCloudEdge) {
41 edge = (RamCloudEdge) e;
42 } else {
43 edge = (TitanEdge) e;
44 }
45 // TODO Auto-generated method stub
46 // Fire NetMapEvents (LinkRemoved, FlowEntryRemoved, HostRemoved, PortRemoved)
47 // TitanEdge edge = (TitanEdge) e;
48 log.debug("TopologyEvents: Received edge removed event: {}", edge.toString());
49 String label = edge.getLabel();
50 if (label.equals("link")) {
51 Vertex v = edge.getVertex(Direction.IN);
52 IPortObject src_port = (IPortObject)conn.getFramedGraph().frame(v, IPortObject.class);
53 v = edge.getVertex(Direction.OUT);
54 IPortObject dest_port = (IPortObject)conn.getFramedGraph().frame(v, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070055
yoshi2fd4c7e2013-11-22 15:47:55 -080056 log.debug("TopologyEvents: link broken {}", new Object[]{src_port.getSwitch().getDPID(),
57 src_port.getNumber(),
58 dest_port.getSwitch().getDPID(),
59 dest_port.getNumber()});
60 IFlowManager manager = new FlowManagerImpl();
61 // TODO: Find the flows and add to reconcile queue
62 manager.reconcileFlows(src_port);
63 }
64 }
Pankaj Berde85016ab2013-06-21 11:34:53 -070065
yoshi2fd4c7e2013-11-22 15:47:55 -080066 @Override
67 public void vertexAdded(Vertex arg0) {
68 // TODO Auto-generated method stub
69 }
Pankaj Berde85016ab2013-06-21 11:34:53 -070070
yoshi2fd4c7e2013-11-22 15:47:55 -080071 @Override
72 public void vertexPropertyRemoved(Vertex arg0, String arg1, Object arg2) {
73 // TODO Auto-generated method stub
74 }
Pankaj Berde85016ab2013-06-21 11:34:53 -070075
yoshi2fd4c7e2013-11-22 15:47:55 -080076 public void vertexRemoved(Vertex vertex) {
77 // 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
Pankaj Berde85016ab2013-06-21 11:34:53 -070083
yoshi2fd4c7e2013-11-22 15:47:55 -080084 IPortObject src_port = (IPortObject)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 }
Pankaj Berde85016ab2013-06-21 11:34:53 -070090
yoshi2fd4c7e2013-11-22 15:47:55 -080091 @Override
92 public void edgePropertyChanged(Edge arg0, String arg1, Object arg2,
93 Object arg3) {
94 // TODO Auto-generated method stub
95 }
Pankaj Berde85016ab2013-06-21 11:34:53 -070096
yoshi2fd4c7e2013-11-22 15:47:55 -080097 @Override
98 public void vertexPropertyChanged(Vertex arg0, String arg1, Object arg2,
99 Object arg3) {
100 // TODO Auto-generated method stub
101 }
Pankaj Berde85016ab2013-06-21 11:34:53 -0700102
yoshi2fd4c7e2013-11-22 15:47:55 -0800103 @Override
104 public void vertexRemoved(Vertex vertex, Map<String, Object> props) {
105 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
106 }
Pankaj Berde85016ab2013-06-21 11:34:53 -0700107
yoshi2fd4c7e2013-11-22 15:47:55 -0800108 @Override
109 public void edgeRemoved(Edge edge, Map<String, Object> props) {
110 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
111 }
Pankaj Berde85016ab2013-06-21 11:34:53 -0700112}