73bbc4a29b41c7d5c8ff4d1b33e72f42da77a8e2
[controller.git] / opendaylight / topologymanager / src / main / java / org / opendaylight / controller / topologymanager / ITopologyManager.java
1
2 /*
3  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 package org.opendaylight.controller.topologymanager;
11
12 import java.util.Map;
13 import java.util.Set;
14 import java.util.concurrent.ConcurrentMap;
15
16 import org.opendaylight.controller.sal.core.Edge;
17 import org.opendaylight.controller.sal.core.Host;
18 import org.opendaylight.controller.sal.core.Node;
19 import org.opendaylight.controller.sal.core.NodeConnector;
20 import org.opendaylight.controller.sal.core.Property;
21 import org.opendaylight.controller.sal.core.UpdateType;
22 import org.opendaylight.controller.sal.utils.Status;
23
24 /**
25  * Interface class that provides methods to interact with
26  * network topology database
27  */
28 public interface ITopologyManager {
29     /**
30      * Query to determine if the specified NodeConnector is connected
31      * to another Node or is a leaf for the network
32      * @param p The node connector
33      * @return true if the NodeConnector is connected to another
34      * switch false otherwise
35      */
36     public boolean isInternal(NodeConnector p);
37
38     /**
39      * Retrieves a map of all known link connections between nodes
40      * including their properties
41      * @return the map as specified
42      */
43     public Map<Edge, Set<Property>> getEdges();
44
45     /**
46      * Returns an unmodifiable map indexed by the Node and reporting
47      * all the edges getting out/in from/to the Node
48      * @return the map as specified
49      */
50     public Map<Node, Set<Edge>> getNodeEdges();
51
52     /**
53      * Add or Update an Host port in the topology manager DB
54      *
55      * @param p NodeConnector to which an host is connected
56      * @param h the Host connected to the NodeConnector
57      * @param t type of update if Add/Delete/Update
58      */
59     public void updateHostLink(NodeConnector p, Host h, UpdateType t,
60             Set<Property> props);
61
62     /**
63      * Return a set of NodeConnector that have hosts attached to them
64      *
65      * @return A set with all the NodeConnectors known to have an host
66      * attached
67      */
68     public Set<NodeConnector> getNodeConnectorWithHost();
69
70     /**
71      * Return the Host attached to a NodeConnector with Host
72      *
73      * @return The Host attached to a NodeConnector
74      */
75     public Host getHostAttachedToNodeConnector(NodeConnector p);
76
77     /**
78      * Returns a copy map which associates every node with all the
79      * NodeConnectors of the node that have an Host attached to it
80      *
81      * @return A map of all the Nodes with NodeConnectors
82      */
83     public Map<Node, Set<NodeConnector>> getNodesWithNodeConnectorHost();
84
85     /**
86      * Adds user configured link
87      *
88      * @param link User configured link
89      * @return "Success" or error reason
90      */
91     public Status addUserLink(TopologyUserLinkConfig link);
92
93     /**
94      * Deletes user configured link
95      *
96      * @param linkName The name of the user configured link
97      * @return "Success" or error reason
98      */
99     public Status deleteUserLink(String linkName);
100
101     /**
102      * Saves user configured links into config file
103      *
104      * @return "Success" or error reason
105      */
106     public Status saveConfig();
107
108     /**
109      * Gets all the user configured links
110      *
111      * @return The map of the user configured links
112      */
113     public ConcurrentMap<String, TopologyUserLinkConfig> getUserLinks();
114 }