initial import
Change-Id: Ief25aef0066ea96bd2c329ccef974c072b3a5a73
diff --git a/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderService.java b/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderService.java
new file mode 100644
index 0000000..b0a33a6
--- /dev/null
+++ b/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderService.java
@@ -0,0 +1,44 @@
+package net.onrc.onos.api.device;
+
+import net.onrc.onos.api.ProviderService;
+
+import java.util.List;
+
+/**
+ * Service through which device providers can inject device information into
+ * the core.
+ */
+public interface DeviceProviderService extends ProviderService {
+
+ // TODO: define suspend and remove actions on the mezzanine administrative API
+
+ /**
+ * Signals the core that a device has connected or has been detected somehow.
+ *
+ * @param deviceDescription information about network device
+ */
+ void deviceConnected(DeviceDescription deviceDescription);
+
+ /**
+ * Signals the core that a device has disconnected or is no longer reachable.
+ *
+ * @param deviceDescription device to be removed
+ */
+ void deviceDisconnected(DeviceDescription deviceDescription);
+
+ /**
+ * Sends information about all ports of a device. It is up to the core to
+ * determine what has changed.
+ *
+ * @param ports list of device ports
+ */
+ void updatePorts(List<PortDescription> ports);
+
+ /**
+ * Used to notify the core about port status change of a single port.
+ *
+ * @param port description of the port that changed
+ */
+ void portStatusChanged(PortDescription port);
+
+}