[VOL-3922] Dynamic configuration of the required drivers property to ensure correct driver is assigned to the device at all times, both instance restart and application update
Change-Id: I1c54d2e260aecd1e33b15c06bcb1f6c857603355
diff --git a/impl/src/main/java/org/opencord/olt/impl/Olt.java b/impl/src/main/java/org/opencord/olt/impl/Olt.java
index f822ae3..76f3013 100644
--- a/impl/src/main/java/org/opencord/olt/impl/Olt.java
+++ b/impl/src/main/java/org/opencord/olt/impl/Olt.java
@@ -41,6 +41,7 @@
import org.onosproject.net.device.DeviceEvent;
import org.onosproject.net.device.DeviceListener;
import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.driver.DriverService;
import org.onosproject.net.flow.FlowRuleService;
import org.onosproject.net.flowobjective.FlowObjectiveService;
import org.onosproject.net.flowobjective.ForwardingObjective;
@@ -134,9 +135,14 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY)
protected DeviceService deviceService;
+
@Reference(cardinality = ReferenceCardinality.MANDATORY)
protected CoreService coreService;
+ //Dependency on driver service is to ensure correct startup order
+ @Reference(cardinality = ReferenceCardinality.MANDATORY)
+ protected DriverService driverService;
+
@Reference(cardinality = ReferenceCardinality.OPTIONAL,
bind = "bindSadisService",
unbind = "unbindSadisService",
@@ -1236,7 +1242,8 @@
log.info("checkAndCreateDeviceFlows: deviceInfo {}", deviceInfo);
if (deviceInfo != null) {
- // This is an OLT device as per Sadis, we create flows for UNI and NNI ports
+ log.debug("Driver for device {} is {}", dev.id(),
+ driverService.getDriver(dev.id()));
for (Port p : deviceService.getPorts(dev.id())) {
if (PortNumber.LOCAL.equals(p.number()) || !p.isEnabled()) {
continue;
diff --git a/impl/src/main/java/org/opencord/olt/impl/OltFlowService.java b/impl/src/main/java/org/opencord/olt/impl/OltFlowService.java
index caeab28..fed9546 100644
--- a/impl/src/main/java/org/opencord/olt/impl/OltFlowService.java
+++ b/impl/src/main/java/org/opencord/olt/impl/OltFlowService.java
@@ -246,7 +246,7 @@
log.info("modified. Values = enableDhcpOnNni: {}, enableDhcpV4: {}, " +
"enableDhcpV6:{}, enableIgmpOnNni:{}, " +
- "enableEapol{}, enablePppoe{}, defaultTechProfileId: {}",
+ "enableEapol:{}, enablePppoe:{}, defaultTechProfileId:{}",
enableDhcpOnNni, enableDhcpV4, enableDhcpV6,
enableIgmpOnNni, enableEapol, enablePppoe,
defaultTechProfileId);
@@ -681,8 +681,8 @@
@Override
public void onSuccess(Objective objective) {
log.info("Eapol filter {} for {} on {}/{} with meter {}.",
- objective.id(), fi.getDevId(), fi.getUniPort(),
- (install) ? INSTALLED : REMOVED, mId);
+ objective.id(), (install) ? INSTALLED : REMOVED,
+ fi.getDevId(), fi.getUniPort(), mId);
if (filterFuture != null) {
filterFuture.complete(null);
}
diff --git a/impl/src/main/java/org/opencord/olt/impl/OsgiPropertyConstants.java b/impl/src/main/java/org/opencord/olt/impl/OsgiPropertyConstants.java
index 3d76ef6..1db37e5 100644
--- a/impl/src/main/java/org/opencord/olt/impl/OsgiPropertyConstants.java
+++ b/impl/src/main/java/org/opencord/olt/impl/OsgiPropertyConstants.java
@@ -59,4 +59,7 @@
public static final String PROVISION_DELAY = "provisionDelay";
public static final int PROVISION_DELAY_DEFAULT = 100;
+
+ public static final String REQUIRED_DRIVERS_PROPERTY_DELAY = "requiredDriversPropertyDelay";
+ public static final int REQUIRED_DRIVERS_PROPERTY_DELAY_DEFAULT = 5;
}