Gilad Chaplik has uploaded a new change for review.

Change subject: restapi: support cpu qos limit
......................................................................

restapi: support cpu qos limit

Add it to current qos infra.

Change-Id: I176f7d3e5776c515f09db94177eeb679e71412af
Signed-off-by: Gilad Chaplik <gchap...@redhat.com>
---
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QosType.java
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
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/BackendQosResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQossResource.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QosMapper.java
A 
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/CpuQosMapperTest.java
M 
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/QosMapperTest.java
A 
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageQosMapperTest.java
10 files changed, 92 insertions(+), 20 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/31841/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QosType.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QosType.java
index 25f5389..92bbfbd 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QosType.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/QosType.java
@@ -1,7 +1,8 @@
 package org.ovirt.engine.api.model;
 
 public enum QosType {
-    STORAGE;
+    STORAGE,
+    CPU;
 
     public String value() {
         return name().toLowerCase();
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 e30c18a..1d77a31 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
@@ -4572,6 +4572,8 @@
             minOccurs="0" maxOccurs="1" />
           <xs:element name="max_write_iops" type="xs:int"
             minOccurs="0" maxOccurs="1" />
+          <xs:element name="cpu_limit" type="xs:int"
+            minOccurs="0" maxOccurs="1" />
         </xs:sequence>
         <xs:attribute name="type" type="xs:string"/>
       </xs:extension>
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
index a79bd9a..e7a6027 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
@@ -1406,7 +1406,8 @@
                            qos.max_write_throughput: 'xs:int',
                            qos.max_iops: 'xs:int',
                            qos.max_read_iops: 'xs:int',
-                           qos.max_write_iops: 'xs:int'}
+                           qos.max_write_iops: 'xs:int',
+                           qos.cpu_limit: 'xs:int'}
     urlparams: {}
     headers:
       Content-Type: {value: application/xml|json, required: true}
@@ -1424,7 +1425,8 @@
                            qos.max_write_throughput: 'xs:int',
                            qos.max_iops: 'xs:int',
                            qos.max_read_iops: 'xs:int',
-                           qos.max_write_iops: 'xs:int'}
+                           qos.max_write_iops: 'xs:int',
+                           qos.cpu_limit: 'xs:int'}
         description: add a new QoS to the datacenter
     urlparams: {}
     headers:
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 4950867..8d8dc2f 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
@@ -884,6 +884,7 @@
         version.setQosTypes(new QosTypes());
         if (VersionUtils.greaterOrEqual(version, VERSION_3_5)) {
             
version.getQosTypes().getQosTypes().add(org.ovirt.engine.api.model.QosType.STORAGE.name().toLowerCase());
+            
version.getQosTypes().getQosTypes().add(org.ovirt.engine.api.model.QosType.CPU.name().toLowerCase());
         }
     }
 
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQosResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQosResource.java
index 91aee74..1ccaba3 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQosResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQosResource.java
@@ -42,6 +42,9 @@
         case STORAGE:
             updateActionType = VdcActionType.UpdateStorageQos;
             break;
+        case CPU:
+            updateActionType = VdcActionType.UpdateCpuQos;
+            break;
 
         default:
             break;
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQossResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQossResource.java
index eb82132..d1a5e30 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQossResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendQossResource.java
@@ -12,6 +12,7 @@
 import org.ovirt.engine.api.restapi.utils.GuidUtils;
 import org.ovirt.engine.core.common.action.QosParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.businessentities.qos.CpuQos;
 import org.ovirt.engine.core.common.businessentities.qos.QosBase;
 import org.ovirt.engine.core.common.businessentities.qos.QosType;
 import org.ovirt.engine.core.common.businessentities.qos.StorageQos;
@@ -47,7 +48,10 @@
             entity = new StorageQos();
             addVdcActionType = VdcActionType.AddStorageQos;
             break;
-
+        case CPU:
+            entity = new CpuQos();
+            addVdcActionType = VdcActionType.AddCpuQos;
+            break;
         default:
             break;
         }
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QosMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QosMapper.java
index f744a41..1f4badd 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QosMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QosMapper.java
@@ -4,6 +4,7 @@
 import org.ovirt.engine.api.model.QoS;
 import org.ovirt.engine.api.model.QosType;
 import org.ovirt.engine.api.restapi.utils.GuidUtils;
+import org.ovirt.engine.core.common.businessentities.qos.CpuQos;
 import org.ovirt.engine.core.common.businessentities.qos.QosBase;
 import org.ovirt.engine.core.common.businessentities.qos.StorageQos;
 
@@ -35,6 +36,19 @@
             model.setMaxIops(storageQos.getMaxIops());
             model.setMaxReadIops(storageQos.getMaxReadIops());
             model.setMaxWriteIops(storageQos.getMaxWriteIops());
+            break;
+        case CPU:
+            CpuQos cpuQos = null;
+            // avoid findbugs error.
+            if (entity instanceof CpuQos) {
+                cpuQos = (CpuQos) entity;
+            }
+            // avoid findbugs error.
+            if (cpuQos == null) {
+                return model;
+            }
+            model.setCpuLimit(cpuQos.getCpuLimit());
+            break;
         default:
             break;
         }
@@ -82,6 +96,15 @@
                         
.setMaxWriteIops(IntegerMapper.mapMinusOneToNull(model.getMaxWriteIops()));
             }
             break;
+        case CPU:
+            if (entity == null) {
+                entity = new CpuQos();
+            }
+            if (model.isSetCpuLimit()) {
+                ((CpuQos) entity)
+                        
.setCpuLimit(IntegerMapper.mapMinusOneToNull(model.getCpuLimit()));
+            }
+            break;
         default:
             break;
         }
diff --git 
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/CpuQosMapperTest.java
 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/CpuQosMapperTest.java
new file mode 100644
index 0000000..5c00603
--- /dev/null
+++ 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/CpuQosMapperTest.java
@@ -0,0 +1,23 @@
+package org.ovirt.engine.api.restapi.types;
+
+import org.ovirt.engine.api.model.QoS;
+import org.ovirt.engine.api.model.QosType;
+
+public class CpuQosMapperTest extends QosMapperTest {
+
+    @Override
+    protected void verify(QoS model, QoS transform) {
+        super.verify(model, transform);
+
+        // cpu limits:
+        assertEquals(model.getCpuLimit(), transform.getCpuLimit());
+    }
+
+    @Override
+    protected QoS postPopulate(QoS model) {
+        model = super.postPopulate(model);
+        model.setType(QosType.CPU.name().toLowerCase());
+        return model;
+
+    }
+}
diff --git 
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/QosMapperTest.java
 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/QosMapperTest.java
index 0458ea0..8c4f2e6 100644
--- 
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/QosMapperTest.java
+++ 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/QosMapperTest.java
@@ -1,10 +1,9 @@
 package org.ovirt.engine.api.restapi.types;
 
 import org.ovirt.engine.api.model.QoS;
-import org.ovirt.engine.api.model.QosType;
 import org.ovirt.engine.core.common.businessentities.qos.QosBase;
 
-public class QosMapperTest extends AbstractInvertibleMappingTest<QoS, QosBase, 
QosBase> {
+public abstract class QosMapperTest extends AbstractInvertibleMappingTest<QoS, 
QosBase, QosBase> {
 
     public QosMapperTest() {
         super(QoS.class,
@@ -21,20 +20,6 @@
         assertEquals(model.getDataCenter().getId(), 
transform.getDataCenter().getId());
         assertEquals(model.getType(), transform.getType());
         assertEquals(model.getDescription(), transform.getDescription());
-
-        // storage limits:
-        assertEquals(model.getMaxThroughput(), transform.getMaxThroughput());
-        assertEquals(model.getMaxReadThroughput(), 
transform.getMaxReadThroughput());
-        assertEquals(model.getMaxWriteThroughput(), 
transform.getMaxWriteThroughput());
-        assertEquals(model.getMaxIops(), transform.getMaxIops());
-        assertEquals(model.getMaxReadIops(), transform.getMaxReadIops());
-        assertEquals(model.getMaxWriteIops(), transform.getMaxWriteIops());
     }
 
-    @Override
-    protected QoS postPopulate(QoS model) {
-        model = super.postPopulate(model);
-        
model.setType(MappingTestHelper.shuffle(QosType.class).name().toLowerCase());
-        return model;
-    }
 }
diff --git 
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageQosMapperTest.java
 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageQosMapperTest.java
new file mode 100644
index 0000000..419bc8b
--- /dev/null
+++ 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageQosMapperTest.java
@@ -0,0 +1,28 @@
+package org.ovirt.engine.api.restapi.types;
+
+import org.ovirt.engine.api.model.QoS;
+import org.ovirt.engine.api.model.QosType;
+
+public class StorageQosMapperTest extends QosMapperTest {
+
+    @Override
+    protected void verify(QoS model, QoS transform) {
+        super.verify(model, transform);
+
+        // storage limits:
+        assertEquals(model.getMaxThroughput(), transform.getMaxThroughput());
+        assertEquals(model.getMaxReadThroughput(), 
transform.getMaxReadThroughput());
+        assertEquals(model.getMaxWriteThroughput(), 
transform.getMaxWriteThroughput());
+        assertEquals(model.getMaxIops(), transform.getMaxIops());
+        assertEquals(model.getMaxReadIops(), transform.getMaxReadIops());
+        assertEquals(model.getMaxWriteIops(), transform.getMaxWriteIops());
+    }
+
+    @Override
+    protected QoS postPopulate(QoS model) {
+        model = super.postPopulate(model);
+        model.setType(QosType.STORAGE.name().toLowerCase());
+        return model;
+
+    }
+}


-- 
To view, visit http://gerrit.ovirt.org/31841
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I176f7d3e5776c515f09db94177eeb679e71412af
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to