Reworked the dependency on default drivers. Driver manager must NOT depend on these.
Instead, it is ok for the flow manager to have a dependency on the drivers and go fully active/dormant when the default drivers arrive/depart.
Removed inclusion of the onos-drivers bundle as part of the onos-openflow app as this caused an unwanted dependency.
Change-Id: I614290277d1621c8243c0c19e5d79273f2168016
diff --git a/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultDrivers.java b/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultDrivers.java
index bfa9c32..977a959 100644
--- a/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultDrivers.java
+++ b/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultDrivers.java
@@ -18,9 +18,11 @@
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.onosproject.net.driver.DefaultDriverProviderService;
-import org.onosproject.net.driver.Driver;
+import org.onosproject.net.driver.DriverAdminService;
import org.onosproject.net.driver.DriverProvider;
import org.onosproject.net.driver.XmlDriverLoader;
import org.slf4j.Logger;
@@ -28,7 +30,6 @@
import java.io.IOException;
import java.io.InputStream;
-import java.util.Set;
/**
* Bootstrap for built in drivers.
@@ -43,12 +44,16 @@
private DriverProvider provider;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected DriverAdminService driverAdminService;
+
@Activate
protected void activate() {
ClassLoader classLoader = getClass().getClassLoader();
try {
InputStream stream = classLoader.getResourceAsStream(DRIVERS_XML);
provider = new XmlDriverLoader(classLoader).loadDrivers(stream);
+ driverAdminService.registerProvider(provider);
} catch (IOException e) {
log.error("Unable to load default drivers", e);
}
@@ -57,11 +62,8 @@
@Deactivate
protected void deactivate() {
+ driverAdminService.unregisterProvider(provider);
log.info("Stopped");
}
- @Override
- public Set<Driver> getDrivers() {
- return provider.getDrivers();
- }
}