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;