| /* |
| * Copyright 2015-present 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.onlab.packet.IpAddress; |
| import org.onlab.packet.MacAddress; |
| import org.onlab.packet.VlanId; |
| import org.onosproject.incubator.net.tunnel.TunnelId; |
| import org.onosproject.net.ConnectPoint; |
| import org.onosproject.net.DeviceId; |
| import org.onosproject.net.HostId; |
| import org.onosproject.net.HostLocation; |
| import org.onosproject.net.Link; |
| import org.onosproject.net.Port; |
| import org.onosproject.net.PortNumber; |
| import org.onosproject.net.intent.Intent; |
| import org.onosproject.net.intent.IntentData; |
| import org.onosproject.net.intent.IntentState; |
| import org.onosproject.net.intent.Key; |
| 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); |
| |
| /** |
| * Removes 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 host to the store. |
| * |
| * @param networkId network identifier |
| * @param hostId host identifier |
| * @param mac mac address |
| * @param vlan vlan identifier |
| * @param location host location |
| * @param ips set of ip addresses |
| * @return the virtual host |
| */ |
| VirtualHost addHost(NetworkId networkId, HostId hostId, MacAddress mac, |
| VlanId vlan, HostLocation location, Set<IpAddress> ips); |
| |
| /** |
| * Removes the specified virtual host from the store. |
| * |
| * @param networkId network identifier |
| * @param hostId host identifier |
| */ |
| void removeHost(NetworkId networkId, HostId hostId); |
| |
| /** |
| * 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 state link state |
| * @param realizedBy underlying tunnel identifier using which this link is realized |
| * @return the virtual link |
| */ |
| VirtualLink addLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst, Link.State state, TunnelId realizedBy); |
| |
| /** |
| * Updates the tunnelId in the virtual link. |
| * |
| * @param virtualLink virtual link |
| * @param tunnelId tunnel identifier |
| * @param state link state |
| */ |
| void updateLink(VirtualLink virtualLink, TunnelId tunnelId, Link.State state); |
| |
| /** |
| * Removes the specified link from the store. |
| * |
| * @param networkId network identifier |
| * @param src source connection point |
| * @param dst destination connection point |
| * @return the virtual link |
| */ |
| VirtualLink 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 virtual network for the given network identifier. |
| * |
| * @param networkId network identifier |
| * @return the virtual network |
| */ |
| VirtualNetwork getNetwork(NetworkId networkId); |
| |
| /** |
| * 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 hosts in the specified virtual network. |
| * |
| * @param networkId network identifier |
| * @return set of virtual hosts |
| */ |
| Set<VirtualHost> getHosts(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 virtual link matching the network identifier, source connect point, |
| * and destination connect point. |
| * |
| * @param networkId network identifier |
| * @param src source connect point |
| * @param dst destination connect point |
| * @return virtual link |
| */ |
| VirtualLink getLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst); |
| |
| /** |
| * 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); |
| |
| /** |
| * Add or update the intent to the store. |
| * |
| * @param intent virtual intent |
| * @param state intent state |
| */ |
| void addOrUpdateIntent(Intent intent, IntentState state); |
| |
| /** |
| * Remove the virtual intent from the store. |
| * |
| * @param intentKey intent key |
| * @return intent data |
| */ |
| IntentData removeIntent(Key intentKey); |
| |
| /** |
| * Adds the intent to tunnel identifier mapping to the store. |
| * |
| * @param intent intent |
| * @param tunnelId tunnel identifier |
| */ |
| void addTunnelId(Intent intent, TunnelId tunnelId); |
| |
| /** |
| * Return the set of tunnel identifiers store against the intent. |
| * |
| * @param intent intent |
| * @return set of tunnel identifiers |
| */ |
| Set<TunnelId> getTunnelIds(Intent intent); |
| |
| /** |
| * Removes the intent to tunnel identifier mapping from the store. |
| * |
| * @param intent intent |
| * @param tunnelId tunnel identifier |
| */ |
| void removeTunnelId(Intent intent, TunnelId tunnelId); |
| |
| /** |
| * Return all intents. |
| * |
| * @return set of intents |
| */ |
| Set<Intent> getIntents(); |
| |
| /** |
| * Return the intent for the specified intent key. |
| * |
| * @param key intent key |
| * @return intent |
| */ |
| Intent getIntent(Key key); |
| |
| /** |
| * Return the set of intent data. |
| * |
| * @return set of intent data |
| */ |
| Set<IntentData> getIntentData(); |
| |
| /** |
| * Return the intent data matching the intent key. |
| * |
| * @param key intent key |
| * @return intent data |
| */ |
| IntentData getIntentData(Key key); |
| } |