aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java
blob: 49ad2f2b8690ae366b99aa407d26315a360b1e52 (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
149
150
151
152
153
154
155
156
157
158
159
160
161
/*
 * 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.incubator.net.virtual;

import org.onosproject.incubator.net.tunnel.TunnelId;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.store.Store;

import java.util.Set;

/**
 * Mechanism for distributing and storing virtual network model information.
 */
public interface VirtualNetworkStore
        extends Store<VirtualNetworkEvent, VirtualNetworkStoreDelegate> {

    /**
     * Adds a new tenant ID to the store.
     *
     * @param tenantId tenant identifier
     */
    void addTenantId(TenantId tenantId);

    /**
     * Removes the specified tenant ID from the store.
     *
     * @param tenantId tenant identifier
     */
    void removeTenantId(TenantId tenantId);

    /**
     * Returns set of registered tenant IDs.
     *
     * @return set of tenant identifiers
     */
    Set<TenantId> getTenantIds();

    /**
     * Adds a new virtual network for the specified tenant to the store.
     *
     * @param tenantId tenant identifier
     * @return the virtual network
     */
    VirtualNetwork addNetwork(TenantId tenantId);

    /**
     * Removes the specified virtual network from the store.
     *
     * @param networkId network identifier
     */
    void removeNetwork(NetworkId networkId);

    /**
     * Adds a new virtual device to the store. This device will have no ports.
     *
     * @param networkId network identifier
     * @param deviceId  device identifier
     * @return the virtual device
     */
    VirtualDevice addDevice(NetworkId networkId, DeviceId deviceId);

    /**
     * Renmoves the specified virtual device from the given network.
     *
     * @param networkId network identifier
     * @param deviceId  device identifier
     */
    void removeDevice(NetworkId networkId, DeviceId deviceId);

    /**
     * Adds a new virtual link.
     *
     * @param networkId  network identifier
     * @param src        source end-point of the link
     * @param dst        destination end-point of the link
     * @param realizedBy underlying tunnel using which this link is realized
     * @return the virtual link
     */
    VirtualLink addLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst,
                        TunnelId realizedBy);

    /**
     * Removes the specified link from the store.
     *
     * @param networkId network identifier
     * @param src       source connection point
     * @param dst       destination connection point
     */
    void removeLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst);

    /**
     * Adds a new virtual port to the network.
     *
     * @param networkId  network identifier
     * @param deviceId   device identifier
     * @param portNumber port number
     * @param realizedBy underlying port which realizes the virtual port
     * @return the virtual port
     */
    VirtualPort addPort(NetworkId networkId, DeviceId deviceId,
                        PortNumber portNumber, Port realizedBy);

    /**
     * Removes the specified port from the given device and network.
     *
     * @param networkId  network identifier
     * @param deviceId   device identifier
     * @param portNumber port number
     */
    void removePort(NetworkId networkId, DeviceId deviceId, PortNumber portNumber);

    /**
     * Returns the list of networks.
     *
     * @param tenantId tenant identifier
     * @return set of virtual networks
     */
    Set<VirtualNetwork> getNetworks(TenantId tenantId);

    /**
     * Returns the list of devices in the specified virtual network.
     *
     * @param networkId network identifier
     * @return set of virtual devices
     */
    Set<VirtualDevice> getDevices(NetworkId networkId);

    /**
     * Returns the list of virtual links in the specified virtual network.
     *
     * @param networkId network identifier
     * @return set of virtual links
     */
    Set<VirtualLink> getLinks(NetworkId networkId);

    /**
     * Returns the list of ports of the specified virtual device.
     *
     * @param networkId network identifier
     * @param deviceId   device identifier
     * @return set of virtual networks
     */
    Set<VirtualPort> getPorts(NetworkId networkId, DeviceId deviceId);

}