aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java
blob: d147eaaa9a611cb143cfd4aed111678a3c7e71d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/*
 * Copyright 2015 Open Networking Laboratory
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.onosproject.vtnrsc;

import java.util.List;

/**
 * Abstraction of an entity providing Port Chain information.
 * A Port Chain (Service Function Path) consists of
 * a set of Neutron ports, to define the sequence of service functions
 * a set of flow classifiers, to specify the classified traffic flows to enter the chain
 */
public interface PortChain {

    /**
     * Returns the ID of this port chain.
     *
     * @return the port chain id
     */
    PortChainId portChainId();

    /**
     * Returns the tenant id of this port chain.
     *
     * @return the tenant id
     */
    TenantId tenantId();

    /**
     * Returns the name of this port chain.
     *
     * @return name of port chain
     */
    String name();

    /**
     * Returns the description of this port chain.
     *
     * @return description of port chain
     */
    String description();

    /**
     * Returns the list of port pair groups associated with
     * this port chain.
     *
     * @return list of port pair groups
     */
    List<PortPairGroupId> portPairGroups();

    /**
     * Returns the list of flow classifiers associated with
     * this port chain.
     *
     * @return list of flow classifiers
     */
    List<FlowClassifierId> flowClassifiers();

    /**
     * Returns whether this port chain is an exact match to the port chain given
     * in the argument.
     * <p>
     * Exact match means the port pair groups and flow classifiers match
     * with the given port chain. It does not consider the port chain id, name
     * and description.
     * </p>
     *
     * @param portChain other port chain to match against
     * @return true if the port chains are an exact match, otherwise false
     */
    boolean exactMatch(PortChain portChain);

    /**
     * A port chain builder..
     */
    interface Builder {

        /**
         * Assigns the port chain id to this object.
         *
         * @param portChainId the port chain id
         * @return this the builder object
         */
        Builder setId(PortChainId portChainId);

        /**
         * Assigns tenant id to this object.
         *
         * @param tenantId tenant id of the port chain
         * @return this the builder object
         */
        Builder setTenantId(TenantId tenantId);

        /**
         * Assigns the name to this object.
         *
         * @param name name of the port chain
         * @return this the builder object
         */
        Builder setName(String name);

        /**
         * Assigns the description to this object.
         *
         * @param description description of the port chain
         * @return this the builder object
         */
        Builder setDescription(String description);

        /**
         * Assigns the port pair groups associated with the port chain
         * to this object.
         *
         * @param portPairGroups list of port pair groups
         * @return this the builder object
         */
        Builder setPortPairGroups(List<PortPairGroupId> portPairGroups);

        /**
         * Assigns the flow classifiers associated with the port chain
         * to this object.
         *
         * @param flowClassifiers list of flow classifiers
         * @return this the builder object
         */
        Builder setFlowClassifiers(List<FlowClassifierId> flowClassifiers);

        /**
         * Builds a port chain object.
         *
         * @return a port chain.
         */
        PortChain build();
    }
}