Tal Nisan has uploaded a new change for review.

Change subject: core,webadmin: Move storage type checks to domain instead of 
pool
......................................................................

core,webadmin: Move storage type checks to domain instead of pool

As a part of the effort to remove the type of storage pool, checks of the
storage type are changed to check the type on the storage domain instead of
the storage pool

Change-Id: I3db80f1749d93444e9cdac8038859b7d0865f6e5
Relates-To: https://bugzilla.redhat.com/1038053
Signed-off-by: Tal Nisan <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommandTest.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
8 files changed, 51 insertions(+), 23 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/84/23584/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
index 8303a32..fcef35c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
@@ -30,6 +30,7 @@
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMapId;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -339,9 +340,11 @@
         params.setEntityInfo(getParameters().getEntityInfo());
         params.setParentParameters(getParameters());
 
-        // if the data domains are block based storage, the memory volume type 
is preallocated
+        StorageDomainStatic sourceDomain = 
getStorageDomainStaticDAO().get(storageDomainId);
+
+        // if the data domain is a block based storage, the memory volume type 
is preallocated
         // so we need to use copy collapse in order to convert it to be 
sparsed in the export domain
-        if (getStoragePool().getStorageType().isBlockDomain()) {
+        if (sourceDomain.getStorageType().isBlockDomain()) {
             params.setUseCopyCollapse(true);
             params.setVolumeType(VolumeType.Sparse);
             params.setVolumeFormat(VolumeFormat.RAW);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommand.java
index c87f990..ad5a02c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommand.java
@@ -19,6 +19,7 @@
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
 import org.ovirt.engine.core.common.businessentities.LunDisk;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
@@ -100,17 +101,22 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_DISK_NOT_EXIST);
         }
 
+        if (getVm() == null) {
+            addCanDoActionMessage(String.format("$diskAliases %1$s", 
getDiskAlias()));
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_DISK_IS_NOT_VM_DISK);
+        }
+
         if (getDiskType() == DiskStorageType.IMAGE) {
             DiskImagesValidator diskImagesValidator = new 
DiskImagesValidator(Arrays.asList((DiskImage) getDisk()));
             if (!validate(diskImagesValidator.diskImagesNotLocked()) ||
                     !validate(diskImagesValidator.diskImagesNotIllegal())) {
                 return false;
             }
-        }
 
-        if (getVm() == null) {
-            addCanDoActionMessage(String.format("$diskAliases %1$s", 
getDiskAlias()));
-            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_DISK_IS_NOT_VM_DISK);
+            StorageDomainStatic sds = 
getStorageDomainStaticDAO().get(((DiskImage) getDisk()).getStorageIds().get(0));
+            if (!sds.getStorageType().isBlockDomain()) {
+                return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_ALIGNMENT_SCAN_STORAGE_TYPE);
+            }
         }
 
         if (isImageExclusiveLockNeeded() && getVm().isRunningOrPaused()) {
@@ -124,10 +130,6 @@
         StoragePool sp = getStoragePoolDao().get(getStoragePoolId());
         if (!validate(new StoragePoolValidator(sp).isUp())) {
             return false;
-        }
-
-        if (!sp.getStorageType().isBlockDomain()) {
-            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_ALIGNMENT_SCAN_STORAGE_TYPE);
         }
 
         return true;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
index c371611..ce23ab0 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
@@ -372,7 +372,7 @@
     }
 
     private VolumeType getMemoryVolumeType() {
-        return getMemoryVolumeTypeForPool(getStoragePool().getStorageType());
+        return 
getMemoryVolumeTypeForStorageDomain(getStorageDomain().getStorageType());
     }
 
     /**
@@ -381,7 +381,7 @@
      *
      * @return - VolumeType of allocation type to use.
      */
-    public static VolumeType getMemoryVolumeTypeForPool(StorageType 
storageType) {
+    public static VolumeType getMemoryVolumeTypeForStorageDomain(StorageType 
storageType) {
         return storageType.isFileDomain() ? VolumeType.Sparse : 
VolumeType.Preallocated;
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
index ad8d2dd..85b3e6e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
@@ -52,6 +52,7 @@
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotStatus;
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -733,7 +734,8 @@
         params.setEntityInfo(new EntityInfo(VdcObjectType.VM, 
getVm().getId()));
         params.setParentParameters(getParameters());
 
-        if (getStoragePool().getStorageType().isBlockDomain()) {
+        StorageDomainStatic storageDomain = 
getStorageDomainStaticDAO().get(storageId);
+        if (storageDomain.getStorageType().isBlockDomain()) {
             params.setUseCopyCollapse(true);
             params.setVolumeType(VolumeType.Preallocated);
             params.setVolumeFormat(VolumeFormat.RAW);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
index e2676ca..cd50965 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
@@ -4,6 +4,7 @@
 import org.ovirt.engine.core.bll.HibernateVmCommand;
 import org.ovirt.engine.core.bll.tasks.TaskHandlerCommand;
 import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VolumeFormat;
@@ -14,6 +15,7 @@
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 
 /**
  * This builder creates the memory images for live snapshots with memory 
operation
@@ -79,6 +81,7 @@
     }
 
     private void createImageForMemoryDump() {
+        StorageDomainStatic storageDomainStatic = 
DbFacade.getInstance().getStorageDomainStaticDao().get(storageDomainId);
         VDSReturnValue retVal =
                 Backend
                 .getInstance()
@@ -90,7 +93,7 @@
                                 storageDomainId,
                                 memoryDumpImageGroupId,
                                 vm.getTotalMemorySizeInBytes(),
-                                
HibernateVmCommand.getMemoryVolumeTypeForPool(storagePool.getStorageType()),
+                                
HibernateVmCommand.getMemoryVolumeTypeForStorageDomain(storageDomainStatic.getStorageType()),
                                 VolumeFormat.RAW,
                                 memoryDumpVolumeId,
                                 ""));
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
index 0907702..91fd054 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
@@ -201,7 +201,7 @@
         setSucceeded(true);
         if (!getStoragePool().isLocal()) {
             for (VDS vds : vdss) {
-                
StorageHelperDirector.getInstance().getItem(getStoragePool().getStorageType())
+                
StorageHelperDirector.getInstance().getItem(masterDomain.getStorageType())
                         .disconnectStorageFromDomainByVdsId(masterDomain, 
vds.getId());
             }
         } else {
@@ -215,7 +215,7 @@
             } catch (VdcBLLException e) {
                 // Do nothing, exception already printed at logs
             }
-            
StorageHelperDirector.getInstance().getItem(getStoragePool().getStorageType())
+            
StorageHelperDirector.getInstance().getItem(masterDomain.getStorageType())
                     .disconnectStorageFromDomainByVdsId(masterDomain, 
vdss.get(0).getId());
             removeDomainFromDb(masterDomain);
         }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommandTest.java
index 5578e29..0ecb107 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDiskAlignmentCommandTest.java
@@ -4,6 +4,8 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 
 import org.junit.Before;
@@ -16,6 +18,7 @@
 import org.ovirt.engine.core.common.action.GetDiskAlignmentParameters;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
 import org.ovirt.engine.core.common.businessentities.StorageType;
@@ -29,6 +32,7 @@
 import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.StorageDomainStaticDAO;
 import org.ovirt.engine.core.dao.StoragePoolDAO;
 import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.dao.VdsGroupDAO;
@@ -54,6 +58,9 @@
     private VdsDAO vdsDao;
 
     @Mock
+    private StorageDomainStaticDAO storageDomainStaticDAO;
+
+    @Mock
     private StoragePoolDAO spDao;
 
     @Mock
@@ -64,12 +71,13 @@
 
     private GetDiskAlignmentCommand<GetDiskAlignmentParameters> cmd;
 
-    private Guid vmId, diskId, poolId, groupId, vdsId;
+    private Guid vmId, diskId, poolId, storageDomainId, groupId, vdsId;
     private DiskImage disk;
     private VM vm;
     private VDS vds;
     private VmDevice vmDevice;
     private StoragePool storagePool;
+    private StorageDomain storageDomain;
     private VDSGroup vdsGroup;
 
     @Before
@@ -77,6 +85,7 @@
         vmId = Guid.newGuid();
         diskId = Guid.newGuid();
         poolId = Guid.newGuid();
+        storageDomainId = Guid.newGuid();
         groupId = Guid.newGuid();
         vdsId = Guid.newGuid();
 
@@ -84,6 +93,7 @@
         disk.setId(diskId);
         disk.setVmEntityType(VmEntityType.VM);
         disk.setImageStatus(ImageStatus.OK);
+        disk.setStorageIds(new 
ArrayList<Guid>(Arrays.asList(storageDomainId)));
 
         vm = new VM();
         vm.setId(vmId);
@@ -103,13 +113,16 @@
 
         storagePool = new StoragePool();
         storagePool.setStatus(StoragePoolStatus.Up);
-        storagePool.setStorageType(StorageType.ISCSI);
+
+        storageDomain = new StorageDomain();
+        storageDomain.setStorageType(StorageType.ISCSI);
 
         when(vmDao.getVmsListForDisk(diskId, 
Boolean.FALSE)).thenReturn(Collections.singletonList(vm));
         when(vmDeviceDao.get(vmDeviceId)).thenReturn(vmDevice);
         when(vdsDao.getAllForVdsGroupWithStatus(groupId, 
VDSStatus.Up)).thenReturn(Collections.singletonList(vds));
         when(spDao.get(poolId)).thenReturn(storagePool);
         when(vdsGroupDao.get(groupId)).thenReturn(vdsGroup);
+        
when(storageDomainStaticDAO.get(storageDomainId)).thenReturn(storageDomain.getStorageStaticData());
 
         cmd = spy(new GetDiskAlignmentCommand<GetDiskAlignmentParameters>(new 
GetDiskAlignmentParameters(diskId)));
 
@@ -118,6 +131,7 @@
         doReturn(vmDao).when(cmd).getVmDAO();
         doReturn(spDao).when(cmd).getStoragePoolDao();
         doReturn(vdsGroupDao).when(cmd).getVdsGroupDAO();
+        doReturn(storageDomainStaticDAO).when(cmd).getStorageDomainStaticDAO();
     }
 
     /* Tests for canDoAction() flow */
@@ -171,8 +185,8 @@
     }
 
     @Test
-    public void testCanDoActionStoragePoolFile() {
-        storagePool.setStorageType(StorageType.NFS);
+    public void testCanDoActionStorageDomainIsFileStorage() {
+        storageDomain.setStorageType(StorageType.NFS);
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(cmd,
                 VdcBllMessages.ACTION_TYPE_FAILED_ALIGNMENT_SCAN_STORAGE_TYPE);
     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
index 85ef1cd..60dde15 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
@@ -643,12 +643,13 @@
     }
 
     private void volumeType_SelectedItemChanged() {
-        if (getVolumeType().getSelectedItem() == null || 
getDataCenter().getSelectedItem() == null) {
+        if (getVolumeType().getSelectedItem() == null || 
getDataCenter().getSelectedItem() == null
+                || getStorageDomain().getSelectedItem() == null) {
             return;
         }
 
         VolumeType volumeType = (VolumeType) getVolumeType().getSelectedItem();
-        StorageType storageType = ((StoragePool) 
getDataCenter().getSelectedItem()).getStorageType();
+        StorageType storageType = ((StorageDomain) 
getStorageDomain().getSelectedItem()).getStorageType();
 
         updateVolumeFormat(volumeType, storageType);
         updateShareable(volumeType, storageType);
@@ -710,7 +711,6 @@
             return;
         }
 
-        updateVolumeType(datacenter.getStorageType());
         updateShareableDiskEnabled(datacenter);
         updateDirectLunDiskEnabled(datacenter);
         updateInterface(isInVm ? getVm().getVdsGroupCompatibilityVersion() : 
null);
@@ -724,6 +724,10 @@
     }
 
     private void storageDomain_SelectedItemChanged() {
+        StorageDomain selectedStorage = (StorageDomain) 
getStorageDomain().getSelectedItem();
+        if (selectedStorage != null) {
+            updateVolumeType(selectedStorage.getStorageType());
+        }
         updateQuota((StoragePool) getDataCenter().getSelectedItem());
     }
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3db80f1749d93444e9cdac8038859b7d0865f6e5
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.4
Gerrit-Owner: Tal Nisan <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to