Merge changes I0f752636,Idd154499,Ic35fa3e8
[controller.git] / opendaylight / hosttracker / api / src / main / java / org / opendaylight / controller / hosttracker / IfIptoHost.java
index fdb1e72b3f4ce9c7c1ccc147872409dd5b399060..e70a6e18650c9c39d09553e94c8f53a584addc22 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
  *
@@ -13,115 +12,189 @@ import java.net.InetAddress;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Future;
-import org.opendaylight.controller.sal.core.NodeConnector;
+
 import org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector;
+import org.opendaylight.controller.sal.core.NodeConnector;
 import org.opendaylight.controller.sal.utils.Status;
 
 /**
- * This interface defines the methods to retrieve information about
- * learned Hosts. Also provides methods to statically add/remove
- * Hosts from the local database.
+ * This interface defines the methods to retrieve information about learned
+ * Hosts. Also provides methods to statically add/remove Hosts from the local
+ * database.
  *
  */
 
 public interface IfIptoHost {
     /**
-     * Applications call this interface methods to determine IP address to MAC binding and its
-     * connectivity to an OpenFlow switch in term of Node, Port, and VLAN. These
-     * bindings are learned dynamically as well as can be added statically through
-     * Northbound APIs. If a binding is unknown, then an ARP request is initiated
-     * immediately to discover the host.
-     *
-     * @param networkAddress    IP Address of the Host encapsulated in class InetAddress
-     * @return                  {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
-     *                                                  Class that contains the Host info such as its MAC address,
-     *                                                  Switch ID, port, VLAN. If Host is not found, returns NULL
+     * Applications call this interface methods to determine IP address to MAC
+     * binding and its connectivity to an OpenFlow switch in term of Node, Port,
+     * and VLAN. These bindings are learned dynamically as well as can be added
+     * statically through Northbound APIs. If a binding is unknown, then an ARP
+     * request is initiated immediately to discover the host.
+     *
+     * @param id
+     *            IP address and Mac Address combination encapsulated in IHostId
+     *            interface
+     * @return {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
+     *         Class that contains the Host info such as its MAC address, Switch
+     *         ID, port, VLAN. If Host is not found, returns NULL
+     */
+    public HostNodeConnector hostFind(IHostId id);
+
+    /**
+     * Applications call this interface methods to determine IP address to MAC
+     * binding and its connectivity to an OpenFlow switch in term of Node, Port,
+     * and VLAN. These bindings are learned dynamically as well as can be added
+     * statically through Northbound APIs. If a binding is unknown, then an ARP
+     * request is initiated immediately to discover the host.
+     *
+     * @param addr
+     *            IP address of the host
+     * @return {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
+     *         Class that contains the Host info such as its MAC address, Switch
+     *         ID, port, VLAN. If Host is not found, returns NULL
      */
-    public HostNodeConnector hostFind(InetAddress networkAddress);
+    public HostNodeConnector hostFind(InetAddress addr);
 
     /**
      * Checks the local Host Database to see if a Host has been learned for a
-     * given IP address.
+     * given IP address and Mac combination using the HostId.
      *
-     * @param networkAddress    IP Address of the Host encapsulated in class InetAddress
-     * @return                  {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
-     *                                                  Class that contains the Host info such as its MAC address,
-     *                                                  Switch ID, port, VLAN. If Host is not found, returns NULL
+     * @param id
+     *            IP address and Mac Address combination encapsulated in IHostId
+     *            interface
+     * @return {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
+     *         Class that contains the Host info such as its MAC address, Switch
+     *         ID, port, VLAN. If Host is not found, returns NULL
      *
      */
-    public HostNodeConnector hostQuery(InetAddress networkAddress);
+    public HostNodeConnector hostQuery(IHostId id);
 
     /**
-     * Initiates an immediate discovery of the Host for a given IP address. This
+     * Checks the local Host Database to see if a Host has been learned for a
+     * given IP address and Mac combination using the HostId.
+     *
+     * @param addr
+     *            IP address of the Host
+     * @return {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
+     *         Class that contains the Host info such as its MAC address, Switch
+     *         ID, port, VLAN. If Host is not found, returns NULL
+     *
+     */
+    public HostNodeConnector hostQuery(InetAddress addr);
+
+    /**
+     * Initiates an immediate discovery of the Host for a given Host id. This
      * provides for the calling applications to block on the host discovery.
      *
-     * @param networkAddress            IP address encapsulated in InetAddress class
-     * @return                      Future {@link org.opendaylight.controller.hosttracker.HostTrackerCallable}
+     * @param id
+     *            IP address and Mac Address combination encapsulated in IHostId
+     *            interface
+     * @return Future
+     *         {@link org.opendaylight.controller.hosttracker.HostTrackerCallable}
      */
-    public Future<HostNodeConnector> discoverHost(InetAddress networkAddress);
+    public Future<HostNodeConnector> discoverHost(IHostId id);
 
     /**
-     * Returns the Network Hierarchy for a given Host. This API is typically used by
-     * applications like Hadoop for Rack Awareness functionality.
+     * Initiates an immediate discovery of the Host for a given Host id. This
+     * provides for the calling applications to block on the host discovery.
      *
-     * @param                                   IP address of the Host encapsulated in InetAddress class
-     * @return                  List of String ArrayList containing the Hierarchies.
+     * @param addr
+     *            IP address of the host
+     * @return Future
+     *         {@link org.opendaylight.controller.hosttracker.HostTrackerCallable}
      */
-    public List<List<String>> getHostNetworkHierarchy(InetAddress hostAddress);
+    public Future<HostNodeConnector> discoverHost(InetAddress addr);
 
     /**
-     * Returns all the the Hosts either learned dynamically or added statically via
-     * Northbound APIs.
+     * Returns the Network Hierarchy for a given Host. This API is typically
+     * used by applications like Hadoop for Rack Awareness functionality.
      *
-     * @return                  Set of {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}.
-     *                                                  Class that contains the Host info such as its MAC address,
-     *                                                  Switch ID, port, VLAN.
+     * @param id
+     *            IP address and Mac Address combination encapsulated in IHostId
+     *            interface
+     * @return List of String ArrayList containing the Hierarchies.
+     */
+    public List<List<String>> getHostNetworkHierarchy(IHostId id);
+
+    /**
+     * Returns the Network Hierarchy for a given Host. This API is typically
+     * used by applications like Hadoop for Rack Awareness functionality.
+     *
+     * @param addr
+     *            IP address of the host
+     * @return List of String ArrayList containing the Hierarchies.
+     */
+    public List<List<String>> getHostNetworkHierarchy(InetAddress addr);
+
+    /**
+     * Returns all the the Hosts either learned dynamically or added statically
+     * via Northbound APIs.
+     *
+     * @return Set of
+     *         {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
+     *         . Class that contains the Host info such as its MAC address,
+     *         Switch ID, port, VLAN.
      */
     public Set<HostNodeConnector> getAllHosts();
 
     /**
-     * Returns all the "Active Hosts" learned "Statically" via Northbound APIs. These Hosts
-     * are categorized as "Active" because the Switch and Port they are connected to, are in
-     * up state.
+     * Returns all the "Active Hosts" learned "Statically" via Northbound APIs.
+     * These Hosts are categorized as "Active" because the Switch and Port they
+     * are connected to, are in up state.
      *
-     * @return                  Set of {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}.
-     *                                                  Class that contains the Host info such as MAC address,
-     *                                                  Switch ID, port, VLAN. If Host is not found, returns NULL
+     * @return Set of
+     *         {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
+     *         . Class that contains the Host info such as MAC address, Switch
+     *         ID, port, VLAN. If Host is not found, returns NULL
      */
     public Set<HostNodeConnector> getActiveStaticHosts();
 
     /**
-     * Returns all the "Inactive Hosts" learned "Statically" via Northbound APIs. These Hosts
-     * are categorized as "Inactive" because either the Switch or the Port they are connected
-     * to, is in down state.
-     *
-     * @return                  Set of HostNodeConnector {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}.
-     *                                                  HostNodeConnector is Class that
-     *                                                  contains the Host info such as its MAC address, OpenFlowNode
-     *                                                  ID, port, VLAN.
+     * Returns all the "Inactive Hosts" learned "Statically" via Northbound
+     * APIs. These Hosts are categorized as "Inactive" because either the Switch
+     * or the Port they are connected to, is in down state.
+     *
+     * @return Set of HostNodeConnector
+     *         {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector}
+     *         . HostNodeConnector is Class that contains the Host info such as
+     *         its MAC address, OpenFlowNode ID, port, VLAN.
      */
     public Set<HostNodeConnector> getInactiveStaticHosts();
 
     /**
-     * Hosts can be learned dynamically or added statically. This method allows the addition
-     * of a Host to the local database statically.
-     *
-     * @param networkAddress        IP Address of the Host
-     * @param dataLayerAddress      MAC Address of the Host
-     * @param nc                                    NodeConnector to which the host is attached
-     * @param vlan                  VLAN the host belongs to
-     * @return                      The status object as described in {@code Status}
-     *                                                          indicating the result of this action.
+     * Hosts can be learned dynamically or added statically. This method allows
+     * the addition of a Host to the local database statically.
+     *
+     * @param networkAddress
+     *            IP Address of the Host
+     * @param dataLayerAddress
+     *            MAC Address of the Host
+     * @param nc
+     *            NodeConnector to which the host is attached
+     * @param vlan
+     *            VLAN the host belongs to (null or empty for no vlan)
+     * @return The status object as described in {@code Status} indicating the
+     *         result of this action.
      */
-    public Status addStaticHost(String networkAddress, String dataLayerAddress,
-                                NodeConnector nc, String vlan);
+    public Status addStaticHost(String networkAddress, String dataLayerAddress, NodeConnector nc, String vlan);
 
     /**
      * Allows the deletion of statically learned Host
      *
      * @param networkAddress
-     * @return                      The status object as described in {@code Status}
-     *                                                          indicating the result of this action.
+     * @return The status object as described in {@code Status} indicating the
+     *         result of this action.
      */
     public Status removeStaticHost(String networkAddress);
+
+    /**
+     * Allows the deletion of statically learned Host
+     *
+     * @param networkAddress
+     * @param macAddress
+     * @return The status object as described in {@code Status} indicating the
+     *         result of this action.
+     */
+    public Status removeStaticHostUsingIPAndMac(String networkAddress, String macAddress);
 }