Martin Sivák has uploaded a new change for review.

Change subject: [WIP] engine: Update MoM policy when host comes online
......................................................................

[WIP] engine: Update MoM policy when host comes online

This patch adds the necessary backend infrastructure for enabling
and disabling ballooning feature on the hosts.

Change-Id: If5c73939b666228822e01fe51be3736d4d18ece5
https://bugzilla.redhat.com/show_bug.cgi?id=967572
Signed-off-by: Martin Sivak <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.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/VdsProperties.java
A packaging/dbscripts/upgrade/03_03_0400_add_enable_balloon_to_vds_groups.sql
M packaging/dbscripts/vds_groups_sp.sql
9 files changed, 54 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/16693/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 a776775..774c6db 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
@@ -40,6 +40,7 @@
 import org.ovirt.engine.core.common.eventqueue.EventType;
 import org.ovirt.engine.core.common.gluster.GlusterFeatureSupported;
 import 
org.ovirt.engine.core.common.vdscommands.ConnectStoragePoolVDSCommandParameters;
+import org.ovirt.engine.core.common.vdscommands.MomPolicyVDSParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
 import 
org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase;
@@ -128,6 +129,7 @@
         if (InitializeStorage()) {
             processFence();
             processStoragePoolStatus();
+            runUpdateMomPolicy(getVdsGroup(), getVds());
         } else {
             Map<String, String> customLogValues = 
Collections.singletonMap("StoragePoolName", getStoragePoolName());
             setNonOperational(NonOperationalReason.STORAGE_DOMAIN_UNREACHABLE, 
customLogValues);
@@ -244,6 +246,19 @@
         return result;
     }
 
+    private EventResult runUpdateMomPolicy(final VDSGroup cluster, final VDS 
vds) {
+        EventResult result = new EventResult(true, EventType.VDSCONNECTTOPOOL);
+        try {
+            runVdsCommand(VDSCommandType.SetMomPolicyParameters,
+                    new MomPolicyVDSParameters(cluster.isEnableBallooning()));
+        } catch (VdcBLLException e) {
+            log.errorFormat("Could not update MoM policy on host {0}", 
vds.getName());
+            result.setSuccess(false);
+        }
+
+        return result;
+    }
+
     protected boolean proceedVdsStats() {
         boolean returnValue = true;
         try {
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java
index ff302f6..be00fc6 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java
@@ -50,6 +50,8 @@
 
     private int max_vds_memory_over_commit = 0;
 
+    private boolean enableBallooning = false;
+
     private boolean countThreadsAsCores = false;
 
     @Size(max = BusinessEntitiesDefinitions.GENERAL_VERSION_SIZE)
@@ -262,6 +264,14 @@
         return trustedService;
     }
 
+    public boolean isEnableBallooning() {
+        return enableBallooning;
+    }
+
+    public void setEnableBallooning(boolean enableBallooning) {
+        this.enableBallooning = enableBallooning;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
@@ -287,6 +297,7 @@
         result = prime * result + (tunnelMigration ? 1231 : 1237);
         result = prime * result + (emulatedMachine == null ? 0 : 
emulatedMachine.hashCode());
         result = prime * result + (trustedService ? 1231 : 1237);
+        result = prime * result + (enableBallooning ? 1231 : 1237);
         return result;
     }
 
@@ -322,6 +333,7 @@
                 && glusterService == other.glusterService
                 && tunnelMigration == other.tunnelMigration
                 && ObjectUtils.objectsEqual(emulatedMachine, 
other.emulatedMachine)
-                && trustedService == other.trustedService);
+                && trustedService == other.trustedService
+                && enableBallooning == other.enableBallooning);
     }
 }
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 9a21f4d..dbc554f 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
@@ -111,6 +111,7 @@
     Snapshot("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     UpdateVmInterface("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     GetHardwareInfo("org.ovirt.engine.core.vdsbroker.vdsbroker"),
+    SetMomPolicyParameters("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     // Gluster VDS commands
     CreateGlusterVolume("org.ovirt.engine.core.vdsbroker.gluster"),
     SetGlusterVolumeOption("org.ovirt.engine.core.vdsbroker.gluster"),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
index c7b27bf..0d50dad 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
@@ -167,7 +167,9 @@
                 .addValue("gluster_service", group.supportsGlusterService())
                 .addValue("tunnel_migration", group.isTunnelMigration())
                 .addValue("emulated_machine", group.getEmulatedMachine())
-                .addValue("trusted_service", group.supportsTrustedService());
+                .addValue("trusted_service", group.supportsTrustedService())
+                .addValue("enable_balloon", group.isEnableBallooning());
+
         return parameterSource;
     }
 
@@ -205,6 +207,8 @@
             entity.setTunnelMigration(rs.getBoolean("tunnel_migration"));
             entity.setEmulatedMachine(rs.getString("emulated_machine"));
             entity.setTrustedService(rs.getBoolean("trusted_service"));
+            entity.setEnableBallooning(rs.getBoolean("enable_balloon"));
+
             return entity;
         }
     }
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java
index dd1b521..c97173d 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java
@@ -72,6 +72,9 @@
         if (model.isSetTrustedService()){
             entity.setTrustedService(model.isTrustedService());
         }
+        if (model.getEnableBallooning()) {
+            entity.setEnableBallooning(model.getEnableBallooning());
+        }
         return entity;
     }
 
@@ -104,6 +107,8 @@
         model.setThreadsAsCores(entity.getCountThreadsAsCores());
         model.setTunnelMigration(entity.isTunnelMigration());
         model.setTrustedService(entity.supportsTrustedService());
+        model.setEnableBallooning(entity.isEnableBallooning());
+
         return model;
     }
 
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 e3f6e01..38eb0da 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
@@ -40,6 +40,8 @@
 
     VDSInfoReturnForXmlRpc getVdsStats();
 
+    StatusOnlyReturnForXmlRpc setMOMPolicyParameters(Map<String, Object> 
key_value_store);
+
     StatusOnlyReturnForXmlRpc desktopLogin(String vmId, String domain, String 
user, String password);
 
     StatusOnlyReturnForXmlRpc desktopLogoff(String vmId, String force);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
index ed791a4..c3cc8e4 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
@@ -287,6 +287,9 @@
         }
     }
 
+    // MoM policy tuning
+    public static final String balloonEnabled = "balloonEnabled";
+
     // properties for ServerConnectionListReturnForXmlRpc
     public static final String serverType = "serverType";
     public static final String target = "target";
diff --git 
a/packaging/dbscripts/upgrade/03_03_0400_add_enable_balloon_to_vds_groups.sql 
b/packaging/dbscripts/upgrade/03_03_0400_add_enable_balloon_to_vds_groups.sql
new file mode 100644
index 0000000..765b82e
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_03_0400_add_enable_balloon_to_vds_groups.sql
@@ -0,0 +1 @@
+select fn_db_add_column('vds_groups', 'enable_balloon', 'boolean not null 
default false');
\ No newline at end of file
diff --git a/packaging/dbscripts/vds_groups_sp.sql 
b/packaging/dbscripts/vds_groups_sp.sql
index abf45ae..07077c4 100644
--- a/packaging/dbscripts/vds_groups_sp.sql
+++ b/packaging/dbscripts/vds_groups_sp.sql
@@ -26,16 +26,19 @@
        v_gluster_service BOOLEAN,
        v_tunnel_migration BOOLEAN,
        v_emulated_machine VARCHAR(40),
-       v_trusted_service BOOLEAN)
+       v_trusted_service BOOLEAN,
+       v_enable_balloon BOOLEAN)
 RETURNS VOID
    AS $procedure$
 BEGIN
       INSERT INTO vds_groups(vds_group_id,description, name, cpu_name, 
selection_algorithm, high_utilization, low_utilization,
        cpu_over_commit_duration_minutes, storage_pool_id,  
max_vds_memory_over_commit, count_threads_as_cores, compatibility_version,
-    transparent_hugepages, migrate_on_error, virt_service, gluster_service, 
tunnel_migration, emulated_machine, trusted_service)
+    transparent_hugepages, migrate_on_error, virt_service, gluster_service, 
tunnel_migration, emulated_machine, trusted_service,
+    enable_balloon)
        VALUES(v_vds_group_id,v_description, v_name, v_cpu_name, 
v_selection_algorithm, v_high_utilization, v_low_utilization,
        v_cpu_over_commit_duration_minutes, v_storage_pool_id,  
v_max_vds_memory_over_commit, v_count_threads_as_cores, v_compatibility_version,
-    v_transparent_hugepages, v_migrate_on_error, v_virt_service, 
v_gluster_service, v_tunnel_migration, v_emulated_machine, v_trusted_service);
+    v_transparent_hugepages, v_migrate_on_error, v_virt_service, 
v_gluster_service, v_tunnel_migration, v_emulated_machine, v_trusted_service,
+    v_enable_balloon);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -61,7 +64,8 @@
        v_gluster_service BOOLEAN,
        v_tunnel_migration BOOLEAN,
        v_emulated_machine VARCHAR(40),
-       v_trusted_service BOOLEAN)
+       v_trusted_service BOOLEAN,
+       v_enable_balloon BOOLEAN)
 RETURNS VOID
 
        --The [vds_groups] table doesn't have a timestamp column. Optimistic 
concurrency logic cannot be generated
@@ -77,7 +81,7 @@
       compatibility_version = v_compatibility_version,transparent_hugepages = 
v_transparent_hugepages,
       migrate_on_error = v_migrate_on_error,
       virt_service = v_virt_service, gluster_service = v_gluster_service, 
tunnel_migration = v_tunnel_migration,
-      emulated_machine = v_emulated_machine, trusted_service = 
v_trusted_service
+      emulated_machine = v_emulated_machine, trusted_service = 
v_trusted_service, enable_balloon = v_enable_balloon
       WHERE vds_group_id = v_vds_group_id;
 END; $procedure$
 LANGUAGE plpgsql;


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

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

Reply via email to