| /* |
| * 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.tunnel; |
| |
| import java.util.Collection; |
| |
| import com.google.common.annotations.Beta; |
| import org.onosproject.core.ApplicationId; |
| import org.onosproject.incubator.net.tunnel.Tunnel.State; |
| import org.onosproject.incubator.net.tunnel.Tunnel.Type; |
| import org.onosproject.net.Annotations; |
| import org.onosproject.net.provider.ProviderId; |
| import org.onosproject.store.Store; |
| |
| /** |
| * Manages inventory of tunnel; not intended for direct use. |
| */ |
| @Beta |
| public interface TunnelStore extends Store<TunnelEvent, TunnelStoreDelegate> { |
| /** |
| * Creates or updates a tunnel. |
| * |
| * @param tunnel tunnel |
| * @return tunnel identity |
| */ |
| TunnelId createOrUpdateTunnel(Tunnel tunnel); |
| |
| /** |
| * Creates a tunnel or updates a tunnel with the new state given in input. |
| * |
| * @param tunnel tunnel |
| * @param state tunnel state |
| * @return tunnel identity |
| */ |
| TunnelId createOrUpdateTunnel(Tunnel tunnel, State state); |
| |
| /** |
| * Deletes a tunnel by a specific tunnel identifier. |
| * |
| * @param tunnelId tunnel unique identifier generated by ONOS |
| */ |
| void deleteTunnel(TunnelId tunnelId); |
| |
| /** |
| * Deletes all tunnels between source point and destination point. |
| * |
| * @param src a source point of tunnel. |
| * @param dst a destination point of tunnel. |
| * @param producerName producerName |
| */ |
| void deleteTunnel(TunnelEndPoint src, TunnelEndPoint dst, |
| ProviderId producerName); |
| |
| /** |
| * Deletes all specific type tunnels between source point and destination |
| * point. |
| * |
| * @param src a source point of tunnel. |
| * @param dst a destination point of tunnel. |
| * @param type tunnel type |
| * @param producerName producerName |
| */ |
| void deleteTunnel(TunnelEndPoint src, TunnelEndPoint dst, |
| Tunnel.Type type, ProviderId producerName); |
| |
| /** |
| * Returns a specific tunnel. Annotations parameter is reserved. If there |
| * is no tunnel in the store, return a "null" object, and record the tunnel subscription. |
| * Where tunnel is created, ONOS notifies this consumer actively. |
| * |
| * @param consumerId a tunnel consumer |
| * @param tunnelId tunnel identify generated by onos |
| * @param annotations parameter |
| * @return Tunnel subscribed tunnel |
| */ |
| Tunnel borrowTunnel(ApplicationId consumerId, TunnelId tunnelId, |
| Annotations... annotations); |
| |
| /** |
| * Returns a specific tunnel by tunnelName. Annotations parameter is |
| * reserved. If there is no tunnel in the store, return a "null" object,and |
| * record the tunnel subscription. Where tunnel is created, ONOS notifies this consumer |
| * actively. |
| * |
| * @param consumerId a tunnel consumer |
| * @param tunnelName tunnel name |
| * @param annotations parameter |
| * @return collection of subscribed Tunnels |
| */ |
| Collection<Tunnel> borrowTunnel(ApplicationId consumerId, |
| TunnelName tunnelName, |
| Annotations... annotations); |
| |
| /** |
| * Returns all tunnels between source and destination. Annotations |
| * parameter is reserved. If there is no any tunnel in the store, return a |
| * empty collection, and record the tunnel subscription. Where tunnel is created, ONOS |
| * notifies this consumer actively. Otherwise ONOS core returns all the |
| * tunnels, consumer determined which one to use. |
| * |
| * @param consumerId a tunnel consumer |
| * @param src a source point of tunnel. |
| * @param dst a destination point of tunnel |
| * @param annotations parameter |
| * @return collection of subscribed Tunnels |
| */ |
| Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src, |
| TunnelEndPoint dst, Annotations... annotations); |
| |
| /** |
| * Returns all specified type tunnels between source and destination. |
| * Annotations parameter is reserved. If there is no any tunnel in the store, |
| * return a empty collection, and record the tunnel subscription. Where tunnel is |
| * created, ONOS notifies this consumer actively. Otherwise,ONOS core returns |
| * all available tunnels, consumer determined which one to use. |
| * |
| * @param consumerId a tunnel consumer |
| * @param src a source point of tunnel. |
| * @param dst a destination point of tunnel |
| * @param type tunnel type |
| * @param annotations Annotations |
| * @return collection of available Tunnels |
| */ |
| Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src, |
| TunnelEndPoint dst, Type type, |
| Annotations... annotations); |
| |
| /** |
| * Returns back a specific tunnel to store. |
| * |
| * @param consumerId a tunnel consumer |
| * @param tunnelId tunnel identify generated by ONOS |
| * @param annotations Annotations |
| * @return success or fail |
| */ |
| boolean returnTunnel(ApplicationId consumerId, TunnelId tunnelId, |
| Annotations... annotations); |
| |
| /** |
| * Returns all specific name tunnel back store. Annotations parameter is |
| * reserved.If there is no tunnel in the store, return a "null" object,and |
| * record the tunnel subscription. Where tunnel is created, ONOS notifies this consumer |
| * actively. |
| * |
| * @param consumerId a tunnel consumer |
| * @param tunnelName tunnel name |
| * @param annotations Annotations |
| * @return boolean |
| */ |
| boolean returnTunnel(ApplicationId consumerId, TunnelName tunnelName, |
| Annotations... annotations); |
| |
| /** |
| * Returns all specific type tunnels between source and destination back |
| * store. Annotations parameter is reserved. |
| * |
| * @param consumerId a tunnel consumer |
| * @param src a source point of tunnel. |
| * @param dst a destination point of tunnel |
| * @param type tunnel type |
| * @param annotations Annotations |
| * @return success or fail |
| */ |
| boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src, |
| TunnelEndPoint dst, Type type, |
| Annotations... annotations); |
| |
| /** |
| * Returns all tunnels between source and destination back the store. |
| * Annotations parameter is reserved. |
| * |
| * @param consumerId a tunnel consumer |
| * @param src a source point of tunnel. |
| * @param dst a destination point of tunnel. |
| * @param annotations Annotations |
| * @return success or fail |
| */ |
| boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src, |
| TunnelEndPoint dst, Annotations... annotations); |
| |
| /** |
| * Returns a tunnel by a specific tunnel identity. |
| * |
| * @param tunnelId tunnel identify generated by tunnel producer |
| * @return Tunnel |
| */ |
| Tunnel queryTunnel(TunnelId tunnelId); |
| |
| /** |
| * Returns all tunnel subscription record by consumer. |
| * |
| * @param consumerId consumer identity |
| * @return Collection of TunnelSubscription |
| */ |
| Collection<TunnelSubscription> queryTunnelSubscription(ApplicationId consumerId); |
| |
| /** |
| * Returns all specified type tunnels. |
| * |
| * @param type tunnel type |
| * @return Collection of tunnels |
| */ |
| Collection<Tunnel> queryTunnel(Type type); |
| |
| /** |
| * Returns all tunnels between source point and destination point. |
| * |
| * @param src a source point of tunnel. |
| * @param dst a destination point of tunnel. |
| * @return Collection of tunnels |
| */ |
| Collection<Tunnel> queryTunnel(TunnelEndPoint src, TunnelEndPoint dst); |
| |
| /** |
| * Returns all tunnels. |
| * |
| * @return Collection of tunnels |
| */ |
| Collection<Tunnel> queryAllTunnels(); |
| |
| /** |
| * Returns all tunnels. |
| * @return all tunnels |
| */ |
| int tunnelCount(); |
| } |