blob: 7014e238e5f3791a76e122f5eaf05d13e2f528a1 [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 {
18
Yuta HIGUCHI6ac8d182013-10-22 15:24:56 -070019 protected final static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
yoshi0fee3de2013-11-23 09:13:37 -080020 protected static DBConnection conn;
Pankaj Berde85016ab2013-06-21 11:34:53 -070021
yoshi0fee3de2013-11-23 09:13:37 -080022 public LocalTopologyEventListener(DBConnection conn) {
Pankaj Berde85016ab2013-06-21 11:34:53 -070023 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
Pankaj Berde85016ab2013-06-21 11:34:53 -070040 public void edgeRemoved(Edge e) {
41 // TODO Auto-generated method stub
42 // Fire NetMapEvents (LinkRemoved, FlowEntryRemoved, HostRemoved, PortRemoved)
43 TitanEdge edge = (TitanEdge) e;
44 log.debug("TopologyEvents: Received edge removed event: {}",edge.toString());
45 String label = edge.getLabel();
46 if (label.equals("link")) {
47 Vertex v = edge.getVertex(Direction.IN);
yoshi0fee3de2013-11-23 09:13:37 -080048 IPortObject src_port = (IPortObject) conn.getFramedGraph().frame(v, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070049 v = edge.getVertex(Direction.OUT);
yoshi0fee3de2013-11-23 09:13:37 -080050 IPortObject dest_port = (IPortObject) conn.getFramedGraph().frame(v, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070051
52 log.debug("TopologyEvents: link broken {}", new Object []{src_port.getSwitch().getDPID(),
53 src_port.getNumber(),
54 dest_port.getSwitch().getDPID(),
55 dest_port.getNumber()});
56 IFlowManager manager = new FlowManagerImpl();
57 // TODO: Find the flows and add to reconcile queue
58 manager.reconcileFlows(src_port);
59 }
60 }
61
62 @Override
63 public void vertexAdded(Vertex arg0) {
64 // TODO Auto-generated method stub
65
66 }
67
68 @Override
69 public void vertexPropertyRemoved(Vertex arg0, String arg1, Object arg2) {
70 // TODO Auto-generated method stub
71
72 }
73
Pankaj Berde85016ab2013-06-21 11:34:53 -070074 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
yoshi0fee3de2013-11-23 09:13:37 -080082 IPortObject src_port = (IPortObject) conn.getFramedGraph().frame(vertex, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070083 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
yoshi0fee3de2013-11-23 09:13:37 -0800104 @Override
105 public void vertexRemoved(Vertex vertex, Map<String, Object> props) {
106 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
107 }
108
109 @Override
110 public void edgeRemoved(Edge edge, Map<String, Object> props) {
111 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
112 }
Pankaj Berde85016ab2013-06-21 11:34:53 -0700113}