blob: 9c0af8feadc9169639bd7e2162f0dd554743e5d3 [file] [log] [blame]
tom73d6d1e2014-09-17 20:08:01 -07001package org.onlab.onos.cluster;
2
3import java.util.Set;
4
5/**
tome4729872014-09-23 00:37:37 -07006 * Service for obtaining information about the individual nodes within
tom73d6d1e2014-09-17 20:08:01 -07007 * the controller cluster.
8 */
9public interface ClusterService {
10
11 /**
tome4729872014-09-23 00:37:37 -070012 * Returns the local controller node.
13 *
14 * @return local controller node
15 */
16 ControllerNode getLocalNode();
17
18 /**
tom73d6d1e2014-09-17 20:08:01 -070019 * Returns the set of current cluster members.
20 *
21 * @return set of cluster members
22 */
tome4729872014-09-23 00:37:37 -070023 Set<ControllerNode> getNodes();
tom73d6d1e2014-09-17 20:08:01 -070024
25 /**
tome4729872014-09-23 00:37:37 -070026 * Returns the specified controller node.
tom73d6d1e2014-09-17 20:08:01 -070027 *
tome4729872014-09-23 00:37:37 -070028 * @param nodeId controller node identifier
29 * @return controller node
30 */
31 ControllerNode getNode(NodeId nodeId);
32
33 /**
34 * Returns the availability state of the specified controller node.
35 *
36 * @param nodeId controller node identifier
tom73d6d1e2014-09-17 20:08:01 -070037 * @return availability state
38 */
tome4729872014-09-23 00:37:37 -070039 ControllerNode.State getState(NodeId nodeId);
tom73d6d1e2014-09-17 20:08:01 -070040
tomfc9a4ff2014-09-22 18:22:47 -070041 /**
42 * Adds the specified cluster event listener.
43 *
44 * @param listener the cluster listener
45 */
46 void addListener(ClusterEventListener listener);
tom73d6d1e2014-09-17 20:08:01 -070047
tomfc9a4ff2014-09-22 18:22:47 -070048 /**
49 * Removes the specified cluster event listener.
50 *
51 * @param listener the cluster listener
52 */
53 void removeListener(ClusterEventListener listener);
tom73d6d1e2014-09-17 20:08:01 -070054
55}