blob: ea5bbd3403ce3ac160a473c70cf1df5fdd91c9be [file] [log] [blame]
tome4729872014-09-23 00:37:37 -07001package org.onlab.onos.cluster;
2
tom0755a362014-09-24 11:54:43 -07003import org.onlab.onos.store.Store;
4
tome4729872014-09-23 00:37:37 -07005import java.util.Set;
6
7/**
8 * Manages inventory of controller cluster nodes; not intended for direct use.
9 */
tom0755a362014-09-24 11:54:43 -070010public interface ClusterStore extends Store<ClusterEvent, ClusterStoreDelegate> {
tome4729872014-09-23 00:37:37 -070011
12 /**
tomb41d1ac2014-09-24 01:51:24 -070013 * Returns the local controller node.
tome4729872014-09-23 00:37:37 -070014 *
15 * @return local controller instance
16 */
17 ControllerNode getLocalNode();
18
19 /**
20 * Returns the set of current cluster members.
21 *
22 * @return set of cluster members
23 */
24 Set<ControllerNode> getNodes();
25
26 /**
tomb41d1ac2014-09-24 01:51:24 -070027 * Returns the specified controller node.
tome4729872014-09-23 00:37:37 -070028 *
29 * @param nodeId controller instance identifier
30 * @return controller instance
31 */
32 ControllerNode getNode(NodeId nodeId);
33
34 /**
tomb41d1ac2014-09-24 01:51:24 -070035 * Returns the availability state of the specified controller node.
tome4729872014-09-23 00:37:37 -070036 *
37 * @param nodeId controller instance identifier
38 * @return availability state
39 */
40 ControllerNode.State getState(NodeId nodeId);
41
tomb41d1ac2014-09-24 01:51:24 -070042 /**
43 * Removes the specified node from the inventory of cluster nodes.
44 *
45 * @param nodeId controller instance identifier
46 */
47 void removeNode(NodeId nodeId);
48
tome4729872014-09-23 00:37:37 -070049}