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

Reply via email to