Dudi Maroshi has uploaded a new change for review.

Change subject: engine: Add KSM policy to NUMA hosts
......................................................................

engine: Add KSM policy to NUMA hosts

1. Update MomPolicyVDSparameters and with new ksmMergeAcrossNodes field
2. Update UpdateVdsGroupCommand to distribute the KSM policy change to
active hosts
with concurrent exectuor
3. Refactor SetMOMPolicyParameters VDSCommand, appended new field,
refactor all calls

Change-Id: I9a4094ea2cd517b6bc4d85d4b9c5b9dc8117748b
Bug-Url: https://bugzilla.redhat.com/840114
Signed-off-by: Dudi Maroshi <d...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMomPolicyCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsGroupOperationCommandBase.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/MomPolicyVDSParameters.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/common/qualifiers/MomPolicyUpdate.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetMOMPolicyParametersVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
D packaging/dbscripts/upgrade/03_06_1570_add_ksm_with_numa_awareness.sql
11 files changed, 126 insertions(+), 24 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/70/42370/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 75fe4e4..1f23d90 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
@@ -306,7 +306,10 @@
         if (cluster.getCompatibilityVersion().compareTo(Version.v3_3) >= 0) {
             try {
                 returnValue = 
runVdsCommand(VDSCommandType.SetMOMPolicyParameters,
-                        new MomPolicyVDSParameters(vds, 
cluster.isEnableBallooning(), cluster.isEnableKsm())
+                                new MomPolicyVDSParameters(vds,
+                                        cluster.isEnableBallooning(),
+                                        cluster.isEnableKsm(),
+                                        cluster.isKsmMergeAcrossNumaNodes())
                                                 );
             } catch (VdcBLLException e) {
                 log.error("Could not update MoM policy on host '{}'", 
vds.getName());
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
index a76ff06..ea8e8a6 100644
--- 
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
@@ -27,7 +27,7 @@
         try {
             succeeded = runVdsCommand(VDSCommandType.SetMOMPolicyParameters,
                     new MomPolicyVDSParameters(getVds(), 
getVdsGroup().isEnableBallooning(),
-                                                getVdsGroup().isEnableKsm())
+                            getVdsGroup().isEnableKsm(), 
getVdsGroup().isKsmMergeAcrossNumaNodes())
                                               ).getSucceeded();
         } catch (VdcBLLException e) {
             log.error("Could not update MoM policy on host '{}': {}",
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
index e26fef4..3223c19 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
@@ -8,6 +8,7 @@
 import java.util.Objects;
 import java.util.Set;
 
+import javax.enterprise.event.Event;
 import javax.inject.Inject;
 
 import org.apache.commons.collections.CollectionUtils;
@@ -42,6 +43,7 @@
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.gluster.GlusterFeatureSupported;
+import org.ovirt.engine.core.common.qualifiers.MomPolicyUpdate;
 import org.ovirt.engine.core.common.utils.ListUtils;
 import org.ovirt.engine.core.common.validation.group.UpdateEntity;
 import org.ovirt.engine.core.compat.Guid;
@@ -62,6 +64,10 @@
 
     @Inject
     private ClusterFeatureDao clusterFeatureDao;
+
+    @Inject
+    @MomPolicyUpdate
+    private Event<VDSGroup> momPolicyUpdatedEvent;
 
     private List<VDS> allForVdsGroup;
     private VDSGroup oldGroup;
@@ -130,6 +136,9 @@
             getParameters().getVdsGroup().setDetectEmulatedMachine(true);
         }
 
+        boolean isKsmPolicyChanged = 
(getVdsGroup().isKsmMergeAcrossNumaNodes() != 
getPrevVdsGroup().isKsmMergeAcrossNumaNodes()) ||
+                (getVdsGroup().isEnableKsm() != 
getPrevVdsGroup().isEnableKsm());
+
         getVdsGroupDAO().update(getParameters().getVdsGroup());
         addOrUpdateAddtionalClusterFeatures();
 
@@ -150,6 +159,9 @@
 
         alertIfFencingDisabled();
 
+        if (isKsmPolicyChanged) {
+            momPolicyUpdatedEvent.fire(getVdsGroup());
+        }
         setSucceeded(true);
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
index 353c81c..55e4dfc 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
@@ -4,6 +4,7 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Callable;
@@ -46,11 +47,14 @@
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
 import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VmDynamic;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
 import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus;
 import org.ovirt.engine.core.common.businessentities.qos.CpuQos;
+import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.eventqueue.Event;
@@ -58,15 +62,19 @@
 import org.ovirt.engine.core.common.eventqueue.EventResult;
 import org.ovirt.engine.core.common.eventqueue.EventType;
 import org.ovirt.engine.core.common.locks.LockingGroup;
+import org.ovirt.engine.core.common.qualifiers.MomPolicyUpdate;
 import org.ovirt.engine.core.common.utils.Pair;
 import 
org.ovirt.engine.core.common.vdscommands.DisconnectStoragePoolVDSCommandParameters;
+import org.ovirt.engine.core.common.vdscommands.MomPolicyVDSParameters;
 import org.ovirt.engine.core.common.vdscommands.UpdateVmPolicyVDSParams;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.TransactionScopeOption;
+import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
+import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.di.Injector;
 import org.ovirt.engine.core.utils.linq.Function;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
@@ -90,7 +98,8 @@
     private AvailableUpdatesFinder availableUpdatesFinder;
     @Inject
     AutoStartVmsRunner autoStartVmsRunner;
-
+    @Inject
+    private VdsDAO vdsDAO;
 
     private static final Logger log = 
LoggerFactory.getLogger(VdsEventListener.class);
 
@@ -142,11 +151,12 @@
 
     /**
      * The following method will clear a cache for problematic domains, which 
were reported by vds
+     *
      * @param vds
      */
     private void clearDomainCache(final VDS vds) {
         eventQueue.submitEventSync(new Event(vds.getStoragePoolId(),
-                    null, vds.getId(), EventType.VDSCLEARCACHE, ""),
+                null, vds.getId(), EventType.VDSCLEARCACHE, ""),
                 new Callable<EventResult>() {
                     @Override
                     public EventResult call() {
@@ -155,7 +165,6 @@
                     }
                 });
     }
-
 
     @Override
     public EventResult storageDomainNotOperational(Guid storageDomainId, Guid 
storagePoolId) {
@@ -239,7 +248,7 @@
             Map<String, String> customLogValues) {
         ExecutionHandler.updateSpecificActionJobCompleted(vdsId, 
VdcActionType.MaintenanceVds, false);
         SetNonOperationalVdsParameters tempVar =
-            new SetNonOperationalVdsParameters(vdsId, reason, customLogValues);
+                new SetNonOperationalVdsParameters(vdsId, reason, 
customLogValues);
         tempVar.setStorageDomainId(domainId);
         tempVar.setShouldBeLogged(logCommand);
         
Backend.getInstance().runInternalAction(VdcActionType.SetNonOperationalVds,
@@ -268,7 +277,8 @@
     }
 
     private void moveBricksToUnknown(final VDS vds) {
-        List<GlusterBrickEntity> brickEntities = 
DbFacade.getInstance().getGlusterBrickDao().getGlusterVolumeBricksByServerId(vds.getId());
+        List<GlusterBrickEntity> brickEntities =
+                
DbFacade.getInstance().getGlusterBrickDao().getGlusterVolumeBricksByServerId(vds.getId());
         for (GlusterBrickEntity brick : brickEntities) {
             if (brick.getStatus() == GlusterStatus.UP) {
                 brick.setStatus(GlusterStatus.UNKNOWN);
@@ -310,11 +320,13 @@
     @Override
     public boolean connectHostToDomainsInActiveOrUnknownStatus(VDS vds) {
         ConnectHostToStoragePoolServersParameters params = new 
ConnectHostToStoragePoolServersParameters(vds, false);
-        return 
Backend.getInstance().runInternalAction(VdcActionType.ConnectHostToStoragePoolServers,
 params).getSucceeded();
+        return Backend.getInstance()
+                
.runInternalAction(VdcActionType.ConnectHostToStoragePoolServers, params)
+                .getSucceeded();
     }
 
-
-    private List<VdcActionParametersBase> 
createMigrateVmToServerParametersList(List<VmStatic> vmsToMigrate, final VDS 
vds) {
+    private List<VdcActionParametersBase> 
createMigrateVmToServerParametersList(List<VmStatic> vmsToMigrate,
+            final VDS vds) {
         return LinqUtils.transformToList(vmsToMigrate,
                 new Function<VmStatic, VdcActionParametersBase>() {
                     @Override
@@ -374,13 +386,13 @@
 
     @Override
     public void storagePoolStatusChange(Guid storagePoolId, StoragePoolStatus 
status, AuditLogType auditLogType,
-                                        VdcBllErrors error) {
+            VdcBllErrors error) {
         storagePoolStatusChange(storagePoolId, status, auditLogType, error, 
null);
     }
 
     @Override
     public void storagePoolStatusChange(Guid storagePoolId, StoragePoolStatus 
status, AuditLogType auditLogType,
-                                        VdcBllErrors error, 
TransactionScopeOption transactionScopeOption) {
+            VdcBllErrors error, TransactionScopeOption transactionScopeOption) 
{
         SetStoragePoolStatusParameters tempVar =
                 new SetStoragePoolStatusParameters(storagePoolId, status, 
auditLogType);
         tempVar.setError(error);
@@ -397,7 +409,7 @@
 
     @Override
     public void runFailedAutoStartVMs(List<Guid> vmIds) {
-        for (Guid vmId: vmIds) {
+        for (Guid vmId : vmIds) {
             // Alert that the virtual machine failed:
             AuditLogableBase event = new AuditLogableBase();
             event.setVmId(vmId);
@@ -414,7 +426,10 @@
     public void addExternallyManagedVms(List<VmStatic> externalVmList) {
         for (VmStatic currVm : externalVmList) {
             AddVmParameters params = new AddVmParameters(currVm);
-            VdcReturnValueBase returnValue = 
Backend.getInstance().runInternalAction(VdcActionType.AddVmFromScratch, params, 
ExecutionHandler.createInternalJobContext());
+            VdcReturnValueBase returnValue =
+                    
Backend.getInstance().runInternalAction(VdcActionType.AddVmFromScratch,
+                            params,
+                            ExecutionHandler.createInternalJobContext());
             if (!returnValue.getSucceeded()) {
                 log.debug("Failed adding Externally managed VM '{}'", 
currVm.getName());
             }
@@ -485,7 +500,8 @@
 
     public void onError(@Observes final VDSNetworkException vdsException) {
         ThreadPoolUtil.execute(new Runnable() {
-            @Override public void run() {
+            @Override
+            public void run() {
                 resourceManagerProvider.get().GetVdsManager(
                         
vdsException.getVdsError().getVdsId()).handleNetworkException(vdsException);
             }
@@ -510,4 +526,35 @@
     public boolean isUpdateAvailable(VDS host) {
         return availableUpdatesFinder.isUpdateAvailable(host);
     }
+
+    // TODO asynch event handler - design infra code to allow async events in 
segregated thread
+    public void onMomPolicyChange(@Observes @MomPolicyUpdate final VDSGroup 
cluster) {
+        if (cluster == null || 
cluster.getCompatibilityVersion().compareTo(Version.v3_4) < 0)
+            return;
+        List<VDS> activeHostsInCluster =
+                vdsDAO.getAllForVdsGroupWithStatus(cluster.getId(), 
VDSStatus.Up);
+        // collect all Active hosts into a callable list
+        List<Callable<Object>> callables = new LinkedList<>();
+        for (final VDS vds : activeHostsInCluster) {
+            callables.add(new Callable<Object>() {
+                @Override
+                public Object call() {
+                    try {
+                        
resourceManagerProvider.get().runVdsCommand(VDSCommandType.SetMOMPolicyParameters,
+                                new MomPolicyVDSParameters(vds,
+                                        cluster.isEnableBallooning(),
+                                        cluster.isEnableKsm(),
+                                        cluster.isKsmMergeAcrossNumaNodes())
+                                );
+                    } catch (VdcBLLException e) {
+                        log.error("Could not update MoM policy on host '{}'", 
vds.getName());
+                    }
+                    return null;
+                }
+            });
+        }
+        // run all VDSCommands concurrently with executor
+        if (callables.size() > 0)
+            ThreadPoolUtil.invokeAll(callables);
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsGroupOperationCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsGroupOperationCommandBase.java
index cfbe4f2..c95b160 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsGroupOperationCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsGroupOperationCommandBase.java
@@ -48,6 +48,15 @@
         return getParameters().getVdsGroup();
     }
 
+    /**
+     * Get the cluster object as it is in database before update
+     *
+     * @return Current cluster object before database update, or null if not 
existing
+     */
+    public VDSGroup getPrevVdsGroup() {
+        return super.getVdsGroup();
+    }
+
     @Override
     protected void setActionMessageParameters() {
         addCanDoActionMessage(VdcBllMessages.VAR__TYPE__CLUSTER);
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 af5c059..7e9272d 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
@@ -540,9 +540,9 @@
                 && ObjectUtils.objectsEqual(autoConverge, other.autoConverge)
                 && ObjectUtils.objectsEqual(migrateCompressed, 
other.migrateCompressed)
                 && ObjectUtils.objectsEqual(glusterTunedProfile, 
other.glusterTunedProfile)
-                && ksmMergeAcrossNumaNodes == other.ksmMergeAcrossNumaNodes
                 && ObjectUtils.objectsEqual(maintenanceReasonRequired, 
other.maintenanceReasonRequired)
-                && ObjectUtils.objectsEqual(addtionalFeaturesSupported, 
other.addtionalFeaturesSupported);
+                && ObjectUtils.objectsEqual(addtionalFeaturesSupported, 
other.addtionalFeaturesSupported)
+                && ksmMergeAcrossNumaNodes == other.ksmMergeAcrossNumaNodes;
     }
 
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MomPolicyVDSParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MomPolicyVDSParameters.java
index 1b2b6c7..f093338 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MomPolicyVDSParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MomPolicyVDSParameters.java
@@ -8,14 +8,19 @@
 public class MomPolicyVDSParameters extends VdsIdVDSCommandParametersBase {
     private boolean enableBalloon;
     private boolean enableKsm;
-
-    public MomPolicyVDSParameters(VDS vds, boolean enableBalloon, boolean 
enableKsm) {
-        super(vds.getId());
-        this.enableBalloon = enableBalloon;
-        this.enableKsm = enableKsm;
-    }
+    private boolean ksmMergeAcrossNumaNodes;
 
     public MomPolicyVDSParameters() {
+    }
+
+    public MomPolicyVDSParameters(VDS vds,
+            boolean enableBallooning,
+            boolean enableKsm,
+            boolean ksmMergeAcrossNumaNodes) {
+        super(vds.getId());
+        this.enableBalloon = enableBallooning;
+        this.enableKsm = enableKsm;
+        this.ksmMergeAcrossNumaNodes = ksmMergeAcrossNumaNodes;
     }
 
     public boolean isEnableBalloon() {
@@ -33,4 +38,12 @@
     public void setEnableKsm(boolean enableKsm) {
         this.enableKsm = enableKsm;
     }
+
+    public boolean isKsmMergeAcrossNumaNodes() {
+        return ksmMergeAcrossNumaNodes;
+    }
+
+    public void setKsmMergeAcrossNumaNodes(boolean ksmMergeAcrossNumaNodes) {
+        this.ksmMergeAcrossNumaNodes = ksmMergeAcrossNumaNodes;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/common/qualifiers/MomPolicyUpdate.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/common/qualifiers/MomPolicyUpdate.java
new file mode 100644
index 0000000..921fa3c
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/common/qualifiers/MomPolicyUpdate.java
@@ -0,0 +1,17 @@
+package org.ovirt.engine.core.common.qualifiers;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+@Retention(RUNTIME)
+@Target({TYPE, METHOD, FIELD, PARAMETER})
+public @interface MomPolicyUpdate {
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetMOMPolicyParametersVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetMOMPolicyParametersVDSCommand.java
index 7e9123b..c83ec6a 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetMOMPolicyParametersVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetMOMPolicyParametersVDSCommand.java
@@ -28,6 +28,7 @@
         Map<String, Object> deviceStruct = new HashMap<>();
         deviceStruct.put(VdsProperties.balloonEnabled, 
getParameters().isEnableBalloon());
         deviceStruct.put(VdsProperties.ksmEnabled, 
getParameters().isEnableKsm());
+        deviceStruct.put(VdsProperties.ksmMergeAcrossNodes, 
getParameters().isKsmMergeAcrossNumaNodes());
         return deviceStruct;
     }
 }
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 6049c64..ef27b04 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
@@ -468,6 +468,7 @@
     // MoM policy tuning
     public static final String balloonEnabled = "balloonEnabled";
     public static final String ksmEnabled = "ksmEnabled";
+    public static final String ksmMergeAcrossNodes = "ksmMergeAcrossNodes";
 
     // properties for ServerConnectionListReturnForXmlRpc
     public static final String serverType = "serverType";
diff --git 
a/packaging/dbscripts/upgrade/03_06_1570_add_ksm_with_numa_awareness.sql 
b/packaging/dbscripts/upgrade/03_06_1570_add_ksm_with_numa_awareness.sql
deleted file mode 100644
index 98565de..0000000
--- a/packaging/dbscripts/upgrade/03_06_1570_add_ksm_with_numa_awareness.sql
+++ /dev/null
@@ -1 +0,0 @@
-select fn_db_add_column('vds_groups', 'ksm_merge_across_nodes', 'boolean 
default TRUE NULL');
\ No newline at end of file


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

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

Reply via email to