Daniel Erez has uploaded a new change for review.

Change subject: core: consolidate register disk commands and queries
......................................................................

core: consolidate register disk commands and queries

In order to support register Cinder disks in the rest-api,
added the relevant logic to GetUnregisteredDisk(s)Query
and RegisterDiskCommand.

Change-Id: Icc3558c635adb174af4fe89c63185268344d06aa
Bug-Url: https://bugzilla.redhat.com/1185826
Signed-off-by: Daniel Erez <de...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDiskQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDisksQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RegisterDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredCinderDisksByStorageDomainIdQuery.java
4 files changed, 55 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/30/40730/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDiskQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDiskQuery.java
index d3c037c..e91bd26 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDiskQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDiskQuery.java
@@ -6,10 +6,14 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.context.EngineContext;
+import 
org.ovirt.engine.core.common.action.GetCinderEntityByStorageDomainIdParameters;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
 import org.ovirt.engine.core.common.businessentities.storage.DiskInterface;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
 import 
org.ovirt.engine.core.common.vdscommands.GetImageInfoVDSCommandParameters;
 import 
org.ovirt.engine.core.common.vdscommands.StoragePoolDomainAndGroupIdBaseVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
@@ -32,12 +36,20 @@
         Guid storagePoolId = getParameters().getStoragePoolId();
         Guid storageDomainId = getParameters().getStorageDomainId();
         Guid diskId = getParameters().getDiskId();
-        if (getDbFacade().getStorageDomainDao().get(storageDomainId) == null) {
+        StorageDomain storageDomain = 
getDbFacade().getStorageDomainDao().get(storageDomainId);
+        if (storageDomain == null) {
             
getQueryReturnValue().setExceptionString(VdcBllMessages.STORAGE_DOMAIN_DOES_NOT_EXIST.toString());
             getQueryReturnValue().setSucceeded(false);
             return;
         }
 
+        if (storageDomain.getStorageType().isCinderDomain()) {
+            VdcQueryReturnValue returnValue = 
runInternalQuery(VdcQueryType.GetUnregisteredCinderDiskByIdAndStorageDomainId,
+                    new GetCinderEntityByStorageDomainIdParameters(diskId, 
getParameters().getStorageDomainId()));
+            setReturnValue(returnValue.getReturnValue());
+            return;
+        }
+
         // Now get the list of volumes for each new image.
         StoragePoolDomainAndGroupIdBaseVDSCommandParameters 
getVolumesParameters = new StoragePoolDomainAndGroupIdBaseVDSCommandParameters(
                 storagePoolId, storageDomainId, diskId);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDisksQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDisksQuery.java
index 5c25c90..1a4c8c8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDisksQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetUnregisteredDisksQuery.java
@@ -3,12 +3,14 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.storage.Disk;
 import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
 import org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters;
 import 
org.ovirt.engine.core.common.queries.GetUnregisteredDisksQueryParameters;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import 
org.ovirt.engine.core.common.vdscommands.GetImagesListVDSCommandParameters;
@@ -25,12 +27,20 @@
     @Override
     protected void executeQueryCommand() {
         VDSBrokerFrontend vdsBroker = getVdsBroker();
-        if (getDbFacade().getStorageDomainDao().get(getStorageDomainId()) == 
null) {
+        StorageDomain storageDomain = 
getDbFacade().getStorageDomainDao().get(getStorageDomainId());
+        if (storageDomain == null) {
             
getQueryReturnValue().setExceptionString(VdcBllMessages.STORAGE_DOMAIN_DOES_NOT_EXIST.toString());
             getQueryReturnValue().setSucceeded(false);
             return;
         }
 
+        if (storageDomain.getStorageType().isCinderDomain()) {
+            VdcQueryReturnValue returnValue = 
runInternalQuery(VdcQueryType.GetUnregisteredCinderDisksByStorageDomainId,
+                    new IdQueryParameters(getStorageDomainId()));
+            setReturnValue(returnValue.getReturnValue());
+            return;
+        }
+
         // first, run getImagesList query into vdsm to get all of the images 
on the storage domain - then store in
         // imagesList
         VDSReturnValue imagesListResult = 
vdsBroker.RunVdsCommand(VDSCommandType.GetImagesList,
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RegisterDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RegisterDiskCommand.java
index 6c16ac6..49c5d14 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RegisterDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RegisterDiskCommand.java
@@ -12,8 +12,13 @@
 import org.ovirt.engine.core.bll.quota.QuotaStorageDependent;
 import org.ovirt.engine.core.bll.validator.storage.StorageDomainValidator;
 import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.action.RegisterCinderDiskParameters;
 import org.ovirt.engine.core.common.action.RegisterDiskParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.asynctasks.EntityInfo;
+import org.ovirt.engine.core.common.businessentities.StorageDomainType;
+import org.ovirt.engine.core.common.businessentities.storage.CinderDisk;
 import org.ovirt.engine.core.common.businessentities.storage.DiskStorageType;
 import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
@@ -40,7 +45,8 @@
     @Override
     protected boolean canDoAction() {
         // Currently this only supports importing images and does not work 
with luns.
-        if (getParameters().getDiskImage().getDiskStorageType() != 
DiskStorageType.IMAGE) {
+        if (getParameters().getDiskImage().getDiskStorageType() != 
DiskStorageType.IMAGE &&
+                getParameters().getDiskImage().getDiskStorageType() != 
DiskStorageType.CINDER) {
             addCanDoActionMessageVariable("diskId", 
getParameters().getDiskImage().getId());
             addCanDoActionMessageVariable("storageType", 
getParameters().getDiskImage().getDiskStorageType());
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_UNSUPPORTED_DISK_STORAGE_TYPE);
@@ -54,14 +60,16 @@
             return false;
         }
 
-        if (!getStorageDomain().getStorageDomainType().isDataDomain()) {
+        if (!getStorageDomain().getStorageDomainType().isDataDomain() &&
+                !(getStorageDomain().getStorageDomainType() == 
StorageDomainType.Volume)) {
             addCanDoActionMessageVariable("domainId", 
getParameters().getStorageDomainId());
             addCanDoActionMessageVariable("domainType", 
getStorageDomain().getStorageDomainType());
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_UNSUPPORTED);
             return false;
         }
 
-        if (!setAndValidateDiskProfiles()) {
+        if (getParameters().getDiskImage().getDiskStorageType() == 
DiskStorageType.IMAGE &&
+                !setAndValidateDiskProfiles()) {
             return false;
         }
 
@@ -70,15 +78,21 @@
 
     @Override
     protected void executeCommand() {
-        final DiskImage newDiskImage = getParameters().getDiskImage();
-        
newDiskImage.setDiskAlias(ImagesHandler.getDiskAliasWithDefault(newDiskImage,
-                generateDefaultAliasForRegiteredDisk(Calendar.getInstance())));
-        ArrayList<Guid> storageIds = new ArrayList<>();
-        storageIds.add(getParameters().getStorageDomainId());
-        newDiskImage.setStorageIds(storageIds);
-        addDiskImageToDb(newDiskImage, getCompensationContext());
-        getReturnValue().setActionReturnValue(newDiskImage.getId());
-        getReturnValue().setSucceeded(true);
+        if (getParameters().getDiskImage().getDiskStorageType() == 
DiskStorageType.IMAGE) {
+            final DiskImage newDiskImage = getParameters().getDiskImage();
+            
newDiskImage.setDiskAlias(ImagesHandler.getDiskAliasWithDefault(newDiskImage,
+                    
generateDefaultAliasForRegiteredDisk(Calendar.getInstance())));
+            ArrayList<Guid> storageIds = new ArrayList<>();
+            storageIds.add(getParameters().getStorageDomainId());
+            newDiskImage.setStorageIds(storageIds);
+            addDiskImageToDb(newDiskImage, getCompensationContext());
+            getReturnValue().setActionReturnValue(newDiskImage.getId());
+            getReturnValue().setSucceeded(true);
+        } else if (getParameters().getDiskImage().getDiskStorageType() == 
DiskStorageType.CINDER) {
+            VdcReturnValueBase returnValue = 
runInternalAction(VdcActionType.RegisterCinderDisk, new 
RegisterCinderDiskParameters(
+                    (CinderDisk) getParameters().getDiskImage(), 
getParameters().getStorageDomainId()));
+            setReturnValue(returnValue);
+        }
     }
 
     protected static String generateDefaultAliasForRegiteredDisk(Calendar 
time) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredCinderDisksByStorageDomainIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredCinderDisksByStorageDomainIdQuery.java
index 6f00d4e..6517077 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredCinderDisksByStorageDomainIdQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredCinderDisksByStorageDomainIdQuery.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import org.ovirt.engine.core.bll.context.EngineContext;
 import org.ovirt.engine.core.common.businessentities.storage.CinderDisk;
 import org.ovirt.engine.core.common.businessentities.storage.Disk;
 import org.ovirt.engine.core.common.businessentities.storage.DiskStorageType;
@@ -18,6 +19,10 @@
         super(parameters);
     }
 
+    public GetUnregisteredCinderDisksByStorageDomainIdQuery(P parameters, 
EngineContext context) {
+        super(parameters, context);
+    }
+
     @Override
     protected void executeQueryCommand() {
         final List<Volume> allVolumes = getVolumeProviderProxy().getVolumes();


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

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

Reply via email to