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"
}