ONOS-3340 IOException throwing in case of no response from NETCONF device on given ip:port
Change-Id: I0fcc6be38e138703d14ef987bfeef9857945a0b5
diff --git a/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java b/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java
index 6411c01..ea07728 100644
--- a/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java
+++ b/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java
@@ -19,6 +19,7 @@
import org.onlab.packet.IpAddress;
import org.onosproject.net.DeviceId;
+import java.io.IOException;
import java.util.Map;
/**
@@ -48,7 +49,7 @@
* @param deviceInfo info about the device to add
* @return NetconfDevice Netconf device
*/
- NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo);
+ NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) throws IOException;
/**
* Removes a Netconf device.
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 a572a2b..cc53e37 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
@@ -91,9 +91,9 @@
}
@Override
- public NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) {
+ public NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) throws IOException {
if (netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) {
- log.warn("Device {} is already present");
+ log.info("Device {} is already present");
return netconfDeviceMap.get(deviceInfo.getDeviceId());
} else {
log.info("Creating NETCONF device {}", deviceInfo);
@@ -110,19 +110,13 @@
}
}
- private NetconfDevice createDevice(NetconfDeviceInfo deviceInfo) {
+ private NetconfDevice createDevice(NetconfDeviceInfo deviceInfo) throws IOException {
NetconfDevice netconfDevice = null;
- try {
- netconfDevice = new NetconfDeviceImpl(deviceInfo);
- for (NetconfDeviceListener l : netconfDeviceListeners) {
- l.deviceAdded(deviceInfo);
- }
- netconfDeviceMap.put(deviceInfo.getDeviceId(), netconfDevice);
- } catch (IOException e) {
- throw new IllegalStateException("Cannot create NETCONF device " +
- "with device Info: " +
- deviceInfo + " \n" + e);
+ netconfDevice = new NetconfDeviceImpl(deviceInfo);
+ for (NetconfDeviceListener l : netconfDeviceListeners) {
+ l.deviceAdded(deviceInfo);
}
+ netconfDeviceMap.put(deviceInfo.getDeviceId(), netconfDevice);
return netconfDevice;
}
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 d12c647..12b9351 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
@@ -49,6 +49,7 @@
import org.onosproject.netconf.NetconfDeviceListener;
import org.slf4j.Logger;
+import java.io.IOException;
import java.util.Map;
import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
@@ -192,11 +193,23 @@
if (cfg != null) {
log.info("cfg {}", cfg);
try {
- cfg.getDevicesAddresses().stream().forEach(addr -> controller
- .connectDevice(new NetconfDeviceInfo(addr.name(),
- addr.password(),
- addr.ip(),
- addr.port())));
+ cfg.getDevicesAddresses().stream()
+ .forEach(addr -> {
+ try {
+ controller.connectDevice(
+ new NetconfDeviceInfo(addr.name(),
+ addr.password(),
+ addr.ip(),
+ addr.port()));
+ } catch (IOException e) {
+ log.warn("Can't connect to NETCONF " +
+ "device on {}:{}",
+ addr.ip(),
+ addr.port());
+ }
+ }
+ );
+
} catch (ConfigException e) {
log.error("Cannot read config error " + e);
}