diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-06-01 21:01:28 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-06-03 18:22:25 +0530 |
| commit | 6df025ce41a4a902210aa56d738522febd4f72f2 (patch) | |
| tree | 0628354d84a2e5b5633cea7a682ce2e25d6580ed /src | |
| parent | a67d52566139fb86d6f228bed3548da8c8a5703b (diff) | |
Design changes - introducing cluster-server mapping on gateway
Diffstat (limited to 'src')
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) { |
