Refactoring ID creation for netconf and REST

Change-Id: I4165ad53e19c86d9d9b304d09e24dcfeec2b9ddf
diff --git a/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java b/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java
index 8331a12..46fa997 100644
--- a/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java
+++ b/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java
@@ -40,6 +40,7 @@
     private IpAddress ipAddress;
     private int port;
     private File keyFile;
+    private DeviceId deviceId;
 
 
     /**
@@ -143,13 +144,14 @@
      * @return DeviceId
      */
     public DeviceId getDeviceId() {
-
-        try {
-            return DeviceId.deviceId(new URI(this.toString()));
-        } catch (URISyntaxException e) {
-            log.debug("Unable to build deviceID for device {} ", this, e);
+        if (deviceId == null) {
+            try {
+                deviceId = DeviceId.deviceId(new URI("netconf", ipAddress.toString() + ":" + port, null));
+            } catch (URISyntaxException e) {
+                throw new IllegalArgumentException("Unable to build deviceID for device " + toString(), e);
+            }
         }
-        return null;
+        return deviceId;
     }
 
     @Override
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java
index 251a74b..0d83978 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java
@@ -81,8 +81,7 @@
     @Override
     public NetconfDevice getNetconfDevice(IpAddress ip, int port) {
         for (DeviceId info : netconfDeviceMap.keySet()) {
-            if (IpAddress.valueOf(info.uri().getHost()).equals(ip) &&
-                    info.uri().getPort() == port) {
+            if (info.uri().getSchemeSpecificPart().equals(ip.toString() + ":" + port)) {
                 return netconfDeviceMap.get(info);
             }
         }
@@ -102,7 +101,7 @@
 
     @Override
     public void removeDevice(NetconfDeviceInfo deviceInfo) {
-        if (netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) {
+        if (!netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) {
             log.warn("Device {} is not present", deviceInfo);
         } else {
             stopDevice(deviceInfo);
diff --git a/protocols/rest/api/src/main/java/org/onosproject/protocol/rest/DefaultRestSBDevice.java b/protocols/rest/api/src/main/java/org/onosproject/protocol/rest/DefaultRestSBDevice.java
index aa1b959..57da2e5 100644
--- a/protocols/rest/api/src/main/java/org/onosproject/protocol/rest/DefaultRestSBDevice.java
+++ b/protocols/rest/api/src/main/java/org/onosproject/protocol/rest/DefaultRestSBDevice.java
@@ -22,6 +22,8 @@
 import org.onlab.packet.IpAddress;
 import org.onosproject.net.DeviceId;
 
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.Objects;
 
 /**
@@ -74,7 +76,13 @@
 
     @Override
     public DeviceId deviceId() {
-        return DeviceId.deviceId(REST + COLON + ip + COLON + port);
+        try {
+            return DeviceId.deviceId(new URI(REST, ip + COLON + port, null));
+        } catch (URISyntaxException e) {
+            throw new IllegalArgumentException("Cannot create deviceID " +
+                                                       REST + COLON + ip +
+                                                       COLON + port, e);
+        }
     }
 
     @Override
diff --git a/tools/test/configs/netconf-cfg.json b/tools/test/configs/netconf-cfg.json
index 3397cd1..29bdb46 100644
--- a/tools/test/configs/netconf-cfg.json
+++ b/tools/test/configs/netconf-cfg.json
@@ -1,6 +1,6 @@
 {
   "devices":{
-    "netconf:mininet@10.1.9.24:830":{
+    "netconf:10.1.9.24:830":{
       "basic":{
         "driver":"ovs-netconf"
       }