Implement cluster wide topology notifications and let routing use it 31/831/2
authorGiovanni Meo <gmeo@cisco.com>
Thu, 8 Aug 2013 17:43:38 +0000 (19:43 +0200)
committerGiovanni Meo <gmeo@cisco.com>
Fri, 9 Aug 2013 07:54:40 +0000 (09:54 +0200)
commit8984fee53ee5f4a99eed43b01ad286ba0e781dd6
tree5f310c450c7c69cfd9c3295ba5e892d937dbf5ee
parentbf2bf3ea3e0b45f2ae7df27bf4634214add7c0ce
Implement cluster wide topology notifications and let routing use it

- Made TopologyManager to generate ClusterWide updates along with the
local ones.
- Implemented a mechanism in topology manager to batch the topology
updates being synched via clustering services. This would save on
unnecessary churn in recalculations under massive topology updates.
- Modified routing Dijkstra to be an ITopologyManagerClusterWideAware
client rather than on of ITopologyManagerAware.
- Modified Dijkstra implementation to generate routing updates
notifications only on the coordinator, in fact given Dijkstra will
have the same view on all the controllers node in the cluster, then
it's pointless to have all the clients of IRoutingAware to
recalculate, they would lead to the same result.
- Dijkstra edgeUpdate logic was considering the CHANGED topology event
as DELETE, that is wrong and this patch fix it.
- Added gogo shell CLI to get a route from the
DijkstraImplementation.java
- Enhanced "TopoEdgeUpdate" class to has the isLocal flag to
distinguish between the local updates and the remotes one. Also remove
non-key field from equal and hashCode calculation.
- Remove unnecessary CONFIGSAVEEVENT in TopologyManagerImpl because
now the configuration service provides a cluster wide trigger.

Change-Id: Ia74d9d1ec0731e1f5815a69edc25bbb5b4c1f531
Signed-off-by: Giovanni Meo <gmeo@cisco.com>
opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/SimpleClient.java
opendaylight/routing/dijkstra_implementation/pom.xml
opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/Activator.java
opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementation.java
opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementationCLI.java [new file with mode: 0644]
opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/TopoEdgeUpdate.java
opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerClusterWideAware.java [new file with mode: 0644]
opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/internal/Activator.java
opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java