blob: debb38abf328c27e2f9256468e37c7cbb4168a91 [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;
Pavlin Radoslavov444b5192014-10-28 10:45:19 -07004import org.onlab.packet.IpAddress;
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 */
Pavlin Radoslavov444b5192014-10-28 10:45:19 -070051 ControllerNode addNode(NodeId nodeId, IpAddress ip, int tcpPort);
tomee49c372014-09-26 15:14:50 -070052
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}