Gilad Chaplik has uploaded a new change for review.

Change subject: engine: scheduling: add cluster overbooking
......................................................................

engine: scheduling: add cluster overbooking

Added an option to the user to enable parallel VM schduling for cluster.
by default this feature is hidden from the user (unless
setting config.OptimizeSchedulerAllowOverBookingSupported to true).

Change-Id: If52abf9974ab71b1f8d52ca268dac8dc39b89dc8
Signed-off-by: Gilad Chaplik <gchap...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.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/config/ConfigValues.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
A 
packaging/dbscripts/upgrade/03_03_0880_add_vds_group_scheduling_allow_overbooking.sql
M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
M packaging/dbscripts/vds_groups_sp.sql
M packaging/etc/engine-config/engine-config.properties
15 files changed, 88 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/72/19272/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java
index 70bbe9c..dc5fd53 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java
@@ -173,7 +173,10 @@
             VdsFreeMemoryChecker memoryChecker) {
         clusterLockMap.putIfAbsent(cluster.getId(), new Semaphore(1));
         try {
-            clusterLockMap.get(cluster.getId()).acquire();
+            if (!cluster.isSchedulerAllowOverbooking()
+                    || !Config.<Boolean> 
GetValue(ConfigValues.OptimizeSchedulerAllowOverBookingSupported)) {
+                clusterLockMap.get(cluster.getId()).acquire();
+            }
             List<VDS> vdsList = getVdsDAO()
                     .getAllForVdsGroupWithStatus(cluster.getId(), 
VDSStatus.Up);
             updateInitialHostList(vdsList, hostBlackList, true);
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 48498ca..216845a 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
@@ -78,6 +78,8 @@
 
     private boolean schedulerOptimizeForSpeed;
 
+    private boolean schedulerAllowOverbooking;
+
     public VDSGroup() {
         migrateOnError = MigrateOnErrorOptions.YES;
         name = "";
@@ -275,6 +277,14 @@
         this.schedulerOptimizeForSpeed = schedulerOptimizeForSpeed;
     }
 
+    public boolean isSchedulerAllowOverbooking() {
+        return schedulerAllowOverbooking;
+    }
+
+    public void setSchedulerAllowOverbooking(boolean 
schedulerAllowOverbooking) {
+        this.schedulerAllowOverbooking = schedulerAllowOverbooking;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
@@ -300,6 +310,7 @@
         result = prime * result + (clusterPolicyProperties == null ? 0 : 
clusterPolicyProperties.hashCode());
         result = prime * result + (enableBallooning ? 1231 : 1237);
         result = prime * result + (schedulerOptimizeForSpeed ? 1231 : 1237);
+        result = prime * result + (schedulerAllowOverbooking ? 1231 : 1237);
         return result;
     }
 
@@ -336,6 +347,7 @@
                 && ObjectUtils.objectsEqual(clusterPolicyName, 
other.clusterPolicyName)
                 && ObjectUtils.objectsEqual(clusterPolicyProperties, 
other.clusterPolicyProperties)
                 && enableBallooning == other.enableBallooning
-                && schedulerOptimizeForSpeed == 
other.schedulerOptimizeForSpeed);
+                && schedulerOptimizeForSpeed == other.schedulerOptimizeForSpeed
+                && schedulerAllowOverbooking == 
other.schedulerAllowOverbooking);
     }
 }
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 0e16f75..bd631f5 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
@@ -1517,6 +1517,10 @@
     @DefaultValueAttribute("10")
     OptimizeSchedulerForSpeedPendingRequests(539),
 
+    @TypeConverterAttribute(Boolean.class)
+    @DefaultValueAttribute("false")
+    OptimizeSchedulerAllowOverBookingSupported(540),
+
     Invalid(65535);
 
     private int intValue;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
index 2d91607..ee261e1 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
@@ -106,7 +106,8 @@
     MaxVmNameLengthWindows(ConfigAuthType.User),
     MaxVmNameLengthNonWindows(ConfigAuthType.User),
     AttestationServer,
-    OptimizeSchedulerForSpeedPendingRequests
+    OptimizeSchedulerForSpeedPendingRequests,
+    OptimizeSchedulerAllowOverBookingSupported
     ;
 
     public static enum ConfigAuthType {
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 4045a8e..d2a56b6 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
@@ -169,7 +169,8 @@
                 .addValue("cluster_policy_custom_properties",
                                 
SerializationFactory.getSerializer().serialize(group.getClusterPolicyProperties()))
                 .addValue("enable_balloon", group.isEnableBallooning())
-                .addValue("optimize_for_speed", 
group.isSchedulerOptimizeForSpeed());
+                .addValue("optimize_for_speed", 
group.isSchedulerOptimizeForSpeed())
+                .addValue("allow_overbooking", 
group.isSchedulerAllowOverbooking());
 
         return parameterSource;
     }
@@ -209,6 +210,7 @@
                     
.deserializeOrCreateNew(rs.getString("cluster_policy_custom_properties"), 
LinkedHashMap.class));
             entity.setEnableBallooning(rs.getBoolean("enable_balloon"));
             
entity.setSchedulerOptimizeForSpeed(rs.getBoolean("optimize_for_speed"));
+            
entity.setSchedulerAllowOverbooking(rs.getBoolean("allow_overbooking"));
 
             return entity;
         }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index bb17616..8a171e4 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -3281,4 +3281,9 @@
         return (Integer) 
getConfigValuePreConverted(ConfigurationValues.OptimizeSchedulerForSpeedPendingRequests,
                 getDefaultConfigurationVersion());
     }
+
+    public static boolean getScheudulingAllowOverbookingSupported() {
+        return (Boolean) 
getConfigValuePreConverted(ConfigurationValues.OptimizeSchedulerAllowOverBookingSupported,
+                getDefaultConfigurationVersion());
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
index 460d696..69b0494 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
@@ -370,6 +370,7 @@
         }
 
         
clusterModel.getOptimizeForSpeed().setEntity(cluster.isSchedulerOptimizeForSpeed());
+        
clusterModel.getAllowOverbooking().setEntity(cluster.isSchedulerAllowOverbooking());
 
         AsyncDataProvider.getAllowClusterWithVirtGlusterEnabled(new 
AsyncQuery(this, new INewAsyncCallback() {
             @Override
@@ -640,6 +641,7 @@
         cluster.setClusterPolicyId(((ClusterPolicy) 
model.getClusterPolicy().getSelectedItem()).getId());
         
cluster.setClusterPolicyProperties(KeyValueModel.convertProperties(model.getCustomPropertySheet().getEntity()));
         cluster.setSchedulerOptimizeForSpeed((Boolean) 
model.getOptimizeForSpeed().getEntity());
+        cluster.setSchedulerAllowOverbooking((Boolean) 
model.getAllowOverbooking().getEntity());
 
         model.startProgress(null);
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
index beb0dfc..72f2002 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
@@ -508,6 +508,16 @@
         this.optimizeForSpeed = optimizeForSpeed;
     }
 
+    private EntityModel allowOverbooking;
+
+    public EntityModel getAllowOverbooking() {
+        return allowOverbooking;
+    }
+
+    public void setAllowOverbooking(EntityModel allowOverbooking) {
+        this.allowOverbooking = allowOverbooking;
+    }
+
     private boolean isGeneralTabValid;
 
     public boolean getIsGeneralTabValid()
@@ -836,6 +846,10 @@
         getOptimizeForUtilization().getEntityChangedEvent().addListener(this);
         getOptimizeForSpeed().getEntityChangedEvent().addListener(this);
 
+        setAllowOverbooking(new EntityModel());
+        getAllowOverbooking().setEntity(false);
+        
getAllowOverbooking().setIsAvailable(AsyncDataProvider.getScheudulingAllowOverbookingSupported());
+
         AsyncQuery _asyncQuery = new AsyncQuery();
         _asyncQuery.setModel(this);
         _asyncQuery.asyncCallback = new INewAsyncCallback() {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
index 52f30b9..83065bf 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
@@ -3249,4 +3249,10 @@
     @DefaultStringValue("Scheduler Optimization")
     String schedulerOptimizationPanelLabel();
 
+    @DefaultStringValue("Allow Overbooking")
+    String allowOverbookingLabel();
+
+    @DefaultStringValue("Allows running cluster's scheulding requests in 
parallel, which may cause in " +
+            "overbooking of cluster's resources")
+    String allowSchedulingOverbookingInfo();
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
index daf413f..0ad66dd 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
@@ -256,6 +256,9 @@
     InfoIcon schedulerOptimizationInfoIcon;
 
     @UiField(provided = true)
+    InfoIcon allowOverbookingInfoIcon;
+
+    @UiField(provided = true)
     @Path(value = "optimizeForUtilization.entity")
     @WithElementId
     EntityModelRadioButtonEditor optimizeForUtilizationEditor;
@@ -264,6 +267,11 @@
     @Path(value = "optimizeForSpeed.entity")
     @WithElementId
     EntityModelRadioButtonEditor optimizeForSpeedEditor;
+
+    @UiField(provided = true)
+    @Path(value = "allowOverbooking.entity")
+    @WithElementId
+    EntityModelCheckBoxEditor allowOverbookingEditor;
 
     private final Driver driver = GWT.create(Driver.class);
 
@@ -303,7 +311,7 @@
 
         countThreadsAsCoresEditor.setContentWidgetStyleName(style.fullWidth());
         
enableTrustedServiceEditor.setContentWidgetStyleName(style.fullWidth());
-
+        
allowOverbookingEditor.setContentWidgetStyleName(style.allowOverbookingContentWidget());
     }
 
     private void localize(ApplicationConstants constants) {
@@ -351,6 +359,7 @@
         
schedulerOptimizationPanelTitle.setText(constants.schedulerOptimizationPanelLabel());
         
optimizeForUtilizationEditor.setLabel(constants.optimizeForUtilizationLabel());
         optimizeForSpeedEditor.setLabel(constants.optimizeForSpeedLabel());
+        allowOverbookingEditor.setLabel(constants.allowOverbookingLabel());
     }
 
     private void initRadioButtonEditors() {
@@ -412,6 +421,7 @@
         enableBallooning = new EntityModelCheckBoxEditor(Align.RIGHT);
         enableBallooning.getContentWidgetContainer().setWidth("350px"); 
//$NON-NLS-1$
 
+        allowOverbookingEditor = new EntityModelCheckBoxEditor(Align.RIGHT);
     }
 
     private void initInfoIcons(ApplicationResources resources, 
ApplicationConstants constants, ApplicationTemplates templates)
@@ -420,6 +430,9 @@
 
         cpuThreadsInfo = new InfoIcon(templates.italicFixedWidth("600px", 
constants.clusterPopupCpuThreadsInfo()), resources); //$NON-NLS-1$
         schedulerOptimizationInfoIcon = new 
InfoIcon(SafeHtmlUtils.EMPTY_SAFE_HTML, resources);
+
+        allowOverbookingInfoIcon =
+                new InfoIcon(templates.italicFixedWidth("350px", 
constants.allowSchedulingOverbookingInfo()), resources); //$NON-NLS-1$
     }
 
     private void applyModeCustomizations() {
@@ -509,6 +522,7 @@
                 templates.italicFixedWidth("350px",//$NON-NLS-1$
                 object.getSchedulerOptimizationInfoMessage()).asString()
                         .replaceAll("(\r\n|\n)", "<br />"))); //$NON-NLS-1$ 
//$NON-NLS-2$
+        
allowOverbookingInfoIcon.setVisible(allowOverbookingEditor.isVisible());
     }
 
     private void optimizationForServerFormatter(ClusterModel object) {
@@ -563,6 +577,8 @@
         String fullWidth();
 
         String timeTextBoxEditorWidget();
+
+        String allowOverbookingContentWidget();
     }
 
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
index 3c2ebe7..3d17b27 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
@@ -136,6 +136,9 @@
                margin-top: 10px;
                margin-bottom: 5px;
                }
+               .allowOverbookingContentWidget {
+               width: 100%;
+               }
        </ui:style>
 
        <d:SimpleDialogPanel width="620px" height="560px">
@@ -222,6 +225,10 @@
                                                                        
<e:EntityModelRadioButtonEditor ui:field="optimizeForUtilizationEditor" 
addStyleNames="{style.label}" />
                                                                        
<e:EntityModelRadioButtonEditor ui:field="optimizeForSpeedEditor" 
addStyleNames="{style.label}" />
                                                                </g:FlowPanel>
+                                                               
<g:HorizontalPanel>
+                                                                               
<e:EntityModelCheckBoxEditor ui:field="allowOverbookingEditor"/>
+                                                                               
<d:InfoIcon ui:field="allowOverbookingInfoIcon" 
addStyleNames="{style.panelInfo}" />
+                                                               
</g:HorizontalPanel>
                                                                <g:FlowPanel 
ui:field="additionPropsPanel" addStyleNames="{style.nestedSubsequentPanel}">
                                                                        
<g:Label ui:field="additionPropsPanelTitle" addStyleNames="{style.panelTitle}" 
/>
                                                                        
<e:EntityModelCheckBoxEditor ui:field="enableTrustedServiceEditor" />
diff --git 
a/packaging/dbscripts/upgrade/03_03_0880_add_vds_group_scheduling_allow_overbooking.sql
 
b/packaging/dbscripts/upgrade/03_03_0880_add_vds_group_scheduling_allow_overbooking.sql
new file mode 100644
index 0000000..05ae7b4
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_03_0880_add_vds_group_scheduling_allow_overbooking.sql
@@ -0,0 +1 @@
+select fn_db_add_column('vds_groups', 'allow_overbooking', 'boolean not null 
default false');
diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 
b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
index b219b7d..1764684 100644
--- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
+++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
@@ -376,6 +376,7 @@
 select fn_db_add_config_value('MTUOverrideSupported','true','3.2');
 select fn_db_add_config_value('MTUOverrideSupported','true','3.3');
 select 
fn_db_add_config_value('OptimizeSchedulerForSpeedPendingRequests','10','general');
+select 
fn_db_add_config_value('OptimizeSchedulerAllowOverBookingSupported','false','general');
 --Handling Organization Name
 select fn_db_add_config_value('OrganizationName','oVirt','general');
 select fn_db_add_config_value('OriginType','OVIRT','general');
diff --git a/packaging/dbscripts/vds_groups_sp.sql 
b/packaging/dbscripts/vds_groups_sp.sql
index 1981cea..0d3f850 100644
--- a/packaging/dbscripts/vds_groups_sp.sql
+++ b/packaging/dbscripts/vds_groups_sp.sql
@@ -27,15 +27,16 @@
         v_cluster_policy_id UUID,
         v_cluster_policy_custom_properties text,
        v_enable_balloon BOOLEAN,
-       v_optimize_for_speed BOOLEAN)
+       v_optimize_for_speed BOOLEAN,
+       v_allow_overbooking BOOLEAN)
 RETURNS VOID
    AS $procedure$
 BEGIN
       INSERT INTO vds_groups(vds_group_id,description, name, 
free_text_comment, cpu_name, 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, 
cluster_policy_id,
-        cluster_policy_custom_properties, enable_balloon, optimize_for_speed)
+        cluster_policy_custom_properties, enable_balloon, optimize_for_speed, 
allow_overbooking)
        VALUES(v_vds_group_id,v_description, v_name, v_free_text_comment, 
v_cpu_name, 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_cluster_policy_id, v_cluster_policy_custom_properties, v_enable_balloon, 
v_optimize_for_speed);
+    v_transparent_hugepages, v_migrate_on_error, v_virt_service, 
v_gluster_service, v_tunnel_migration, v_emulated_machine, v_trusted_service, 
v_cluster_policy_id, v_cluster_policy_custom_properties, v_enable_balloon, 
v_optimize_for_speed, v_allow_overbooking);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -62,7 +63,8 @@
         v_cluster_policy_id UUID,
         v_cluster_policy_custom_properties text,
        v_enable_balloon BOOLEAN,
-       v_optimize_for_speed BOOLEAN)
+       v_optimize_for_speed BOOLEAN,
+       v_allow_overbooking BOOLEAN)
 RETURNS VOID
 
        --The [vds_groups] table doesn't have a timestamp column. Optimistic 
concurrency logic cannot be generated
@@ -78,7 +80,7 @@
       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, cluster_policy_id = v_cluster_policy_id,
       cluster_policy_custom_properties = v_cluster_policy_custom_properties, 
enable_balloon = v_enable_balloon,
-      optimize_for_speed = v_optimize_for_speed
+      optimize_for_speed = v_optimize_for_speed, allow_overbooking = 
v_allow_overbooking
       WHERE vds_group_id = v_vds_group_id;
 END; $procedure$
 LANGUAGE plpgsql;
diff --git a/packaging/etc/engine-config/engine-config.properties 
b/packaging/etc/engine-config/engine-config.properties
index 9a2401d..84232db 100644
--- a/packaging/etc/engine-config/engine-config.properties
+++ b/packaging/etc/engine-config/engine-config.properties
@@ -73,6 +73,8 @@
 MaxSchedulerWeight.type=Integer
 OptimizeSchedulerForSpeedPendingRequests.description="Skip Host weights if 
there are more than X requests pending for scheduling"
 OptimizeSchedulerForSpeedPendingRequests.type=Integer
+OptimizeSchedulerAllowOverBookingSupported.description="Disable Scheduling 
synchronization, which could result in overbooking"
+OptimizeSchedulerAllowOverBookingSupported.type=Boolean
 MaxStorageVdsDelayCheckSec.description="Max delay for check of domain in 
seconds"
 MaxStorageVdsDelayCheckSec.type=Integer
 MaxStorageVdsTimeoutCheckSec.description="Max timeout for last check of domain 
in seconds"


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

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

Reply via email to