X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fhosttracker%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fhosttracker%2FIfIptoHost.java;h=e70a6e18650c9c39d09553e94c8f53a584addc22;hb=f39d905d65a6cbf23990f8c680a22402f19213ea;hp=fdb1e72b3f4ce9c7c1ccc147872409dd5b399060;hpb=39e1d43dc8f41f682fb818469a3aeb542e76ea8e;p=controller.git diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java b/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java index fdb1e72b3f..e70a6e1865 100644 --- a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java +++ b/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java @@ -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 discoverHost(InetAddress networkAddress); + public Future 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> getHostNetworkHierarchy(InetAddress hostAddress); + public Future 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> 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> 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 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 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 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); }