blob: 3725706f047137407ce499a10f884f1f5fee61a5 [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;
tomee49c372014-09-26 15:14:50 -07004import org.onlab.packet.IpPrefix;
tom0755a362014-09-24 11:54:43 -07005
tome4729872014-09-23 00:37:37 -07006import java.util.Set;
7
8/**
9 * Manages inventory of controller cluster nodes; not intended for direct use.
10 */
tom0755a362014-09-24 11:54:43 -070011public interface ClusterStore extends Store<ClusterEvent, ClusterStoreDelegate> {
tome4729872014-09-23 00:37:37 -070012
13 /**
tomb41d1ac2014-09-24 01:51:24 -070014 * Returns the local controller node.
tome4729872014-09-23 00:37:37 -070015 *
16 * @return local controller instance
17 */
18 ControllerNode getLocalNode();
19
20 /**
21 * Returns the set of current cluster members.
22 *
23 * @return set of cluster members
24 */
25 Set<ControllerNode> getNodes();
26
27 /**
tomb41d1ac2014-09-24 01:51:24 -070028 * Returns the specified controller node.
tome4729872014-09-23 00:37:37 -070029 *
30 * @param nodeId controller instance identifier
31 * @return controller instance
32 */
33 ControllerNode getNode(NodeId nodeId);
34
35 /**
tomb41d1ac2014-09-24 01:51:24 -070036 * Returns the availability state of the specified controller node.
tome4729872014-09-23 00:37:37 -070037 *
38 * @param nodeId controller instance identifier
39 * @return availability state
40 */
41 ControllerNode.State getState(NodeId nodeId);
42
tomb41d1ac2014-09-24 01:51:24 -070043 /**
tomee49c372014-09-26 15:14:50 -070044 * Adds a new controller node to the cluster.
45 *
46 * @param nodeId controller node identifier
47 * @param ip node IP listen address
48 * @param tcpPort tcp listen port
49 * @return newly added node
50 */
51 ControllerNode addNode(NodeId nodeId, IpPrefix ip, int tcpPort);
52
53 /**
tomb41d1ac2014-09-24 01:51:24 -070054 * Removes the specified node from the inventory of cluster nodes.
55 *
56 * @param nodeId controller instance identifier
57 */
58 void removeNode(NodeId nodeId);
59
tome4729872014-09-23 00:37:37 -070060}