blob: 7c9d547f0cc32d85401895c841dda04f027c9613 [file] [log] [blame]
Jonathan Hart74c83132015-02-02 18:37:57 -08001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Brian O'Connor87ba7a72015-03-11 14:40:09 -070016package org.onosproject.net.intent;
Jonathan Hart74c83132015-02-02 18:37:57 -080017
Brian O'Connor9476fa12015-06-25 15:17:17 -040018import com.google.common.annotations.Beta;
Brian O'Connor5eb77c82015-03-02 18:09:39 -080019import org.onosproject.cluster.NodeId;
Jonathan Hart5ec32ba2015-02-05 13:33:58 -080020
Jonathan Hart74c83132015-02-02 18:37:57 -080021/**
22 * Service for interacting with the partition-to-instance assignments.
23 */
Brian O'Connor9476fa12015-06-25 15:17:17 -040024@Beta
Jonathan Hart74c83132015-02-02 18:37:57 -080025public interface PartitionService {
26
27 /**
28 * Returns whether the given intent key is in a partition owned by this
29 * instance or not.
30 *
31 * @param intentKey intent key to query
32 * @return true if the key is owned by this instance, otherwise false
33 */
Jonathan Hart5ec32ba2015-02-05 13:33:58 -080034 boolean isMine(Key intentKey);
Jonathan Hart74c83132015-02-02 18:37:57 -080035
Brian O'Connor5eb77c82015-03-02 18:09:39 -080036 /**
37 * Returns the leader for a particular key.
38 *
39 * @param intentKey intent key to query
40 * @return the leader node
41 */
42 NodeId getLeader(Key intentKey);
43
Jonathan Hart74c83132015-02-02 18:37:57 -080044 // TODO add API for rebalancing partitions
Brian O'Connor69d6ac72015-05-29 16:24:06 -070045
46 /**
47 * Registers a event listener to be notified of partition events.
48 *
49 * @param listener listener that will asynchronously notified of partition events.
50 */
51 void addListener(PartitionEventListener listener);
52
53 /**
54 * Unregisters a event listener for partition events.
55 *
56 * @param listener listener to be removed.
57 */
58 void removeListener(PartitionEventListener listener);
Jonathan Hart74c83132015-02-02 18:37:57 -080059}