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