blob: c636cd280d0142b8adfb5f7bc1cbecfe103bedc9 [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'Connor5eb77c82015-03-02 18:09:39 -080018import org.onosproject.cluster.NodeId;
Jonathan Hart5ec32ba2015-02-05 13:33:58 -080019
Jonathan Hart74c83132015-02-02 18:37:57 -080020/**
21 * Service for interacting with the partition-to-instance assignments.
22 */
23public interface PartitionService {
24
25 /**
26 * Returns whether the given intent key is in a partition owned by this
27 * instance or not.
28 *
29 * @param intentKey intent key to query
30 * @return true if the key is owned by this instance, otherwise false
31 */
Jonathan Hart5ec32ba2015-02-05 13:33:58 -080032 boolean isMine(Key intentKey);
Jonathan Hart74c83132015-02-02 18:37:57 -080033
Brian O'Connor5eb77c82015-03-02 18:09:39 -080034 /**
35 * Returns the leader for a particular key.
36 *
37 * @param intentKey intent key to query
38 * @return the leader node
39 */
40 NodeId getLeader(Key intentKey);
41
Jonathan Hart74c83132015-02-02 18:37:57 -080042 // TODO add API for rebalancing partitions
Brian O'Connor69d6ac72015-05-29 16:24:06 -070043
44 /**
45 * Registers a event listener to be notified of partition events.
46 *
47 * @param listener listener that will asynchronously notified of partition events.
48 */
49 void addListener(PartitionEventListener listener);
50
51 /**
52 * Unregisters a event listener for partition events.
53 *
54 * @param listener listener to be removed.
55 */
56 void removeListener(PartitionEventListener listener);
Jonathan Hart74c83132015-02-02 18:37:57 -080057}