blob: 69ebe8d81be22d58a5a7e4300c050737550be497 [file] [log] [blame]
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -08001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2015-present Open Networking Foundation
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -08003 *
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 */
Sho SHIMIZU3310a342015-05-13 12:14:05 -070030 enum Type {
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080031 /**
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 /**
Carmelo Cascone5079a7f2019-04-16 17:33:31 -070044 * Similar to {@link Type#ALL} but used for cloning of packets
45 * independently of the egress decision (singleton treatment or other
46 * group).
47 */
48 CLONE,
49 /**
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080050 * Uses the first live bucket in a group.
51 */
52 FAILOVER
53 }
54
55 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080056 * Returns type of a group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080057 *
58 * @return GroupType group type
59 */
Sho SHIMIZU3310a342015-05-13 12:14:05 -070060 Type type();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080061
62 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080063 * Returns device identifier on which this group object is created.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080064 *
65 * @return DeviceId device identifier
66 */
Sho SHIMIZU3310a342015-05-13 12:14:05 -070067 DeviceId deviceId();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080068
69 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080070 * Returns application identifier that has created this group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080071 *
72 * @return ApplicationId application identifier
73 */
Sho SHIMIZU3310a342015-05-13 12:14:05 -070074 ApplicationId appId();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080075
76 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080077 * Returns application cookie associated with a group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080078 *
79 * @return GroupKey application cookie
80 */
Sho SHIMIZU3310a342015-05-13 12:14:05 -070081 GroupKey appCookie();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080082
83 /**
Saurav Das100e3b82015-04-30 11:12:10 -070084 * Returns groupId passed in by caller.
85 *
86 * @return Integer group id passed in by caller. May be null if caller
Yuta HIGUCHI013688c2016-08-09 16:57:11 -070087 * passed in null to let groupService determine the group id.
Saurav Das100e3b82015-04-30 11:12:10 -070088 */
Sho SHIMIZU3310a342015-05-13 12:14:05 -070089 Integer givenGroupId();
Saurav Das100e3b82015-04-30 11:12:10 -070090
91 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080092 * Returns group buckets of a group.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080093 *
94 * @return GroupBuckets immutable list of group bucket
95 */
Sho SHIMIZU3310a342015-05-13 12:14:05 -070096 GroupBuckets buckets();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080097}