Managers refactored to use ConfigOperators:
o Device, Host, and LinkManagers now use respecive ConfigOperator
implementations to combine Descriptions with Network Configs. This
refactors work done in 3a0cdd57e7b2c2bbdc44743b780b072cb0475f2d.
o Touchups on ConfigOperator impls
Change-Id: I735e7e6bfa0c47c8727433aab804cb2782eebfff
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java b/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
index 4af8000..c10b7e8 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
@@ -17,6 +17,7 @@
import static org.slf4j.LoggerFactory.getLogger;
+import org.onosproject.incubator.net.config.ConfigOperator;
import org.onosproject.incubator.net.config.basics.BasicDeviceConfig;
import org.onosproject.net.AnnotationKeys;
import org.onosproject.net.DefaultAnnotations;
@@ -30,7 +31,7 @@
* Implementations of merge policies for various sources of device configuration
* information. This includes applications, provides, and network configurations.
*/
-public final class BasicDeviceOperator {
+public final class BasicDeviceOperator implements ConfigOperator {
protected static final double DEFAULT_COORD = -1.0;
private static final Logger log = getLogger(BasicDeviceOperator.class);
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index b1390d1..01f85d8 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -37,14 +37,12 @@
import org.onosproject.mastership.MastershipService;
import org.onosproject.mastership.MastershipTerm;
import org.onosproject.mastership.MastershipTermService;
-import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.Device;
import org.onosproject.net.Device.Type;
import org.onosproject.net.DeviceId;
import org.onosproject.net.MastershipRole;
import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
-import org.onosproject.net.SparseAnnotations;
import org.onosproject.net.device.DefaultDeviceDescription;
import org.onosproject.net.device.DefaultPortDescription;
import org.onosproject.net.device.DeviceAdminService;
@@ -334,17 +332,8 @@
BasicDeviceConfig cfg = networkConfigService.getConfig(deviceId, BasicDeviceConfig.class);
checkState(cfg == null || cfg.isAllowed(), "Device " + deviceId + " is not allowed");
log.info("Device {} connected", deviceId);
- if (cfg != null) {
- SparseAnnotations finalSparse = processAnnotations(cfg, deviceDescription, deviceId);
- if (cfg.type() != Type.SWITCH) {
- deviceDescription = new DefaultDeviceDescription(deviceDescription,
- cfg.type(), finalSparse);
- } else {
- deviceDescription = new DefaultDeviceDescription(deviceDescription,
- deviceDescription.type(), finalSparse);
- }
- }
- return deviceDescription;
+
+ return BasicDeviceOperator.combine(cfg, deviceDescription);
}
@Override
@@ -500,37 +489,6 @@
deviceId, portStatistics);
post(event);
}
-
- // supplements or replaces deviceDescription annotations with
- // BasicDeviceConfig annotations
- private SparseAnnotations processAnnotations(BasicDeviceConfig cfg, DeviceDescription deviceDescription,
- DeviceId deviceId) {
- SparseAnnotations originalAnnotations = deviceDescription.annotations();
- DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
- if (cfg.driver() != deviceId.toString()) {
- newBuilder.set(cfg.DRIVER, cfg.driver());
- }
- if (cfg.type() != Type.SWITCH) {
- newBuilder.set(cfg.TYPE, cfg.type().toString());
- }
- if (cfg.name() != null) {
- newBuilder.set(cfg.NAME, cfg.name());
- }
- if (cfg.latitude() != -1) {
- newBuilder.set(cfg.LATITUDE, Double.toString(cfg.latitude()));
- }
- if (cfg.longitude() != -1) {
- newBuilder.set(cfg.LONGITUDE, Double.toString(cfg.longitude()));
- }
- if (cfg.rackAddress() != null) {
- newBuilder.set(cfg.RACK_ADDRESS, cfg.rackAddress());
- }
- if (cfg.owner() != null) {
- newBuilder.set(cfg.OWNER, cfg.owner());
- }
- DefaultAnnotations newAnnotations = newBuilder.build();
- return DefaultAnnotations.union(originalAnnotations, newAnnotations);
- }
}
// Applies the specified role to the device; ignores NONE