Adding DeviceAdminService facade and tests for SimpleDeviceManager.
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceAdminService.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceAdminService.java
new file mode 100644
index 0000000..8aec28a
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/device/DeviceAdminService.java
@@ -0,0 +1,28 @@
+package org.onlab.onos.net.device;
+
+import org.onlab.onos.net.DeviceId;
+import org.onlab.onos.net.MastershipRole;
+
+/**
+ * Service for administering the inventory of infrastructure devices.
+ */
+public interface DeviceAdminService {
+
+ /**
+ * Applies the current mastership role for the specified device.
+ *
+ * @param deviceId device identifier
+ * @param role requested role
+ */
+ void setRole(DeviceId deviceId, MastershipRole role);
+
+ /**
+ * Removes the device with the specified identifier.
+ *
+ * @param deviceId device identifier
+ */
+ void removeDevice(DeviceId deviceId);
+
+ // TODO: add ability to administratively suspend/resume device
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java
index 250e140..984f575 100644
--- a/net/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java
+++ b/net/api/src/main/java/org/onlab/onos/net/device/DeviceEvent.java
@@ -18,6 +18,12 @@
DEVICE_ADDED,
/**
+ * Signifies that some device attributes have changed; excludes
+ * availability changes.
+ */
+ DEVICE_UPDATED,
+
+ /**
* Signifies that a device has been removed.
*/
DEVICE_REMOVED,
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
index 02a486e..f8cdb6b 100644
--- a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
+++ b/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
@@ -18,6 +18,7 @@
public abstract class AbstractProviderRegistry<P extends Provider, S extends ProviderService<P>>
implements ProviderRegistry<P, S> {
+ private final Map<ProviderId, P> providers = new HashMap<>();
private final Map<ProviderId, S> services = new HashMap<>();
/**
@@ -34,6 +35,7 @@
checkState(!services.containsKey(provider.id()), "Provider %s already registered", provider.id());
S service = createProviderService(provider);
services.put(provider.id(), service);
+ providers.put(provider.id(), provider);
return service;
}
@@ -44,6 +46,7 @@
if (service != null && service instanceof AbstractProviderService) {
((AbstractProviderService) service).invalidate();
services.remove(provider.id());
+ providers.remove(provider.id());
}
}
@@ -52,4 +55,14 @@
return ImmutableSet.copyOf(services.keySet());
}
+ /**
+ * Returns the provider registered with the specified provider ID.
+ *
+ * @param providerId provider identifier
+ * @return provider
+ */
+ protected synchronized P getProvider(ProviderId providerId) {
+ return providers.get(providerId);
+ }
+
}