Hello ofri masad,

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

    http://gerrit.ovirt.org/18519

to review the following change.

Change subject: core: Add mom policy update command
......................................................................

core: Add mom policy update command

Add a command to allow update of mom policy on host.

Conflicts:
        
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
        
backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
        packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql

Change-Id: Ic2ba5b4dd31c44ac8b1e13f44a4337f81aff55b2
Signed-off-by: Ofri Masad <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMomPolicyCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsValidator.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/FeatureSupported.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
13 files changed, 114 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/19/18519/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMomPolicyCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMomPolicyCommand.java
new file mode 100644
index 0000000..7a1da67
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMomPolicyCommand.java
@@ -0,0 +1,68 @@
+package org.ovirt.engine.core.bll;
+
+
+import org.ovirt.engine.core.bll.utils.PermissionSubject;
+import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.FeatureSupported;
+import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.action.VdsActionParameters;
+import org.ovirt.engine.core.common.errors.VdcBLLException;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.vdscommands.MomPolicyVDSParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+
+import java.util.Collections;
+import java.util.List;
+
+@NonTransactiveCommandAttribute
+public class UpdateMomPolicyCommand extends VdsCommand<VdsActionParameters> {
+
+    public UpdateMomPolicyCommand(VdsActionParameters vdsActionParameters) {
+        super(vdsActionParameters);
+    }
+
+    @Override
+    protected void executeCommand() {
+        boolean succeeded = false;
+        try {
+            succeeded = runVdsCommand(VDSCommandType.SetMOMPolicyParameters,
+                    new MomPolicyVDSParameters(getVds(), 
getVdsGroup().isEnableBallooning())).getSucceeded();
+        } catch (VdcBLLException e) {
+            log.errorFormat("Could not update MoM policy on host {0}", 
getVdsName());
+        }
+        getReturnValue().setSucceeded(succeeded);
+    }
+
+    @Override
+    protected boolean canDoAction() {
+        VdsValidator vdsValidator = new VdsValidator(getVds());
+
+        return validate(vdsValidator.exists())
+                && validate(vdsValidator.isUp())
+                && validate(validateMinimumVersionSupport());
+    }
+
+    private ValidationResult validateMinimumVersionSupport() {
+        return 
FeatureSupported.momPolicyOnHost(getVdsGroup().getcompatibility_version())
+                ? ValidationResult.VALID
+                : new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_MOM_UPDATE_VDS_VERSION);
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        return Collections.singletonList(new 
PermissionSubject(getParameters().getVdsId(),
+                VdcObjectType.VDS, getActionType().getActionGroup()));
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        return getSucceeded() ? AuditLogType.USER_UPDATED_MOM_POLICIES
+                : AuditLogType.USER_FAILED_TO_UPDATE_MOM_POLICIES;
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__HOST);
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__UPDATE);
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsValidator.java
index de28134..75e7597 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsValidator.java
@@ -81,4 +81,14 @@
         }
         return ValidationResult.VALID;
     }
+
+    public ValidationResult validateStatus(VDSStatus vdsStatus, VdcBllMessages 
hostStatus) {
+        return vdsStatus == vds.getStatus()
+                ? ValidationResult.VALID
+                : new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_VDS_STATUS_ILLEGAL, 
hostStatus.toString());
+    }
+
+    public ValidationResult isUp() {
+        return validateStatus(VDSStatus.Up, 
VdcBllMessages.VAR__HOST_STATUS__UP);
+    }
 }
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 202280f..c62f32c 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
@@ -790,7 +790,11 @@
     USER_REMOVED_NETWORK_QOS(10102),
     USER_FAILED_TO_REMOVE_NETWORK_QOS(10103),
     USER_UPDATED_NETWORK_QOS(10104),
-    USER_FAILED_TO_UPDATE_NETWORK_QOS(10105)
+    USER_FAILED_TO_UPDATE_NETWORK_QOS(10105),
+
+    //mom policies
+    USER_UPDATED_MOM_POLICIES(10200),
+    USER_FAILED_TO_UPDATE_MOM_POLICIES(10201)
     ;
 
     private int intValue;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
index ae8c2a3..c16a4f7 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
@@ -140,4 +140,13 @@
     public static boolean setupManagementNetwork(Version version) {
         return supportedInConfig(ConfigValues.NormalizedMgmgNetworkEnabled, 
version);
     }
+
+    /**
+     * @param version
+     *            Compatibility version to check for.
+     * @return <code>true</code> iff MoM Policy on host is supported for the 
cluster version.
+     */
+    public static boolean momPolicyOnHost(Version version) {
+        return supportedInConfig(ConfigValues.MomPoliciesOnHostSupported, 
version);
+    }
 }
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 6604f57..fa34826 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
@@ -279,7 +279,9 @@
     EndExternalJob(1801, ActionGroup.INJECT_EXTERNAL_TASKS, false, 
QuotaDependency.NONE),
     ClearExternalJob(1802, ActionGroup.INJECT_EXTERNAL_TASKS, false, 
QuotaDependency.NONE),
     AddExternalStep(1803, ActionGroup.INJECT_EXTERNAL_TASKS, false, 
QuotaDependency.NONE),
-    EndExternalStep(1804, ActionGroup.INJECT_EXTERNAL_TASKS, false, 
QuotaDependency.NONE);
+    EndExternalStep(1804, ActionGroup.INJECT_EXTERNAL_TASKS, false, 
QuotaDependency.NONE),
+
+    UpdateMomPolicy(1900, ActionGroup.MANIPUTLATE_HOST, false, 
QuotaDependency.NONE);
 
     private int intValue;
     private ActionGroup actionGroup;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
index e3298f9..8581df8 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
@@ -1449,6 +1449,11 @@
     @DefaultValueAttribute("true")
     NormalizedMgmgNetworkEnabled(522),
 
+    @TypeConverterAttribute(Boolean.class)
+    @DefaultValueAttribute("true")
+    MomPoliciesOnHostSupported(530),
+
+
     Invalid(65535);
 
     private int intValue;
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 8d744fd..28e6abe 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
@@ -218,6 +218,7 @@
     ACTION_TYPE_FAILED_VDS_STATUS_ILLEGAL(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_MIGRATE_BETWEEN_TWO_CLUSTERS(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_VDS_INTERMITENT_CONNECTIVITY(ErrorType.CONFLICT),
+    ACTION_TYPE_FAILED_MOM_UPDATE_VDS_VERSION(ErrorType.INCOMPATIBLE_VERSION),
     VDS_CANNOT_REMOVE_VDS_GROUP_VDS_DETECTED(ErrorType.CONFLICT),
     VDS_CANNOT_MAINTENANCE_VDS_IS_NOT_OPERATIONAL(ErrorType.CONFLICT),
     VDS_CANNOT_MAINTENANCE_VDS_IS_NOT_RESPONDING_WITH_VMS(ErrorType.CONFLICT),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
index f3641de..30b65cc 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
@@ -479,6 +479,11 @@
         severities.put(AuditLogType.USER_FAILED_TO_UPDATE_NETWORK_QOS, 
AuditLogSeverity.ERROR);
     }
 
+    private static void initMomPoliciesSeverities() {
+        severities.put(AuditLogType.USER_UPDATED_MOM_POLICIES, 
AuditLogSeverity.NORMAL);
+        severities.put(AuditLogType.USER_FAILED_TO_UPDATE_MOM_POLICIES, 
AuditLogSeverity.WARNING);
+    }
+
     private static void initVMSeverities() {
         severities.put(AuditLogType.USER_ATTACH_VM_TO_AD_GROUP, 
AuditLogSeverity.NORMAL);
         severities.put(AuditLogType.USER_ATTACH_VM_TO_AD_GROUP_FAILED, 
AuditLogSeverity.ERROR);
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 4d6244f..e49eb05 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -528,6 +528,7 @@
 ACTION_TYPE_FAILED_PM_ENABLED_WITHOUT_AGENT=Cannot ${action} ${type}. Power 
Management is enabled for Host but no Agent type selected.
 ACTION_TYPE_FAILED_PM_ENABLED_WITHOUT_AGENT_CREDENTIALS=Cannot ${action} 
${type}. Power Management is enabled for Host but Agent credentials are missing.
 ACTION_TYPE_FAILED_AGENT_NOT_SUPPORTED=Cannot ${action} ${type}. Selected 
Power Management Agent is not supported.
+ACTION_TYPE_FAILED_MOM_UPDATE_VDS_VERSION=Cannot ${action} ${type}. The 
cluster's compatibility version doesn't support MoM Policy update.
 NETWORK_BOND_NOT_ATTACCH_TO_NETWORK=Bond is not attached to Network.
 NETWORK_INTERFACE_NOT_ATTACCH_TO_NETWORK=Network Interface is not attached to 
Logical Network.
 NETWORK_INTERFACE_IN_USE_BY_VLAN=Bonding cannot be applied on an Interface 
where VLAN is defined.\n\
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 1cf170e..393b2b5 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
@@ -676,3 +676,5 @@
 USER_FAILED_TO_UPDATE_CLUSTER_POLICY=Failed to update Clsuter Policy: 
${ClusterPolicy}. (User: ${UserName})
 USER_REMOVE_CLUSTER_POLICY=Clsuter Policy ${ClusterPolicy} was removed. (User: 
${UserName})
 USER_FAILED_TO_REMOVE_CLUSTER_POLICY=Failed to remove Clsuter Policy: 
${ClusterPolicy}. (User: ${UserName})
+USER_UPDATED_MOM_POLICIES=Mom policy was updated on host ${VdsName}.
+USER_FAILED_TO_UPDATE_MOM_POLICIES=Mom policy could not be updated on host 
${VdsName}.
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 056dbf8..9afd909 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
@@ -1429,6 +1429,9 @@
     @DefaultStringValue("Cannot ${action} ${type}. Selected Power Management 
Agent is not supported.")
     String ACTION_TYPE_FAILED_AGENT_NOT_SUPPORTED();
 
+    @DefaultStringValue("Cannot ${action} ${type}. The cluster's compatibility 
version doesn't support MoM Policy update.")
+    String ACTION_TYPE_FAILED_MOM_UPDATE_VDS_VERSION();
+
     @DefaultStringValue("Bond is not attached to Network.")
     String NETWORK_BOND_NOT_ATTACCH_TO_NETWORK();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 9636050..0c9c150 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -533,6 +533,7 @@
 ACTION_TYPE_FAILED_PM_ENABLED_WITHOUT_AGENT=Cannot ${action} ${type}. Power 
Management is enabled for Host but no Agent type selected.
 ACTION_TYPE_FAILED_PM_ENABLED_WITHOUT_AGENT_CREDENTIALS=Cannot ${action} 
${type}. Power Management is enabled for Host but Agent credentials are missing.
 ACTION_TYPE_FAILED_AGENT_NOT_SUPPORTED=Cannot ${action} ${type}. Selected 
Power Management Agent is not supported.
+ACTION_TYPE_FAILED_MOM_UPDATE_VDS_VERSION=Cannot ${action} ${type}. The 
cluster's compatibility version doesn't support MoM Policy update.
 NETWORK_BOND_NOT_ATTACCH_TO_NETWORK=Bond is not attached to Network.
 NETWORK_INTERFACE_NOT_ATTACCH_TO_NETWORK=Network Interface is not attached to 
Logical Network.
 NETWORK_INTERFACE_IN_USE_BY_VLAN=Bonding cannot be applied on an Interface 
where VLAN is defined.\n\
diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 
b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
index 4b1f5db..0c2c36f 100644
--- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
+++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
@@ -195,7 +195,7 @@
 select fn_db_add_config_value('VirtIoScsiEnabled','true','3.3');
 select 
fn_db_add_config_value('VirtIoScsiUnsupportedOsList','WindowsXP,RHEL5,RHEL5x64,RHEL4,RHEL4x64,RHEL3,RHEL3x64','general');
 select fn_db_add_config_value('NormalizedMgmgNetworkEnabled','false','3.0');
-select fn_db_add_config_value('NormalizedMgmgNetworkEnabled','false','3.1');
+select fn_db_add_config_value('IterationsWithBalloonProblem','3','general');
 
 -- by default use no proxy
 select fn_db_add_config_value('SpiceProxyDefault','','general');


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic2ba5b4dd31c44ac8b1e13f44a4337f81aff55b2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.3
Gerrit-Owner: Martin Sivák <[email protected]>
Gerrit-Reviewer: ofri masad <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to