Turned netconf providers into an app and made NetconfDeviceProvider register its configs with ComponentConfigService.
More cleanup needs to be done to avoid log messages with "+" and some other stylistic issues.

Change-Id: Ic1be1ce6d3340f5a6284ba5514d0052e01bdaaed
diff --git a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
index 9336adb..5fb6ead 100644
--- a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
+++ b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
@@ -39,6 +39,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.ChassisId;
+import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
@@ -78,9 +79,11 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected ClusterService clusterService;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected ComponentConfigService cfgService;
+
     private ExecutorService deviceBuilder = Executors
-            .newFixedThreadPool(1,
-                                groupedThreads("onos/netconf", "device-creator"));
+            .newFixedThreadPool(1, groupedThreads("onos/netconf", "device-creator"));
 
     // Delay between events in ms.
     private static final int EVENTINTERVAL = 5;
@@ -90,7 +93,7 @@
     @Property(name = "devConfigs", value = "", label = "Instance-specific configurations")
     private String devConfigs = null;
 
-    @Property(name = "devPasswords", value = "", label = "Instace-specific password")
+    @Property(name = "devPasswords", value = "", label = "Instance-specific password")
     private String devPasswords = null;
 
     /**
@@ -102,13 +105,15 @@
 
     @Activate
     public void activate(ComponentContext context) {
-        log.info("Netconf Device Provider Started");
+        cfgService.registerProperties(getClass());
         providerService = providerRegistry.register(this);
         modified(context);
+        log.info("Started");
     }
 
     @Deactivate
     public void deactivate(ComponentContext context) {
+        cfgService.unregisterProperties(getClass(), false);
         try {
             for (Entry<DeviceId, NetconfDevice> deviceEntry : netconfDeviceMap
                     .entrySet()) {
@@ -134,13 +139,9 @@
         }
         Dictionary<?, ?> properties = context.getProperties();
         String deviceCfgValue = get(properties, "devConfigs");
-        log.info("Getting Device configuration from cfg file: "
-                + deviceCfgValue);
+        log.info("Settings: devConfigs={}", deviceCfgValue);
         if (!isNullOrEmpty(deviceCfgValue)) {
             addOrRemoveDevicesConfig(deviceCfgValue);
-        } else {
-            log.info("Device Configuration value receiviced from the property 'devConfigs': "
-                    + deviceCfgValue + ", is not valid");
         }
     }
 
@@ -148,11 +149,9 @@
         for (String deviceEntry : deviceConfig.split(",")) {
             NetconfDevice device = processDeviceEntry(deviceEntry);
             if (device != null) {
-                log.info("Device Detail: " + "username: "
-                        + device.getUsername() + ", host: "
-                        + device.getSshHost() + ", port: "
-                        + device.getSshPort() + " device state: "
-                        + device.getDeviceState().name());
+                log.info("Device Detail: username: {}, host={}, port={}, state={}",
+                        device.getUsername(), device.getSshHost(),
+                         device.getSshPort(), device.getDeviceState().name());
                 if (device.isActive()) {
                     deviceBuilder.submit(new DeviceCreator(device, true));
                 } else {