blob: 74dcb16ef30235aa5e6fe8e77bad96557503f485 [file] [log] [blame]
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -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 */
16package org.onosproject.net.group;
17
18import org.onosproject.core.ApplicationId;
19import org.onosproject.net.DeviceId;
20
21/**
22 * ONOS representation of group description that is used to create
23 * a group. It contains immutable properties of a ONOS group construct
24 * such as "type", "DeviceId", "appCookie", "appId" and "buckets"
25 */
26public interface GroupDescription {
27 /**
28 * Types of the group supported by ONOS.
29 */
30 public enum Type {
31 /**
32 * Load-balancing among different buckets in a group.
33 */
34 SELECT,
35 /**
36 * Single Bucket Group.
37 */
38 INDIRECT,
39 /**
40 * Multicast to all buckets in a group.
41 */
42 ALL,
43 /**
44 * Uses the first live bucket in a group.
45 */
46 FAILOVER
47 }
48
49 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080050 * Returns type of a group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080051 *
52 * @return GroupType group type
53 */
54 public Type type();
55
56 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080057 * Returns device identifier on which this group object is created.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080058 *
59 * @return DeviceId device identifier
60 */
61 public DeviceId deviceId();
62
63 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080064 * Returns application identifier that has created this group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080065 *
66 * @return ApplicationId application identifier
67 */
68 public ApplicationId appId();
69
70 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080071 * Returns application cookie associated with a group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080072 *
73 * @return GroupKey application cookie
74 */
75 public GroupKey appCookie();
76
77 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080078 * Returns group buckets of a group.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080079 *
80 * @return GroupBuckets immutable list of group bucket
81 */
82 public GroupBuckets buckets();
83}