Adding a grid topology simulator to the null provider.
Change-Id: Ie655840febc11d3986f1c8ec5c8ef2374014794c
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/NullProviders.java b/providers/null/src/main/java/org/onosproject/provider/nil/NullProviders.java
index 68c536b..fb1823d 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/NullProviders.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/NullProviders.java
@@ -54,6 +54,7 @@
import org.slf4j.Logger;
import java.util.Dictionary;
+import java.util.Objects;
import java.util.Properties;
import static com.google.common.base.Strings.isNullOrEmpty;
@@ -116,7 +117,6 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected PacketProviderRegistry packetProviderRegistry;
-
private final NullDeviceProvider deviceProvider = new NullDeviceProvider();
private final NullLinkProvider linkProvider = new NullLinkProvider();
private final NullHostProvider hostProvider = new NullHostProvider();
@@ -138,7 +138,7 @@
private static final String DEFAULT_TOPO_SHAPE = "configured";
@Property(name = "topoShape", value = DEFAULT_TOPO_SHAPE,
- label = "Topology shape: configured, linear, reroute, tree, spineleaf, mesh")
+ label = "Topology shape: configured, linear, reroute, tree, spineleaf, mesh, grid")
private String topoShape = DEFAULT_TOPO_SHAPE;
private static final int DEFAULT_DEVICE_COUNT = 10;
@@ -238,7 +238,7 @@
}
// Any change in the following parameters implies hard restart
- if (newEnabled != enabled || !newTopoShape.equals(topoShape) ||
+ if (newEnabled != enabled || !Objects.equals(newTopoShape, topoShape) ||
newDeviceCount != deviceCount || newHostCount != hostCount) {
enabled = newEnabled;
topoShape = newTopoShape;
@@ -257,7 +257,7 @@
}
// Any change in mastership implies just reassignments.
- if (!newMastership.equals(mastership)) {
+ if (!Objects.equals(newMastership, mastership)) {
mastership = newMastership;
reassignMastership();
}
@@ -290,6 +290,29 @@
}
}
+ /**
+ * Fails the specified device.
+ *
+ * @param deviceId device identifier
+ */
+ public void failDevice(DeviceId deviceId) {
+ if (enabled) {
+ topologyMutationDriver.failDevice(deviceId);
+ }
+ }
+
+ /**
+ * Repairs the specified device.
+ *
+ * @param deviceId device identifier
+ */
+ public void repairDevice(DeviceId deviceId) {
+ if (enabled) {
+ topologyMutationDriver.repairDevice(deviceId);
+ }
+ }
+
+
// Resets simulation based on the current configuration parameters.
private void restartSimulation() {
tearDown();
@@ -310,7 +333,8 @@
packetProvider.start(packetRate, hostService, deviceService,
packetProviderService);
topologyMutationDriver.start(mutationRate, linkService, deviceService,
- linkProviderService);
+ linkProviderService, deviceProviderService,
+ simulator);
}
// Selects the simulator based on the specified name.
@@ -329,6 +353,8 @@
return new SpineLeafTopologySimulator();
} else if (topoShape.matches("mesh([,].*|$)")) {
return new MeshTopologySimulator();
+ } else if (topoShape.matches("grid([,].*|$)")) {
+ return new GridTopologySimulator();
} else {
return new ConfiguredTopologySimulator();
}
@@ -398,7 +424,8 @@
@Override
public boolean isReachable(DeviceId deviceId) {
return topoShape.equals("configured") ||
- (simulator != null && simulator.contains(deviceId));
+ (simulator != null && simulator.contains(deviceId) &&
+ topologyMutationDriver.isReachable(deviceId));
}
@Override