/* * Copyright 2016-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.tetunnel.api; import org.onosproject.incubator.net.tunnel.TunnelId; import org.onosproject.tetopology.management.api.TeTopologyKey; import org.onosproject.tetunnel.api.lsp.TeLsp; import org.onosproject.tetunnel.api.lsp.TeLspKey; import org.onosproject.tetunnel.api.tunnel.TeTunnel; import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; import java.util.Collection; /** * Service for TE Tunnel attributes management. * <p> * Please note that this service works with the existing Tunnel subsystem * together, just as an extension to the tunnel subsystem, and only focus on TE * Tunnel attributes management. */ public interface TeTunnelService { /** * Returns the TE Tunnel with the specified key. * * @param teTunnelKey TE Tunnel key * @return TeTunnel or null if one with the given key is not known */ TeTunnel getTeTunnel(TeTunnelKey teTunnelKey); /** * Returns the TE Tunnel with the specified identifier. * * @param tunnelId corresponding tunnel identifier * @return TeTunnel or null if one with the given identifier is not known */ TeTunnel getTeTunnel(TunnelId tunnelId); /** * Returns the corresponding tunnel identifier of a TE tunnel with the * specified key. * * @param teTunnelKey TE Tunnel key * @return corresponding tunnel identifier or null if one with the given * key is not known */ TunnelId getTunnelId(TeTunnelKey teTunnelKey); /** * Returns a collection of currently known TE tunnels. * * @return collection of TE tunnels */ Collection<TeTunnel> getTeTunnels(); /** * Returns a collection of currently known TE Tunnels filtered by the * specified TE tunnel type. * * @param type TE tunnel type to filter by * @return filtered collection of TE tunnels */ Collection<TeTunnel> getTeTunnels(TeTunnel.Type type); /** * Returns a collection of currently known TE tunnels filtered by specified * TE topology key. * * @param teTopologyKey TE topology key to filter by * @return filtered collection of TE tunnels */ Collection<TeTunnel> getTeTunnels(TeTopologyKey teTopologyKey); /** * Returns the TE LSP with the specified key. * * @param key TE LSP key * @return TeLsp or null if one with the given key is not known */ TeLsp getTeLsp(TeLspKey key); /** * Returns a collection of currently known TE LSPs. * * @return collection of TeLsp */ Collection<TeLsp> getTeLsps(); //TODO: add interfaces for teGlobal and teLspState }