Selvasundaram has uploaded a new change for review.

Change subject: engine: Query to fetch the newly added Gluster servers
......................................................................

engine: Query to fetch the newly added Gluster servers

Change-Id: I0e010683c221abeabbb2e427a86bcf155b89b68f
Signed-off-by: Selvasundaram <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetAddedGlusterServersQuery.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetAddedGlusterServersQueryTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
4 files changed, 245 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/56/7456/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetAddedGlusterServersQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetAddedGlusterServersQuery.java
new file mode 100644
index 0000000..8b75c2b
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetAddedGlusterServersQuery.java
@@ -0,0 +1,93 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.ovirt.engine.core.bll.Backend;
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.bll.utils.ClusterUtils;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterServerInfo;
+import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
+import org.ovirt.engine.core.common.queries.gluster.GlusterParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase;
+import org.ovirt.engine.core.utils.hostinstall.VdsInstallerSSH;
+
+/**
+ * Query to get Added Gluster Servers
+ */
+public class GetAddedGlusterServersQuery<P extends GlusterParameters> extends 
QueriesCommandBase<P> {
+
+    public GetAddedGlusterServersQuery(P params) {
+        super(params);
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    protected void executeQueryCommand() {
+        VDSReturnValue returnValue = 
getBackendInstance().RunVdsCommand(VDSCommandType.GlusterServersList,
+                new VdsIdVDSCommandParametersBase(getClusterUtils()
+                        .getUpServer(getParameters().getClusterId())
+                        .getId()));
+
+        Map<String, String> glusterServers =
+                getAddedGlusterServers((List<GlusterServerInfo>) 
returnValue.getReturnValue());
+        getQueryReturnValue().setReturnValue(glusterServers);
+    }
+
+    private Map<String, String> getAddedGlusterServers(List<GlusterServerInfo> 
glusterServers) {
+        Map<String, String> serversAndFingerprint = new HashMap<String, 
String>();
+        List<VDS> serversList = 
getClusterUtils().getVdsDao().getAllForVdsGroup(getParameters().getClusterId());
+
+        for (GlusterServerInfo server : glusterServers) {
+            if (!serverExists(serversList, server)) {
+                serversAndFingerprint.put(server.getHostnameOrIp(), 
getServerFingerprint(server.getHostnameOrIp()));
+            }
+        }
+        return serversAndFingerprint;
+    }
+
+    private boolean serverExists(List<VDS> serversList, GlusterServerInfo 
glusterServer) {
+        for (VDS server : serversList) {
+            String serverHostnameOrIp =
+                    server.gethost_name().isEmpty() ? server.getManagmentIp() 
: server.gethost_name();
+            if 
(serverHostnameOrIp.equalsIgnoreCase(glusterServer.getHostnameOrIp())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private String getServerFingerprint(String hostnameOrIp) {
+        VdsInstallerSSH sshWrapper = getVdsInstallerSSHInstance();
+        String fingerPrint = "";
+        try {
+            fingerPrint = sshWrapper.getServerKeyFingerprint(hostnameOrIp);
+        } catch (Throwable e) {
+            log.errorFormat("Could not fetch fingerprint of host {0} with 
message: {1}",
+                    hostnameOrIp,
+                    ExceptionUtils.getMessage(e));
+        } finally {
+            sshWrapper.shutdown();
+        }
+        return fingerPrint;
+    }
+
+    public VdsInstallerSSH getVdsInstallerSSHInstance() {
+        return new VdsInstallerSSH();
+    }
+
+    public ClusterUtils getClusterUtils() {
+        return ClusterUtils.getInstance();
+    }
+
+    public VDSBrokerFrontend getBackendInstance() {
+        return Backend.getInstance()
+                .getResourceManager();
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetAddedGlusterServersQueryTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetAddedGlusterServersQueryTest.java
new file mode 100644
index 0000000..730eb51
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetAddedGlusterServersQueryTest.java
@@ -0,0 +1,149 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.ovirt.engine.core.bll.AbstractQueryTest;
+import org.ovirt.engine.core.bll.utils.ClusterUtils;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VDSStatus;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterServerInfo;
+import org.ovirt.engine.core.common.businessentities.gluster.PeerStatus;
+import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
+import org.ovirt.engine.core.common.queries.gluster.GlusterParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSParametersBase;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.VdsDAO;
+import org.ovirt.engine.core.utils.hostinstall.VdsInstallerSSH;
+
+public class GetAddedGlusterServersQueryTest extends 
AbstractQueryTest<GlusterParameters, 
GetAddedGlusterServersQuery<GlusterParameters>> {
+
+    List<VDS> serversList;
+    List<GlusterServerInfo> expectedServers;
+    GlusterParameters params;
+    private Guid CLUSTER_ID = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1");
+    private Guid server_id1 = new Guid("85c42b0d-c2b7-424a-ae72-5174c25da40b");
+    private Guid server_id2 = new Guid("6a697a38-cc82-4399-a6fb-0ec79c0ff1d5");
+    private String fingerPrint = 
"b5:ad:16:19:06:9f:b3:41:69:eb:1c:42:1d:12:b5:31";
+    VDSBrokerFrontend vdsBrokerFrontend;
+    VdsInstallerSSH vdsInstallerMock;
+    VdsDAO vdsDaoMock;
+
+    ClusterUtils clusterUtils;
+
+    private VDS getVds(VDSStatus status) {
+        VDS vds = new VDS();
+        vds.setId(new Guid());
+        vds.setvds_name("gfs1");
+        vds.setvds_group_id(CLUSTER_ID);
+        vds.setstatus(status);
+        return vds;
+    }
+
+    private void setupParams() {
+        params = new GlusterParameters(CLUSTER_ID);
+    }
+
+    private void setupServersList() {
+        serversList = new ArrayList<VDS>();
+        VDS server = new VDS();
+        server.setvds_group_id(CLUSTER_ID);
+        server.setvds_group_name("default");
+        server.setId(server_id1);
+        server.setvds_name("test_server1");
+        server.sethost_name("test_server1");
+        serversList.add(server);
+
+        server = new VDS();
+        server.setvds_group_id(CLUSTER_ID);
+        server.setvds_group_name("default");
+        server.setId(server_id2);
+        server.setvds_name("test_server2");
+        server.sethost_name("test_server2");
+        serversList.add(server);
+    }
+
+    private void setupExpectedGlusterServersInfo() {
+        expectedServers = new ArrayList<GlusterServerInfo>();
+        GlusterServerInfo server = new GlusterServerInfo();
+        server.setUuid(server_id1);
+        server.setHostnameOrIp("test_server1");
+        server.setStatus(PeerStatus.CONNECTED);
+        expectedServers.add(server);
+        server = new GlusterServerInfo();
+        server.setUuid(server_id2);
+        server.setHostnameOrIp("server2");
+        server.setStatus(PeerStatus.DISCONNECTED);
+        expectedServers.add(server);
+    }
+
+    private void setupMock() throws Exception {
+        vdsBrokerFrontend = mock(VDSBrokerFrontend.class);
+        clusterUtils = mock(ClusterUtils.class);
+        vdsDaoMock = mock(VdsDAO.class);
+        vdsInstallerMock = mock(VdsInstallerSSH.class);
+
+        doReturn(vdsBrokerFrontend).when(getQuery()).getBackendInstance();
+        doReturn(clusterUtils).when(getQuery()).getClusterUtils();
+        
doReturn(getVds(VDSStatus.Up)).when(clusterUtils).getUpServer(CLUSTER_ID);
+
+        VDSReturnValue returnValue = getVDSReturnValue();
+        
when(vdsBrokerFrontend.RunVdsCommand(eq(VDSCommandType.GlusterServersList),
+                any(VDSParametersBase.class))).thenReturn(returnValue);
+        
doReturn(params.getClusterId()).when(getQueryParameters()).getClusterId();
+
+        doReturn(vdsDaoMock).when(clusterUtils).getVdsDao();
+        doReturn(serversList).when(vdsDaoMock).getAllForVdsGroup(CLUSTER_ID);
+
+        
doReturn(vdsInstallerMock).when(getQuery()).getVdsInstallerSSHInstance();
+        
doReturn(fingerPrint).when(vdsInstallerMock).getServerKeyFingerprint("server2");
+    }
+
+    private VDSReturnValue getVDSReturnValue() {
+        VDSReturnValue returnValue = new VDSReturnValue();
+        returnValue.setSucceeded(true);
+        returnValue.setReturnValue(expectedServers);
+        return returnValue;
+    }
+
+    private Map<String, String> getAddedServers() {
+        Map<String, String> servers = new HashMap<String, String>();
+        servers.put("server2", fingerPrint);
+        return servers;
+    }
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        setupParams();
+        setupServersList();
+        setupExpectedGlusterServersInfo();
+        setupMock();
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testExecuteQueryCommnad() {
+        getQuery().executeQueryCommand();
+        Map<String, String> servers =
+                (Map<String, String>) 
getQuery().getQueryReturnValue().getReturnValue();
+
+        assertNotNull(servers);
+        assertEquals(getAddedServers(), servers);
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index 767e7bf..8ee7f2a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -275,6 +275,7 @@
     GetGlusterVolumeOptionsInfo,
     GetGlusterVolumeBricks,
     GetGlusterBrickById,
+    GetAddedGlusterServers,
 
     // Default type instead of having to null check
     Unknown(VdcQueryAuthType.User);
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 a770eff..7d0d18a6 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
@@ -135,7 +135,8 @@
     AddBricksToGlusterVolume("org.ovirt.engine.core.vdsbroker.gluster"),
     ReplaceGlusterVolumeBrick("org.ovirt.engine.core.vdsbroker.gluster"),
     GlusterHostRemove("org.ovirt.engine.core.vdsbroker.gluster"),
-    GlusterHostAdd("org.ovirt.engine.core.vdsbroker.gluster");
+    GlusterHostAdd("org.ovirt.engine.core.vdsbroker.gluster"),
+    GlusterServersList("org.ovirt.engine.core.vdsbroker.gluster"),
     ;
 
     String packageName;


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0e010683c221abeabbb2e427a86bcf155b89b68f
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