Making number of components configurable using the central component configuration subsystem.
Change-Id: Ia32c51480913689339a766d9849e792d62f7d133
diff --git a/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java b/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
index 2d48d20..f6ae2c5 100644
--- a/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
+++ b/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
@@ -37,6 +37,7 @@
import org.onlab.packet.VlanId;
import org.onlab.packet.ndp.NeighborAdvertisement;
import org.onlab.packet.ndp.NeighborSolicitation;
+import org.onosproject.cfg.ComponentConfigService;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.net.ConnectPoint;
@@ -93,6 +94,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected DeviceService deviceService;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected ComponentConfigService cfgService;
+
private HostProviderService providerService;
private final InternalHostProvider processor = new InternalHostProvider();
@@ -118,8 +122,8 @@
@Activate
public void activate(ComponentContext context) {
- appId =
- coreService.registerApplication("org.onosproject.provider.host");
+ cfgService.registerProperties(getClass());
+ appId = coreService.registerApplication("org.onosproject.provider.host");
readComponentConfiguration(context);
providerService = providerRegistry.register(this);
@@ -155,6 +159,7 @@
@Deactivate
public void deactivate() {
+ cfgService.unregisterProperties(getClass(), false);
providerRegistry.unregister(this);
packetService.removeProcessor(processor);
deviceService.removeListener(deviceListener);
diff --git a/providers/host/src/main/resources/org/onosproject/provider/host/impl/HostLocationProvider.cfgdef b/providers/host/src/main/resources/org/onosproject/provider/host/impl/HostLocationProvider.cfgdef
new file mode 100644
index 0000000..0412408
--- /dev/null
+++ b/providers/host/src/main/resources/org/onosproject/provider/host/impl/HostLocationProvider.cfgdef
@@ -0,0 +1,3 @@
+# Temporary: to be auto-generated in near future
+hostRemovalEnabled|BOOLEAN|true|Enable host removal on port/device down events
+ipv6NeighborDiscovery|BOOLEAN|false|Enable using IPv6 Neighbor Discovery by the Host Location Provider; default is false
diff --git a/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java b/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
index 86c9c4c..2a5f03c 100644
--- a/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
+++ b/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
@@ -46,6 +46,7 @@
import org.onlab.packet.IpAddress;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
+import org.onosproject.cfg.ComponentConfigAdapter;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.core.DefaultApplicationId;
@@ -145,6 +146,7 @@
.andReturn(appId).anyTimes();
replay(coreService);
+ provider.cfgService = new ComponentConfigAdapter();
provider.coreService = coreService;
provider.providerRegistry = hostRegistry;
diff --git a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
index c1b8aa1..c3c9ceb 100644
--- a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
+++ b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
@@ -26,6 +26,7 @@
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onlab.packet.Ethernet;
+import org.onosproject.cfg.ComponentConfigService;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.mastership.MastershipEvent;
@@ -61,10 +62,10 @@
import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.onlab.util.Tools.get;
import static org.onlab.util.Tools.groupedThreads;
import static org.slf4j.LoggerFactory.getLogger;
-
/**
* Provider which uses an OpenFlow controller to detect network
* infrastructure links.
@@ -95,22 +96,27 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected MastershipService masterService;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected ComponentConfigService cfgService;
+
private LinkProviderService providerService;
private ScheduledExecutorService executor;
- @Property(name = PROP_USE_BDDP, label = "use BDDP for link discovery")
+ @Property(name = PROP_USE_BDDP, boolValue = true,
+ label = "Use BDDP for link discovery")
private boolean useBDDP = true;
- @Property(name = PROP_DISABLE_LD, label = "permanently disable link discovery")
- private boolean disableLD = false;
+ @Property(name = PROP_DISABLE_LD, boolValue = false,
+ label = "Permanently disable link discovery")
+ private boolean disableLinkDiscovery = false;
private static final long INIT_DELAY = 5;
private static final long DELAY = 5;
- @Property(name = PROP_LLDP_SUPPRESSION,
+ @Property(name = PROP_LLDP_SUPPRESSION, value = DEFAULT_LLDP_SUPPRESSION_CONFIG,
label = "Path to LLDP suppression configuration file")
- private String filePath = DEFAULT_LLDP_SUPPRESSION_CONFIG;
+ private String lldpSuppression = DEFAULT_LLDP_SUPPRESSION_CONFIG;
private final InternalLinkProvider listener = new InternalLinkProvider();
@@ -131,12 +137,12 @@
@Activate
public void activate(ComponentContext context) {
- appId =
- coreService.registerApplication("org.onosproject.provider.lldp");
+ cfgService.registerProperties(getClass());
+ appId = coreService.registerApplication("org.onosproject.provider.lldp");
// to load configuration at startup
modified(context);
- if (disableLD) {
+ if (disableLinkDiscovery) {
log.info("Link Discovery has been permanently disabled by configuration");
return;
}
@@ -153,7 +159,7 @@
continue;
}
ld = new LinkDiscovery(device, packetService, masterService,
- providerService, useBDDP);
+ providerService, useBDDP);
discoverers.put(device.id(), ld);
for (Port p : deviceService.getPorts(device.id())) {
if (rules.isSuppressed(p)) {
@@ -177,7 +183,8 @@
@Deactivate
public void deactivate() {
- if (disableLD) {
+ cfgService.unregisterProperties(getClass(), false);
+ if (disableLinkDiscovery) {
return;
}
executor.shutdownNow();
@@ -202,29 +209,29 @@
@SuppressWarnings("rawtypes")
Dictionary properties = context.getProperties();
- String s = (String) properties.get(PROP_DISABLE_LD);
+ String s = get(properties, PROP_DISABLE_LD);
if (!Strings.isNullOrEmpty(s)) {
- disableLD = Boolean.valueOf(s);
+ disableLinkDiscovery = Boolean.valueOf(s);
}
- s = (String) properties.get(PROP_USE_BDDP);
+ s = get(properties, PROP_USE_BDDP);
if (!Strings.isNullOrEmpty(s)) {
useBDDP = Boolean.valueOf(s);
}
- s = (String) properties.get(PROP_LLDP_SUPPRESSION);
+ s = get(properties, PROP_LLDP_SUPPRESSION);
if (!Strings.isNullOrEmpty(s)) {
- filePath = s;
+ lldpSuppression = s;
}
loadSuppressionRules();
}
private void loadSuppressionRules() {
- SuppressionRulesStore store = new SuppressionRulesStore(filePath);
+ SuppressionRulesStore store = new SuppressionRulesStore(lldpSuppression);
try {
- log.info("Reading suppression rules from {}", filePath);
+ log.info("Reading suppression rules from {}", lldpSuppression);
rules = store.read();
} catch (IOException e) {
- log.info("Failed to load {}, using built-in rules", filePath);
+ log.info("Failed to load {}, using built-in rules", lldpSuppression);
// default rule to suppress ROADM to maintain compatibility
rules = new SuppressionRules(ImmutableSet.of(),
EnumSet.of(Device.Type.ROADM),
@@ -238,13 +245,13 @@
TrafficSelector.Builder lldpSelector = DefaultTrafficSelector.builder();
lldpSelector.matchEthType(Ethernet.TYPE_LLDP);
packetService.requestPackets(lldpSelector.build(),
- PacketPriority.CONTROL, appId);
+ PacketPriority.CONTROL, appId);
if (useBDDP) {
TrafficSelector.Builder bddpSelector = DefaultTrafficSelector.builder();
bddpSelector.matchEthType(Ethernet.TYPE_BSN);
packetService.requestPackets(bddpSelector.build(),
- PacketPriority.CONTROL, appId);
+ PacketPriority.CONTROL, appId);
}
}
@@ -271,10 +278,10 @@
if (!discoverers.containsKey(deviceId)) {
// ideally, should never reach here
log.debug("Device mastership changed ({}) {}",
- event.type(), deviceId);
+ event.type(), deviceId);
discoverers.put(deviceId, new LinkDiscovery(device,
- packetService, masterService, providerService,
- useBDDP));
+ packetService, masterService, providerService,
+ useBDDP));
}
}
}
@@ -307,7 +314,8 @@
log.debug("Device added ({}) {}", event.type(),
deviceId);
discoverers.put(deviceId, new LinkDiscovery(device,
- packetService, masterService, providerService, useBDDP));
+ packetService, masterService,
+ providerService, useBDDP));
} else {
if (ld.isStopped()) {
log.debug("Device restarted ({}) {}", event.type(),
@@ -412,7 +420,7 @@
synchronized (discoverers) {
if (!discoverers.containsKey(did)) {
ld = new LinkDiscovery(dev, packetService,
- masterService, providerService, useBDDP);
+ masterService, providerService, useBDDP);
discoverers.put(did, ld);
for (Port p : deviceService.getPorts(did)) {
if (rules.isSuppressed(p)) {
diff --git a/providers/lldp/src/main/resource/org/onosproject/provider/lldp/impl/LLDPLinkProvider.cfgdef b/providers/lldp/src/main/resource/org/onosproject/provider/lldp/impl/LLDPLinkProvider.cfgdef
new file mode 100644
index 0000000..588e4f3
--- /dev/null
+++ b/providers/lldp/src/main/resource/org/onosproject/provider/lldp/impl/LLDPLinkProvider.cfgdef
@@ -0,0 +1,4 @@
+# Temporary: to be auto-generated in near future
+useBDDP|BOOLEAN|true|Use BDDP for link discovery
+disableLinkDiscovery|BOOLEAN|false|Permanently disable link discovery
+lldpSuppression|STRING|../config/lldp_suppression.json|Path to LLDP suppression configuration file
diff --git a/providers/lldp/src/main/resources/org/onosproject/provider/lldp/impl/LLDPLinkProvider.cfgdef b/providers/lldp/src/main/resources/org/onosproject/provider/lldp/impl/LLDPLinkProvider.cfgdef
new file mode 100644
index 0000000..588e4f3
--- /dev/null
+++ b/providers/lldp/src/main/resources/org/onosproject/provider/lldp/impl/LLDPLinkProvider.cfgdef
@@ -0,0 +1,4 @@
+# Temporary: to be auto-generated in near future
+useBDDP|BOOLEAN|true|Use BDDP for link discovery
+disableLinkDiscovery|BOOLEAN|false|Permanently disable link discovery
+lldpSuppression|STRING|../config/lldp_suppression.json|Path to LLDP suppression configuration file
diff --git a/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java b/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java
index a601b23..d1d0f9c 100644
--- a/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java
+++ b/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java
@@ -37,6 +37,7 @@
import org.onlab.packet.ChassisId;
import org.onlab.packet.Ethernet;
import org.onlab.packet.ONOSLLDP;
+import org.onosproject.cfg.ComponentConfigAdapter;
import org.onosproject.cluster.NodeId;
import org.onosproject.cluster.RoleInfo;
import org.onosproject.core.ApplicationId;
@@ -103,12 +104,12 @@
@Before
public void setUp() {
-
coreService = createMock(CoreService.class);
expect(coreService.registerApplication(appId.name()))
.andReturn(appId).anyTimes();
replay(coreService);
+ provider.cfgService = new ComponentConfigAdapter();
provider.coreService = coreService;
provider.deviceService = deviceService;
diff --git a/providers/null/host/src/main/java/org/onosproject/provider/nil/host/impl/NullHostProvider.java b/providers/null/host/src/main/java/org/onosproject/provider/nil/host/impl/NullHostProvider.java
index 3cddb9a..d5ee60e 100644
--- a/providers/null/host/src/main/java/org/onosproject/provider/nil/host/impl/NullHostProvider.java
+++ b/providers/null/host/src/main/java/org/onosproject/provider/nil/host/impl/NullHostProvider.java
@@ -22,6 +22,7 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
+import org.onosproject.cfg.ComponentConfigService;
import org.onosproject.cluster.ClusterService;
import org.onosproject.mastership.MastershipService;
import org.onosproject.net.Device;
@@ -65,6 +66,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected HostProviderRegistry providerRegistry;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected ComponentConfigService cfgService;
+
private HostProviderService providerService;
//make sure the device has enough ports to accomodate all of them.
@@ -90,6 +94,7 @@
@Activate
public void activate() {
+ cfgService.registerProperties(getClass());
providerService = providerRegistry.register(this);
for (Device dev : deviceService.getDevices()) {
addHosts(dev);
@@ -101,6 +106,7 @@
@Deactivate
public void deactivate() {
+ cfgService.unregisterProperties(getClass(), false);
providerRegistry.unregister(this);
deviceService.removeListener(hostProvider);
providerService = null;
diff --git a/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java b/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
index 37cbfca..b819eb7 100644
--- a/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
+++ b/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
@@ -27,6 +27,7 @@
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onosproject.cfg.ComponentConfigService;
import org.onosproject.cluster.ClusterService;
import org.onosproject.cluster.NodeId;
import org.onosproject.mastership.MastershipService;
@@ -101,6 +102,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected LinkProviderRegistry providerRegistry;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected ComponentConfigService cfgService;
+
private LinkProviderService providerService;
private final InternalLinkProvider linkProvider = new InternalLinkProvider();
@@ -119,7 +123,7 @@
Executors.newScheduledThreadPool(THREADS, groupedThreads("onos/null", "link-driver-%d"));
// For flicker = true, duration between events in msec.
- @Property(name = "eventRate", value = "0", label = "Duration between Link Event")
+ @Property(name = "eventRate", intValue = 0, label = "Duration between Link Event")
private int eventRate = DEFAULT_RATE;
// topology configuration file
@@ -137,6 +141,7 @@
@Activate
public void activate(ComponentContext context) {
+ cfgService.registerProperties(getClass());
providerService = providerRegistry.register(this);
modified(context);
@@ -166,6 +171,7 @@
@Deactivate
public void deactivate(ComponentContext context) {
+ cfgService.unregisterProperties(getClass(), false);
linkDriver.shutdown();
try {
linkDriver.awaitTermination(1000, TimeUnit.MILLISECONDS);
diff --git a/providers/null/link/src/main/resource/org/onosproject/provider/nil/link/impl/NullLinkProvider.cfgdef b/providers/null/link/src/main/resource/org/onosproject/provider/nil/link/impl/NullLinkProvider.cfgdef
new file mode 100644
index 0000000..f1dda76
--- /dev/null
+++ b/providers/null/link/src/main/resource/org/onosproject/provider/nil/link/impl/NullLinkProvider.cfgdef
@@ -0,0 +1,3 @@
+# Temporary: to be auto-generated in near future
+ "eventRate"|INTEGER|0|Duration between Link Event
+ "cfgFile"|STRING|"/opt/onos/apache-karaf-3.0.2/etc/linkGraph.cfg"|Topology file location
diff --git a/providers/null/packet/src/main/java/org/onosproject/provider/nil/packet/impl/NullPacketProvider.java b/providers/null/packet/src/main/java/org/onosproject/provider/nil/packet/impl/NullPacketProvider.java
index 82f6ace..15bd671 100644
--- a/providers/null/packet/src/main/java/org/onosproject/provider/nil/packet/impl/NullPacketProvider.java
+++ b/providers/null/packet/src/main/java/org/onosproject/provider/nil/packet/impl/NullPacketProvider.java
@@ -24,6 +24,7 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onlab.packet.Ethernet;
import org.onlab.packet.ICMP;
+import org.onosproject.cfg.ComponentConfigService;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.Device;
import org.onosproject.net.PortNumber;
@@ -77,6 +78,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected DeviceService deviceService;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected ComponentConfigService cfgService;
+
// Rate to generate PacketEvents, per second
@Property(name = "pktRate", intValue = DEFAULT_RATE,
label = "Rate of PacketEvent generation")
@@ -91,6 +95,7 @@
@Activate
public void activate(ComponentContext context) {
+ cfgService.registerProperties(getClass());
providerService = providerRegistry.register(this);
if (!modified(context)) {
packetDriver.submit(new PacketDriver());
@@ -100,6 +105,7 @@
@Deactivate
public void deactivate(ComponentContext context) {
+ cfgService.unregisterProperties(getClass(), false);
try {
packetDriver.awaitTermination(1000, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
diff --git a/providers/null/packet/src/main/resource/org/onosproject/provider/nil/packet/impl/NullPacketProvider.cfgdef b/providers/null/packet/src/main/resource/org/onosproject/provider/nil/packet/impl/NullPacketProvider.cfgdef
new file mode 100644
index 0000000..b71929c
--- /dev/null
+++ b/providers/null/packet/src/main/resource/org/onosproject/provider/nil/packet/impl/NullPacketProvider.cfgdef
@@ -0,0 +1,2 @@
+# Temporary: to be auto-generated in near future
+ "pktRate"|INTEGER|5|Rate of PacketEvent generation