blob: 94c45850f5cb0dd53ba329874604a01bceb84c55 [file] [log] [blame]
package org.onlab.onos.net.host;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.DeviceId;
import org.onlab.onos.net.Host;
import org.onlab.onos.net.HostId;
import org.onlab.onos.net.provider.ProviderId;
import org.onlab.packet.IpPrefix;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
import java.util.Set;
/**
* Manages inventory of end-station hosts. It may do so using whatever
* means are appropriate.
*/
public interface HostStore {
/**
* Creates a new host or updates the existing one based on the specified
* description.
*
* @param providerId provider identification
* @param hostId host identification
* @param hostDescription host description data
* @return appropriate event or null if no change resulted
*/
HostEvent createOrUpdateHost(ProviderId providerId, HostId hostId,
HostDescription hostDescription);
/**
* Removes the specified host from the inventory.
*
* @param hostId host identification
* @return remove event or null if host was not found
*/
HostEvent removeHost(HostId hostId);
/**
* Returns the number of hosts in the store.
*
* @return host count
*/
int getHostCount();
/**
* Returns a collection of all hosts in the store.
*
* @return iterable collection of all hosts
*/
Iterable<Host> getHosts();
/**
* Returns the host with the specified identifer.
*
* @param hostId host identification
* @return host or null if not found
*/
Host getHost(HostId hostId);
/**
* Returns the set of all hosts within the specified VLAN.
*
* @param vlanId vlan id
* @return set of hosts in the vlan
*/
Set<Host> getHosts(VlanId vlanId);
/**
* Returns the set of hosts with the specified MAC address.
*
* @param mac mac address
* @return set of hosts with the given mac
*/
Set<Host> getHosts(MacAddress mac);
/**
* Returns the set of hosts with the specified IP address.
*
* @param ip ip address
* @return set of hosts with the given IP
*/
Set<Host> getHosts(IpPrefix ip);
/**
* Returns the set of hosts whose location falls on the given connection point.
*
* @param connectPoint connection point
* @return set of hosts
*/
Set<Host> getConnectedHosts(ConnectPoint connectPoint);
/**
* Returns the set of hosts whose location falls on the given device.
*
* @param deviceId infrastructure device identifier
* @return set of hosts
*/
Set<Host> getConnectedHosts(DeviceId deviceId);
}