Merge branch 'master' of ssh://gerrit.onlab.us:29418/onos-next
diff --git a/net/api/pom.xml b/core/api/pom.xml
similarity index 95%
rename from net/api/pom.xml
rename to core/api/pom.xml
index d542a97..3fd8a01 100644
--- a/net/api/pom.xml
+++ b/core/api/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.onlab.onos</groupId>
- <artifactId>onos-net</artifactId>
+ <artifactId>onos-core</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/net/api/src/main/java/org/onlab/onos/GreetService.java b/core/api/src/main/java/org/onlab/onos/GreetService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/GreetService.java
rename to core/api/src/main/java/org/onlab/onos/GreetService.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/AbstractEvent.java b/core/api/src/main/java/org/onlab/onos/event/AbstractEvent.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/AbstractEvent.java
rename to core/api/src/main/java/org/onlab/onos/event/AbstractEvent.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/AbstractListenerRegistry.java b/core/api/src/main/java/org/onlab/onos/event/AbstractListenerRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/AbstractListenerRegistry.java
rename to core/api/src/main/java/org/onlab/onos/event/AbstractListenerRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/DefaultEventSinkRegistry.java b/core/api/src/main/java/org/onlab/onos/event/DefaultEventSinkRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/DefaultEventSinkRegistry.java
rename to core/api/src/main/java/org/onlab/onos/event/DefaultEventSinkRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/Event.java b/core/api/src/main/java/org/onlab/onos/event/Event.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/Event.java
rename to core/api/src/main/java/org/onlab/onos/event/Event.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/EventDeliveryService.java b/core/api/src/main/java/org/onlab/onos/event/EventDeliveryService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/EventDeliveryService.java
rename to core/api/src/main/java/org/onlab/onos/event/EventDeliveryService.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/EventDispatcher.java b/core/api/src/main/java/org/onlab/onos/event/EventDispatcher.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/EventDispatcher.java
rename to core/api/src/main/java/org/onlab/onos/event/EventDispatcher.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/EventListener.java b/core/api/src/main/java/org/onlab/onos/event/EventListener.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/EventListener.java
rename to core/api/src/main/java/org/onlab/onos/event/EventListener.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/EventSink.java b/core/api/src/main/java/org/onlab/onos/event/EventSink.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/EventSink.java
rename to core/api/src/main/java/org/onlab/onos/event/EventSink.java
diff --git a/net/api/src/main/java/org/onlab/onos/event/EventSinkRegistry.java b/core/api/src/main/java/org/onlab/onos/event/EventSinkRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/event/EventSinkRegistry.java
rename to core/api/src/main/java/org/onlab/onos/event/EventSinkRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/AbstractElement.java b/core/api/src/main/java/org/onlab/onos/net/AbstractElement.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/AbstractElement.java
rename to core/api/src/main/java/org/onlab/onos/net/AbstractElement.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/AbstractModel.java b/core/api/src/main/java/org/onlab/onos/net/AbstractModel.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/AbstractModel.java
rename to core/api/src/main/java/org/onlab/onos/net/AbstractModel.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/ConnectPoint.java b/core/api/src/main/java/org/onlab/onos/net/ConnectPoint.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/ConnectPoint.java
rename to core/api/src/main/java/org/onlab/onos/net/ConnectPoint.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/DefaultDevice.java b/core/api/src/main/java/org/onlab/onos/net/DefaultDevice.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/DefaultDevice.java
rename to core/api/src/main/java/org/onlab/onos/net/DefaultDevice.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/DefaultEdgeLink.java b/core/api/src/main/java/org/onlab/onos/net/DefaultEdgeLink.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/DefaultEdgeLink.java
rename to core/api/src/main/java/org/onlab/onos/net/DefaultEdgeLink.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/DefaultLink.java b/core/api/src/main/java/org/onlab/onos/net/DefaultLink.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/DefaultLink.java
rename to core/api/src/main/java/org/onlab/onos/net/DefaultLink.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/DefaultPort.java b/core/api/src/main/java/org/onlab/onos/net/DefaultPort.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/DefaultPort.java
rename to core/api/src/main/java/org/onlab/onos/net/DefaultPort.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/Description.java b/core/api/src/main/java/org/onlab/onos/net/Description.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/Description.java
rename to core/api/src/main/java/org/onlab/onos/net/Description.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/Device.java b/core/api/src/main/java/org/onlab/onos/net/Device.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/Device.java
rename to core/api/src/main/java/org/onlab/onos/net/Device.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/DeviceId.java b/core/api/src/main/java/org/onlab/onos/net/DeviceId.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/DeviceId.java
rename to core/api/src/main/java/org/onlab/onos/net/DeviceId.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/EdgeLink.java b/core/api/src/main/java/org/onlab/onos/net/EdgeLink.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/EdgeLink.java
rename to core/api/src/main/java/org/onlab/onos/net/EdgeLink.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/Element.java b/core/api/src/main/java/org/onlab/onos/net/Element.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/Element.java
rename to core/api/src/main/java/org/onlab/onos/net/Element.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/ElementId.java b/core/api/src/main/java/org/onlab/onos/net/ElementId.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/ElementId.java
rename to core/api/src/main/java/org/onlab/onos/net/ElementId.java
diff --git a/core/api/src/main/java/org/onlab/onos/net/Host.java b/core/api/src/main/java/org/onlab/onos/net/Host.java
new file mode 100644
index 0000000..d66566d
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/Host.java
@@ -0,0 +1,44 @@
+package org.onlab.onos.net;
+
+import org.onlab.packet.IPv4;
+import org.onlab.packet.MACAddress;
+
+import java.util.Set;
+
+/**
+ * Abstraction of an end-station host on the network, essentially a NIC.
+ */
+public interface Host extends Element {
+
+ /**
+ * Host identification.
+ *
+ * @return host id
+ */
+ HostId id();
+
+ /**
+ * Returns the host MAC address.
+ *
+ * @return mac address
+ */
+ MACAddress mac();
+
+ /**
+ * Returns set of IP addresses currently bound to the host MAC address.
+ *
+ * @return set of IP addresses; empty if no IP address is bound
+ */
+ Set<IPv4> ipAddresses();
+
+ /**
+ * Returns the most recent host location where the host attaches to the
+ * network edge.
+ *
+ * @return host location
+ */
+ HostLocation location();
+
+ // TODO: explore capturing list of recent locations to aid in mobility
+
+}
diff --git a/core/api/src/main/java/org/onlab/onos/net/HostId.java b/core/api/src/main/java/org/onlab/onos/net/HostId.java
new file mode 100644
index 0000000..1c1f2d7
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/HostId.java
@@ -0,0 +1,50 @@
+package org.onlab.onos.net;
+
+import org.onlab.packet.MACAddress;
+
+import java.net.URI;
+
+/**
+ * Immutable representation of a host identity.
+ */
+public final class HostId extends ElementId {
+
+ // Public construction is prohibited
+ private HostId(URI uri) {
+ super(uri);
+ }
+
+ /**
+ * Creates a device id using the supplied URI.
+ *
+ * @param uri device URI
+ * @return host identifier
+ */
+ public static HostId hostId(URI uri) {
+ return new HostId(uri);
+ }
+
+ /**
+ * Creates a device id using the supplied URI string.
+ *
+ * @param string device URI string
+ * @return host identifier
+ */
+ public static HostId hostId(String string) {
+ return hostId(URI.create(string));
+ }
+
+ /**
+ * Creates a device id using the supplied MAC & VLAN ID.
+ *
+ * @param mac mac address
+ * @param vlanId vlan identifier
+ * @return host identifier
+ */
+ // FIXME: replace vlanId long with a rich data-type, e.g. VLanId or something like that
+ public static HostId hostId(MACAddress mac, long vlanId) {
+ // FIXME: use more efficient means of encoding
+ return hostId("nic" + ":" + mac + "/" + vlanId);
+ }
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/HostLocation.java b/core/api/src/main/java/org/onlab/onos/net/HostLocation.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/HostLocation.java
rename to core/api/src/main/java/org/onlab/onos/net/HostLocation.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/Link.java b/core/api/src/main/java/org/onlab/onos/net/Link.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/Link.java
rename to core/api/src/main/java/org/onlab/onos/net/Link.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/MastershipRole.java b/core/api/src/main/java/org/onlab/onos/net/MastershipRole.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/MastershipRole.java
rename to core/api/src/main/java/org/onlab/onos/net/MastershipRole.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/Path.java b/core/api/src/main/java/org/onlab/onos/net/Path.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/Path.java
rename to core/api/src/main/java/org/onlab/onos/net/Path.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/Port.java b/core/api/src/main/java/org/onlab/onos/net/Port.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/Port.java
rename to core/api/src/main/java/org/onlab/onos/net/Port.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/PortNumber.java b/core/api/src/main/java/org/onlab/onos/net/PortNumber.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/PortNumber.java
rename to core/api/src/main/java/org/onlab/onos/net/PortNumber.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/Provided.java b/core/api/src/main/java/org/onlab/onos/net/Provided.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/Provided.java
rename to core/api/src/main/java/org/onlab/onos/net/Provided.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DefaultDeviceDescription.java b/core/api/src/main/java/org/onlab/onos/net/device/DefaultDeviceDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DefaultDeviceDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DefaultDeviceDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DefaultPortDescription.java b/core/api/src/main/java/org/onlab/onos/net/device/DefaultPortDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DefaultPortDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DefaultPortDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceAdminService.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceAdminService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DeviceAdminService.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DeviceAdminService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java
similarity index 98%
rename from net/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java
index 10b3b19..0a33777 100644
--- a/net/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java
+++ b/core/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java
@@ -105,7 +105,7 @@
*
* @return port subject or null if the event is not port specific.
*/
- Port port() {
+ public Port port() {
return port;
}
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceListener.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceListener.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DeviceListener.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DeviceListener.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProvider.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceProvider.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DeviceProvider.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DeviceProvider.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderRegistry.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceService.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/DeviceService.java
rename to core/api/src/main/java/org/onlab/onos/net/device/DeviceService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/PortDescription.java b/core/api/src/main/java/org/onlab/onos/net/device/PortDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/device/PortDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/device/PortDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowDescription.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/flow/FlowDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/flow/FlowDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java
rename to core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderRegistry.java
rename to core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
rename to core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostDescription.java b/core/api/src/main/java/org/onlab/onos/net/host/HostDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/host/HostDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/host/HostDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostEvent.java b/core/api/src/main/java/org/onlab/onos/net/host/HostEvent.java
similarity index 91%
rename from net/api/src/main/java/org/onlab/onos/net/host/HostEvent.java
rename to core/api/src/main/java/org/onlab/onos/net/host/HostEvent.java
index b06e8b8..2adfb09 100644
--- a/net/api/src/main/java/org/onlab/onos/net/host/HostEvent.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/HostEvent.java
@@ -23,6 +23,11 @@
HOST_REMOVED,
/**
+ * Signifies that host data changed, e.g. IP address
+ */
+ HOST_UPDATED,
+
+ /**
* Signifies that a host location has changed.
*/
HOST_MOVED
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostListener.java b/core/api/src/main/java/org/onlab/onos/net/host/HostListener.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/host/HostListener.java
rename to core/api/src/main/java/org/onlab/onos/net/host/HostListener.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java b/core/api/src/main/java/org/onlab/onos/net/host/HostProvider.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java
rename to core/api/src/main/java/org/onlab/onos/net/host/HostProvider.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/host/HostProviderRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/host/HostProviderRegistry.java
rename to core/api/src/main/java/org/onlab/onos/net/host/HostProviderRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java b/core/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java
similarity index 68%
rename from net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java
rename to core/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java
index 76c2aad..ed568e8 100644
--- a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java
@@ -1,5 +1,6 @@
package org.onlab.onos.net.host;
+import org.onlab.onos.net.HostId;
import org.onlab.onos.net.provider.ProviderService;
/**
@@ -11,15 +12,16 @@
* Notifies the core when a host has been detected on a network along with
* information that identifies the hoot location.
*
+ * @param hostId id of the host that been detected
* @param hostDescription description of host and its location
*/
- void hostDetected(HostDescription hostDescription);
+ void hostDetected(HostId hostId, HostDescription hostDescription);
/**
* Notifies the core when a host is no longer detected on a network.
*
- * @param hostDescription description of host
+ * @param hostId id of the host that vanished
*/
- void hostVanished(HostDescription hostDescription);
+ void hostVanished(HostId hostId);
}
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostService.java b/core/api/src/main/java/org/onlab/onos/net/host/HostService.java
similarity index 60%
rename from net/api/src/main/java/org/onlab/onos/net/host/HostService.java
rename to core/api/src/main/java/org/onlab/onos/net/host/HostService.java
index ed94522..9ffa58a 100644
--- a/net/api/src/main/java/org/onlab/onos/net/host/HostService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/HostService.java
@@ -2,8 +2,10 @@
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.DeviceId;
-import org.onlab.onos.net.ElementId;
import org.onlab.onos.net.Host;
+import org.onlab.onos.net.HostId;
+import org.onlab.packet.IPv4;
+import org.onlab.packet.MACAddress;
import java.util.Set;
@@ -13,6 +15,13 @@
public interface HostService {
/**
+ * Returns the number of end-station hosts known to the system.
+ *
+ * @return number of end-station hosts
+ */
+ public int getHostCount();
+
+ /**
* Returns a collection of all end-station hosts.
*
* @return collection of hosts
@@ -25,12 +34,32 @@
* @param hostId host identifier
* @return host or null if one with the given identifier is not known
*/
- Host getHost(ElementId hostId); // TODO: change to HostId
+ Host getHost(HostId hostId);
- // TODO: determine which ones make sense or which we care to support
- // Set<Host> getHostsByVlan(VlanId vlan);
- // Set<Host> getHostsByMac(MacAddress mac);
- // Set<Host> getHostsByIp(IpAddress ip);
+ /**
+ * Returns the set of hosts that belong to the specified VLAN.
+ *
+ * @param vlanId vlan identifier
+ * @return set of hosts in the given vlan id
+ */
+ // FIXME: change long to VLanId
+ Set<Host> getHostsByVlan(long vlanId);
+
+ /**
+ * Returns the set of hosts that have the specified MAC address.
+ *
+ * @param mac mac address
+ * @return set of hosts with the given mac
+ */
+ Set<Host> getHostsByMac(MACAddress mac);
+
+ /**
+ * Returns the set of hosts that have the specified IP address.
+ *
+ * @param ip ip address
+ * @return set of hosts with the given IP
+ */
+ Set<Host> getHostsByIp(IPv4 ip);
/**
* Returns the set of hosts whose most recent location is the specified
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/DefaultLinkDescription.java b/core/api/src/main/java/org/onlab/onos/net/link/DefaultLinkDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/DefaultLinkDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/link/DefaultLinkDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkAdminService.java b/core/api/src/main/java/org/onlab/onos/net/link/LinkAdminService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/LinkAdminService.java
rename to core/api/src/main/java/org/onlab/onos/net/link/LinkAdminService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java b/core/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkEvent.java b/core/api/src/main/java/org/onlab/onos/net/link/LinkEvent.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/LinkEvent.java
rename to core/api/src/main/java/org/onlab/onos/net/link/LinkEvent.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkListener.java b/core/api/src/main/java/org/onlab/onos/net/link/LinkListener.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/LinkListener.java
rename to core/api/src/main/java/org/onlab/onos/net/link/LinkListener.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProvider.java b/core/api/src/main/java/org/onlab/onos/net/link/LinkProvider.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/LinkProvider.java
rename to core/api/src/main/java/org/onlab/onos/net/link/LinkProvider.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/link/LinkProviderRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/LinkProviderRegistry.java
rename to core/api/src/main/java/org/onlab/onos/net/link/LinkProviderRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java b/core/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java
rename to core/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkService.java b/core/api/src/main/java/org/onlab/onos/net/link/LinkService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/link/LinkService.java
rename to core/api/src/main/java/org/onlab/onos/net/link/LinkService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProvider.java b/core/api/src/main/java/org/onlab/onos/net/provider/AbstractProvider.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/provider/AbstractProvider.java
rename to core/api/src/main/java/org/onlab/onos/net/provider/AbstractProvider.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
rename to core/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderService.java b/core/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderService.java
rename to core/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/Provider.java b/core/api/src/main/java/org/onlab/onos/net/provider/Provider.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/provider/Provider.java
rename to core/api/src/main/java/org/onlab/onos/net/provider/Provider.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderId.java b/core/api/src/main/java/org/onlab/onos/net/provider/ProviderId.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/provider/ProviderId.java
rename to core/api/src/main/java/org/onlab/onos/net/provider/ProviderId.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
rename to core/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderService.java b/core/api/src/main/java/org/onlab/onos/net/provider/ProviderService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/provider/ProviderService.java
rename to core/api/src/main/java/org/onlab/onos/net/provider/ProviderService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/ClusterId.java b/core/api/src/main/java/org/onlab/onos/net/topology/ClusterId.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/ClusterId.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/ClusterId.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/DefaultTopologyCluster.java b/core/api/src/main/java/org/onlab/onos/net/topology/DefaultTopologyCluster.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/DefaultTopologyCluster.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/DefaultTopologyCluster.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/LinkWeight.java b/core/api/src/main/java/org/onlab/onos/net/topology/LinkWeight.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/LinkWeight.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/LinkWeight.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopoEdge.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopoEdge.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopoEdge.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopoEdge.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopoVertex.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopoVertex.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopoVertex.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopoVertex.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/Topology.java b/core/api/src/main/java/org/onlab/onos/net/topology/Topology.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/Topology.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/Topology.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyCluster.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopologyCluster.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopologyCluster.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopologyCluster.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyDescription.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopologyDescription.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopologyDescription.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopologyDescription.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyEvent.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopologyEvent.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopologyEvent.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopologyEvent.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyListener.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopologyListener.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopologyListener.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopologyListener.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProvider.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopologyProvider.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopologyProvider.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopologyProvider.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderRegistry.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderRegistry.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderRegistry.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderService.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderService.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderService.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyService.java b/core/api/src/main/java/org/onlab/onos/net/topology/TopologyService.java
similarity index 100%
rename from net/api/src/main/java/org/onlab/onos/net/topology/TopologyService.java
rename to core/api/src/main/java/org/onlab/onos/net/topology/TopologyService.java
diff --git a/net/api/src/main/javadoc/org/onlab/onos/event/package.html b/core/api/src/main/javadoc/org/onlab/onos/event/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/event/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/event/package.html
diff --git a/net/api/src/main/javadoc/org/onlab/onos/net/device/package.html b/core/api/src/main/javadoc/org/onlab/onos/net/device/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/net/device/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/net/device/package.html
diff --git a/net/api/src/main/javadoc/org/onlab/onos/net/flow/package.html b/core/api/src/main/javadoc/org/onlab/onos/net/flow/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/net/flow/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/net/flow/package.html
diff --git a/net/api/src/main/javadoc/org/onlab/onos/net/host/package.html b/core/api/src/main/javadoc/org/onlab/onos/net/host/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/net/host/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/net/host/package.html
diff --git a/net/api/src/main/javadoc/org/onlab/onos/net/link/package.html b/core/api/src/main/javadoc/org/onlab/onos/net/link/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/net/link/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/net/link/package.html
diff --git a/net/api/src/main/javadoc/org/onlab/onos/net/package.html b/core/api/src/main/javadoc/org/onlab/onos/net/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/net/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/net/package.html
diff --git a/net/api/src/main/javadoc/org/onlab/onos/net/provider/package.html b/core/api/src/main/javadoc/org/onlab/onos/net/provider/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/net/provider/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/net/provider/package.html
diff --git a/net/api/src/main/javadoc/org/onlab/onos/net/topology/package.html b/core/api/src/main/javadoc/org/onlab/onos/net/topology/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/net/topology/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/net/topology/package.html
diff --git a/net/api/src/main/javadoc/org/onlab/onos/package.html b/core/api/src/main/javadoc/org/onlab/onos/package.html
similarity index 100%
rename from net/api/src/main/javadoc/org/onlab/onos/package.html
rename to core/api/src/main/javadoc/org/onlab/onos/package.html
diff --git a/net/api/src/test/java/org/onlab/onos/event/AbstractEventTest.java b/core/api/src/test/java/org/onlab/onos/event/AbstractEventTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/event/AbstractEventTest.java
rename to core/api/src/test/java/org/onlab/onos/event/AbstractEventTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/event/AbstractListenerRegistryTest.java b/core/api/src/test/java/org/onlab/onos/event/AbstractListenerRegistryTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/event/AbstractListenerRegistryTest.java
rename to core/api/src/test/java/org/onlab/onos/event/AbstractListenerRegistryTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/event/BrokenListener.java b/core/api/src/test/java/org/onlab/onos/event/BrokenListener.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/event/BrokenListener.java
rename to core/api/src/test/java/org/onlab/onos/event/BrokenListener.java
diff --git a/net/api/src/test/java/org/onlab/onos/event/DefaultEventSinkRegistryTest.java b/core/api/src/test/java/org/onlab/onos/event/DefaultEventSinkRegistryTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/event/DefaultEventSinkRegistryTest.java
rename to core/api/src/test/java/org/onlab/onos/event/DefaultEventSinkRegistryTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/event/TestEvent.java b/core/api/src/test/java/org/onlab/onos/event/TestEvent.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/event/TestEvent.java
rename to core/api/src/test/java/org/onlab/onos/event/TestEvent.java
diff --git a/net/api/src/test/java/org/onlab/onos/event/TestListener.java b/core/api/src/test/java/org/onlab/onos/event/TestListener.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/event/TestListener.java
rename to core/api/src/test/java/org/onlab/onos/event/TestListener.java
diff --git a/net/api/src/test/java/org/onlab/onos/event/TestListenerRegistry.java b/core/api/src/test/java/org/onlab/onos/event/TestListenerRegistry.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/event/TestListenerRegistry.java
rename to core/api/src/test/java/org/onlab/onos/event/TestListenerRegistry.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java b/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
rename to core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/DefaultEdgeLinkTest.java b/core/api/src/test/java/org/onlab/onos/net/DefaultEdgeLinkTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/DefaultEdgeLinkTest.java
rename to core/api/src/test/java/org/onlab/onos/net/DefaultEdgeLinkTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/DefaultLinkTest.java b/core/api/src/test/java/org/onlab/onos/net/DefaultLinkTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/DefaultLinkTest.java
rename to core/api/src/test/java/org/onlab/onos/net/DefaultLinkTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/DefaultPortTest.java b/core/api/src/test/java/org/onlab/onos/net/DefaultPortTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/DefaultPortTest.java
rename to core/api/src/test/java/org/onlab/onos/net/DefaultPortTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/DeviceIdTest.java b/core/api/src/test/java/org/onlab/onos/net/DeviceIdTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/DeviceIdTest.java
rename to core/api/src/test/java/org/onlab/onos/net/DeviceIdTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/ElementIdTest.java b/core/api/src/test/java/org/onlab/onos/net/ElementIdTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/ElementIdTest.java
rename to core/api/src/test/java/org/onlab/onos/net/ElementIdTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/HostIdTest.java b/core/api/src/test/java/org/onlab/onos/net/HostIdTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/HostIdTest.java
rename to core/api/src/test/java/org/onlab/onos/net/HostIdTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/PortNumberTest.java b/core/api/src/test/java/org/onlab/onos/net/PortNumberTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/PortNumberTest.java
rename to core/api/src/test/java/org/onlab/onos/net/PortNumberTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/device/DefaultDeviceDescriptionTest.java b/core/api/src/test/java/org/onlab/onos/net/device/DefaultDeviceDescriptionTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/device/DefaultDeviceDescriptionTest.java
rename to core/api/src/test/java/org/onlab/onos/net/device/DefaultDeviceDescriptionTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java b/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
rename to core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/link/DefaultLinkDescriptionTest.java b/core/api/src/test/java/org/onlab/onos/net/link/DefaultLinkDescriptionTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/link/DefaultLinkDescriptionTest.java
rename to core/api/src/test/java/org/onlab/onos/net/link/DefaultLinkDescriptionTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/link/LinkEventTest.java b/core/api/src/test/java/org/onlab/onos/net/link/LinkEventTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/link/LinkEventTest.java
rename to core/api/src/test/java/org/onlab/onos/net/link/LinkEventTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderRegistryTest.java b/core/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderRegistryTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderRegistryTest.java
rename to core/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderRegistryTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderTest.java b/core/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderTest.java
rename to core/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/provider/ProviderIdTest.java b/core/api/src/test/java/org/onlab/onos/net/provider/ProviderIdTest.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/provider/ProviderIdTest.java
rename to core/api/src/test/java/org/onlab/onos/net/provider/ProviderIdTest.java
diff --git a/net/api/src/test/java/org/onlab/onos/net/provider/TestProvider.java b/core/api/src/test/java/org/onlab/onos/net/provider/TestProvider.java
similarity index 100%
rename from net/api/src/test/java/org/onlab/onos/net/provider/TestProvider.java
rename to core/api/src/test/java/org/onlab/onos/net/provider/TestProvider.java
diff --git a/net/pom.xml b/core/pom.xml
similarity index 93%
rename from net/pom.xml
rename to core/pom.xml
index fa146d9..13deec4 100644
--- a/net/pom.xml
+++ b/core/pom.xml
@@ -11,14 +11,14 @@
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>onos-net</artifactId>
+ <artifactId>onos-core</artifactId>
<packaging>pom</packaging>
<description>ONOS Core root project</description>
<modules>
<module>api</module>
- <module>core</module>
+ <module>trivial</module>
</modules>
<dependencies>
diff --git a/net/core/pom.xml b/core/trivial/pom.xml
similarity index 73%
rename from net/core/pom.xml
rename to core/trivial/pom.xml
index 0ceaa17..1806ba4 100644
--- a/net/core/pom.xml
+++ b/core/trivial/pom.xml
@@ -6,19 +6,15 @@
<parent>
<groupId>org.onlab.onos</groupId>
- <artifactId>onos-net</artifactId>
+ <artifactId>onos-core</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>onos-core</artifactId>
- <packaging>pom</packaging>
+ <artifactId>onos-core-trivial</artifactId>
+ <packaging>bundle</packaging>
- <description>ONOS network control core subsystems</description>
-
- <modules>
- <module>trivial</module>
- </modules>
+ <description>ONOS network control trivial implementations of core subsystems</description>
<dependencies>
<dependency>
@@ -26,10 +22,6 @@
<artifactId>onos-api</artifactId>
</dependency>
<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
</dependency>
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/event/impl/SimpleEventDispatcher.java b/core/trivial/src/main/java/org/onlab/onos/event/impl/SimpleEventDispatcher.java
similarity index 100%
rename from net/core/trivial/src/main/java/org/onlab/onos/event/impl/SimpleEventDispatcher.java
rename to core/trivial/src/main/java/org/onlab/onos/event/impl/SimpleEventDispatcher.java
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/impl/GreetManager.java b/core/trivial/src/main/java/org/onlab/onos/impl/GreetManager.java
similarity index 100%
rename from net/core/trivial/src/main/java/org/onlab/onos/impl/GreetManager.java
rename to core/trivial/src/main/java/org/onlab/onos/impl/GreetManager.java
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/impl/SomeOtherComponent.java b/core/trivial/src/main/java/org/onlab/onos/impl/SomeOtherComponent.java
similarity index 100%
rename from net/core/trivial/src/main/java/org/onlab/onos/impl/SomeOtherComponent.java
rename to core/trivial/src/main/java/org/onlab/onos/impl/SomeOtherComponent.java
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopologyDescription.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopologyDescription.java
similarity index 100%
rename from net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopologyDescription.java
rename to core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopologyDescription.java
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
similarity index 93%
rename from net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
rename to core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
index 87a548e..c322b70 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
@@ -110,21 +110,6 @@
}
@Override
- public void addListener(DeviceListener listener) {
- listenerRegistry.addListener(listener);
- }
-
- @Override
- public void removeListener(DeviceListener listener) {
- listenerRegistry.removeListener(listener);
- }
-
- @Override
- protected DeviceProviderService createProviderService(DeviceProvider provider) {
- return new InternalDeviceProviderService(provider);
- }
-
- @Override
public void setRole(DeviceId deviceId, MastershipRole newRole) {
checkNotNull(deviceId, DEVICE_ID_NULL);
checkNotNull(newRole, ROLE_NULL);
@@ -143,7 +128,25 @@
public void removeDevice(DeviceId deviceId) {
checkNotNull(deviceId, DEVICE_ID_NULL);
DeviceEvent event = store.removeDevice(deviceId);
- post(event);
+ if (event != null) {
+ log.info("Device {} administratively removed", deviceId);
+ post(event);
+ }
+ }
+
+ @Override
+ public void addListener(DeviceListener listener) {
+ listenerRegistry.addListener(listener);
+ }
+
+ @Override
+ public void removeListener(DeviceListener listener) {
+ listenerRegistry.removeListener(listener);
+ }
+
+ @Override
+ protected DeviceProviderService createProviderService(DeviceProvider provider) {
+ return new InternalDeviceProviderService(provider);
}
// Personalized device provider service issued to the supplied provider.
@@ -159,12 +162,12 @@
checkNotNull(deviceId, DEVICE_ID_NULL);
checkNotNull(deviceDescription, DEVICE_DESCRIPTION_NULL);
checkValidity();
- log.info("Device {} connected", deviceId);
DeviceEvent event = store.createOrUpdateDevice(provider().id(),
deviceId, deviceDescription);
// If there was a change of any kind, trigger role selection process.
if (event != null) {
+ log.info("Device {} connected", deviceId);
Device device = event.subject();
provider().roleChanged(device, store.getRole(device.id()));
post(event);
@@ -175,9 +178,11 @@
public void deviceDisconnected(DeviceId deviceId) {
checkNotNull(deviceId, DEVICE_ID_NULL);
checkValidity();
- log.info("Device {} disconnected", deviceId);
DeviceEvent event = store.markOffline(deviceId);
- post(event);
+ if (event != null) {
+ log.info("Device {} disconnected", deviceId);
+ post(event);
+ }
}
@Override
@@ -185,7 +190,6 @@
checkNotNull(deviceId, DEVICE_ID_NULL);
checkNotNull(portDescriptions, "Port descriptions list cannot be null");
checkValidity();
- log.info("Device {} ports updated", deviceId);
List<DeviceEvent> events = store.updatePorts(deviceId, portDescriptions);
for (DeviceEvent event : events) {
post(event);
@@ -199,9 +203,10 @@
checkValidity();
DeviceEvent event = store.updatePortStatus(deviceId, portDescription);
if (event != null) {
- log.info("Device {} port status changed", deviceId);
+ log.info("Device {} port {} status changed", deviceId,
+ event.port().number());
+ post(event);
}
- post(event);
}
}
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
similarity index 99%
rename from net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
rename to core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
index e219a63..6d16a61 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
@@ -28,8 +28,7 @@
import static org.onlab.onos.net.device.DeviceEvent.Type.*;
/**
- * Manages inventory of infrastructure devices using trivial in-memory
- * implementation.
+
*/
class SimpleDeviceStore {
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java
new file mode 100644
index 0000000..05557c5
--- /dev/null
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java
@@ -0,0 +1,166 @@
+package org.onlab.onos.net.trivial.impl;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.Service;
+import org.onlab.onos.event.AbstractListenerRegistry;
+import org.onlab.onos.event.EventDeliveryService;
+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.host.HostDescription;
+import org.onlab.onos.net.host.HostEvent;
+import org.onlab.onos.net.host.HostListener;
+import org.onlab.onos.net.host.HostProvider;
+import org.onlab.onos.net.host.HostProviderRegistry;
+import org.onlab.onos.net.host.HostProviderService;
+import org.onlab.onos.net.host.HostService;
+import org.onlab.onos.net.provider.AbstractProviderRegistry;
+import org.onlab.onos.net.provider.AbstractProviderService;
+import org.onlab.packet.IPv4;
+import org.onlab.packet.MACAddress;
+import org.slf4j.Logger;
+
+import java.util.Set;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.slf4j.LoggerFactory.getLogger;
+
+/**
+ * Provides basic implementation of the host SB & NB APIs.
+ */
+@Component(immediate = true)
+@Service
+public class SimpleHostManager
+ extends AbstractProviderRegistry<HostProvider, HostProviderService>
+ implements HostService, HostProviderRegistry {
+
+ public static final String HOST_ID_NULL = "Host ID cannot be null";
+ private final Logger log = getLogger(getClass());
+
+ private final AbstractListenerRegistry<HostEvent, HostListener>
+ listenerRegistry = new AbstractListenerRegistry<>();
+
+ private final SimpleHostStore store = new SimpleHostStore();
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ private EventDeliveryService eventDispatcher;
+
+
+ @Activate
+ public void activate() {
+ eventDispatcher.addSink(HostEvent.class, listenerRegistry);
+ log.info("Started");
+ }
+
+ @Deactivate
+ public void deactivate() {
+ eventDispatcher.removeSink(HostEvent.class);
+ log.info("Stopped");
+ }
+
+ @Override
+ protected HostProviderService createProviderService(HostProvider provider) {
+ return new InternalHostProviderService(provider);
+ }
+
+ @Override
+ public int getHostCount() {
+ return store.getHostCount();
+ }
+
+ @Override
+ public Iterable<Host> getHosts() {
+ return store.getHosts();
+ }
+
+ @Override
+ public Host getHost(HostId hostId) {
+ checkNotNull(hostId, HOST_ID_NULL);
+ return store.getHost(hostId);
+ }
+
+ @Override
+ public Set<Host> getHostsByVlan(long vlanId) {
+ return store.getHosts(vlanId);
+ }
+
+ @Override
+ public Set<Host> getHostsByMac(MACAddress mac) {
+ checkNotNull(mac, "MAC address cannot be null");
+ return store.getHosts(mac);
+ }
+
+ @Override
+ public Set<Host> getHostsByIp(IPv4 ip) {
+ checkNotNull(ip, "IP address cannot be null");
+ return store.getHosts(ip);
+ }
+
+ @Override
+ public Set<Host> getConnectedHosts(ConnectPoint connectPoint) {
+ checkNotNull(connectPoint, "Connection point cannot be null");
+ return store.getConnectedHosts(connectPoint);
+ }
+
+ @Override
+ public Set<Host> getConnectedHosts(DeviceId deviceId) {
+ checkNotNull(deviceId, "Device ID cannot be null");
+ return store.getConnectedHosts(deviceId);
+ }
+
+ @Override
+ public void addListener(HostListener listener) {
+ listenerRegistry.addListener(listener);
+ }
+
+ @Override
+ public void removeListener(HostListener listener) {
+ listenerRegistry.removeListener(listener);
+ }
+
+ // Personalized host provider service issued to the supplied provider.
+ private class InternalHostProviderService
+ extends AbstractProviderService<HostProvider>
+ implements HostProviderService {
+
+ InternalHostProviderService(HostProvider provider) {
+ super(provider);
+ }
+
+ @Override
+ public void hostDetected(HostId hostId, HostDescription hostDescription) {
+ checkNotNull(hostId, HOST_ID_NULL);
+ checkValidity();
+ HostEvent event = store.createOrUpdateHost(provider().id(), hostId,
+ hostDescription);
+ if (event != null) {
+ log.info("Host {} detected", hostId);
+ post(event);
+ }
+ }
+
+ @Override
+ public void hostVanished(HostId hostId) {
+ checkNotNull(hostId, HOST_ID_NULL);
+ checkValidity();
+ HostEvent event = store.removeHost(hostId);
+ if (event != null) {
+ log.info("Host {} vanished", hostId);
+ post(event);
+ }
+ }
+ }
+
+ // Posts the specified event to the local event dispatcher.
+ private void post(HostEvent event) {
+ if (event != null && eventDispatcher != null) {
+ eventDispatcher.post(event);
+ }
+ }
+
+}
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostStore.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostStore.java
new file mode 100644
index 0000000..127aad1
--- /dev/null
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostStore.java
@@ -0,0 +1,127 @@
+package org.onlab.onos.net.trivial.impl;
+
+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.host.HostDescription;
+import org.onlab.onos.net.host.HostEvent;
+import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.packet.IPv4;
+import org.onlab.packet.MACAddress;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Manages inventory of end-station hosts using trivial in-memory
+ * implementation.
+ */
+public class SimpleHostStore {
+
+ private final Map<HostId, Host> hosts = new ConcurrentHashMap<>();
+
+ /**
+ * 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) {
+ return null;
+ }
+
+ /**
+ * Removes the specified host from the inventory.
+ *
+ * @param hostId host identification
+ * @return remove even or null if host was not found
+ */
+ HostEvent removeHost(HostId hostId) {
+ return null;
+ }
+
+ /**
+ * Returns the number of hosts in the store.
+ *
+ * @return host count
+ */
+ int getHostCount() {
+ return hosts.size();
+ }
+
+ /**
+ * Returns a collection of all hosts in the store.
+ *
+ * @return iterable collection of all hosts
+ */
+ Iterable<Host> getHosts() {
+ return null;
+ }
+
+ /**
+ * Returns the host with the specified identifer.
+ *
+ * @param hostId host identification
+ * @return host or null if not found
+ */
+ Host getHost(HostId hostId) {
+ return null;
+ }
+
+ /**
+ * Returns the set of all hosts within the specified VLAN.
+ *
+ * @param vlanId vlan id
+ * @return set of hosts in the vlan
+ */
+ Set<Host> getHosts(long vlanId) {
+ return null;
+ }
+
+ /**
+ * 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) {
+ return null;
+ }
+
+ /**
+ * 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(IPv4 ip) {
+ return null;
+ }
+
+ /**
+ * 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) {
+ return null;
+ }
+
+ /**
+ * Returns the set of hosts whose location falls on the given device.
+ *
+ * @param deviceId infrastructure device identifier
+ * @return set of hosts
+ */
+ public Set<Host> getConnectedHosts(DeviceId deviceId) {
+ return null;
+ }
+
+}
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java
similarity index 99%
rename from net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java
rename to core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java
index 88d0663..d900c5b 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java
@@ -66,11 +66,6 @@
}
@Override
- protected LinkProviderService createProviderService(LinkProvider provider) {
- return new InternalLinkProviderService(provider);
- }
-
- @Override
public int getLinkCount() {
return store.getLinkCount();
}
@@ -145,6 +140,11 @@
listenerRegistry.removeListener(listener);
}
+ @Override
+ protected LinkProviderService createProviderService(LinkProvider provider) {
+ return new InternalLinkProviderService(provider);
+ }
+
// Personalized link provider service issued to the supplied provider.
private class InternalLinkProviderService extends AbstractProviderService<LinkProvider>
implements LinkProviderService {
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkStore.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkStore.java
similarity index 100%
rename from net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkStore.java
rename to core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkStore.java
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java
similarity index 98%
rename from net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java
rename to core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java
index 1ea0638..1e95598 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java
@@ -53,6 +53,8 @@
private final AbstractListenerRegistry<TopologyEvent, TopologyListener>
listenerRegistry = new AbstractListenerRegistry<>();
+ private final SimpleTopologyStore store = new SimpleTopologyStore();
+
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
private EventDeliveryService eventDispatcher;
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyStore.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyStore.java
new file mode 100644
index 0000000..1a54cad
--- /dev/null
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyStore.java
@@ -0,0 +1,8 @@
+package org.onlab.onos.net.trivial.impl;
+
+/**
+ * Manages inventory of topology snapshots using trivial in-memory
+ * implementation.
+ */
+public class SimpleTopologyStore {
+}
diff --git a/net/core/trivial/src/main/javadoc/org/onlab/onos/event/impl/package.html b/core/trivial/src/main/javadoc/org/onlab/onos/event/impl/package.html
similarity index 100%
rename from net/core/trivial/src/main/javadoc/org/onlab/onos/event/impl/package.html
rename to core/trivial/src/main/javadoc/org/onlab/onos/event/impl/package.html
diff --git a/net/core/trivial/src/main/javadoc/org/onlab/onos/impl/package.html b/core/trivial/src/main/javadoc/org/onlab/onos/impl/package.html
similarity index 100%
rename from net/core/trivial/src/main/javadoc/org/onlab/onos/impl/package.html
rename to core/trivial/src/main/javadoc/org/onlab/onos/impl/package.html
diff --git a/net/core/trivial/src/main/javadoc/org/onlab/onos/net/trivial/impl/package.html b/core/trivial/src/main/javadoc/org/onlab/onos/net/trivial/impl/package.html
similarity index 100%
rename from net/core/trivial/src/main/javadoc/org/onlab/onos/net/trivial/impl/package.html
rename to core/trivial/src/main/javadoc/org/onlab/onos/net/trivial/impl/package.html
diff --git a/net/core/trivial/src/test/java/org/onlab/onos/impl/GreetManagerTest.java b/core/trivial/src/test/java/org/onlab/onos/impl/GreetManagerTest.java
similarity index 100%
rename from net/core/trivial/src/test/java/org/onlab/onos/impl/GreetManagerTest.java
rename to core/trivial/src/test/java/org/onlab/onos/impl/GreetManagerTest.java
diff --git a/net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java b/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java
similarity index 100%
rename from net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java
rename to core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java
diff --git a/net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleLinkManagerTest.java b/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleLinkManagerTest.java
similarity index 100%
rename from net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleLinkManagerTest.java
rename to core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleLinkManagerTest.java
diff --git a/net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/TestEventDispatcher.java b/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/TestEventDispatcher.java
similarity index 100%
rename from net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/TestEventDispatcher.java
rename to core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/TestEventDispatcher.java
diff --git a/net/api/src/main/java/org/onlab/onos/net/Host.java b/net/api/src/main/java/org/onlab/onos/net/Host.java
deleted file mode 100644
index 17eaf22..0000000
--- a/net/api/src/main/java/org/onlab/onos/net/Host.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.onlab.onos.net;
-
-/**
- * Abstraction of an end-station host on the network, essentially a NIC.
- */
-public interface Host extends Element {
-
- // MAC, IP(s), optional VLAN ID
-
-
- /**
- * Returns the most recent host location where the host attaches to the
- * network edge.
- *
- * @return host location
- */
- HostLocation location();
-
- // list of recent locations?
-
-}
diff --git a/net/api/src/main/java/org/onlab/onos/net/HostId.java b/net/api/src/main/java/org/onlab/onos/net/HostId.java
deleted file mode 100644
index 3e274b3..0000000
--- a/net/api/src/main/java/org/onlab/onos/net/HostId.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.onlab.onos.net;
-
-import java.net.URI;
-
-/**
- * Immutable representation of a host identity.
- */
-public final class HostId extends ElementId {
-
- // Public construction is prohibited
- private HostId(URI uri) {
- super(uri);
- }
-
- /**
- * Creates a device id using the supplied URI.
- *
- * @param uri device URI
- */
- public static HostId hostId(URI uri) {
- return new HostId(uri);
- }
-
- /**
- * Creates a device id using the supplied URI string.
- *
- * @param string device URI string
- */
- public static HostId hostId(String string) {
- return hostId(URI.create(string));
- }
-
-}
diff --git a/net/core/trivial/pom.xml b/net/core/trivial/pom.xml
deleted file mode 100644
index d4998ba..0000000
--- a/net/core/trivial/pom.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.onlab.onos</groupId>
- <artifactId>onos-core</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>onos-core-trivial</artifactId>
- <packaging>bundle</packaging>
-
- <description>ONOS network control trivial implementations of core subsystems</description>
-
-</project>
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java
deleted file mode 100644
index 17849b1..0000000
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.onlab.onos.net.trivial.impl;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
-import org.onlab.onos.event.AbstractListenerRegistry;
-import org.onlab.onos.event.EventDeliveryService;
-import org.onlab.onos.net.host.HostDescription;
-import org.onlab.onos.net.host.HostEvent;
-import org.onlab.onos.net.host.HostListener;
-import org.onlab.onos.net.host.HostProvider;
-import org.onlab.onos.net.host.HostProviderRegistry;
-import org.onlab.onos.net.host.HostProviderService;
-import org.onlab.onos.net.provider.AbstractProviderRegistry;
-import org.onlab.onos.net.provider.AbstractProviderService;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides basic implementation of the host SB & NB APIs.
- */
-@Component(immediate = true)
-@Service
-public class SimpleHostManager
- extends AbstractProviderRegistry<HostProvider, HostProviderService>
- implements HostProviderRegistry {
-
- private final Logger log = getLogger(getClass());
-
- private final AbstractListenerRegistry<HostEvent, HostListener>
- listenerRegistry = new AbstractListenerRegistry<>();
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- private EventDeliveryService eventDispatcher;
-
-
- @Activate
- public void activate() {
- eventDispatcher.addSink(HostEvent.class, listenerRegistry);
- log.info("Started");
- }
-
- @Deactivate
- public void deactivate() {
- eventDispatcher.removeSink(HostEvent.class);
- log.info("Stopped");
- }
-
- @Override
- protected HostProviderService createProviderService(HostProvider provider) {
- return new InternalHostProviderService(provider);
- }
-
- // Personalized host provider service issued to the supplied provider.
- private class InternalHostProviderService extends AbstractProviderService<HostProvider>
- implements HostProviderService {
-
- InternalHostProviderService(HostProvider provider) {
- super(provider);
- }
-
- @Override
- public void hostDetected(HostDescription hostDescription) {
- log.info("Host {} detected", hostDescription);
- }
-
- @Override
- public void hostVanished(HostDescription hostDescription) {
- log.info("Host {} vanished", hostDescription);
- }
- }
-}
diff --git a/pom.xml b/pom.xml
index 9fc49c8..3ec7f1c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
<modules>
<module>tools/build/conf</module>
<module>utils</module>
- <module>net</module>
+ <module>core</module>
<module>web</module>
<module>cli</module>
<module>providers</module>
diff --git a/src/main/javadoc/doc-files/onos-tiers.png b/src/main/javadoc/doc-files/onos-tiers.png
new file mode 100644
index 0000000..bbacfc8
--- /dev/null
+++ b/src/main/javadoc/doc-files/onos-tiers.png
Binary files differ