connect netconf devices through ssh key
Change-Id: I1a0961ffffd33559f903ead0634dbb5492e9a154
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 c04e23e..3ddc4ff 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
@@ -318,10 +318,8 @@
UNKNOWN, UNKNOWN,
cid, false,
annotations);
- deviceKeyAdminService.addKey(
- DeviceKey.createDeviceKeyUsingUsernamePassword(
- DeviceKeyId.deviceKeyId(deviceId.toString()),
- null, addr.name(), addr.password()));
+ storeDeviceKey(addr, deviceId);
+
if (deviceService.getDevice(deviceId) == null) {
providerService.deviceConnected(deviceId, deviceDescription);
}
@@ -408,10 +406,7 @@
UNKNOWN, UNKNOWN,
cid, false,
annotations);
- deviceKeyAdminService.addKey(
- DeviceKey.createDeviceKeyUsingUsernamePassword(
- DeviceKeyId.deviceKeyId(deviceId.toString()),
- null, addr.name(), addr.password()));
+ storeDeviceKey(addr, deviceId);
checkAndUpdateDevice(deviceId, deviceDescription);
});
} catch (ConfigException e) {
@@ -420,6 +415,20 @@
}
}
+ private void storeDeviceKey(NetconfProviderConfig.NetconfDeviceAddress addr, DeviceId deviceId) {
+ if (addr.sshkey().equals("")) {
+ deviceKeyAdminService.addKey(
+ DeviceKey.createDeviceKeyUsingUsernamePassword(
+ DeviceKeyId.deviceKeyId(deviceId.toString()),
+ null, addr.name(), addr.password()));
+ } else {
+ deviceKeyAdminService.addKey(
+ DeviceKey.createDeviceKeyUsingSshKey(
+ DeviceKeyId.deviceKeyId(deviceId.toString()),
+ null, addr.name(), addr.password(), addr.sshkey()));
+ }
+ }
+
private void initiateConnection(DeviceId deviceId, MastershipRole newRole) {
try {
if (isReachable(deviceId)) {