blob: 80a6338af8429a4d779c84b8b6c35e75eeaeacad [file] [log] [blame]
Pankaj Berde85016ab2013-06-21 11:34:53 -07001package net.onrc.onos.graph;
2
Pankaj Berde85016ab2013-06-21 11:34:53 -07003import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
4
5import org.slf4j.Logger;
6import org.slf4j.LoggerFactory;
7
8import com.thinkaurelius.titan.core.TitanEdge;
9import com.tinkerpop.blueprints.Direction;
10import com.tinkerpop.blueprints.Edge;
11import com.tinkerpop.blueprints.Vertex;
yoshi2fd4c7e2013-11-22 15:47:55 -080012import com.tinkerpop.blueprints.impls.ramcloud.*;
13import java.util.Map;
Pankaj Berde85016ab2013-06-21 11:34:53 -070014
15public class LocalTopologyEventListener implements LocalGraphChangedListener {
16
Yuta HIGUCHI6ac8d182013-10-22 15:24:56 -070017 protected final static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
yoshi0fee3de2013-11-23 09:13:37 -080018 protected static DBConnection conn;
Pankaj Berde85016ab2013-06-21 11:34:53 -070019
yoshi0fee3de2013-11-23 09:13:37 -080020 public LocalTopologyEventListener(DBConnection conn) {
Pankaj Berde85016ab2013-06-21 11:34:53 -070021 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
Pankaj Berde85016ab2013-06-21 11:34:53 -070038 public void edgeRemoved(Edge e) {
39 // TODO Auto-generated method stub
40 // Fire NetMapEvents (LinkRemoved, FlowEntryRemoved, HostRemoved, PortRemoved)
41 TitanEdge edge = (TitanEdge) e;
Yuta HIGUCHI5302ddf2014-01-06 12:53:35 -080042 log.debug("TopologyEvents: Received edge removed event: {}",edge);
Pankaj Berde85016ab2013-06-21 11:34:53 -070043 String label = edge.getLabel();
44 if (label.equals("link")) {
45 Vertex v = edge.getVertex(Direction.IN);
yoshi0fee3de2013-11-23 09:13:37 -080046 IPortObject src_port = (IPortObject) conn.getFramedGraph().frame(v, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070047 v = edge.getVertex(Direction.OUT);
yoshi0fee3de2013-11-23 09:13:37 -080048 IPortObject dest_port = (IPortObject) conn.getFramedGraph().frame(v, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070049
50 log.debug("TopologyEvents: link broken {}", new Object []{src_port.getSwitch().getDPID(),
51 src_port.getNumber(),
52 dest_port.getSwitch().getDPID(),
53 dest_port.getNumber()});
Pankaj Berde85016ab2013-06-21 11:34:53 -070054 // TODO: Find the flows and add to reconcile queue
Pavlin Radoslavovfcf42222013-12-02 16:57:24 -080055 //
56 // NOTE: Old code/logic.
57 //
58 // IFlowService flowManager = ...
59 // flowManager.reconcileFlows(src_port);
Pankaj Berde85016ab2013-06-21 11:34:53 -070060 }
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
Pankaj Berde85016ab2013-06-21 11:34:53 -070075 public void vertexRemoved(Vertex vertex) {
76 // TODO Auto-generated method stub
77 // Generate NetMapEvents
78 String type = (String) vertex.getProperty("type");
Yuta HIGUCHI5302ddf2014-01-06 12:53:35 -080079 log.debug("TopologyEvents: Received vertex removed event: {}",vertex);
Pankaj Berde85016ab2013-06-21 11:34:53 -070080 if (type.equals("port")) {
81 // port is removed...lets fire reconcile here directly for now
82
yoshi0fee3de2013-11-23 09:13:37 -080083 IPortObject src_port = (IPortObject) conn.getFramedGraph().frame(vertex, IPortObject.class);
Pankaj Berde85016ab2013-06-21 11:34:53 -070084 log.debug("TopologyEvents: Port removed: {}:{}",src_port.getSwitch().getDPID(),src_port.getNumber());
Pavlin Radoslavovfcf42222013-12-02 16:57:24 -080085
86 // NOTE: Old code/logic.
87 //
88 // IFlowService flowManager = ...
89 // flowManager.reconcileFlows(src_port);
Pankaj Berde85016ab2013-06-21 11:34:53 -070090 }
91 }
92
93
94 @Override
95 public void edgePropertyChanged(Edge arg0, String arg1, Object arg2,
96 Object arg3) {
97 // TODO Auto-generated method stub
98
99 }
100
101 @Override
102 public void vertexPropertyChanged(Vertex arg0, String arg1, Object arg2,
103 Object arg3) {
104 // TODO Auto-generated method stub
105
106 }
107
yoshi0fee3de2013-11-23 09:13:37 -0800108 public void vertexRemoved(Vertex vertex, Map<String, Object> props) {
109 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
110 }
111
yoshi0fee3de2013-11-23 09:13:37 -0800112 public void edgeRemoved(Edge edge, Map<String, Object> props) {
113 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
114 }
Pankaj Berde85016ab2013-06-21 11:34:53 -0700115}