blob: 4464c4e18e3acd3882db1fc785b00db07bac6a8d [file] [log] [blame]
/*
* 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.tetopology.management.api;
import java.util.List;
import java.util.Map;
import org.onosproject.net.DeviceId;
import org.onosproject.tetopology.management.api.link.NetworkLink;
import org.onosproject.tetopology.management.api.node.NetworkNode;
/**
* Abstraction of a network element.
*/
public interface Network extends TeTopologyEventSubject {
/**
* Returns the network identifier / key.
*
* @return network identifier
*/
KeyId networkId();
/**
* Returns the network keys (or identifiers) of the supporting
* networks which serve as the underlay networks of the current
* network which is mapped by the specified network identifier.
*
* @return list of network keys
*/
List<KeyId> supportingNetworkIds();
/**
* Returns a collection of the network nodes of the network mapped
* by the specified network identifier.
*
* @return a collection of network nodes
*/
Map<KeyId, NetworkNode> nodes();
/**
* Returns the network node corresponding to the given identifier
* which is encoded as a URI. If no node is found, a null
* is returned.
*
* @param nodeId node id
* @return value of node or null
*/
NetworkNode node(KeyId nodeId);
/**
* Returns a collection of links in the network mapped by the specified
* network identifier.
*
* @return a collection of currently known links
*/
Map<KeyId, NetworkLink> links();
/**
* Returns the link corresponding to the given identifier which is
* encoded as a URI. If no such a link is found, a null is returned.
*
* @param linkId link id
* @return value of the link
*/
NetworkLink link(KeyId linkId);
/**
* Returns true if the network is provided by a server, or false if
* configured by a client.
*
* @return true if the network is provided by a server; false otherwise
*/
boolean isServerProvided();
/**
* Returns the TE topology identifier for this network.
*
* @return TE topology id
*/
TeTopologyId teTopologyId();
/**
* Returns the topology optimization criteria.
*
* @return the optimization
*/
OptimizationType optimization();
/**
* Returns the controller identifier owning this abstracted topology.
*
* @return the controller id
*/
DeviceId ownerId();
}