blob: f647b57ff4d40566879fa07a0cee0c6e647689ef [file] [log] [blame]
Phaneendra Manda3e128832015-10-26 22:13:38 +05301/*
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.vtnrsc;
17
18import java.util.List;
19
20/**
21 * Abstraction of an entity providing Port Pair Group information.
22 * A port pair group consists of one or more port pairs.
23 */
24public interface PortPairGroup {
25
26 /**
27 * Returns the ID of this port pair group.
28 *
29 * @return the port pair group id
30 */
31 PortPairGroupId portPairGroupId();
32
33 /**
34 * Returns the tenant id of this port pair group.
35 *
36 * @return the tenant id
37 */
38 TenantId tenantId();
39
40 /**
41 * Returns the name of this port pair group.
42 *
43 * @return name of port pair group
44 */
45 String name();
46
47 /**
48 * Returns the description of this port pair group.
49 *
50 * @return description of port pair group
51 */
52 String description();
53
54 /**
55 * Returns the list of port pairs associated with this port pair group.
56 *
57 * @return list of port pairs
58 */
59 List<PortPairId> portPairs();
60
61 /**
62 * Returns whether this port pair group is an exact match to the
63 * port pair group given in the argument.
64 * <p>
65 * Exact match means the Port pairs match with the given port pair group.
66 * It does not consider the port pair group id, name and description.
67 * </p>
68 * @param portPairGroup other port pair group to match against
69 * @return true if the port pairs are an exact match, otherwise false
70 */
71 boolean exactMatch(PortPairGroup portPairGroup);
72
73 /**
74 * A port pair group builder..
75 */
76 interface Builder {
77
78 /**
79 * Assigns the port pair group id to this object.
80 *
81 * @param portPairGroupId the port pair group id
82 * @return this the builder object
83 */
84 Builder setId(PortPairGroupId portPairGroupId);
85
86 /**
87 * Assigns tenant id to this object.
88 *
89 * @param tenantId tenant id of port pair group
90 * @return this the builder object
91 */
92 Builder setTenantId(TenantId tenantId);
93
94 /**
95 * Assigns the name to this object.
96 *
97 * @param name name of the port pair group
98 * @return this the builder object
99 */
100 Builder setName(String name);
101
102 /**
103 * Assigns the description to this object.
104 *
105 * @param description description of the port pair group
106 * @return this the builder object
107 */
108 Builder setDescription(String description);
109
110 /**
111 * Assigns the port pairs associated with the port pair group
112 * to this object.
113 *
114 * @param portPairs list of port pairs
115 * @return this the builder object
116 */
117 Builder setPortPairs(List<PortPairId> portPairs);
118
119 /**
120 * Builds a port pair group object.
121 *
122 * @return a port pair group object.
123 */
124 PortPairGroup build();
125 }
126}