/* * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.topologymanager; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentMap; import org.opendaylight.controller.sal.core.Edge; import org.opendaylight.controller.sal.core.Host; import org.opendaylight.controller.sal.core.Node; import org.opendaylight.controller.sal.core.NodeConnector; import org.opendaylight.controller.sal.core.Property; import org.opendaylight.controller.sal.core.UpdateType; import org.opendaylight.controller.sal.utils.Status; /** * The Interface provides methods to interact with network topology database. */ public interface ITopologyManager { /** * Query to determine if the specified NodeConnector is connected * to another Node or is a leaf for the network * @param p The node connector * @return true if the NodeConnector is connected to another * switch false otherwise */ public boolean isInternal(NodeConnector p); /** * Retrieves a map of all known link connections between nodes * including their properties * @return the map as specified */ public Map> getEdges(); /** * Returns an unmodifiable map indexed by the Node and reporting * all the edges getting out/in from/to the Node * @return the map as specified */ public Map> getNodeEdges(); /** * Add or Update an Host port in the topology manager DB * * @param p NodeConnector to which an host is connected * @param h the Host connected to the NodeConnector * @param t type of update if Add/Delete/Update */ public void updateHostLink(NodeConnector p, Host h, UpdateType t, Set props); /** * Return a set of NodeConnector that have hosts attached to them * * @return A set with all the NodeConnectors known to have an host * attached */ public Set getNodeConnectorWithHost(); /** * Return the Host attached to a NodeConnector with Host. * Multiple hosts maybe attached to a node connector. * This method returns the first one only. Hence it has been * deprecated. Use the new method getHostsAttachedToNodeConnector * that returns the complete list of hosts. * @return The Host attached to a NodeConnector */ @Deprecated public Host getHostAttachedToNodeConnector(NodeConnector p); /** * Returns a list of hosts attached to a NodeConnector * @param p NodeConnector * @return The list of hosts attached to a NodeConnector */ public List getHostsAttachedToNodeConnector(NodeConnector p); /** * Returns a copy map which associates every node with all the * NodeConnectors of the node that have an Host attached to it * * @return A map of all the Nodes with NodeConnectors */ public Map> getNodesWithNodeConnectorHost(); /** * Adds user configured link * * @param link User configured link * @return "Success" or error reason */ public Status addUserLink(TopologyUserLinkConfig link); /** * Deletes user configured link * * @param linkName The name of the user configured link * @return "Success" or error reason */ public Status deleteUserLink(String linkName); /** * Saves user configured links into config file * * @return "Success" or error reason */ public Status saveConfig(); /** * Gets all the user configured links * * @return The map of the user configured links */ public ConcurrentMap getUserLinks(); }