Hello anmolbabu,

I'd like you to do a code review.  Please visit

    https://gerrit.ovirt.org/39668

to review the following change.

Change subject: engine : Set geo-rep config Bll command
......................................................................

engine : Set geo-rep config Bll command

This patch adds bll command to set geo-rep config.

Change-Id: I4d98636a688f9565dff0c86c8820839cb99b1a38
Signed-off-by: Anmol Babu <anb...@redhat.com>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepConfigListQuery.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ResetDefaultGeoRepConfigCommand.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/SetGeoRepConfigCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/GlusterVolumeGeoRepSessionConfigParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionConfiguration.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
M 
frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
M packaging/dbscripts/create_views.sql
M packaging/dbscripts/gluster_georep_sp.sql
A packaging/dbscripts/upgrade/03_05_1320_add_gluster_config_master_table.sql
A packaging/dbscripts/upgrade/03_05_1330_insert_config_description.sql
A 
packaging/dbscripts/upgrade/03_05_1340_gluster_geo_rep_alter_config_value_column.sql
23 files changed, 343 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/39668/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepConfigListQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepConfigListQuery.java
new file mode 100644
index 0000000..0cd831d
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepConfigListQuery.java
@@ -0,0 +1,16 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+
+public class GetGlusterVolumeGeoRepConfigListQuery<P extends 
IdQueryParameters> extends GlusterQueriesCommandBase<P> {
+
+    public GetGlusterVolumeGeoRepConfigListQuery(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        
getQueryReturnValue().setReturnValue(getGeoRepDao().getGeoRepSessionConfig(getParameters().getId()));
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ResetDefaultGeoRepConfigCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ResetDefaultGeoRepConfigCommand.java
new file mode 100644
index 0000000..215371c
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ResetDefaultGeoRepConfigCommand.java
@@ -0,0 +1,65 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import java.util.Map;
+
+import org.ovirt.engine.core.common.AuditLogType;
+import 
org.ovirt.engine.core.common.action.gluster.GlusterVolumeGeoRepSessionConfigParameters;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession;
+import org.ovirt.engine.core.common.constants.gluster.GlusterConstants;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoRepConfigVdsParameters;
+
+public class ResetDefaultGeoRepConfigCommand extends 
GeoRepSessionCommandBase<GlusterVolumeGeoRepSessionConfigParameters> {
+
+    public 
ResetDefaultGeoRepConfigCommand(GlusterVolumeGeoRepSessionConfigParameters 
params) {
+        super(params);
+        setGlusterVolumeId(getGeoRepSession().getMasterVolumeId());
+    }
+
+    @Override
+    protected void executeCommand() {
+        GlusterGeoRepSession session = getGeoRepSession();
+        VDSReturnValue returnValue =
+                
runVdsCommand(VDSCommandType.SetGlusterVolumeGeoRepConfigDefault,
+                        new 
GlusterVolumeGeoRepConfigVdsParameters(upServer.getId(),
+                                session.getMasterVolumeName(),
+                                session.getSlaveHostName(),
+                                session.getSlaveVolumeName(),
+                                getParameters().getConfigKey()));
+        setSucceeded(returnValue.getSucceeded());
+        if (!getSucceeded()) {
+            
handleVdsError(AuditLogType.GLUSTER_GEOREP_CONFIG_SET_DEFAULT_FAILED, 
returnValue.getVdsError()
+                    .getMessage());
+            return;
+        }
+    }
+
+    @Override
+    public Map<String, String> getCustomValues() {
+        addCustomValue(GlusterConstants.OPTION_KEY, 
getParameters().getConfigKey());
+        addCustomValue(GlusterConstants.GEO_REP_SESSION_KEY, 
getGeoRepSession().getSessionKey());
+        return super.getCustomValues();
+    }
+
+    @Override
+    protected boolean canDoAction() {
+        return super.canDoAction();
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__RESET);
+        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__GLUSTER_GEOREP_CONFIG);
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        if (getSucceeded()) {
+            return AuditLogType.GLUSTER_GEOREP_CONFIG_SET_DEFAULT;
+        } else {
+            return errorType == null ? 
AuditLogType.GLUSTER_GEOREP_CONFIG_SET_DEFAULT_FAILED : errorType;
+        }
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/SetGeoRepConfigCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/SetGeoRepConfigCommand.java
new file mode 100644
index 0000000..dce0c43
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/SetGeoRepConfigCommand.java
@@ -0,0 +1,78 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import java.util.Map;
+
+import org.ovirt.engine.core.common.AuditLogType;
+import 
org.ovirt.engine.core.common.action.gluster.GlusterVolumeGeoRepSessionConfigParameters;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSessionConfiguration;
+import org.ovirt.engine.core.common.constants.gluster.GlusterConstants;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoRepConfigVdsParameters;
+
+public class SetGeoRepConfigCommand extends 
GeoRepSessionCommandBase<GlusterVolumeGeoRepSessionConfigParameters> {
+
+    public SetGeoRepConfigCommand(GlusterVolumeGeoRepSessionConfigParameters 
params) {
+        super(params);
+        setGlusterVolumeId(getGeoRepSession().getMasterVolumeId());
+    }
+
+    @Override
+    protected boolean canDoAction() {
+        return super.canDoAction();
+    }
+
+    @Override
+    public Map<String, String> getCustomValues() {
+        addCustomValue(GlusterConstants.OPTION_KEY, 
getParameters().getConfigKey());
+        addCustomValue(GlusterConstants.OPTION_VALUE, 
getParameters().getConfigValue());
+        addCustomValue(GlusterConstants.GEO_REP_SESSION_KEY, 
getGeoRepSession().getSessionKey());
+        return super.getCustomValues();
+    }
+
+    @Override
+    protected void executeCommand() {
+        GlusterGeoRepSession session = getGeoRepSession();
+        String configKey = getParameters().getConfigKey();
+        String configValue = getParameters().getConfigValue();
+        VDSReturnValue returnValue =
+                runVdsCommand(VDSCommandType.SetGlusterVolumeGeoRepConfig,
+                        new 
GlusterVolumeGeoRepConfigVdsParameters(upServer.getId(),
+                                session.getMasterVolumeName(),
+                                session.getSlaveHostName(),
+                                session.getSlaveVolumeName(),
+                                configKey,
+                                configValue));
+        setSucceeded(returnValue.getSucceeded());
+        if (getSucceeded()) {
+            GlusterGeoRepSessionConfiguration geoRepSessionConfig = new 
GlusterGeoRepSessionConfiguration();
+            geoRepSessionConfig.setValue(configValue);
+            geoRepSessionConfig.setKey(configKey);
+            geoRepSessionConfig.setId(session.getId());
+            getGlusterGeoRepDao().updateConfig(geoRepSessionConfig);
+        } else {
+            handleVdsError(AuditLogType.GLUSTER_GEOREP_CONFIG_SET_FAILED, 
returnValue.getVdsError().getMessage());
+            return;
+        }
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__SET);
+        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__GLUSTER_GEOREP_CONFIG);
+        addCanDoActionMessageVariable("configName", 
getParameters().getConfigKey());
+        addCanDoActionMessageVariable("geoRepSessionKey", 
getGeoRepSession().getSessionKey());
+        addCanDoActionMessageVariable("configValue", 
getParameters().getConfigValue());
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        if (getSucceeded()) {
+            return AuditLogType.GLUSTER_GEOREP_CONFIG_SET;
+        } else {
+            return errorType == null ? 
AuditLogType.GLUSTER_GEOREP_CONFIG_SET_FAILED : errorType;
+        }
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
index 008a7b7..fe6c2ff 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
@@ -397,6 +397,12 @@
     GEOREP_SESSION_DELETE(4103),
     GEOREP_SESSION_DELETE_FAILED(4104, AuditLogSeverity.ERROR),
 
+    GLUSTER_GEOREP_CONFIG_SET(4105),
+    GLUSTER_GEOREP_CONFIG_SET_FAILED(4106, AuditLogSeverity.ERROR),
+    GLUSTER_GEOREP_CONFIG_LIST(4107),
+    GLUSTER_GEOREP_CONFIG_LIST_FAILED(4108, AuditLogSeverity.ERROR),
+    GLUSTER_GEOREP_CONFIG_SET_DEFAULT(4109),
+    GLUSTER_GEOREP_CONFIG_SET_DEFAULT_FAILED(4110, AuditLogSeverity.ERROR),
     USER_FORCE_SELECTED_SPM(159),
     USER_VDS_RESTART(41),
     USER_FAILED_VDS_RESTART(107, AuditLogSeverity.ERROR),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
index c05c514..895ae85 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
@@ -310,6 +310,8 @@
     StartGlusterVolumeGeoRep(1429, ActionGroup.MANIPULATE_GLUSTER_VOLUME, 
QuotaDependency.NONE),
     ResumeGeoRepSession(1430, ActionGroup.MANIPULATE_GLUSTER_VOLUME, 
QuotaDependency.NONE),
     PauseGlusterVolumeGeoRepSession(1431, 
ActionGroup.MANIPULATE_GLUSTER_VOLUME, QuotaDependency.NONE),
+    SetGeoRepConfig(1432, ActionGroup.MANIPULATE_GLUSTER_VOLUME, 
QuotaDependency.NONE),
+    ResetDefaultGeoRepConfig(1433, ActionGroup.MANIPULATE_GLUSTER_VOLUME, 
QuotaDependency.NONE),
 
     // Cluster Policy
     AddClusterPolicy(1450, ActionGroup.EDIT_STORAGE_POOL_CONFIGURATION, false, 
QuotaDependency.NONE),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/GlusterVolumeGeoRepSessionConfigParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/GlusterVolumeGeoRepSessionConfigParameters.java
new file mode 100644
index 0000000..739177f
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/GlusterVolumeGeoRepSessionConfigParameters.java
@@ -0,0 +1,42 @@
+package org.ovirt.engine.core.common.action.gluster;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class GlusterVolumeGeoRepSessionConfigParameters extends 
GlusterVolumeGeoRepSessionParameters {
+
+    private static final long serialVersionUID = 1L;
+
+    private String configKey;
+    private String configValue;
+
+    public GlusterVolumeGeoRepSessionConfigParameters() {
+        super();
+    }
+
+    public GlusterVolumeGeoRepSessionConfigParameters(Guid volumeId, Guid 
sessionId, String configKey, String configValue) {
+        super(volumeId, sessionId);
+        this.configKey = configKey;
+        this.configValue = configValue;
+    }
+
+    public GlusterVolumeGeoRepSessionConfigParameters(Guid volumeId, Guid 
sessionId, String configKey) {
+        super(volumeId, sessionId);
+        this.configKey = configKey;
+    }
+
+    public String getConfigKey() {
+        return configKey;
+    }
+
+    public void setConfigKey(String configKey) {
+        this.configKey = configKey;
+    }
+
+    public String getConfigValue() {
+        return configValue;
+    }
+
+    public void setConfigValue(String configValue) {
+        this.configValue = configValue;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionConfiguration.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionConfiguration.java
index 63cff97..7ce9a6e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionConfiguration.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionConfiguration.java
@@ -1,32 +1,18 @@
 package org.ovirt.engine.core.common.businessentities.gluster;
 
+import java.util.List;
+
 import org.ovirt.engine.core.common.businessentities.BusinessEntity;
 import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.compat.Guid;
 
-public class GlusterGeoRepSessionConfiguration implements BusinessEntity<Guid>{
+public class GlusterGeoRepSessionConfiguration extends GlusterVolumeOptionInfo 
implements BusinessEntity<Guid>{
 
     private static final long serialVersionUID = -6506417314359159692L;
 
     Guid sessionId;
-    String key;
-    String value;
 
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
+    List<String> allowedValues;
 
     @Override
     public Guid getId() {
@@ -38,11 +24,27 @@
         this.sessionId = id;
     }
 
+    public String getValue() {
+        return getDefaultValue();
+    }
+
+    public void setValue(String value) {
+        setDefaultValue(value);
+    }
+
+    public List<String> getAllowedValues() {
+        return allowedValues;
+    }
+
+    public void setAllowedValues(List<String> allowedValues) {
+        this.allowedValues = allowedValues;
+    }
+
     @Override
     public boolean equals(Object obj) {
-        return (obj != null) && (obj instanceof 
GlusterGeoRepSessionConfiguration) && ObjectUtils.objectsEqual(getId(), 
((GlusterGeoRepSessionConfiguration) obj).getId()) &&
-                ObjectUtils.objectsEqual(getKey(), 
((GlusterGeoRepSessionConfiguration) obj).getKey()) &&
-                ObjectUtils.objectsEqual(getValue(), 
((GlusterGeoRepSessionConfiguration) obj).getValue());
+        return obj != null && obj instanceof GlusterGeoRepSessionConfiguration
+                && ObjectUtils.objectsEqual(getId(), 
((GlusterGeoRepSessionConfiguration) obj).getId())
+                && super.equals(obj);
     }
 
     @Override
@@ -50,8 +52,7 @@
         final int prime = 31;
         int result = 1;
         result = prime * result + sessionId.hashCode();
-        result = prime * result + key.hashCode();
-        result = prime * result + value.hashCode();
+        result = prime * result + super.hashCode();
         return result;
     }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java
index e509356..fa65ad5 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java
@@ -35,6 +35,7 @@
     public static final String MANAGE_GLUSTER_SERVICE_ACTION_TYPE_STOP = 
"stop";
     public static final String MANAGE_GLUSTER_SERVICE_ACTION_TYPE_RESTART = 
"restart";
     public static final String COMMAND = "command";
+    public static final String GEO_REP_SESSION_KEY = "geoRepSessionKey";
 
     public static final String HOOK_NAME = "glusterhookname";
     public static final String FAILURE_MESSAGE = "failuremessage";
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index 478650c..be3e133 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -49,6 +49,7 @@
     VAR__TYPE__GLUSTER_HOOK,
     VAR__TYPE__GLUSTER_SERVICE,
     VAR__TYPE__GLUSTER_GEOREP_SESSION,
+    VAR__TYPE__GLUSTER_GEOREP_CONFIG,
 
     // External Event
     VAR__TYPE__EXTERNAL_EVENT,
@@ -938,6 +939,8 @@
     ACTION_TYPE_FAILED_GEOREP_SESSION_STOPPED(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_GEOREP_SESSION_ALREADY_RESUMED(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_VOLUME_SNAPSHOT_LOCKED(ErrorType.CONFLICT),
+    ACTION_TYPE_FAILED_GLUSTER_GEOREP_CONFIG_SET(ErrorType.CONFLICT),
+    ACTION_TYPE_FAILED_GLUSTER_GEOREP_CONFIG_DEFAULT_SET(ErrorType.CONFLICT),
 
     // OpenStack Glance
     ACTION_TYPE_FAILED_IMAGE_DOWNLOAD_ERROR(ErrorType.BAD_PARAMETERS),
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 913be52..018d039 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
@@ -339,6 +339,7 @@
     GetNonEligibilityReasonsOfVolumeForGeoRepSession,
     GetGlusterGeoReplicationEligibleVolumes,
     GetGlusterVolumeSnapshotsByVolumeId,
+    GetGlusterVolumeGeoRepConfigList,
 
     GetDefaultConfigurationVersion(VdcQueryAuthType.User),
     OsRepository(VdcQueryAuthType.User),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
index 245c593..76a9584 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
@@ -3,6 +3,7 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.ovirt.engine.core.common.businessentities.gluster.GeoRepCrawlStatus;
@@ -58,6 +59,8 @@
             entity.setId(getGuidDefaultEmpty(rs, "session_id"));
             entity.setKey(rs.getString("config_key"));
             entity.setValue(rs.getString("config_value"));
+            entity.setDescription(rs.getString("config_description"));
+            
entity.setAllowedValues(Arrays.asList(rs.getString("config_possible_values").split(";")));
             return entity;
         }
     }
@@ -179,7 +182,9 @@
             GlusterGeoRepSessionConfiguration geoRepSessionConfig) {
         return createIdParameterMapper(geoRepSessionConfig.getId())
                 .addValue("config_key", geoRepSessionConfig.getKey())
-                .addValue("config_value", geoRepSessionConfig.getValue());
+                .addValue("config_value", geoRepSessionConfig.getValue())
+                .addValue("config_description", 
geoRepSessionConfig.getDescription())
+                .addValue("config_possible_values", 
geoRepSessionConfig.getAllowedValues());
     }
 
     @Override
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index ec03984..a20fbdf 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -1142,6 +1142,8 @@
 ACTION_TYPE_FAILED_GEOREP_SESSION_ALREADY_RESUMED=Cannot ${action} ${type}. 
Geo-replication session is resumed.
 ACTION_TYPE_FAILED_GEOREP_SESSION_ALREADY_PAUSED=Cannot ${action} ${type}. 
Geo-replication session is paused.
 
+ACTION_TYPE_FAILED_GLUSTER_GEOREP_CONFIG_SET=Cannot ${action} ${type}. Cannot 
set the configuration.
+ACTION_TYPE_FAILED_GLUSTER_GEOREP_CONFIG_DEFAULT_SET=Cannot ${action} ${type}. 
Cannot set default value for the configuration.
 ACTION_TYPE_FAILED_TAG_ID_REQUIRED=Cannot ${action} ${type}. Tag ID is 
required.
 ACTION_TYPE_FAILED_QOS_OUT_OF_RANGE_VALUES=Cannot ${action} ${type}. Values 
are out of range.
 ACTION_TYPE_FAILED_QOS_STORAGE_POOL_NOT_EXIST=Cannot ${action} ${type}. 
Invalid data center.
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
index 1d8f2f3..8c29afa 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
@@ -818,6 +818,10 @@
 GEOREP_SESSION_DELETE_FAILED=Failed to delete geo-replication session on 
volume ${glusterVolumeName}
 GLUSTER_VOLUME_GEO_REP_START=Geo-replication session on volume 
${glusterVolumeName} has been started.
 GLUSTER_VOLUME_GEO_REP_START_FAILED_EXCEPTION=Failed to start geo-replication 
session on volume ${glusterVolumeName}
+GLUSTER_GEOREP_CONFIG_SET=Configuration ${key} has been set to ${value} on the 
geo-rep session ${geoRepSessionKey}.
+GLUSTER_GEOREP_CONFIG_SET_FAILED=Failed to set the configuration ${key} to 
${value} on geo-rep session ${geoRepSessionKey}.
+GLUSTER_GEOREP_CONFIG_SET_DEFAULT=Configuration of ${key} of session 
${geoRepSessionKey} reset to its default value .
+GLUSTER_GEOREP_CONFIG_SET_DEFAULT_FAILED=Failed to set ${key} of session 
${geoRepSessionKey} to its default value.
 VDS_UNTRUSTED=Host ${VdsName} was set to non-operational. Host is not trusted 
by the attestation service.
 USER_ADDED_NETWORK_QOS=Network QoS ${QosName} was added. (User: ${UserName})
 USER_FAILED_TO_ADD_NETWORK_QOS=Failed to add Network QoS ${QosName}. (User: 
${UserName})
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
index 51a5029..dc85f3b 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
@@ -56,6 +56,7 @@
         GlusterGeoRepSessionConfiguration sessionConfig = new 
GlusterGeoRepSessionConfiguration();
         sessionConfig.setId(FixturesTool.GLUSTER_GEOREP_SESSION_ID);
         sessionConfig.setKey("georep-crawl");
+        sessionConfig.setDescription("Geo-replication session  crawl");
         sessionConfig.setValue("changelog");
         return sessionConfig;
     }
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index c0100f1..abbcfe2 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -7348,4 +7348,20 @@
             <value>NOTSTARTED</value>
         </row>
      </table>
+
+     <table name="gluster_config_master">
+         <column>config_key</column>
+         <column>config_description</column>
+         <column>minimum_supported_cluster</column>
+         <column>config_possible_values</column>
+         <column>config_feature</column>
+         <row>
+             <value>georep-crawl</value>
+             <value>Geo-replication session  crawl</value>
+             <value>3.5</value>
+             <value></value>
+             <value>geo_replication</value>
+         </row>
+     </table>
+
 </dataset>
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index 14d5ea1..37ba4bb 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -3084,6 +3084,12 @@
     @DefaultStringValue("Cannot ${action} ${type}. Geo-replication session is 
paused.")
     String ACTION_TYPE_FAILED_GEOREP_SESSION_ALREADY_PAUSED();
 
+    @DefaultStringValue("Cannot ${action} ${type}. Cannot set the 
configuration.")
+    String ACTION_TYPE_FAILED_GLUSTER_GEOREP_CONFIG_SET();
+
+    @DefaultStringValue("Cannot ${action} ${type}. Cannot reset the 
configuration to its default value.")
+    String ACTION_TYPE_FAILED_GLUSTER_GEOREP_CONFIG_DEFAULT_SET();
+
     @DefaultStringValue("Cannot ${action} ${type}. All three values are needed 
in order to define QoS on each network directions.")
     String ACTION_TYPE_FAILED_NETWORK_QOS_MISSING_VALUES();
 
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
index 9320ea1..a3d64ce 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
@@ -451,6 +451,14 @@
 
     String AuditLogType___GEOREP_SESSION_START_FAILED();
 
+    String AuditLogType___GLUSTER_GEOREP_CONFIG_SET();
+
+    String AuditLogType___GLUSTER_GEOREP_CONFIG_SET_FAILED();
+
+    String AuditLogType___GLUSTER_GEOREP_CONFIG_SET_DEFAULT();
+
+    String AuditLogType___GLUSTER_GEOREP_CONFIG_SET_DEFAULT_FAILED();
+
     String VdcActionType___ActivateVds();
 
     String VdcActionType___RecoveryStoragePool();
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
index ef57943..70f08e3 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
+++ 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
@@ -224,6 +224,10 @@
 AuditLogType___GEOREP_SESSION_START_FAILED=Failed to start geo-replication 
session on volume
 AuditLogType___GLUSTER_VOLUME_SNAPSHOT_CREATED=Snapshot created for the volume
 AuditLogType___GLUSTER_VOLUME_SNAPSHOT_CREATE_FAILED=Failed create snapshot 
for the volume
+AuditLogType___GLUSTER_GEOREP_CONFIG_SET=Configuration has been set on the 
geo-rep session.
+AuditLogType___GLUSTER_GEOREP_CONFIG_SET_FAILED=Failed to set the 
configuration on geo-rep session.
+AuditLogType___GLUSTER_GEOREP_CONFIG_SET_DEFAULT=Configuration has been reset 
to its default value.
+AuditLogType___GLUSTER_GEOREP_CONFIG_SET_DEFAULT_FAILED=Failed to reset the 
configuration to its default value.
 
 
 VdcActionType___ActivateVds=Activate Host
diff --git a/packaging/dbscripts/create_views.sql 
b/packaging/dbscripts/create_views.sql
index 00ef45e..fc78ce4 100644
--- a/packaging/dbscripts/create_views.sql
+++ b/packaging/dbscripts/create_views.sql
@@ -1790,6 +1790,12 @@
 FROM  gluster_georep_session georep
 INNER JOIN gluster_volumes ON gluster_volumes.id = georep.master_volume_id;
 
+CREATE OR REPLACE VIEW gluster_geo_rep_config_view
+AS
+SELECT session_id, georepConfig.config_key, config_value, config_description, 
config_possible_values, _update_date
+FROM  gluster_georep_config georepConfig
+INNER JOIN gluster_config_master ON gluster_config_master.config_key = 
georepConfig.config_key AND 
gluster_config_master.config_feature='geo_replication';
+
 -- Affinity Groups view, including members
 CREATE OR REPLACE VIEW affinity_groups_view
 AS
diff --git a/packaging/dbscripts/gluster_georep_sp.sql 
b/packaging/dbscripts/gluster_georep_sp.sql
index d73d43e..f636058 100644
--- a/packaging/dbscripts/gluster_georep_sp.sql
+++ b/packaging/dbscripts/gluster_georep_sp.sql
@@ -200,11 +200,11 @@
 
 
 Create or replace FUNCTION GetGlusterGeoRepSessionConfig(v_session_id UUID)
-RETURNS SETOF gluster_georep_config STABLE
+RETURNS SETOF gluster_geo_rep_config_view STABLE
 AS $procedure$
 BEGIN
-    RETURN QUERY SELECT session_id, config_key, config_value, _update_date
-    FROM  gluster_georep_config
+    RETURN QUERY SELECT *
+    FROM  gluster_geo_rep_config_view
     WHERE session_id = v_session_id order by config_key asc;
 END; $procedure$
 LANGUAGE plpgsql;
diff --git 
a/packaging/dbscripts/upgrade/03_05_1320_add_gluster_config_master_table.sql 
b/packaging/dbscripts/upgrade/03_05_1320_add_gluster_config_master_table.sql
new file mode 100644
index 0000000..2e9fe7a
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_05_1320_add_gluster_config_master_table.sql
@@ -0,0 +1,12 @@
+CREATE TABLE gluster_config_master
+(
+    config_key VARCHAR(50),
+    config_description VARCHAR(300),
+    minimum_supported_cluster VARCHAR(50),
+    config_possible_values VARCHAR(50),
+    config_feature VARCHAR(50),
+    CONSTRAINT pk_config_key PRIMARY KEY(config_key)
+) WITH OIDS;
+
+ALTER TABLE ONLY gluster_georep_config
+    ADD CONSTRAINT fk_config_key FOREIGN KEY(config_key) REFERENCES 
gluster_config_master(config_key);
diff --git 
a/packaging/dbscripts/upgrade/03_05_1330_insert_config_description.sql 
b/packaging/dbscripts/upgrade/03_05_1330_insert_config_description.sql
new file mode 100644
index 0000000..e2d26b1
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_05_1330_insert_config_description.sql
@@ -0,0 +1,36 @@
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('gluster-log-file', 'The path to the geo-replication glusterfs log 
file.', '3.5', '', 'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('gluster-log-level', 'The log level for glusterfs processes.', '3.5', 
'', 'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('log-file', 'The path to the geo-replication log file.', '3.5', '', 
'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('log-level', 'The log level for geo-replication.', '3.5', '', 
'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('ssh-command', 'The SSH command to connect to the remote machine', 
'3.5', '', 'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('rsync-command', 'The rsync command to use for synchronizing the 
files', '3.5', '', 'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('use-tarssh', 'The use-tarssh command allows tar over Secure Shell 
protocol. Use this option to handle workloads of files that have not undergone 
edits.', '3.5', '', 'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('timeout', 'The timeout period in seconds.', '3.5', '', 
'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('sync-jobs', 'The number of simultaneous files/directories that can be 
synchronized.', '3.5', '', 'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('ignore-deletes', 'If this option is set to 1, a file deleted on the 
master will not trigger a delete operation on the slave. As a result, the slave 
will remain as a superset of the master and can be used to recover the master 
in the event of a crash and/or accidental delete.', '3.5', '', 
'geo_replication');
+
+INSERT INTO gluster_config_master(config_key, config_description, 
minimum_supported_cluster, config_possible_values, config_feature)
+ values('checkpoint', 'Sets a checkpoint with the given option LABEL. If the 
option is set as now, then the current time will be used as the label.', '3.5', 
'', 'geo_replication');
+
+
+
+
diff --git 
a/packaging/dbscripts/upgrade/03_05_1340_gluster_geo_rep_alter_config_value_column.sql
 
b/packaging/dbscripts/upgrade/03_05_1340_gluster_geo_rep_alter_config_value_column.sql
new file mode 100644
index 0000000..5368675
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_05_1340_gluster_geo_rep_alter_config_value_column.sql
@@ -0,0 +1 @@
+SELECT fn_db_change_column_type('gluster_georep_config', 'config_value', 
'varchar', 'text');
\ No newline at end of file


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4d98636a688f9565dff0c86c8820839cb99b1a38
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5-gluster
Gerrit-Owner: Sahina Bose <sab...@redhat.com>
Gerrit-Reviewer: anmolbabu <anb...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to