Selvasundaram has uploaded a new change for review.

Change subject: engine: Passwordless ssh status query
......................................................................

engine: Passwordless ssh status query

  - Bll and VDS query command to fetch the passwordless ssh setup status
    between the node and remote machine.

Change-Id: I53a3874cdf4fbcb21f6e6c146db76ff90a62f836
Signed-off-by: Selvasundaram <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetPasswordlessSshSetupStatusQuery.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/PasswordlessSshQueryParameters.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/PasswordlessSshSetupParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/PasswordlessSshVDSParameters.java
M backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetPasswordlessSshSetupStatusVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
13 files changed, 316 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/47/8447/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetPasswordlessSshSetupStatusQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetPasswordlessSshSetupStatusQuery.java
new file mode 100644
index 0000000..b5bc93e
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetPasswordlessSshSetupStatusQuery.java
@@ -0,0 +1,46 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import org.ovirt.engine.core.bll.Backend;
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
+import 
org.ovirt.engine.core.common.queries.gluster.PasswordlessSshQueryParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import 
org.ovirt.engine.core.common.vdscommands.gluster.PasswordlessSshVDSParameters;
+
+/**
+ * Query to fetch the passwordless ssh setup status.
+ *
+ * This query invoked from Geo-replication start dialog. Geo-replication start 
pre-requisite is passwordless ssh setup
+ * between the gluster node and the remote server. Before starting the 
geo-replication, This query is used to get the
+ * passwordless ssh setup status.
+ *
+ */
+
+
+public class GetPasswordlessSshSetupStatusQuery<P extends 
PasswordlessSshQueryParameters> extends QueriesCommandBase<P> {
+    public GetPasswordlessSshSetupStatusQuery(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        try {
+            VDSReturnValue returnValue =
+                    
getBackendResourceManager().RunVdsCommand(VDSCommandType.GetPasswordlessSshSetupStatus,
+                            new 
PasswordlessSshVDSParameters(getParameters().getServerId(),
+                                    getParameters().getRemoteServerName(),
+                                    
getParameters().getRemoteServerFingerpirnt(),
+                                    getParameters().getUserName()));
+            getQueryReturnValue().setReturnValue(returnValue.getReturnValue());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public VDSBrokerFrontend getBackendResourceManager() {
+        return Backend.getInstance()
+                .getResourceManager();
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
index d5a3492..8c865a2 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
@@ -340,6 +340,9 @@
     GlusterHostRemoveFailed(4406),
     GlusterAddHostFailed(4404),
     GlusterPeerListFailed(4407),
+    SshConnectionFailed(4501),
+    SshFingerprintMatchFailed(4502),
+    SshAuthFailed(4503),
 
 
     UnicodeArgumentException(4900),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/PasswordlessSshQueryParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/PasswordlessSshQueryParameters.java
new file mode 100644
index 0000000..65c26b6
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/PasswordlessSshQueryParameters.java
@@ -0,0 +1,64 @@
+package org.ovirt.engine.core.common.queries.gluster;
+
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.compat.Guid;
+
+
+/**
+ * Parameter class for Get Server password less ssh setup status query
+ */
+public class PasswordlessSshQueryParameters extends VdcQueryParametersBase {
+
+    private static final long serialVersionUID = 8991468584473766350L;
+
+    private Guid serverId;
+
+    private String remoteServerName;
+
+    private String remoteServerFingerpirnt;
+
+    private String userName;
+
+    public PasswordlessSshQueryParameters(Guid serverId,
+            String remoteServerName,
+            String remoteServerFingerprint,
+            String userName) {
+        setServerId(serverId);
+        setRemoteServerName(remoteServerName);
+        setRemoteServerFingerpirnt(remoteServerFingerprint);
+        setUserName(userName);
+    }
+
+    public Guid getServerId() {
+        return serverId;
+    }
+
+    public void setServerId(Guid serverId) {
+        this.serverId = serverId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getRemoteServerName() {
+        return remoteServerName;
+    }
+
+    public void setRemoteServerName(String remoteServerName) {
+        this.remoteServerName = remoteServerName;
+    }
+
+    public String getRemoteServerFingerpirnt() {
+        return remoteServerFingerpirnt;
+    }
+
+    public void setRemoteServerFingerpirnt(String remoteServerFingerpirnt) {
+        this.remoteServerFingerpirnt = remoteServerFingerpirnt;
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/PasswordlessSshSetupParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/PasswordlessSshSetupParameters.java
new file mode 100644
index 0000000..829c5d6
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/PasswordlessSshSetupParameters.java
@@ -0,0 +1,77 @@
+package org.ovirt.engine.core.common.queries.gluster;
+
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.compat.Guid;
+
+
+/**
+ * Parameter class for Get Server password less ssh setup status query
+ */
+public class PasswordlessSshSetupParameters extends VdcQueryParametersBase {
+
+    private static final long serialVersionUID = 8991468584473766350L;
+
+    private Guid serverId;
+
+    private String remoteServerName;
+
+    private String remoteServerFingerpirnt;
+
+    private String userName;
+
+    private String password;
+
+    public PasswordlessSshSetupParameters(Guid serverId,
+            String remoteServerName,
+            String remoteServerFingerprint,
+            String userName,
+            String password) {
+        setServerId(serverId);
+        setRemoteServerName(remoteServerName);
+        setRemoteServerFingerpirnt(remoteServerFingerprint);
+        setUserName(userName);
+        setPassword(password);
+    }
+
+    public Guid getServerId() {
+        return serverId;
+    }
+
+    public void setServerId(Guid serverId) {
+        this.serverId = serverId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getRemoteServerName() {
+        return remoteServerName;
+    }
+
+    public void setRemoteServerName(String remoteServerName) {
+        this.remoteServerName = remoteServerName;
+    }
+
+    public String getRemoteServerFingerpirnt() {
+        return remoteServerFingerpirnt;
+    }
+
+    public void setRemoteServerFingerpirnt(String remoteServerFingerpirnt) {
+        this.remoteServerFingerpirnt = remoteServerFingerpirnt;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+}
+
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
index 8f3ec23..0982832 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
@@ -138,6 +138,7 @@
     GlusterHostRemove("org.ovirt.engine.core.vdsbroker.gluster"),
     GlusterHostAdd("org.ovirt.engine.core.vdsbroker.gluster"),
     GlusterServersList("org.ovirt.engine.core.vdsbroker.gluster"),
+    GetPasswordlessSshSetupStatus("org.ovirt.engine.core.vdsbroker.gluster"),
     ;
 
     String packageName;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/PasswordlessSshVDSParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/PasswordlessSshVDSParameters.java
new file mode 100644
index 0000000..7f1e77a
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/PasswordlessSshVDSParameters.java
@@ -0,0 +1,72 @@
+package org.ovirt.engine.core.common.vdscommands.gluster;
+
+import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase;
+import org.ovirt.engine.core.compat.Guid;
+
+/**
+ * Get Passwordless SSH Setup Status Query VDS parameter class with server id, 
remote Server host/ip, <br>
+ * finger print key, and user name as parameters. <br>
+ * This will be used directly by Get Passwordless SSH setup Status Query <br>
+ */
+public class PasswordlessSshVDSParameters extends 
VdsIdVDSCommandParametersBase {
+
+    private String remoteServer;
+
+    private String fingerprint;
+
+    private String userName;
+
+    private String password;
+
+    public PasswordlessSshVDSParameters(Guid serverId,
+            String remoteServer,
+            String fingerprint,
+            String userName) {
+        super(serverId);
+        setRemoteServer(remoteServer);
+        setFingerprint(fingerprint);
+        setUserName(userName);
+    }
+
+    public PasswordlessSshVDSParameters(Guid serverId,
+            String remoteServer,
+            String fingerprint,
+            String userName,
+            String password) {
+        this(serverId, remoteServer, fingerprint, userName);
+        setPassword(password);
+    }
+
+    public String getRemoteServer() {
+        return remoteServer;
+    }
+
+    public void setRemoteServer(String remoteServer) {
+        this.remoteServer = remoteServer;
+    }
+
+    public String getFingerprint() {
+        return fingerprint;
+    }
+
+    public void setFingerprint(String fingerprint) {
+        this.fingerprint = fingerprint;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+}
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
index fb309e7..d31023a 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
@@ -351,3 +351,6 @@
 NO_UP_SERVER_FOUND=No server found in Up status.
 ACTIVATE_NIC_FAILED=Failed to activate VM Network Interface.
 DEACTIVATE_NIC_FAILED=Failed to deactivate VM Network Interface.
+SshConnectionFailed=SSH Connection failed.
+SshFingerprintMatchFailed=Host Fingerprint key mismatch.
+SshAuthFailed=SSH RSA key Authentication Failed.
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetPasswordlessSshSetupStatusVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetPasswordlessSshSetupStatusVDSCommand.java
new file mode 100644
index 0000000..e67c29e
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetPasswordlessSshSetupStatusVDSCommand.java
@@ -0,0 +1,20 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import 
org.ovirt.engine.core.common.vdscommands.gluster.PasswordlessSshVDSParameters;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.VdsBrokerCommand;
+
+public class GetPasswordlessSshSetupStatusVDSCommand<P extends 
PasswordlessSshVDSParameters> extends VdsBrokerCommand<P> {
+
+    public GetPasswordlessSshSetupStatusVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void ExecuteVdsBrokerCommand() {
+        status =
+                
getBroker().validateSshConnection(getParameters().getRemoteServer(),
+                        getParameters().getFingerprint(),
+                        getParameters().getUserName());
+        ProceedProxyReturnValue();
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java
index 8c85ba1..c2b130c 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java
@@ -170,6 +170,9 @@
         case VOLUME_GROUP_BLOCK_SIZE_ERROR:
         case MIGRATION_DEST_INVALID_HOSTNAME:
         case DEVICE_BLOCK_SIZE_NOT_SUPPORTED:
+        case SshConnectionFailed:
+        case SshFingerprintMatchFailed:
+        case SshAuthFailed:
             if (this instanceof IrsBrokerCommand) {
                 outEx = new 
IrsOperationFailedNoFailoverException(getReturnStatus().mMessage);
             } else {
@@ -226,6 +229,7 @@
         return true;
     }
 
+    @Override
     protected String getAdditionalInformation() {
         return "";
     }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
index f04e32e..46b8318 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
@@ -236,4 +236,6 @@
 
     GlusterServersListReturnForXmlRpc glusterServersList();
 
+    StatusOnlyReturnForXmlRpc validateSshConnection(String 
remoteServerHostOrIp, String fingerprint, String username);
+
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
index 246da01..9460b7f 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
@@ -231,4 +231,6 @@
     @FutureCall(delegeteTo = "ping")
     public FutureTask<Map<String, Object>> futurePing();
 
+    public Map<String, Object> validateSshConnection(String 
serverHostnameOrIp, String fingerprint, String userName);
+
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
index a711e24..e3d3885 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
@@ -1149,4 +1149,17 @@
         }
     }
 
+    @Override
+    public StatusOnlyReturnForXmlRpc validateSshConnection(String 
serverHostnameOrIp,
+            String fingerprint,
+            String username) {
+        try {
+            Map<String, Object> xmlRpcReturnValue =
+                    vdsServer.validateSshConnection(serverHostnameOrIp, 
fingerprint, username);
+            StatusOnlyReturnForXmlRpc wrapper = new 
StatusOnlyReturnForXmlRpc(xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
 }
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
index 2c15ba2..5ac1f75 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
@@ -692,4 +692,13 @@
     String ACTIVATE_NIC_FAILED();
 
     String DEACTIVATE_NIC_FAILED();
+
+    @DefaultStringValue("SSH Connection failed.")
+    String SshConnectionFailed();
+
+    @DefaultStringValue("Host Fingerprint key mismatch.")
+    String SshFingerprintMatchFailed();
+
+    @DefaultStringValue("SSH RSA key Authentication Failed.")
+    String SshAuthFailed();
 }


--
To view, visit http://gerrit.ovirt.org/8447
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I53a3874cdf4fbcb21f6e6c146db76ff90a62f836
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Selvasundaram <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to