Shubhendu Tripathi has uploaded a new change for review.

Change subject: gluster: Mount the gluster meta volume on the nodes
......................................................................

gluster: Mount the gluster meta volume on the nodes

Modified the code to mount the gluster meta volume on the
nodes getting added/synced to the engine.

Change-Id: I74199eac5c1b7f0f8bec8ad78b2f417a8fc5960a
Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
M backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/MountGlusterMetaVolumeVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.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
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
14 files changed, 97 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/88/40688/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
index 3cab44d..c763794 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
@@ -407,7 +407,21 @@
                 
setNonOperational(NonOperationalReason.GLUSTER_HOST_UUID_NOT_FOUND, null);
             }
         }
-        return glusterHostUuidFound && initGlusterPeerProcess();
+        return glusterHostUuidFound && initGlusterPeerProcess() && 
mountGlusterMetaVolume();
+    }
+
+    private boolean mountGlusterMetaVolume() {
+        VDSReturnValue retVal =
+                runVdsCommand(VDSCommandType.MountGlusterMetaVolume, new 
VdsIdVDSCommandParametersBase(getVdsId()));
+
+        // If mounting failed, just log error and continue
+        if (!retVal.getSucceeded()) {
+            log.error("Failed to mount gluster meta volume on server {}: {}",
+                    getVdsName(),
+                    retVal.getVdsError().getMessage());
+        }
+
+        return true;
     }
 
     /**
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
index 1a69956..9471a48f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
@@ -963,6 +963,23 @@
                 }
             }
         }
+
+        for (GlusterVolumeEntity volume : 
getVolumeDao().getByClusterId(cluster.getId())) {
+            if (volume.getName().equals(Config.<String> 
getValue(ConfigValues.GlusterMetaVolumeName))) {
+                log.debug("Mounting gluster meta volume on nodes of cluster 
'{}'", cluster.getName());
+                acquireLock(cluster.getId());
+                try {
+                    mountMetaVolumeOnNodes(volume.getClusterId());
+                } catch (Exception e) {
+                    log.error("Error while mounting the gluster meta volume on 
nodes of cluster '{}': {}",
+                            cluster.getName(),
+                            e.getMessage());
+                    log.debug("Exception", e);
+                } finally {
+                    releaseLock(cluster.getId());
+                }
+            }
+        }
     }
 
     public void refreshVolumeDetails(VDS upServer, GlusterVolumeEntity volume) 
{
@@ -1020,6 +1037,21 @@
         }
     }
 
+    protected void mountMetaVolumeOnNodes(Guid clusterId) {
+        List<VDS> servers = getClusterUtils().getAllUpServers(clusterId);
+        for (VDS server : servers) {
+            VDSReturnValue retVal =
+                    runVdsCommand(VDSCommandType.MountGlusterMetaVolume,
+                            new VdsIdVDSCommandParametersBase(server.getId()));
+
+            if (!retVal.getSucceeded()) {
+                log.error("Failed to mount gluster meta volume on server {}: 
{}",
+                        server.getName(),
+                        retVal.getVdsError().getMessage());
+            }
+        }
+    }
+
     private void logBrickStatusChange(GlusterVolumeEntity volume, final 
GlusterBrickEntity brick, final GlusterStatus fetchedStatus) {
         log.debug("Detected that status of brick '{}' in volume '{}' changed 
from '{}' to '{}'",
                 brick.getQualifiedName(), volume.getName(), brick.getStatus(), 
fetchedStatus);
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
index 6545efa..307b7f2 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
@@ -287,6 +287,7 @@
         
doReturn(mockVdcReturn()).when(backend).runInternalAction(any(VdcActionType.class),
                 any(VdcActionParametersBase.class),
                 any(CommandContext.class));
+        
doNothing().when(glusterManager).mountMetaVolumeOnNodes(any(Guid.class));
 
         doNothing().when(glusterManager).acquireLock(CLUSTER_ID);
         doNothing().when(glusterManager).releaseLock(CLUSTER_ID);
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 769bd65..efa7e80 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
@@ -442,6 +442,8 @@
     GlusterSnapshotInfoFailedException(4709),
     GlusterSnapshotScheduleFlagUpdateFailedException(4575),
     GlusterDisableSnapshotScheduleFailedException(4576),
+    GlusterMetaVolumeMountFailedException(4577),
+    GlusterMetaVolumeFstabUpdateFailedException(4578),
 
     UnicodeArgumentException(4900),
 
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 0714264..f30218e 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
@@ -184,6 +184,7 @@
     GetStorageDeviceList("org.ovirt.engine.core.vdsbroker.gluster"),
     CreateBrick("org.ovirt.engine.core.vdsbroker.gluster"),
     
OverrideGlusterVolumeSnapshotSchedule("org.ovirt.engine.core.vdsbroker.gluster"),
+    MountGlusterMetaVolume("org.ovirt.engine.core.vdsbroker.gluster"),
 
     SetNumberOfCpus("org.ovirt.engine.core.vdsbroker"),
     UpdateVmPolicy("org.ovirt.engine.core.vdsbroker"),
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 a5bea05..24395b8 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
@@ -406,6 +406,8 @@
 GlusterSnapshotScheduleFlagUpdateFailedException=Failed to set the gluster 
volume snapshot scheduler flag
 GlusterDisableSnapshotScheduleFailedException=Failed to disable CLI based 
gluster volume snapshot scheduling
 GlusterGeoRepConfigFailed=Failed to modify geo-replication config
+GlusterMetaVolumeMountFailedException=Failed to mount gluster meta volume
+GlusterMetaVolumeFstabUpdateFailedException=Failed to update fstab for gluster 
meta volume
 CANT_RECONSTRUCT_WHEN_A_DOMAIN_IN_POOL_IS_LOCKED=Can't reconstruct the Master 
Domain when the Data Center contains Domains in Locked state.\nPlease wait 
until the operation for these Domains ends before trying to reconstruct the 
Master Domain again.
 NO_IMPLEMENTATION=Not implemented
 FailedToPlugDisk=Failed to hot-plug disk
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
index bf677d8..529de46 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
@@ -106,6 +106,8 @@
         case GlusterHostStorageDeviceLVChangeFailedException:
         case GlusterSnapshotScheduleFlagUpdateFailedException:
         case GlusterDisableSnapshotScheduleFailedException:
+        case GlusterMetaVolumeMountFailedException:
+        case GlusterMetaVolumeFstabUpdateFailedException:
             // Capture error from gluster command and record failure
             getVDSReturnValue().setVdsError(new VDSError(returnStatus, 
getReturnStatus().mMessage));
             getVDSReturnValue().setSucceeded(false);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/MountGlusterMetaVolumeVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/MountGlusterMetaVolumeVDSCommand.java
new file mode 100644
index 0000000..4d025fc
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/MountGlusterMetaVolumeVDSCommand.java
@@ -0,0 +1,15 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase;
+
+public class MountGlusterMetaVolumeVDSCommand<P extends 
VdsIdVDSCommandParametersBase> extends AbstractGlusterBrokerCommand<P> {
+    public MountGlusterMetaVolumeVDSCommand(P params) {
+        super(params);
+    }
+
+    @Override
+    protected void executeVdsBrokerCommand() {
+        status = getBroker().glusterMetaVolumeMount();
+        proceedProxyReturnValue();
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
index 11ccfe4..a42ffdb 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
@@ -1889,7 +1889,13 @@
     public StatusOnlyReturnForXmlRpc glusterResetSnapshotSchedule() {
         JsonRpcRequest request =
                 new 
RequestBuilder("GlusterVolume.resetSnapshotSchedule").build();
+        Map<String, Object> response = new FutureMap(this.client, request);
+        return new StatusOnlyReturnForXmlRpc(response);
+    }
 
+    @Override
+    public StatusOnlyReturnForXmlRpc glusterMetaVolumeMount() {
+        JsonRpcRequest request = new 
RequestBuilder("GlusterVolume.metaVolumeMount").build();
         Map<String, Object> response = new FutureMap(this.client, request);
         return new StatusOnlyReturnForXmlRpc(response);
     }
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 7997c18..16630be 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
@@ -442,4 +442,6 @@
     StatusOnlyReturnForXmlRpc glusterOverrideSnapshotSchedule(boolean force);
 
     StatusOnlyReturnForXmlRpc glusterResetSnapshotSchedule();
+
+    StatusOnlyReturnForXmlRpc glusterMetaVolumeMount();
 }
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 6a14887..283dc4a 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
@@ -410,4 +410,6 @@
     public Map<String, Object> glusterOverrideSnapshotSchedule(boolean force);
 
     public Map<String, Object> glusterResetSnapshotSchedule();
+
+    public Map<String, Object> glusterMetaVolumeMount();
 }
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 e8958f8..ca55246 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
@@ -1876,4 +1876,13 @@
             throw new XmlRpcRunTimeException(ute);
         }
     }
+
+    @Override
+    public StatusOnlyReturnForXmlRpc glusterMetaVolumeMount() {
+        try {
+            return new 
StatusOnlyReturnForXmlRpc(vdsServer.glusterMetaVolumeMount());
+        } 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 aed5ae2..12dc600 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
@@ -912,6 +912,12 @@
     @DefaultStringValue("Failed to disable CLI based gluster volume snapshot 
scheduling")
     String GlusterDisableSnapshotScheduleFailedException();
 
+    @DefaultStringValue("Failed to mount gluster meta volume")
+    String GlusterMetaVolumeMountFailedException();
+
+    @DefaultStringValue("Failed to update fstab for gluster meta volume")
+    String GlusterMetaVolumeFstabUpdateFailedException();
+
     @DefaultStringValue("Storage device(s) not found")
     String GlusterHostStorageDeviceNotFoundException();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
index 49a4c75..cc80186 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
@@ -394,4 +394,6 @@
 GlusterSnapshotConfigFailedException=Failed to configure gluster volume 
snapshot
 GlusterSnapshotConfigSetFailedException=Failed to set the gluster volume 
snapshot configuration
 GlusterSnapshotConfigGetFailedException=Failed to get the gluster volume 
snapshot configuration
+GlusterMetaVolumeMountFailedException=Failed to mount gluster meta volume
+GlusterMetaVolumeFstabUpdateFailedException=Failed to update fstab for gluster 
meta volume
 CINDER_ERROR=An error occurred on Cinder - '${cinderException}'


-- 
To view, visit https://gerrit.ovirt.org/40688
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I74199eac5c1b7f0f8bec8ad78b2f417a8fc5960a
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shubhendu Tripathi <shtri...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to