Maor Lipchuk has uploaded a new change for review. Change subject: core: Validate if Cinder Storage Domain contain disks on detach ......................................................................
core: Validate if Cinder Storage Domain contain disks on detach Validate if Cinder Storage Domain contained disk Change-Id: I501351c2505a50d083db64e59ed2dd7201649901 Bug-Url: https://bugzilla.redhat.com/1185826 Signed-off-by: Maor Lipchuk <mlipc...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java M frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties M frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties 7 files changed, 20 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/40016/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java index 9957015..7549d48 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java @@ -74,6 +74,14 @@ }); } + public static ValidationResult isCinderHasNoImages(Guid storageDomainId) { + List<DiskImage> cinderDisks = getDbFacade().getDiskImageDao().getAllForStorageDomain(storageDomainId); + if (!cinderDisks.isEmpty()) { + return new ValidationResult(VdcBllMessages.ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES); + } + return ValidationResult.VALID; + } + public void activateCinderDomain(Guid storageDomainId, Guid storagePoolId) { OpenStackVolumeProviderProxy proxy = OpenStackVolumeProviderProxy.getFromStorageDomainId(storageDomainId); if (proxy == null) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java index a961d31..7b7501a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java @@ -13,6 +13,7 @@ import org.ovirt.engine.core.bll.interfaces.BackendInternal; import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator; import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.bll.validator.storage.CinderDisksValidator; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.StoragePoolParametersBase; import org.ovirt.engine.core.common.businessentities.OvfEntityData; @@ -142,7 +143,7 @@ protected boolean canDetachStorageDomainWithVmsAndDisks(StorageDomain storageDomain) { if (!storageDomain.getStorageDomainType().isDataDomain()) { - return true; + return validate(CINDERStorageHelper.isCinderHasNoImages(storageDomain.getId()); } SnapshotsValidator snapshotsValidator = new SnapshotsValidator(); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java index c5050b2..afc51e9 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java @@ -1207,6 +1207,7 @@ ACTION_TYPE_FAILED_PROVIDER_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED), ACTION_TYPE_FAILED_CINDER(ErrorType.INTERNAL_ERROR), CANNOT_ADD_CINDER_DISK_VOLUME_LIMIT_EXCEEDED(ErrorType.CONFLICT), + ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES(ErrorType.CONFLICT), NO_HOST_PROVIDER_FOR_SYSTEM(ErrorType.NOT_SUPPORTED); diff --git a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties index ebfa6c6..e292643 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -1405,5 +1405,7 @@ ACTION_TYPE_FAILED_PROVIDER_NOT_SUPPORTED=Cannot ${action} ${type}. The current type ${providerType} is not supported. ACTION_TYPE_FAILED_CINDER=Cannot ${action} ${type}. An error occurred on Cinder - '${cinderException}'. CANNOT_ADD_CINDER_DISK_VOLUME_LIMIT_EXCEEDED=Cannot ${action} ${type}. Maximum number of volumes allowed (${maxTotalVolumes}) exceeded - could not create Cinder disk ${diskAlias}. +ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES=Cannot detach a non empty external volume provider.\n\ + -Please remove all VMs / Templates / Disks and try again. NO_HOST_PROVIDER_FOR_SYSTEM=The engine server is not associated with any host provider. diff --git a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java index c72ab48..d637c5b 100644 --- a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java +++ b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java @@ -3762,4 +3762,7 @@ @DefaultStringValue("The engine server is not associated with any host provider.") String NO_HOST_PROVIDER_FOR_SYSTEM(); + + @DefaultStringValue("Cannot detach a non empty external volume provider.\n -Please remove all VMs / Templates / Disks and try again.") + String ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES(); } diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties index bfe32d5..534c939 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties @@ -1099,3 +1099,5 @@ ACTION_TYPE_FAILED_PROVIDER_NOT_SUPPORTED=Cannot ${action} ${type}. The current type ${providerType} is not supported. ACTION_TYPE_FAILED_CINDER=Cannot ${action} ${type}. An error occurred on Cinder - '${cinderException}'. CANNOT_ADD_CINDER_DISK_VOLUME_LIMIT_EXCEEDED=Cannot ${action} ${type}. Maximum number of volumes allowed (${maxTotalVolumes}) exceeded - could not create Cinder disk ${diskAlias}. +ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES=Cannot detach a non empty external volume provider.\n\ + -Please remove all VMs / Templates / Disks and try again. diff --git a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties index 23eef96..ecc8c0f 100644 --- a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties +++ b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties @@ -1353,5 +1353,7 @@ ACTION_TYPE_FAILED_PROVIDER_NOT_SUPPORTED=Cannot ${action} ${type}. The current type ${providerType} is not supported. ACTION_TYPE_FAILED_CINDER=Cannot ${action} ${type}. An error occurred on Cinder - '${cinderException}'. CANNOT_ADD_CINDER_DISK_VOLUME_LIMIT_EXCEEDED=Cannot ${action} ${type}. Maximum number of volumes allowed (${maxTotalVolumes}) exceeded - could not create Cinder disk ${diskAlias}. +ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES=Cannot detach a non empty external volume provider.\n\ + -Please remove all VMs / Templates / Disks and try again. NO_HOST_PROVIDER_FOR_SYSTEM=The engine server is not associated with any host provider. -- To view, visit https://gerrit.ovirt.org/40016 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I501351c2505a50d083db64e59ed2dd7201649901 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Maor Lipchuk <mlipc...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches