Add TLS data to call-home yang-models
[netconf.git] / netconf / callhome-provider / src / main / java / org / opendaylight / netconf / callhome / mount / CallHomeAuthProviderImpl.java
index 17b5c6be57a6d13a757e3625dc828019873600c5..da5804af430a3560408df665a18ad14d22993774 100644 (file)
@@ -33,6 +33,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.Global;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.Global.MountPointNamingStrategy;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.allowed.devices.Device;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.allowed.devices.device.transport.Ssh;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.allowed.devices.device.transport.ssh.SshClientParams;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
@@ -77,7 +79,12 @@ public class CallHomeAuthProviderImpl implements CallHomeAuthorizationProvider,
 
         if (deviceSpecific != null) {
             sessionName = deviceSpecific.getUniqueId();
-            deviceCred = deviceSpecific.getCredentials();
+            if (deviceSpecific.getTransport() instanceof Ssh) {
+                final SshClientParams clientParams = ((Ssh) deviceSpecific.getTransport()).getSshClientParams();
+                deviceCred = clientParams.getCredentials();
+            } else {
+                deviceCred = deviceSpecific.getCredentials();
+            }
         } else {
             String syntheticId = fromRemoteAddress(remoteAddress);
             if (globalConfig.allowedUnknownKeys()) {
@@ -158,7 +165,7 @@ public class CallHomeAuthProviderImpl implements CallHomeAuthorizationProvider,
 
         private void deleteDevice(final Device dataBefore) {
             if (dataBefore != null) {
-                final String publicKey = dataBefore.getSshHostKey();
+                final String publicKey = getHostPublicKey(dataBefore);
                 if (publicKey != null) {
                     LOG.debug("Removing device {}", dataBefore.getUniqueId());
                     removeDevice(publicKey, dataBefore);
@@ -169,7 +176,7 @@ public class CallHomeAuthProviderImpl implements CallHomeAuthorizationProvider,
         }
 
         private void writeDevice(final Device dataAfter) {
-            final String publicKey = dataAfter.getSshHostKey();
+            final String publicKey = getHostPublicKey(dataAfter);
             if (publicKey != null) {
                 LOG.debug("Adding device {}", dataAfter.getUniqueId());
                 addDevice(publicKey, dataAfter);
@@ -178,6 +185,14 @@ public class CallHomeAuthProviderImpl implements CallHomeAuthorizationProvider,
             }
         }
 
+        private String getHostPublicKey(final Device device) {
+            if (device.getTransport() instanceof Ssh) {
+                return ((Ssh) device.getTransport()).getSshClientParams().getHostKey();
+            } else {
+                return device.getSshHostKey();
+            }
+        }
+
         abstract void addDevice(String publicKey, Device device);
 
         abstract void removeDevice(String publicKey, Device device);