Gilad Chaplik has uploaded a new change for review.

Change subject: core: RunVmCommand.canDoAction clean-up (11)
......................................................................

core: RunVmCommand.canDoAction clean-up (11)

Handle stateless vm.

Change-Id: Ie887a05e17dd6a59b4e5d2df83a9aa7e357526dc
Signed-off-by: Gilad Chaplik <gchap...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
6 files changed, 182 insertions(+), 150 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/05/13405/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
index f6acd1c..8f91e85 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
@@ -528,8 +528,8 @@
 
             // Clear the first user:
             getVm().setConsoleUserId(null);
-
-            
getParameters().setRunAsStateless(getVmRunHandler().shouldVmRunAsStateless(getParameters(),
 getVm()));
+            
getParameters().setRunAsStateless(getParameters().getRunAsStateless() != null ? 
getParameters().getRunAsStateless()
+                    : getVm().isStateless());
 
             getVm().setDisplayType(getParameters().getUseVnc() == null ?
                     getVm().getDefaultDisplayType() :
@@ -699,6 +699,10 @@
                                     getParameters().getFloppyPath())) &&
                             
validate(getRunVmValidator().vmDuringInitialization(vm)) &&
                             getRunVmValidator().validateVdsStatus(vm, 
messages) &&
+                            
validate(getRunVmValidator().validateStatelessVm(vm,
+                                    vmDisks,
+                                    getParameters().getRunAsStateless()))
+                            &&
                             canRunVm(vm) &&
                             validateNetworkInterfaces();
             if (!canDoAction) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
index 4206664..7e5f110 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
@@ -274,7 +274,8 @@
                 false,
                 fetchStoragePool(vm.getStoragePoolId()),
                 runVmParams.getDiskPath(),
-                runVmParams.getFloppyPath())
+                runVmParams.getFloppyPath(),
+                runVmParams.getRunAsStateless())
                 &&
                 VmRunHandler.getInstance().canRunVm(vm,
                         messages,
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
index f1ccf73..008ff83 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
@@ -2,14 +2,10 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
 
 import org.ovirt.engine.core.bll.interfaces.BackendInternal;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
-import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
 import org.ovirt.engine.core.common.VdcActionUtils;
 import org.ovirt.engine.core.common.action.RunVmParams;
 import org.ovirt.engine.core.common.action.VdcActionType;
@@ -19,8 +15,6 @@
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.VM;
-import org.ovirt.engine.core.common.config.Config;
-import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
@@ -53,22 +47,6 @@
 
         List<Disk> vmDisks = getDiskDao().getAllForVm(vm.getId(), true);
         if (retValue) {
-            boolean isStatelessVm = shouldVmRunAsStateless(runParams, vm);
-
-            if (retValue && isStatelessVm && 
!snapshotsValidator.vmNotInPreview(vm.getId()).isValid()) {
-                retValue = false;
-                
message.add(VdcBllMessages.VM_CANNOT_RUN_STATELESS_WHILE_IN_PREVIEW.toString());
-            }
-
-            // if the VM itself is stateless or run once as stateless
-            if (retValue && isStatelessVm && vm.isAutoStartup()) {
-                retValue = false;
-                
message.add(VdcBllMessages.VM_CANNOT_RUN_STATELESS_HA.toString());
-            }
-
-            if (retValue && isStatelessVm && !hasSpaceForSnapshots(vm, 
message)) {
-                return false;
-            }
         }
 
         retValue = retValue == false ? retValue : 
vdsSelector.canFindVdsToRunOn(message, false);
@@ -89,59 +67,6 @@
         return IsoDomainListSyncronizer.getInstance();
     }
 
-    /**
-     * check that we can create snapshots for all disks
-     *
-     * @param vm
-     * @return true if all storage domains have enough space to create 
snapshots for this VM plugged disks
-     */
-    public boolean hasSpaceForSnapshots(VM vm, ArrayList<String> message) {
-        Integer minSnapshotSize = Config.<Integer> 
GetValue(ConfigValues.InitStorageSparseSizeInGB);
-        for (Entry<StorageDomain, Integer> e : 
mapStorageDomainsToNumOfDisks(vm).entrySet()) {
-            if (!destinationHasSpace(e.getKey(), minSnapshotSize * 
e.getValue(), message)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private boolean destinationHasSpace(StorageDomain storageDomain, long 
sizeRequested, ArrayList<String> message) {
-        return validate(new 
StorageDomainValidator(storageDomain).isDomainHasSpaceForRequest(sizeRequested),
 message);
-    }
-
-    protected boolean validate(ValidationResult validationResult, 
ArrayList<String> message) {
-        if (!validationResult.isValid()) {
-            message.add(validationResult.getMessage().name());
-            if (validationResult.getVariableReplacements() != null) {
-                for (String variableReplacement : 
validationResult.getVariableReplacements()) {
-                    message.add(variableReplacement);
-                }
-            }
-        }
-        return validationResult.isValid();
-    }
-
-    /**
-     * map the VM number of pluggable and snapable disks from their domain.
-     *
-     * @param vm
-     * @return
-     */
-    public Map<StorageDomain, Integer> mapStorageDomainsToNumOfDisks(VM vm) {
-        Map<StorageDomain, Integer> map = new HashMap<StorageDomain, 
Integer>();
-        for (Disk disk : getDiskDao().getAllForVm(vm.getId(), true)) {
-            if (disk.isAllowSnapshot()) {
-                for (StorageDomain domain : 
getStorageDomainDAO().getAllStorageDomainsByImageId(((DiskImage) 
disk).getImageId())) {
-                    map.put(domain, map.containsKey(domain) ? 
Integer.valueOf(map.get(domain) + 1) : Integer.valueOf(1));
-                }
-            }
-        }
-        return map;
-    }
-
-    /**
-     * Check isValid, storageDomain and diskSpace only if VM is not HA VM
-     */
     protected boolean performImageChecksForRunningVm
             (VM vm, List<String> message, RunVmParams runParams, 
List<DiskImage> vmDisks) {
         return ImagesHandler.PerformImagesChecks(message,
@@ -174,13 +99,6 @@
             }
         }
         return isoGuid;
-    }
-
-    public boolean shouldVmRunAsStateless(RunVmParams param, VM vm) {
-        if (param.getRunAsStateless() != null) {
-            return param.getRunAsStateless();
-        }
-        return vm.isStateless();
     }
 
     protected BackendInternal getBackend() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java
index d576368..5eb81df 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java
@@ -1,6 +1,9 @@
 package org.ovirt.engine.core.bll.validator;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.Backend;
@@ -16,11 +19,14 @@
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.ImageType;
 import org.ovirt.engine.core.common.businessentities.RepoFileMetaData;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
+import org.ovirt.engine.core.common.config.Config;
+import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.queries.GetImagesListParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
@@ -29,6 +35,7 @@
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.StorageDomainDAO;
 import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao;
 import org.ovirt.engine.core.utils.vmproperties.VmPropertiesUtils;
@@ -175,16 +182,82 @@
         return true;
     }
 
-    protected BackendInternal getBackend() {
-        return Backend.getInstance();
+    public ValidationResult validateStatelessVm(VM vm, List<Disk> plugDisks, 
Boolean stateless) {
+        boolean isStatelessVm = stateless != null ? stateless : 
vm.isStateless();
+        if (!isStatelessVm) {
+            return ValidationResult.VALID;
+        }
+
+        ValidationResult previewValidation = 
getSnapshotValidator().vmNotInPreview(vm.getId());
+        if (!previewValidation.isValid()) {
+            return previewValidation;
+        }
+
+        // if the VM itself is stateless or run once as stateless
+        if (vm.isAutoStartup()) {
+            return new 
ValidationResult(VdcBllMessages.VM_CANNOT_RUN_STATELESS_HA);
+        }
+
+        ValidationResult hasSpaceValidation = hasSpaceForSnapshots(vm, 
plugDisks);
+        if (!hasSpaceValidation.isValid()) {
+            return hasSpaceValidation;
+        }
+        return ValidationResult.VALID;
+    }
+
+    protected SnapshotsValidator getSnapshotValidator() {
+        return new SnapshotsValidator();
+    }
+
+    /**
+     * check that we can create snapshots for all disks
+     * @param vm
+     * @return true if all storage domains have enough space to create 
snapshots for this VM plugged disks
+     */
+    public ValidationResult hasSpaceForSnapshots(VM vm, List<Disk> plugDisks) {
+        Integer minSnapshotSize = Config.<Integer> 
GetValue(ConfigValues.InitStorageSparseSizeInGB);
+        Map<StorageDomain, Integer> mapStorageDomainsToNumOfDisks = 
mapStorageDomainsToNumOfDisks(vm, plugDisks);
+        for (Entry<StorageDomain, Integer> e : 
mapStorageDomainsToNumOfDisks.entrySet()) {
+            ValidationResult validationResult =
+                    new 
StorageDomainValidator(e.getKey()).isDomainHasSpaceForRequest(minSnapshotSize * 
e.getValue());
+            if (!validationResult.isValid()) {
+                return validationResult;
+            }
+        }
+        return ValidationResult.VALID;
+    }
+
+    /**
+     * map the VM number of pluggable and snapable disks from their domain.
+     * @param vm
+     * @return
+     */
+    public Map<StorageDomain, Integer> mapStorageDomainsToNumOfDisks(VM vm, 
List<Disk> plugDisks) {
+        Map<StorageDomain, Integer> map = new HashMap<StorageDomain, 
Integer>();
+        for (Disk disk : plugDisks) {
+            if (disk.isAllowSnapshot()) {
+                for (StorageDomain domain : 
getStorageDomainDAO().getAllStorageDomainsByImageId(((DiskImage) 
disk).getImageId())) {
+                    map.put(domain, map.containsKey(domain) ? 
Integer.valueOf(map.get(domain) + 1) : Integer.valueOf(1));
+                }
+            }
+        }
+        return map;
     }
 
     protected VdsDAO getVdsDao() {
         return DbFacade.getInstance().getVdsDao();
     }
 
+    protected BackendInternal getBackend() {
+        return Backend.getInstance();
+    }
+
     protected VmNetworkInterfaceDao getVmNetworkInterfaceDao() {
         return DbFacade.getInstance().getVmNetworkInterfaceDao();
+    }
+
+    protected StorageDomainDAO getStorageDomainDAO() {
+        return DbFacade.getInstance().getStorageDomainDao();
     }
 
     protected IsoDomainListSyncronizer getIsoDomainListSyncronizer() {
@@ -204,7 +277,8 @@
             boolean isInternalExecution,
             storage_pool storagePool,
             String diskPath,
-            String floppyPath) {
+            String floppyPath,
+            Boolean runAsStateless) {
         if (!validateVmProperties(vm, messages)) {
             return false;
         }
@@ -218,7 +292,7 @@
             messages.add(result.getMessage().toString());
             return false;
         }
-        result = new SnapshotsValidator().vmNotDuringSnapshot(vm.getId());
+        result = getSnapshotValidator().vmNotDuringSnapshot(vm.getId());
         if (!result.isValid()) {
             messages.add(result.getMessage().toString());
             return false;
@@ -246,6 +320,11 @@
         if (!validateVdsStatus(vm, messages)) {
             return false;
         }
+        result = validateStatelessVm(vm, vmDisks, runAsStateless);
+        if (!result.isValid()) {
+            messages.add(result.getMessage().toString());
+            return false;
+        }
 
         return true;
     }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
index 923114a..d2812a7 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
@@ -352,66 +352,6 @@
         
assertTrue(command.getReturnValue().getCanDoActionMessages().isEmpty());
     }
 
-    private void canRunStatelessVmTest(boolean autoStartUp,
-            boolean isVmStateless,
-            Boolean isStatelessParam,
-            boolean shouldPass) {
-        final ArrayList<Disk> disks = new ArrayList<Disk>();
-        final DiskImage diskImage = createImage();
-        disks.add(diskImage);
-
-        final VdsSelector vdsSelector = mock(VdsSelector.class);
-        when(vdsSelector.canFindVdsToRunOn(anyListOf(String.class), 
anyBoolean())).thenReturn(true);
-        doReturn(vdsSelector).when(command).getVdsSelector();
-
-        VDSReturnValue vdsReturnValue = new VDSReturnValue();
-        vdsReturnValue.setReturnValue(false);
-        
when(vdsBrokerFrontend.RunVdsCommand(eq(VDSCommandType.IsVmDuringInitiating), 
any(VDSParametersBase.class))).thenReturn(vdsReturnValue);
-        initDAOMocks(disks);
-
-        final VM vm = new VM();
-        // set stateless and HA
-        vm.setStateless(isVmStateless);
-        vm.setAutoStartup(autoStartUp);
-
-        command.getParameters().setRunAsStateless(isStatelessParam);
-        boolean canRunVm = command.canRunVm(vm);
-
-        final List<String> messages = 
command.getReturnValue().getCanDoActionMessages();
-        assertEquals(shouldPass, canRunVm);
-        assertEquals(shouldPass, 
!messages.contains("VM_CANNOT_RUN_STATELESS_HA"));
-    }
-
-    @Test
-    public void canRunVmFailStatelessWhenVmHA() {
-        canRunStatelessVmTest(true, false, Boolean.TRUE, false);
-    }
-
-    @Test
-    public void canRunVmPassStatelessWhenVmHAandStatelessFalse() {
-        canRunStatelessVmTest(true, true, Boolean.FALSE, true);
-    }
-
-    @Test
-    public void canRunVmFailStatelessWhenVmHAwithNullStatelessParam() {
-        canRunStatelessVmTest(true, true, null, false);
-    }
-
-    @Test
-    public void canRunVmPassStatelessWhenVmHAwithNullStatelessParam() {
-        canRunStatelessVmTest(true, false, null, true);
-    }
-
-    @Test
-    public void canRunVmPassStatelessWhenVmHAwithNegativeStatelessParam() {
-        canRunStatelessVmTest(true, false, Boolean.FALSE, true);
-    }
-
-    @Test
-    public void canRunVmPassStatelessWhenVmNotHAwithNegativeStatelessParam() {
-        canRunStatelessVmTest(false, false, Boolean.TRUE, true);
-    }
-
     /**
      * @param disks
      * @param guid
@@ -452,6 +392,7 @@
         when(runVmValidator.validateIsoPath(anyBoolean(), any(Guid.class), 
any(String.class), any(String.class))).thenReturn(ValidationResult.VALID);
         
when(runVmValidator.vmDuringInitialization(any(VM.class))).thenReturn(ValidationResult.VALID);
         when(runVmValidator.validateVdsStatus(any(VM.class), 
Matchers.anyListOf(String.class))).thenReturn(true);
+        when(runVmValidator.validateStatelessVm(any(VM.class), 
Matchers.anyListOf(Disk.class), 
anyBoolean())).thenReturn(ValidationResult.VALID);
         doReturn(runVmValidator).when(command).getRunVmValidator();
         return runVmValidator;
     }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
index 0a0f3ce..6578efd 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
@@ -8,6 +8,7 @@
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Random;
 import java.util.Set;
 
 import org.junit.Before;
@@ -16,6 +17,7 @@
 import org.ovirt.engine.core.bll.IsoDomainListSyncronizer;
 import org.ovirt.engine.core.bll.VDSBrokerFrontendImpl;
 import org.ovirt.engine.core.bll.ValidationResult;
+import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.common.businessentities.BootSequence;
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
@@ -164,9 +166,10 @@
             protected IsoDomainListSyncronizer getIsoDomainListSyncronizer() {
                 return new IsoDomainListSyncronizer() {
                     @Override
-                    protected void init(){
+                    protected void init() {
                         // no impl
                     }
+
                     @Override
                     public Guid findActiveISODomain(Guid storagePoolId) {
                         return new Guid();
@@ -195,6 +198,92 @@
                 VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_RUNNING);
     }
 
+    @Test
+    public void passNotStatelessVM() {
+        Random rand = new Random();
+        canRunVmAsStateless(rand.nextBoolean(), rand.nextBoolean(), false, 
false, true, null);
+        canRunVmAsStateless(rand.nextBoolean(), rand.nextBoolean(), false, 
null, true, null);
+    }
+
+    @Test
+    public void failRunStatelessSnapshotInPreview() {
+        Random rand = new Random();
+        canRunVmAsStateless(rand.nextBoolean(),
+                true,
+                true,
+                true,
+                false,
+                VdcBllMessages.ACTION_TYPE_FAILED_VM_IN_PREVIEW);
+        canRunVmAsStateless(rand.nextBoolean(),
+                true,
+                true,
+                null,
+                false,
+                VdcBllMessages.ACTION_TYPE_FAILED_VM_IN_PREVIEW);
+        canRunVmAsStateless(rand.nextBoolean(),
+                true,
+                false,
+                true,
+                false,
+                VdcBllMessages.ACTION_TYPE_FAILED_VM_IN_PREVIEW);
+    }
+
+    @Test
+    public void failRunStatelessHA_VM() {
+        canRunVmAsStateless(true,
+                false,
+                true,
+                true,
+                false,
+                VdcBllMessages.VM_CANNOT_RUN_STATELESS_HA);
+        canRunVmAsStateless(true,
+                false,
+                true,
+                null,
+                false,
+                VdcBllMessages.VM_CANNOT_RUN_STATELESS_HA);
+        canRunVmAsStateless(true,
+                false,
+                false,
+                true,
+                false,
+                VdcBllMessages.VM_CANNOT_RUN_STATELESS_HA);
+    }
+
+    private void canRunVmAsStateless(boolean autoStartUp,
+            final boolean vmInPreview,
+            boolean isVmStateless,
+            Boolean isStatelessParam,
+            boolean shouldPass,
+            VdcBllMessages message) {
+        runVmValidator = new RunVmValidator() {
+            @Override
+            protected SnapshotsValidator getSnapshotValidator() {
+                return new SnapshotsValidator() {
+                    @Override
+                    public ValidationResult vmNotInPreview(Guid vmId) {
+                        if (vmInPreview) {
+                            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_VM_IN_PREVIEW);
+                        }
+                        return ValidationResult.VALID;
+                    };
+                };
+            };
+
+            @Override
+            public ValidationResult hasSpaceForSnapshots(VM vm, List<Disk> 
plugDisks) {
+                return ValidationResult.VALID;
+            }
+        };
+        VM vm = new VM();
+        vm.setAutoStartup(autoStartUp);
+        vm.setStateless(isVmStateless);
+        List<Disk> disks = new ArrayList<Disk>();
+        validateResult(runVmValidator.validateStatelessVm(vm, disks, 
isStatelessParam),
+                shouldPass,
+                message);
+    }
+
     private VmPropertiesUtils mockVmPropertiesUtils() {
         VmPropertiesUtils utils = new VmPropertiesUtils() {
             @Override


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie887a05e17dd6a59b4e5d2df83a9aa7e357526dc
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