Making number of components configurable using the central component configuration subsystem.

Change-Id: Ia32c51480913689339a766d9849e792d62f7d133
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