ONOS-6020 RolledBack and deprecated a method in NetconfDeviceInfo to not break backwards compatibility

Change-Id: Ie029f6b1d3688d428130b76ed2e06c760d9a390a
This commit is contained in:
Andrea Campanella 2017-02-15 16:04:09 -08:00 committed by Yuta HIGUCHI
parent c201ae4c64
commit e7006dca2a
2 changed files with 34 additions and 3 deletions

View File

@ -22,6 +22,7 @@ import org.onosproject.net.DeviceId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Objects;
@ -39,6 +40,8 @@ public class NetconfDeviceInfo {
private IpAddress ipAddress;
private int port;
private char[] key;
//File keyFile @deprecated 1.9.0
private File keyFile;
private DeviceId deviceId;
@ -68,7 +71,12 @@ public class NetconfDeviceInfo {
* @param password the password for the device
* @param ipAddress the ip address
* @param port the tcp port
* @param keyString the string containing the key.
* @param keyString the string containing a DSA or RSA private key
* of the user in OpenSSH key format
* <br>
* (Pre 1.9.0 behaviour: {@code keyString} can be file path
* to a file containing DSA or RSA private key of the user
* in OpenSSH key format)
*/
public NetconfDeviceInfo(String name, String password, IpAddress ipAddress,
int port, String keyString) {
@ -80,6 +88,7 @@ public class NetconfDeviceInfo {
this.ipAddress = ipAddress;
this.port = port;
this.key = keyString.toCharArray();
this.keyFile = new File(keyString);
}
/**
@ -121,18 +130,34 @@ public class NetconfDeviceInfo {
/**
* Exposes the key of the controller.
*
* @return int port address
* @return {@code char[]} containing a DSA or RSA private key of the user
* in OpenSSH key format
* or null if device is not configured to use public key authentication
*/
public char[] getKey() {
return key;
}
/**
* Exposes the keyFile of the controller.
*
* @return File object pointing to a file containing a DSA or RSA
* private key of the user in OpenSSH key format,
* or null if device is not configured to use public key authentication
* @deprecated 1.9.0
*/
@Deprecated
public File getKeyFile() {
return keyFile;
}
/**
* Return the info about the device in a string.
* String format: "netconf:name@ip:port"
*
* @return String device info
*/
@Override
public String toString() {
return "netconf:" + name + "@" + ipAddress + ":" + port;
}

View File

@ -118,7 +118,13 @@ public class NetconfSessionImpl implements NetconfSession {
}
boolean isAuthenticated;
try {
if (deviceInfo.getKey() != null) {
if (deviceInfo.getKeyFile() != null && deviceInfo.getKeyFile().canRead()) {
log.debug("Authenticating with key file to device {} with username {}",
deviceInfo.getDeviceId(), deviceInfo.name());
isAuthenticated = netconfConnection.authenticateWithPublicKey(
deviceInfo.name(), deviceInfo.getKeyFile(),
deviceInfo.password().equals("") ? null : deviceInfo.password());
} else if (deviceInfo.getKey() != null) {
log.debug("Authenticating with key to device {} with username {}",
deviceInfo.getDeviceId(), deviceInfo.name());
isAuthenticated = netconfConnection.authenticateWithPublicKey(