Gilad Chaplik has uploaded a new change for review. Change subject: restapi: add quota mode to data center ......................................................................
restapi: add quota mode to data center Expose data center's quota mode (enable/disable/audit). The enum was added to capabilities (since 3.2). Change-Id: I543068d6207e6cb31a2232616a8187770c7432bc Bug-Url: https://bugzilla.redhat.com/893927 Signed-off-by: Gilad Chaplik <[email protected]> --- A backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QuotaModeType.java M backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/DataCenterValidator.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java M backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/DataCenterMapperTest.java 6 files changed, 97 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/02/39902/1 diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QuotaModeType.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QuotaModeType.java new file mode 100644 index 0000000..5cca55b --- /dev/null +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QuotaModeType.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.api.model; + +public enum QuotaModeType { + ENABLED, + DISABLED, + AUDIT; + + public String value() { + return name().toLowerCase(); + } + + public static QuotaModeType fromValue(String value) { + try { + return valueOf(value.toUpperCase()); + } catch (IllegalArgumentException e) { + return null; + } + } +} diff --git a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd index 041b421..5fcb62d 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd +++ b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd @@ -667,6 +667,7 @@ <xs:element ref="inheritable_booleans" minOccurs="0" maxOccurs="1" /> <xs:element ref="network_plugin_types" minOccurs="0"/> <xs:element ref="message_broker_types" minOccurs="0"/> + <xs:element ref="quota_mode_types" minOccurs="0" /> </xs:sequence> </xs:extension> </xs:complexContent> @@ -1389,6 +1390,7 @@ <xs:element name="supported_versions" type="SupportedVersions" minOccurs="0" /> <xs:element ref="status" minOccurs="0" maxOccurs="1" /> <xs:element ref="mac_pool" minOccurs="0" /> + <xs:element name="quota_mode_type" type="xs:string" minOccurs="0" maxOccurs="1" /> <!-- also rel="files" and rel="storagedomains" links --> </xs:sequence> </xs:extension> @@ -5498,6 +5500,20 @@ </xs:sequence> </xs:complexType> + <xs:element name="quota_mode_types" type="QuotaModeTypes"/> + + <xs:complexType name="QuotaModeTypes"> + <xs:sequence> + <xs:element name="quota_mode_type" type="xs:string" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:appinfo> + <jaxb:property name="QuotaModeTypes"/> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OpenStackSubnet"> <xs:complexContent> <xs:extension base="BaseResource"> diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java index f641e4f..49f528f 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java @@ -83,6 +83,8 @@ import org.ovirt.engine.api.model.PowerManagementStatus; import org.ovirt.engine.api.model.PowerManagers; import org.ovirt.engine.api.model.QosTypes; +import org.ovirt.engine.api.model.QuotaModeType; +import org.ovirt.engine.api.model.QuotaModeTypes; import org.ovirt.engine.api.model.ReportedDeviceType; import org.ovirt.engine.api.model.ReportedDeviceTypes; import org.ovirt.engine.api.model.RngSource; @@ -297,6 +299,7 @@ // External tasks types addStepEnumTypes(version, StepEnum.values()); addInheritableBooleans(version, InheritableBoolean.values()); + addQuotaModeTypes(version); version.setFeatures(featuresHelper.getFeatures(v)); @@ -613,10 +616,10 @@ private List<PowerManagement> getPowerManagers(Version version) { return FenceOptionsParser.parse( - getFenceConfigurationValue(String.class, ConfigurationValues.VdsFenceOptionMapping, version), - getConfigurationValueDefault(String.class, ConfigurationValues.VdsFenceOptionTypes), - true - ); + getFenceConfigurationValue(String.class, ConfigurationValues.VdsFenceOptionMapping, version), + getConfigurationValueDefault(String.class, ConfigurationValues.VdsFenceOptionTypes), + true + ); } private List<StorageType> getStorageTypes(Version version) { @@ -773,7 +776,7 @@ private void addHostProtocols(VersionCaps version, HostProtocol[] values) { version.setHostProtocols(new HostProtocols()); - for (HostProtocol protocol: values) { + for (HostProtocol protocol : values) { version.getHostProtocols().getHostProtocols().add(protocol.value()); } } @@ -969,6 +972,15 @@ } } + private void addQuotaModeTypes(VersionCaps version) { + if (VersionUtils.greaterOrEqual(version, VERSION_3_2)) { + version.setQuotaModeTypes(new QuotaModeTypes()); + for (QuotaModeType mode : QuotaModeType.values()) { + version.getQuotaModeTypes().getQuotaModeTypes().add(mode.value()); + } + } + } + @Override public CapabiliyResource getCapabilitiesSubResource(String id) { return new BackendCapabilityResource(id, this); diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/DataCenterValidator.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/DataCenterValidator.java index a977080..b17f5f9 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/DataCenterValidator.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/DataCenterValidator.java @@ -1,6 +1,7 @@ package org.ovirt.engine.api.restapi.resource.validation; import org.ovirt.engine.api.model.DataCenter; +import org.ovirt.engine.api.model.QuotaModeType; import org.ovirt.engine.api.model.StorageFormat; import org.ovirt.engine.api.model.StorageType; @@ -18,6 +19,9 @@ if (dataCenter.isSetStorageFormat()) { validateEnum(StorageFormat.class, dataCenter.getStorageFormat(), true); } + if (dataCenter.isSetQuotaModeType()) { + validateEnum(QuotaModeType.class, dataCenter.getQuotaModeType(), true); + } } } } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java index 46c616a..6b94d73 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java @@ -5,10 +5,12 @@ import org.ovirt.engine.api.model.DataCenter; import org.ovirt.engine.api.model.DataCenterStatus; import org.ovirt.engine.api.model.MacPool; +import org.ovirt.engine.api.model.QuotaModeType; import org.ovirt.engine.api.model.StorageType; import org.ovirt.engine.api.model.Version; import org.ovirt.engine.api.restapi.model.StorageFormat; import org.ovirt.engine.api.restapi.utils.GuidUtils; +import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; @@ -53,6 +55,10 @@ entity.setMacPoolId(GuidUtils.asGuid(model.getMacPool().getId())); } + if (model.isSetQuotaModeType()) { + entity.setQuotaEnforcementType(map(QuotaModeType.fromValue(model.getQuotaModeType()))); + } + return entity; } @@ -89,6 +95,10 @@ model.getMacPool().setId(entity.getMacPoolId().toString()); } + if (entity.getQuotaEnforcementType() != null) { + model.setQuotaModeType(map(entity.getQuotaEnforcementType()).value()); + } + return model; } @@ -110,5 +120,33 @@ default: throw new IllegalStateException("Enum mapping failed"); } } + + @Mapping(from = QuotaEnforcementTypeEnum.class, to = QuotaModeType.class) + public static QuotaModeType map(QuotaEnforcementTypeEnum type) { + switch (type) { + case DISABLED: + return QuotaModeType.DISABLED; + case HARD_ENFORCEMENT: + return QuotaModeType.ENABLED; + case SOFT_ENFORCEMENT: + return QuotaModeType.AUDIT; + default: + return null; + } + } + + @Mapping(from = QuotaModeType.class, to = QuotaEnforcementTypeEnum.class) + public static QuotaEnforcementTypeEnum map(QuotaModeType type) { + switch (type) { + case DISABLED: + return QuotaEnforcementTypeEnum.DISABLED; + case ENABLED: + return QuotaEnforcementTypeEnum.HARD_ENFORCEMENT; + case AUDIT: + return QuotaEnforcementTypeEnum.SOFT_ENFORCEMENT; + default: + return null; + } + } } diff --git a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/DataCenterMapperTest.java b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/DataCenterMapperTest.java index 10df720..7e90616 100644 --- a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/DataCenterMapperTest.java +++ b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/DataCenterMapperTest.java @@ -3,6 +3,7 @@ import org.junit.Test; import org.ovirt.engine.api.model.DataCenter; import org.ovirt.engine.api.model.DataCenterStatus; +import org.ovirt.engine.api.model.QuotaModeType; import org.ovirt.engine.api.restapi.model.StorageFormat; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; @@ -17,6 +18,7 @@ @Override protected DataCenter postPopulate(DataCenter model) { model.setStorageFormat(MappingTestHelper.shuffle(StorageFormat.class).value()); + model.setQuotaModeType(MappingTestHelper.shuffle(QuotaModeType.class).value()); return model; } @@ -30,6 +32,7 @@ assertEquals(model.isLocal(), transform.isLocal()); assertEquals(model.getStorageFormat(), transform.getStorageFormat()); assertEquals(model.getMacPool().getId(), transform.getMacPool().getId()); + assertEquals(model.getQuotaModeType(), transform.getQuotaModeType()); } @Test -- To view, visit https://gerrit.ovirt.org/39902 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I543068d6207e6cb31a2232616a8187770c7432bc Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
