summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java12
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ClustersResource.java35
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java2
3 files changed, 43 insertions, 6 deletions
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java
index 607a86e8..d480e503 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java
@@ -217,13 +217,14 @@ public class LoginDialog extends Dialog {
try {
CLUSTER_MODE mode = clusterDialog.getClusterMode();
String clusterName = clusterDialog.getClusterName();
- GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
+ GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
+ Status status = null;
switch(mode) {
case SELECT:
modelManager.initializeModel(usersClient.getSecurityToken(), clusterName);
break;
case CREATE:
- Status status = clustersClient.createCluster(clusterName);
+ status = clustersClient.createCluster(clusterName);
if(!status.isSuccess()) {
MessageDialog.openError(getShell(), "Cluster Creation Failed!", status.toString());
setReturnCode(RETURN_CODE_ERROR);
@@ -232,7 +233,12 @@ public class LoginDialog extends Dialog {
modelManager.initializeModelWithNewCluster(usersClient.getSecurityToken(), clusterName);
break;
case REGISTER:
- clustersClient.registerCluster(clusterName, clusterDialog.getServerName());
+ status = clustersClient.registerCluster(clusterName, clusterDialog.getServerName());
+ if(!status.isSuccess()) {
+ MessageDialog.openError(getShell(), "Cluster Registration Failed!", status.toString());
+ setReturnCode(RETURN_CODE_ERROR);
+ return;
+ }
modelManager.initializeModel(usersClient.getSecurityToken(), clusterName);
break;
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ClustersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ClustersResource.java
index 86af26fb..6955b723 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ClustersResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ClustersResource.java
@@ -37,16 +37,20 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import com.gluster.storage.management.core.exceptions.ConnectionException;
+import com.gluster.storage.management.core.constants.CoreConstants;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.response.GlusterServerResponse;
import com.gluster.storage.management.core.response.StringListResponse;
import com.gluster.storage.management.server.data.ClusterInfo;
import com.gluster.storage.management.server.data.PersistenceDao;
import com.gluster.storage.management.server.data.ServerInfo;
import com.gluster.storage.management.server.utils.GlusterUtil;
+import com.gluster.storage.management.server.utils.SshUtil;
import com.sun.jersey.api.core.InjectParam;
import com.sun.jersey.spi.resource.Singleton;
@@ -66,6 +70,9 @@ public class ClustersResource {
@InjectParam
private GlusterUtil glusterUtil;
+
+ @Autowired
+ private SshUtil sshUtil;
public void setClusterDao(PersistenceDao clusterDao) {
this.clusterDao = clusterDao;
@@ -106,7 +113,6 @@ public class ClustersResource {
}
- @SuppressWarnings("unchecked")
@PUT
@Produces(MediaType.TEXT_XML)
public Status registerCluster(@FormParam(FORM_PARAM_CLUSTER_NAME) String clusterName,
@@ -120,8 +126,13 @@ public class ClustersResource {
List<GlusterServer> glusterServers = glusterUtil.getGlusterServers(server);
List<ServerInfo> servers = new ArrayList<ServerInfo>();
for(GlusterServer glusterServer : glusterServers) {
- ServerInfo serverInfo = new ServerInfo(glusterServer.getName());
+ String serverName = glusterServer.getName();
+
+ checkAndSetupPublicKey(serverName);
+
+ ServerInfo serverInfo = new ServerInfo(serverName);
serverInfo.setCluster(cluster);
+ clusterDao.save(serverInfo);
servers.add(serverInfo);
}
cluster.setServers(servers);
@@ -134,6 +145,24 @@ public class ClustersResource {
}
}
+ private void checkAndSetupPublicKey(String serverName) {
+ if(sshUtil.isPublicKeyInstalled(serverName)) {
+ return;
+ }
+
+ if(!sshUtil.hasDefaultPassword(serverName)) {
+ // public key not installed, default password doesn't work. can't install public key
+ throw new GlusterRuntimeException(
+ "Gluster Management Gateway uses the default password to set up keys on the server."
+ + CoreConstants.NEWLINE + "However it seems that the password on server [" + serverName
+ + "] has been changed manually." + CoreConstants.NEWLINE
+ + "Please reset it back to the standard default password and try again.");
+ }
+
+ // install public key (this will also disable password based ssh login)
+ sshUtil.installPublicKey(serverName);
+ }
+
@SuppressWarnings("unchecked")
@Path("{" + PATH_PARAM_CLUSTER_NAME + "}")
@DELETE
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java
index c0dd4a96..82cec63b 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java
@@ -118,6 +118,8 @@ public class SshUtil {
} catch (IOException e) {
throw new GlusterRuntimeException("Couldn't add public key to server [" + serverName + "]", e);
}
+
+ // TODO: Disable password based ssh connections
}
private Connection getConnectionWithPassword(String serverName) {