Allon Mureinik has uploaded a new change for review. Change subject: core: Calculate storage format when adding an SD ......................................................................
core: Calculate storage format when adding an SD Removed the default V1 format from StorageDomainStatic's constructor so it can be calculated when adding a domain without specifying the format via REST. The logic goes as follows: - If the format is specified (as is the case in all the edit scenarios as well as when adding a new domain via the GUI), leave it alone - If it's a data domain, set the format to the format required by the pool's version. Note: Creating a domain by a host not attached to a pool is currently NOT supported. This patch does not change that behavior, nor does it handle this situation. - If it's not a data domain, use V1 (i.e., preserve the old behavior). Change-Id: If469bb655e9a65e2d0afcee164655fa0bdfa5d99 Bug-Url: https://bugzilla.redhat.com/1120712 Signed-off-by: Allon Mureinik <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddStorageDomainCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOTest.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOTest.java 4 files changed, 23 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/48/31348/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddStorageDomainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddStorageDomainCommand.java index 4669d92..0c9fdf1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddStorageDomainCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddStorageDomainCommand.java @@ -24,6 +24,7 @@ import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.errors.VdcFault; import org.ovirt.engine.core.common.utils.Pair; +import org.ovirt.engine.core.common.utils.VersionStorageFormatUtil; import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.common.vdscommands.CreateStorageDomainVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.GetStorageDomainStatsVDSCommandParameters; @@ -158,17 +159,34 @@ returnValue = false; } + ensureStorageFormatInitialized(); boolean isSupportedStorageFormat = isStorageFormatSupportedByStoragePool() && isStorageFormatCompatibleWithDomain(); if (returnValue && !isSupportedStorageFormat) { addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST); getReturnValue().getCanDoActionMessages().add( - String.format("$storageFormat %1$s", getStorageDomain().getStorageFormat().toString())); + String.format("$storageFormat %1$s", getStorageDomain().getStorageFormat())); returnValue = false; } return returnValue && canAddDomain(); } + private void ensureStorageFormatInitialized() { + StorageDomain sd = getStorageDomain(); + if (sd.getStorageFormat() == null) { + if (sd.getStorageDomainType().isDataDomain()) { + StoragePool sp = getTargetStoragePool(); + if (sp != null) { + sd.setStorageFormat(VersionStorageFormatUtil.getPreferredForVersion( + sp.getcompatibility_version(), sd.getStorageType()) + ); + } + } else { + sd.setStorageFormat(StorageFormatType.V1); + } + } + } + private boolean isStorageFormatSupportedByStoragePool() { StorageFormatType storageFormat = getStorageDomain().getStorageFormat(); StoragePool targetStoragePool = getTargetStoragePool(); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java index 6ea385d..6c019b9 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java @@ -53,7 +53,6 @@ id = Guid.Empty; storageType = StorageDomainType.Master; storagePoolType = StorageType.UNKNOWN; - storageFormat = StorageFormatType.V1; autoRecoverable = true; name = ""; } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOTest.java index 7c9a84c..ef415f6 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOTest.java @@ -9,6 +9,7 @@ import org.junit.Test; import org.ovirt.engine.core.common.businessentities.StorageDomainDynamic; import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; +import org.ovirt.engine.core.common.businessentities.StorageFormatType; import org.ovirt.engine.core.compat.Guid; public class StorageDomainDynamicDAOTest extends BaseDAOTestCase { @@ -32,6 +33,7 @@ newStaticDomain = new StorageDomainStatic(); newStaticDomain.setStorage("fDMzhE-wx3s-zo3q-Qcxd-T0li-yoYU-QvVePl"); + newStaticDomain.setStorageFormat(StorageFormatType.V1); newDynamicDomain = new StorageDomainDynamic(); newDynamicDomain.setAvailableDiskSize(USED_DISK_SIZE); } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOTest.java index 58d370d..31e372d 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOTest.java @@ -14,6 +14,7 @@ import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; +import org.ovirt.engine.core.common.businessentities.StorageFormatType; import org.ovirt.engine.core.compat.Guid; public class StorageDomainStaticDAOTest extends BaseDAOTestCase { @@ -39,6 +40,7 @@ newStaticDomain = new StorageDomainStatic(); newStaticDomain.setStorageName("NewStorageDomain"); newStaticDomain.setStorage("fDMzhE-wx3s-zo3q-Qcxd-T0li-yoYU-QvVePl"); + newStaticDomain.setStorageFormat(StorageFormatType.V1); } /** -- To view, visit http://gerrit.ovirt.org/31348 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If469bb655e9a65e2d0afcee164655fa0bdfa5d99 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Allon Mureinik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
