Fixed an issue in basic host and basic link config validations.

Added validation for basic device config.

Made all concrete configurations final (as they should be).

Changed stc to use the new onos-netcfg as a method to re-locate and name devices and hosts.

Change-Id: I372e6c7e6c0fa6fa52301568af73342aaae6347b
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
index afde9a9..add8cf3 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
@@ -21,11 +21,17 @@
 /**
  * Basic configuration for network infrastructure devices.
  */
-public class BasicDeviceConfig extends BasicElementConfig<DeviceId> {
+public final class BasicDeviceConfig extends BasicElementConfig<DeviceId> {
 
-    public static final String TYPE = "type";
-    public static final String DRIVER = "driver";
-    public static final String MANAGEMENT_ADDRESS = "managementAddress";
+    private static final String TYPE = "type";
+    private static final String DRIVER = "driver";
+    private static final String MANAGEMENT_ADDRESS = "managementAddress";
+
+    @Override
+    public boolean isValid() {
+        return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, RACK_ADDRESS, OWNER,
+                             TYPE, DRIVER, MANAGEMENT_ADDRESS);
+    }
 
     /**
      * Returns the device type.
@@ -85,6 +91,6 @@
     }
 
     // TODO: device port meta-data to be configured via BasicPortsConfig
-    // TODO: device credentials/keys
+    // TODO: device credentials/keys; in a separate config
 
 }