Gilad Chaplik has uploaded a new change for review.
Change subject: restapi: add cpu profile support
......................................................................
restapi: add cpu profile support
href="/ovirt-engine/api/cpuprofiles"; "add"; method: POST; request type:
CpuProfile; response type: CpuProfile
href="/ovirt-engine/api/cpuprofiles"; "get"; method: GET; response type:
CpuProfiles
href="/ovirt-engine/api/cpuprofiles/{cpuprofile:id}"; "delete"; method: DELETE
href="/ovirt-engine/api/cpuprofiles/{cpuprofile:id}"; "get"; method: GET;
response type: CpuProfile
href="/ovirt-engine/api/cpuprofiles/{cpuprofile:id}"; "update"; method: PUT;
request type: CpuProfile; response type: CpuProfile
href="/ovirt-engine/api/cpuprofiles/{cpuprofile:id}/permissions"; "add";
method: POST; request type: Permission; response type: Permission
href="/ovirt-engine/api/cpuprofiles/{cpuprofile:id}/permissions"; "get";
method: GET; response type: Permissions
href="/ovirt-engine/api/cpuprofiles/{cpuprofile:id}/permissions/{permission:id}";
"delete"; method: DELETE
href="/ovirt-engine/api/cpuprofiles/{cpuprofile:id}/permissions/{permission:id}";
"get"; method: GET; response type: Permission
href="/ovirt-engine/api/clusters/{cluster:id}/cpuprofiles"; "add"; method:
POST; request type: CpuProfile; response type: CpuProfile
href="/ovirt-engine/api/clusters/{cluster:id}/cpuprofiles"; "get"; method: GET;
response type: CpuProfiles
href="/ovirt-engine/api/clusters/{cluster:id}/cpuprofiles/{cpuprofile:id}";
"delete"; method: DELETE
href="/ovirt-engine/api/clusters/{cluster:id}/cpuprofiles/{cpuprofile:id}";
"get"; method: GET; response type: CpuProfile
Change-Id: I65976b00665a7f6d87b3fa6f62e54c753c51238c
Signed-off-by: Gilad Chaplik <[email protected]>
---
A
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AssignedCpuProfileResource.java
A
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AssignedCpuProfilesResource.java
M
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ClusterResource.java
A
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/CpuProfileResource.java
A
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/CpuProfilesResource.java
M
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/ApiRootLinksCreator.java
M
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.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/BackendApplication.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfileResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfilesResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfileResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfilesResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfileResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfilesResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
A
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfilesResourceTest.java
M
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
A
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfileResourceTest.java
A
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfilesResourceTest.java
A
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfileResourceTest.java
A
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfilesResourceTest.java
A
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/CpuProfileMapper.java
A
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/CpuProfileMapperTest.java
27 files changed, 1,326 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/30/31730/1
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AssignedCpuProfileResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AssignedCpuProfileResource.java
new file mode 100644
index 0000000..ab45eb2
--- /dev/null
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AssignedCpuProfileResource.java
@@ -0,0 +1,13 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+
+import org.ovirt.engine.api.model.CpuProfile;
+
+@Produces({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML })
+public interface AssignedCpuProfileResource {
+
+ @GET
+ public CpuProfile get();
+}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AssignedCpuProfilesResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AssignedCpuProfilesResource.java
new file mode 100644
index 0000000..4d9be6a
--- /dev/null
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AssignedCpuProfilesResource.java
@@ -0,0 +1,31 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.model.CpuProfiles;
+
+@Produces({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML })
+public interface AssignedCpuProfilesResource {
+
+ @GET
+ public CpuProfiles list();
+
+ @POST
+ @Consumes({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML })
+ public Response add(CpuProfile cpuProfile);
+
+ @DELETE
+ @Path("{id}")
+ public Response remove(@PathParam("id") String id);
+
+ @Path("{id}")
+ public AssignedCpuProfileResource
getAssignedCpuProfileSubResource(@PathParam("id") String id);
+}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ClusterResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ClusterResource.java
index 72cbdbc..831d865 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ClusterResource.java
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ClusterResource.java
@@ -40,4 +40,7 @@
@Path("affinitygroups")
public AffinityGroupsResource getAffinityGroupsResource();
+
+ @Path("cpuprofiles")
+ public AssignedCpuProfilesResource getCpuProfilesResource();
}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/CpuProfileResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/CpuProfileResource.java
new file mode 100644
index 0000000..dc06e65
--- /dev/null
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/CpuProfileResource.java
@@ -0,0 +1,13 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+import org.ovirt.engine.api.model.CpuProfile;
+
+@Produces({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML })
+public interface CpuProfileResource extends UpdatableResource<CpuProfile> {
+
+ @Path("permissions")
+ public AssignedPermissionsResource getPermissionsResource();
+}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/CpuProfilesResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/CpuProfilesResource.java
new file mode 100644
index 0000000..c231750
--- /dev/null
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/CpuProfilesResource.java
@@ -0,0 +1,32 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.model.CpuProfiles;
+
+@Path("/cpuprofiles")
+@Produces({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML })
+public interface CpuProfilesResource {
+
+ @GET
+ public CpuProfiles list();
+
+ @POST
+ @Consumes({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML })
+ public Response add(CpuProfile cpuProfile);
+
+ @DELETE
+ @Path("{id}")
+ public Response remove(@PathParam("id") String id);
+
+ @Path("{id}")
+ public CpuProfileResource getCpuProfileSubResource(@PathParam("id") String
id);
+}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/ApiRootLinksCreator.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/ApiRootLinksCreator.java
index 02bf6fa..0f4fb66 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/ApiRootLinksCreator.java
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/ApiRootLinksCreator.java
@@ -53,6 +53,7 @@
links.add(createLink("storageconnections", baseUri));
links.add(createLink("vnicprofiles", baseUri));
links.add(createLink("diskprofiles", baseUri));
+ links.add(createLink("cpuprofiles", baseUri));
links.add(createLink("schedulingpolicyunits", baseUri));
links.add(createLink("schedulingpolicies", baseUri));
links.add(createLink("permissions", baseUri));
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
index 6fb9d5e..9b257f1 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
@@ -37,6 +37,7 @@
import org.ovirt.engine.api.model.Bookmark;
import org.ovirt.engine.api.model.CdRom;
import org.ovirt.engine.api.model.Cluster;
+import org.ovirt.engine.api.model.CpuProfile;
import org.ovirt.engine.api.model.DataCenter;
import org.ovirt.engine.api.model.DetailedLink;
import org.ovirt.engine.api.model.Disk;
@@ -115,6 +116,8 @@
import org.ovirt.engine.api.resource.DataCentersResource;
import org.ovirt.engine.api.resource.DeviceResource;
import org.ovirt.engine.api.resource.DevicesResource;
+import org.ovirt.engine.api.resource.CpuProfileResource;
+import org.ovirt.engine.api.resource.CpuProfilesResource;
import org.ovirt.engine.api.resource.DiskProfileResource;
import org.ovirt.engine.api.resource.DiskProfilesResource;
import org.ovirt.engine.api.resource.DiskResource;
@@ -467,6 +470,9 @@
map = new ParentToCollectionMap(DiskProfileResource.class,
DiskProfilesResource.class);
TYPES.put(DiskProfile.class, map);
+ map = new ParentToCollectionMap(CpuProfileResource.class,
CpuProfilesResource.class);
+ TYPES.put(CpuProfile.class, map);
+
}
/**
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 b156c3a..afb6391 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
@@ -4780,4 +4780,35 @@
</xs:extension>
</xs:complexContent>
</xs:complexType>
+
+ <!-- Cpu Profiles -->
+ <xs:element name="cpu_profile" type="CpuProfile"/>
+
+ <xs:element name="cpu_profiles" type="CpuProfiles" />
+
+ <xs:complexType name="CpuProfile">
+ <xs:complexContent>
+ <xs:extension base="BaseResource">
+ <xs:sequence>
+ <xs:element ref="qos" minOccurs="1" maxOccurs="1"/>
+ <xs:element ref="cluster" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="CpuProfiles">
+ <xs:complexContent>
+ <xs:extension base="BaseResources">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:appinfo>
+ <jaxb:property name="CpuProfiles"/>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:element ref="cpu_profile" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
</xs:schema>
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 202d431..9a81fee 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
@@ -5810,3 +5810,146 @@
Content-Type: {value: application/xml|json, required: true}
Expect: {value: 201-created, required: false}
Correlation-Id: {value: 'any string', required: false}
+- name: /cpuprofiles|rel=get
+ description: get the list of all cpu profiles in the system
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams:
+ max: {context: matrix, type: 'xs:int', value: 'max results', required:
false}
+ headers: {}
+- name: /cpuprofiles/{cpuprofile:id}|rel=get
+ description: get the details of the specified cpu profile in the system
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams: {}
+ headers: {}
+- name: /cpuprofiles/{cpuprofile:id}|rel=delete
+ description: delete the specified cpu profile in the system
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams:
+ async: {context: matrix, type: 'xs:boolean', value: true|false,
required: false}
+ headers:
+ Correlation-Id: {value: 'any string', required: false}
+- name: /cpuprofiles/{cpuprofile:id}|rel=update
+ description: update the specified cpu profile in the system
+ request:
+ body:
+ parameterType: CpuProfile
+ signatures:
+ - mandatoryArguments: {}
+ optionalArguments: {cpuprofile.name: 'xs:string',
+ cpuprofile.description: 'xs:string',
+ cpuprofile.qos.id: 'xs:string'}
+ description: update the specified cpu profile in the system
+ urlparams: {}
+ headers:
+ Content-Type: {value: application/xml|json, required: true}
+ Correlation-Id: {value: 'any string', required: false}
+- name: /cpuprofiles|rel=add
+ description: add a new cpu profile to the system
+ request:
+ body:
+ parameterType: CpuProfile
+ signatures:
+ - mandatoryArguments: {cpuprofile.cluster.id: 'xs:string',
cpuprofile.name: 'xs:string'}
+ optionalArguments: {cpuprofile.description: 'xs:string',
+ cpuprofile.qos.id: 'xs:string'}
+ description: add a new cpu profile to the system
+ urlparams: {}
+ headers:
+ Content-Type: {value: application/xml|json, required: true}
+ Expect: {value: 201-created, required: false}
+ Correlation-Id: {value: 'any string', required: false}
+- name: /cpuprofiles/{cpuprofile:id}/permissions|rel=get
+ description: get the list of all permissions on the cpu profile in the system
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams:
+ max: {context: matrix, type: 'xs:int', value: 'max results', required:
false}
+ headers: {}
+- name: /cpuprofiles/{cpuprofile:id}/permissions/{permission:id}|rel=get
+ description: get details of the specified permission on the cpu profile in
the system
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams: {}
+ headers: {}
+- name: /cpuprofiles/{cpuprofile:id}/permissions/{permission:id}|rel=delete
+ description: delete the specified permission for the cpu profile
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams:
+ async: {context: matrix, type: 'xs:boolean', value: true|false,
required: false}
+ headers:
+ Correlation-Id: {value: 'any string', required: false}
+- name: /cpuprofiles/{cpuprofile:id}/permissions|rel=add
+ description: add a new permission on the cpu profile in the system
+ request:
+ body:
+ parameterType: Permission
+ signatures:
+ - mandatoryArguments: {permission.user.id: 'xs:string',
permission.role.id: 'xs:string'}
+ optionalArguments: {}
+ description: add a new user level permission on the cpu profile in the
system
+ - mandatoryArguments: {permission.group.id: 'xs:string',
permission.role.id: 'xs:string'}
+ optionalArguments: {}
+ description: add a new group level permission on the cpu profile in
the system
+ urlparams: {}
+ headers:
+ Content-Type: {value: application/xml|json, required: true}
+ Expect: {value: 201-created, required: false}
+ Correlation-Id: {value: 'any string', required: false}
+- name: /clusters/{cluster:id}/cpuprofiles|rel=get
+ description: get the list of all cpu profiles for the cluster
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams:
+ max: {context: matrix, type: 'xs:int', value: 'max results', required:
false}
+ headers: {}
+- name: /clusters/{cluster:id}/cpuprofiles/{cpuprofile:id}|rel=get
+ description: get the details of the specified cpu profile for the cluster
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams: {}
+ headers: {}
+- name: /clusters/{cluster:id}/cpuprofiles/{cpuprofile:id}|rel=delete
+ description: delete the specified cpu profile for the cluster
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams:
+ async: {context: matrix, type: 'xs:boolean', value: true|false,
required: false}
+ headers:
+ Correlation-Id: {value: 'any string', required: false}
+- name: /clusters/{cluster:id}/cpuprofiles|rel=add
+ description: add a new cpu profile for the cluster
+ request:
+ body:
+ parameterType: CpuProfile
+ signatures:
+ - mandatoryArguments: {cpuprofile.name: 'xs:string'}
+ optionalArguments: {cpuprofile.description: 'xs:string',
+ cpuprofile.qos.id: 'xs:string'}
+ description: add a new cpu profile for the cluster
+ urlparams: {}
+ headers:
+ Content-Type: {value: application/xml|json, required: true}
+ Expect: {value: 201-created, required: false}
+ Correlation-Id: {value: 'any string', required: false}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
index 8ecc1c7..e6ed1b4 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
@@ -33,6 +33,7 @@
import org.ovirt.engine.api.restapi.resource.BackendCapabilitiesResource;
import org.ovirt.engine.api.restapi.resource.BackendClustersResource;
import org.ovirt.engine.api.restapi.resource.BackendDataCentersResource;
+import org.ovirt.engine.api.restapi.resource.BackendCpuProfilesResource;
import org.ovirt.engine.api.restapi.resource.BackendDiskProfilesResource;
import org.ovirt.engine.api.restapi.resource.BackendDisksResource;
import org.ovirt.engine.api.restapi.resource.BackendEventsResource;
@@ -144,6 +145,7 @@
addResource(new BackendSchedulingPolicyUnitsResource());
addResource(new BackendSystemPermissionsResource());
addResource(new BackendDiskProfilesResource());
+ addResource(new BackendCpuProfilesResource());
addResource(VmHelper.getInstance());
final SessionProcessor processor = new SessionProcessor();
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfileResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfileResource.java
new file mode 100644
index 0000000..2edc66b
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfileResource.java
@@ -0,0 +1,25 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public abstract class AbstractBackendCpuProfileResource
+ extends AbstractBackendSubResource<CpuProfile,
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile> {
+
+ protected AbstractBackendCpuProfileResource(String id, String...
subCollections) {
+ super(id, CpuProfile.class,
+
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class,
+ subCollections);
+ }
+
+ protected CpuProfile get() {
+ return performGet(VdcQueryType.GetCpuProfileById, new
IdQueryParameters(guid));
+ }
+
+ @Override
+ protected CpuProfile doPopulate(CpuProfile model,
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
entity) {
+ return model;
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfilesResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfilesResource.java
new file mode 100644
index 0000000..f661846
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfilesResource.java
@@ -0,0 +1,72 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import java.util.List;
+
+import javax.ws.rs.core.Response;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.model.CpuProfiles;
+import org.ovirt.engine.core.common.action.CpuProfileParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+
+public abstract class AbstractBackendCpuProfilesResource
+ extends AbstractBackendCollectionResource<CpuProfile,
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile> {
+
+ public AbstractBackendCpuProfilesResource(String... subCollections) {
+ super(CpuProfile.class,
+
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class,
+ subCollections);
+ }
+
+ protected CpuProfiles
mapCollection(List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
entities) {
+ CpuProfiles collection = new CpuProfiles();
+ for (org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
entity : entities) {
+ collection.getCpuProfiles().add(addLinks(populate(map(entity),
entity)));
+ }
+
+ return collection;
+ }
+
+ protected Response add(CpuProfile cpuProfile) {
+ validateParameters(cpuProfile);
+ CpuProfileParameters parameters =
+ new CpuProfileParameters();
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile map
= map(cpuProfile);
+ parameters.setProfile(map);
+ return performCreate(VdcActionType.AddCpuProfile,
+ parameters,
+ new QueryIdResolver<Guid>(VdcQueryType.GetCpuProfileById,
IdQueryParameters.class));
+ }
+
+ protected abstract void validateParameters(CpuProfile cpuProfile);
+
+ @Override
+ protected Response performRemove(String id) {
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
cpuProfile = getCpuProfile(id);
+ return performAction(VdcActionType.RemoveCpuProfile,
+ new CpuProfileParameters(cpuProfile,
+ cpuProfile.getId()));
+ }
+
+ protected
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
getCpuProfile(String id) {
+ return
getEntity(org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class,
+ VdcQueryType.GetCpuProfileById,
+ new IdQueryParameters(asGuidOr404(id)),
+ "CpuProfiles");
+ }
+
+ @Override
+ protected CpuProfile doPopulate(CpuProfile model,
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
entity) {
+ return model;
+ }
+
+ protected abstract
List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
getCpuProfilesCollection();
+
+ protected CpuProfiles performList() {
+ return mapCollection(getCpuProfilesCollection());
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfileResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfileResource.java
new file mode 100644
index 0000000..7fc712d
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfileResource.java
@@ -0,0 +1,34 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.resource.AssignedCpuProfileResource;
+
+public class BackendAssignedCpuProfileResource extends
AbstractBackendCpuProfileResource implements AssignedCpuProfileResource {
+
+ private final BackendAssignedCpuProfilesResource parent;
+
+ public BackendAssignedCpuProfileResource(String id,
BackendAssignedCpuProfilesResource parent) {
+ super(id);
+ this.parent = parent;
+ }
+
+ public BackendAssignedCpuProfilesResource getParent() {
+ return parent;
+ }
+
+ @Override
+ public CpuProfile get() {
+ return addLinks(super.get());
+ }
+
+ @Override
+ protected CpuProfile addParents(CpuProfile cpuProfile) {
+ return parent.addParents(cpuProfile);
+ }
+
+ @Override
+ protected CpuProfile doPopulate(CpuProfile model,
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
entity) {
+ return model;
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfilesResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfilesResource.java
new file mode 100644
index 0000000..83b0aa5
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfilesResource.java
@@ -0,0 +1,62 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import java.util.List;
+
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Response;
+
+import org.ovirt.engine.api.model.Cluster;
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.model.CpuProfiles;
+import org.ovirt.engine.api.resource.AssignedCpuProfileResource;
+import org.ovirt.engine.api.resource.AssignedCpuProfilesResource;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendAssignedCpuProfilesResource extends
AbstractBackendCpuProfilesResource implements AssignedCpuProfilesResource {
+
+ private final String clusterId;
+
+ public BackendAssignedCpuProfilesResource(String clusterId) {
+ this.clusterId = clusterId;
+ }
+
+ @Override
+ public CpuProfiles list() {
+ return performList();
+ }
+
+ @Override
+ public Response add(CpuProfile cpuProfile) {
+ if (!cpuProfile.isSetCluster() || !cpuProfile.getCluster().isSetId()) {
+ cpuProfile.setCluster(new Cluster());
+ cpuProfile.getCluster().setId(clusterId);
+ }
+
+ return super.add(cpuProfile);
+ }
+
+ @Override
+ protected void validateParameters(CpuProfile cpuProfile) {
+ validateParameters(cpuProfile, "name");
+ }
+
+ @SingleEntityResource
+ @Override
+ public AssignedCpuProfileResource
getAssignedCpuProfileSubResource(@PathParam("id") String id) {
+ return inject(new BackendAssignedCpuProfileResource(id, this));
+ }
+
+ @Override
+ public CpuProfile addParents(CpuProfile cpuProfile) {
+ cpuProfile.setCluster(new Cluster());
+ cpuProfile.getCluster().setId(clusterId);
+ return cpuProfile;
+ }
+
+ @Override
+ protected
List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
getCpuProfilesCollection() {
+ return getBackendCollection(VdcQueryType.GetCpuProfilesByClusterId,
+ new IdQueryParameters(asGuidOr404(clusterId)));
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
index 21d1122..4ad4677 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
@@ -5,6 +5,7 @@
import org.ovirt.engine.api.model.Cluster;
import org.ovirt.engine.api.resource.AffinityGroupsResource;
+import org.ovirt.engine.api.resource.AssignedCpuProfilesResource;
import org.ovirt.engine.api.resource.AssignedNetworksResource;
import org.ovirt.engine.api.resource.AssignedPermissionsResource;
import org.ovirt.engine.api.resource.ClusterResource;
@@ -84,4 +85,8 @@
return inject(new BackendAffinityGroupsResource(id));
}
+ @Override
+ public AssignedCpuProfilesResource getCpuProfilesResource() {
+ return inject(new BackendAssignedCpuProfilesResource(id));
+ }
}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
index ef43ac7..3e5950c 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
@@ -26,7 +26,7 @@
implements ClustersResource {
static final String[] SUB_COLLECTIONS = { "networks", "permissions",
"glustervolumes", "glusterhooks",
- "affinitygroups" };
+ "affinitygroups", "cpuprofiles" };
static final String[] VIRT_ONLY_MODE_COLLECTIONS_TO_HIDE =
{"glustervolumes", "glusterhooks" };
public BackendClustersResource() {
super(Cluster.class, VDSGroup.class, SUB_COLLECTIONS);
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfileResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfileResource.java
new file mode 100644
index 0000000..30d68b3
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfileResource.java
@@ -0,0 +1,52 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.resource.AssignedPermissionsResource;
+import org.ovirt.engine.api.resource.CpuProfileResource;
+import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.action.CpuProfileParameters;
+import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+
+public class BackendCpuProfileResource extends
AbstractBackendCpuProfileResource implements CpuProfileResource {
+
+ protected BackendCpuProfileResource(String id) {
+ super(id, BackendCpuProfilesResource.SUB_COLLECTIONS);
+ }
+
+ @Override
+ public CpuProfile get() {
+ return super.get();
+ }
+
+ @Override
+ public CpuProfile update(CpuProfile resource) {
+ return performUpdate(resource,
+ new QueryIdResolver<Guid>(VdcQueryType.GetCpuProfileById,
IdQueryParameters.class),
+ VdcActionType.UpdateCpuProfile,
+ new UpdateParametersProvider());
+ }
+
+ @Override
+ public AssignedPermissionsResource getPermissionsResource() {
+ return inject(new BackendAssignedPermissionsResource(guid,
+ VdcQueryType.GetPermissionsForObject,
+ new GetPermissionsForObjectParameters(guid),
+ CpuProfile.class,
+ VdcObjectType.CpuProfile));
+ }
+
+ protected class UpdateParametersProvider
+ implements ParametersProvider<CpuProfile,
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile> {
+ @Override
+ public VdcActionParametersBase getParameters(CpuProfile incoming,
+
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile entity) {
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
map = map(incoming, entity);
+ return new CpuProfileParameters(map, map.getId());
+ }
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfilesResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfilesResource.java
new file mode 100644
index 0000000..67509f8
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfilesResource.java
@@ -0,0 +1,57 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import java.util.List;
+
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Response;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.model.CpuProfiles;
+import org.ovirt.engine.api.resource.CpuProfileResource;
+import org.ovirt.engine.api.resource.CpuProfilesResource;
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendCpuProfilesResource extends
AbstractBackendCpuProfilesResource implements CpuProfilesResource {
+
+ static final String[] SUB_COLLECTIONS = { "permissions" };
+
+ public BackendCpuProfilesResource() {
+ super(SUB_COLLECTIONS);
+ }
+
+ @Override
+ public CpuProfiles list() {
+ return performList();
+ }
+
+ @Override
+ protected
List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
getCpuProfilesCollection() {
+ return getBackendCollection(VdcQueryType.GetAllCpuProfiles, new
VdcQueryParametersBase());
+ }
+
+ @Override
+ public Response add(CpuProfile cpuProfile) {
+ return super.add(cpuProfile);
+ }
+
+ @Override
+ protected void validateParameters(CpuProfile cpuProfile) {
+ validateParameters(cpuProfile, "name", "cluster.id");
+ String clusterId = cpuProfile.getCluster().getId();
+ // verify the cluster.id is well provided
+ getEntity(VDSGroup.class,
+ VdcQueryType.GetVdsGroupById,
+ new IdQueryParameters(asGuid(clusterId)),
+ "cluster: id="
+ + clusterId);
+ }
+
+ @SingleEntityResource
+ @Override
+ public CpuProfileResource getCpuProfileSubResource(@PathParam("id") String
id) {
+ return inject(new BackendCpuProfileResource(id));
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
index 46fc8b5..14a9085 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
@@ -89,10 +89,18 @@
addNumaNodesFeature(features);
addMacPoolsFeature(features);
addDiskProfilesFeature(features);
+ addCpuProfilesFeature(features);
}
return features;
}
+ private void addCpuProfilesFeature(Features features) {
+ Feature feature = new Feature();
+ feature.setName("Cpu Profiles");
+ feature.setDescription("Configuring Cpu's profile, for Cluster and
QoS");
+ features.getFeature().add(feature);
+ }
+
private void addDiskProfilesFeature(Features features) {
Feature feature = new Feature();
feature.setName("Disk Profiles");
diff --git
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfilesResourceTest.java
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfilesResourceTest.java
new file mode 100644
index 0000000..54157a0
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCpuProfilesResourceTest.java
@@ -0,0 +1,330 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.ovirt.engine.api.model.Fault;
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.model.Cluster;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.CpuProfileParameters;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+
+public abstract class AbstractBackendCpuProfilesResourceTest<C extends
AbstractBackendCpuProfilesResource>
+ extends AbstractBackendCollectionResourceTest<CpuProfile,
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile, C> {
+
+ protected static final Guid CLUSTER_ID = GUIDS[1];
+ private final VdcQueryType listQueryType;
+ private final Class<? extends VdcQueryParametersBase> listQueryParamsClass;
+
+ public AbstractBackendCpuProfilesResourceTest(C collection,
+ VdcQueryType listQueryType,
+ Class<? extends VdcQueryParametersBase> queryParamsClass) {
+ super(collection, null, "");
+ this.listQueryType = listQueryType;
+ this.listQueryParamsClass = queryParamsClass;
+ }
+
+ @Test
+ public void testRemoveNotFound() throws Exception {
+ setUpEntityQueryExpectations(1, 0, true);
+ control.replay();
+ try {
+ collection.remove(GUIDS[0].toString());
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyNotFoundException(wae);
+ }
+ }
+
+ @Test
+ public void testRemove() throws Exception {
+ setUpEntityQueryExpectations(2, 0, false);
+ setUriInfo(setUpActionExpectations(VdcActionType.RemoveCpuProfile,
+ CpuProfileParameters.class,
+ new String[] {},
+ new Object[] {},
+ true,
+ true));
+ verifyRemove(collection.remove(GUIDS[0].toString()));
+ }
+
+ @Test
+ public void testRemoveNonExistant() throws Exception {
+ setUpEntityQueryExpectations(VdcQueryType.GetCpuProfileById,
+ IdQueryParameters.class,
+ new String[] { "Id" },
+ new Object[] { NON_EXISTANT_GUID },
+ null);
+ control.replay();
+ try {
+ collection.remove(NON_EXISTANT_GUID.toString());
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ assertNotNull(wae.getResponse());
+ assertEquals(404, wae.getResponse().getStatus());
+ }
+ }
+
+ @Test
+ public void testRemoveCantDo() throws Exception {
+ doTestBadRemove(false, true, CANT_DO);
+ }
+
+ @Test
+ public void testRemoveFailed() throws Exception {
+ doTestBadRemove(true, false, FAILURE);
+ }
+
+ protected void doTestBadRemove(boolean canDo, boolean success, String
detail) throws Exception {
+ setUpEntityQueryExpectations(2, 0, false);
+
+ setUriInfo(setUpActionExpectations(VdcActionType.RemoveCpuProfile,
+ CpuProfileParameters.class,
+ new String[] {},
+ new Object[] {},
+ canDo,
+ success));
+ try {
+ collection.remove(GUIDS[0].toString());
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyFault(wae, detail);
+ }
+ }
+
+ @Test
+ public void testAddCpuProfile() throws Exception {
+ setUriInfo(setUpBasicUriExpectations());
+ setUpClusterQueryExpectations();
+ setUpCreationExpectations(VdcActionType.AddCpuProfile,
+ CpuProfileParameters.class,
+ new String[] {},
+ new Object[] {},
+ true,
+ true,
+ GUIDS[0],
+ VdcQueryType.GetCpuProfileById,
+ IdQueryParameters.class,
+ new String[] { "Id" },
+ new Object[] { Guid.Empty },
+ getEntity(0));
+ CpuProfile model = getModel(0);
+ model.setCluster(new Cluster());
+ model.getCluster().setId(CLUSTER_ID.toString());
+
+ Response response = collection.add(model);
+ assertEquals(201, response.getStatus());
+ assertTrue(response.getEntity() instanceof CpuProfile);
+ verifyModel((CpuProfile) response.getEntity(), 0);
+ }
+
+ @Test
+ public void testAddCpuProfileCantDo() throws Exception {
+ setUpClusterQueryExpectations();
+ doTestBadAddCpuProfile(false, true, CANT_DO);
+ }
+
+ @Test
+ public void testAddCpuProfileFailure() throws Exception {
+ setUpClusterQueryExpectations();
+ doTestBadAddCpuProfile(true, false, FAILURE);
+ }
+
+ private void doTestBadAddCpuProfile(boolean canDo, boolean success, String
detail) throws Exception {
+ setUriInfo(setUpActionExpectations(VdcActionType.AddCpuProfile,
+ CpuProfileParameters.class,
+ new String[] {},
+ new Object[] {},
+ canDo,
+ success));
+ CpuProfile model = getModel(0);
+ model.setCluster(new Cluster());
+ model.getCluster().setId(CLUSTER_ID.toString());
+
+ try {
+ collection.add(model);
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyFault(wae, detail);
+ }
+ }
+
+ @Test
+ public void testAddIncompleteParameters() throws Exception {
+ CpuProfile model = createIncompleteCpuProfile();
+ setUriInfo(setUpBasicUriExpectations());
+ control.replay();
+ try {
+ collection.add(model);
+ fail("expected WebApplicationException on incomplete parameters");
+ } catch (WebApplicationException wae) {
+ verifyIncompleteException(wae, "CpuProfile", "validateParameters",
getIncompleteFields());
+ }
+ }
+
+ protected String[] getIncompleteFields() {
+ return new String[] { "name" };
+ }
+
+ protected CpuProfile createIncompleteCpuProfile() {
+ return new CpuProfile();
+ }
+
+ @Test
+ @Ignore
+ @Override
+ public void testQuery() throws Exception {
+ }
+
+ @Override
+ @Test
+ public void testList() throws Exception {
+ UriInfo uriInfo = setUpUriExpectations(null);
+ setUpCpuProfilesQueryExpectations(null);
+ control.replay();
+ collection.setUriInfo(uriInfo);
+ verifyCollection(getCollection());
+ }
+
+ @Override
+ @Test
+ public void testListFailure() throws Exception {
+ setUpCpuProfilesQueryExpectations(FAILURE);
+ UriInfo uriInfo = setUpUriExpectations(null);
+ collection.setUriInfo(uriInfo);
+ control.replay();
+
+ try {
+ getCollection();
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ assertTrue(wae.getResponse().getEntity() instanceof Fault);
+ assertEquals(mockl10n(FAILURE), ((Fault)
wae.getResponse().getEntity()).getDetail());
+ }
+ }
+
+ @Override
+ @Test
+ public void testListCrash() throws Exception {
+ Throwable t = new RuntimeException(FAILURE);
+ setUpCpuProfilesQueryExpectations(t);
+
+ UriInfo uriInfo = setUpUriExpectations(null);
+ collection.setUriInfo(uriInfo);
+
+ control.replay();
+
+ try {
+ getCollection();
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyFault(wae, BACKEND_FAILED_SERVER_LOCALE, t);
+ }
+ }
+
+ @Override
+ @Test
+ public void testListCrashClientLocale() throws Exception {
+ UriInfo uriInfo = setUpUriExpectations(null);
+ locales.add(CLIENT_LOCALE);
+
+ Throwable t = new RuntimeException(FAILURE);
+ setUpCpuProfilesQueryExpectations(t);
+ collection.setUriInfo(uriInfo);
+
+ control.replay();
+ try {
+ getCollection();
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyFault(wae, BACKEND_FAILED_CLIENT_LOCALE, t);
+ } finally {
+ locales.clear();
+ }
+ }
+
+ private void setUpCpuProfilesQueryExpectations(Object failure) {
+ VdcQueryReturnValue queryResult =
control.createMock(VdcQueryReturnValue.class);
+ expect(queryResult.getSucceeded()).andReturn(failure ==
null).anyTimes();
+
List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
entities = new ArrayList<>();
+
+ if (failure == null) {
+ for (int i = 0; i < NAMES.length; i++) {
+ entities.add(getEntity(i));
+ }
+
expect(queryResult.getReturnValue()).andReturn(entities).anyTimes();
+ } else {
+ if (failure instanceof String) {
+ expect(queryResult.getExceptionString()).andReturn((String)
failure).anyTimes();
+ setUpL10nExpectations((String) failure);
+ } else if (failure instanceof Exception) {
+ expect(backend.runQuery(eq(listQueryType),
+ anyObject(listQueryParamsClass))).andThrow((Exception)
failure).anyTimes();
+ return;
+ }
+ }
+ expect(backend.runQuery(eq(listQueryType),
anyObject(listQueryParamsClass))).andReturn(
+ queryResult);
+ }
+
+ protected void setUpEntityQueryExpectations(int times, int index, boolean
notFound) throws Exception {
+ while (times-- > 0) {
+ setUpEntityQueryExpectations(VdcQueryType.GetCpuProfileById,
+ IdQueryParameters.class,
+ new String[] { "Id" },
+ new Object[] { GUIDS[index] },
+ notFound ? null : getEntity(index));
+ }
+ }
+
+ static CpuProfile getModel(int index) {
+ CpuProfile model = new CpuProfile();
+ model.setId(GUIDS[index].toString());
+ model.setName(NAMES[index]);
+ model.setDescription(DESCRIPTIONS[index]);
+ return model;
+ }
+
+ protected
List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
getEntityList() {
+
List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
entities =
+ new
ArrayList<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>();
+ for (int i = 0; i < NAMES.length; i++) {
+ entities.add(getEntity(i));
+ }
+
+ return entities;
+ }
+
+ @Override
+ protected
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile getEntity(int
index) {
+ return
setUpEntityExpectations(control.createMock(org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class),
+ index);
+ }
+
+ protected void setUpClusterQueryExpectations() {
+ }
+
+ static org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
setUpEntityExpectations(org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
entity,
+ int index) {
+ expect(entity.getId()).andReturn(GUIDS[index]).anyTimes();
+ expect(entity.getName()).andReturn(NAMES[index]).anyTimes();
+
expect(entity.getDescription()).andReturn(DESCRIPTIONS[index]).anyTimes();
+ expect(entity.getClusterId()).andReturn(GUIDS[index]).anyTimes();
+ return entity;
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
index 5956119..9868ddb 100644
---
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
+++
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
@@ -122,6 +122,7 @@
"storageconnections",
"vnicprofiles",
"diskprofiles",
+ "cpuprofiles",
"schedulingpolicyunits",
"schedulingpolicies",
"permissions",
@@ -183,6 +184,7 @@
BASE_PATH + "/storageconnections",
BASE_PATH + "/vnicprofiles",
BASE_PATH + "/diskprofiles",
+ BASE_PATH + "/cpuprofiles",
BASE_PATH + "/schedulingpolicyunits",
BASE_PATH + "/schedulingpolicies",
BASE_PATH + "/permissions",
diff --git
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfileResourceTest.java
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfileResourceTest.java
new file mode 100644
index 0000000..a2ec2c4
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfileResourceTest.java
@@ -0,0 +1,99 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import static org.easymock.EasyMock.expect;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ws.rs.WebApplicationException;
+
+import org.junit.Test;
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendAssignedCpuProfileResourceTest
+ extends AbstractBackendSubResourceTest<CpuProfile,
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile,
BackendAssignedCpuProfileResource> {
+
+ public BackendAssignedCpuProfileResourceTest() {
+ super(new BackendAssignedCpuProfileResource(GUIDS[0].toString(),
+ new BackendAssignedCpuProfilesResource(GUIDS[0].toString())));
+ }
+
+ @Test
+ public void testBadGuid() throws Exception {
+ control.replay();
+ try {
+ new BackendCpuProfileResource("foo");
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyNotFoundException(wae);
+ }
+ }
+
+ @Test
+ public void testGetNotFound() throws Exception {
+ setUriInfo(setUpBasicUriExpectations());
+ setUpEntityQueryExpectations(1, 0, true);
+ control.replay();
+ try {
+ resource.get();
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyNotFoundException(wae);
+ }
+ }
+
+ @Test
+ public void testGet() throws Exception {
+ setUriInfo(setUpBasicUriExpectations());
+ setUpEntityQueryExpectations(1, 0, false);
+ control.replay();
+
+ verifyModel(resource.get(), 0);
+ }
+
+ protected void setUpEntityQueryExpectations(int times, int index, boolean
notFound) throws Exception {
+ while (times-- > 0) {
+ setUpEntityQueryExpectations(VdcQueryType.GetCpuProfileById,
+ IdQueryParameters.class,
+ new String[] { "Id" },
+ new Object[] { GUIDS[index] },
+ notFound ? null : getEntity(index));
+ }
+ }
+
+ static CpuProfile getModel(int index) {
+ CpuProfile model = new CpuProfile();
+ model.setId(GUIDS[index].toString());
+ model.setName(NAMES[index]);
+ model.setDescription(DESCRIPTIONS[index]);
+ return model;
+ }
+
+ @Override
+ protected
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile getEntity(int
index) {
+ return
setUpEntityExpectations(control.createMock(org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class),
+ index);
+ }
+
+ protected
List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
getEntityList() {
+
List<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>
entities =
+ new
ArrayList<org.ovirt.engine.core.common.businessentities.profiles.CpuProfile>();
+ for (int i = 0; i < NAMES.length; i++) {
+ entities.add(getEntity(i));
+ }
+
+ return entities;
+ }
+
+ static org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
setUpEntityExpectations(org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
entity,
+ int index) {
+ expect(entity.getId()).andReturn(GUIDS[index]).anyTimes();
+ expect(entity.getName()).andReturn(NAMES[index]).anyTimes();
+
expect(entity.getDescription()).andReturn(DESCRIPTIONS[index]).anyTimes();
+ expect(entity.getClusterId()).andReturn(GUIDS[index]).anyTimes();
+ expect(entity.getQosId()).andReturn(GUIDS[index]).anyTimes();
+ return entity;
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfilesResourceTest.java
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfilesResourceTest.java
new file mode 100644
index 0000000..33acde2
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAssignedCpuProfilesResourceTest.java
@@ -0,0 +1,21 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import java.util.List;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendAssignedCpuProfilesResourceTest extends
AbstractBackendCpuProfilesResourceTest<BackendAssignedCpuProfilesResource> {
+
+ public BackendAssignedCpuProfilesResourceTest() {
+ super(new BackendAssignedCpuProfilesResource(CLUSTER_ID.toString()),
+ VdcQueryType.GetCpuProfilesByClusterId,
+ IdQueryParameters.class);
+ }
+
+ @Override
+ protected List<CpuProfile> getCollection() {
+ return collection.list().getCpuProfiles();
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfileResourceTest.java
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfileResourceTest.java
new file mode 100644
index 0000000..24e372b
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfileResourceTest.java
@@ -0,0 +1,159 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import static org.easymock.EasyMock.expect;
+
+import javax.ws.rs.WebApplicationException;
+
+import org.junit.Test;
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.CpuProfileParameters;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendCpuProfileResourceTest
+ extends AbstractBackendSubResourceTest<CpuProfile,
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile,
BackendCpuProfileResource> {
+
+ public BackendCpuProfileResourceTest() {
+ super(new BackendCpuProfileResource(GUIDS[0].toString()));
+ }
+
+ @Test
+ public void testBadGuid() throws Exception {
+ control.replay();
+ try {
+ new BackendCpuProfileResource("foo");
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyNotFoundException(wae);
+ }
+ }
+
+ @Test
+ public void testGetNotFound() throws Exception {
+ setUriInfo(setUpBasicUriExpectations());
+ setUpEntityQueryExpectations(1, 0, true);
+ control.replay();
+ try {
+ resource.get();
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyNotFoundException(wae);
+ }
+ }
+
+ @Test
+ public void testGet() throws Exception {
+ setUriInfo(setUpBasicUriExpectations());
+ setUpEntityQueryExpectations(1, 0, false);
+ control.replay();
+
+ verifyModel(resource.get(), 0);
+ }
+
+ @Test
+ public void testUpdateNotFound() throws Exception {
+ setUriInfo(setUpBasicUriExpectations());
+ setUpEntityQueryExpectations(1, 0, true);
+
+ control.replay();
+ try {
+ resource.update(getModel(0));
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyNotFoundException(wae);
+ }
+ }
+
+ @Test
+ public void testUpdate() throws Exception {
+ setUpEntityQueryExpectations(2, 0, false);
+
+ setUriInfo(setUpActionExpectations(VdcActionType.UpdateCpuProfile,
+ CpuProfileParameters.class,
+ new String[] {},
+ new Object[] {},
+ true,
+ true));
+
+ verifyModel(resource.update(getModel(0)), 0);
+ }
+
+ @Test
+ public void testUpdateCantDo() throws Exception {
+ doTestBadUpdate(false, true, CANT_DO);
+ }
+
+ @Test
+ public void testUpdateFailed() throws Exception {
+ doTestBadUpdate(true, false, FAILURE);
+ }
+
+ private void doTestBadUpdate(boolean canDo, boolean success, String
detail) throws Exception {
+ setUpEntityQueryExpectations(1, 0, false);
+
+ setUriInfo(setUpActionExpectations(VdcActionType.UpdateCpuProfile,
+ CpuProfileParameters.class,
+ new String[] {},
+ new Object[] {},
+ canDo,
+ success));
+
+ try {
+ resource.update(getModel(0));
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyFault(wae, detail);
+ }
+ }
+
+ @Test
+ public void testConflictedUpdate() throws Exception {
+ setUriInfo(setUpBasicUriExpectations());
+ setUpEntityQueryExpectations(1, 0, false);
+ control.replay();
+
+ CpuProfile model = getModel(1);
+ model.setId(GUIDS[1].toString());
+ try {
+ resource.update(model);
+ fail("expected WebApplicationException");
+ } catch (WebApplicationException wae) {
+ verifyImmutabilityConstraint(wae);
+ }
+ }
+
+ protected void setUpEntityQueryExpectations(int times, int index, boolean
notFound) throws Exception {
+ while (times-- > 0) {
+ setUpEntityQueryExpectations(VdcQueryType.GetCpuProfileById,
+ IdQueryParameters.class,
+ new String[] { "Id" },
+ new Object[] { GUIDS[index] },
+ notFound ? null : getEntity(index));
+ }
+ }
+
+ static CpuProfile getModel(int index) {
+ CpuProfile model = new CpuProfile();
+ model.setId(GUIDS[index].toString());
+ model.setName(NAMES[index]);
+ model.setDescription(DESCRIPTIONS[index]);
+ return model;
+ }
+
+ @Override
+ protected
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile getEntity(int
index) {
+ return
setUpEntityExpectations(control.createMock(org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class),
+ index);
+ }
+
+ static org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
setUpEntityExpectations(org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
entity,
+ int index) {
+ expect(entity.getId()).andReturn(GUIDS[index]).anyTimes();
+ expect(entity.getName()).andReturn(NAMES[index]).anyTimes();
+
expect(entity.getDescription()).andReturn(DESCRIPTIONS[index]).anyTimes();
+ expect(entity.getClusterId()).andReturn(GUIDS[index]).anyTimes();
+ expect(entity.getQosId()).andReturn(GUIDS[index]).anyTimes();
+ return entity;
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfilesResourceTest.java
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfilesResourceTest.java
new file mode 100644
index 0000000..d301ff5
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCpuProfilesResourceTest.java
@@ -0,0 +1,42 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import java.util.List;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendCpuProfilesResourceTest extends
AbstractBackendCpuProfilesResourceTest<BackendCpuProfilesResource> {
+
+ public BackendCpuProfilesResourceTest() {
+ super(new BackendCpuProfilesResource(),
VdcQueryType.GetAllCpuProfiles, VdcQueryParametersBase.class);
+ }
+
+ @Override
+ protected String[] getIncompleteFields() {
+ return new String[] { "cluster.id" };
+ }
+
+ @Override
+ protected CpuProfile createIncompleteCpuProfile() {
+ CpuProfile cpuProfile = super.createIncompleteCpuProfile();
+ cpuProfile.setName(NAMES[0]);
+ return cpuProfile;
+ }
+
+ @Override
+ protected List<CpuProfile> getCollection() {
+ return collection.list().getCpuProfiles();
+ }
+
+ @Override
+ protected void setUpClusterQueryExpectations() {
+ setUpEntityQueryExpectations(VdcQueryType.GetVdsGroupById,
+ IdQueryParameters.class,
+ new String[] { "Id" },
+ new Object[] { CLUSTER_ID },
+ new VDSGroup());
+ }
+}
diff --git
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/CpuProfileMapper.java
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/CpuProfileMapper.java
new file mode 100644
index 0000000..ee7e626
--- /dev/null
+++
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/CpuProfileMapper.java
@@ -0,0 +1,56 @@
+package org.ovirt.engine.api.restapi.types;
+
+import org.ovirt.engine.api.model.CpuProfile;
+import org.ovirt.engine.api.model.QoS;
+import org.ovirt.engine.api.model.Cluster;
+import org.ovirt.engine.api.restapi.utils.GuidUtils;
+
+public class CpuProfileMapper {
+ @Mapping(from = CpuProfile.class, to =
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class)
+ public static
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
map(CpuProfile model,
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
template) {
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile
entity =
+ template != null ? template : new
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile();
+ if (model.isSetId()) {
+ entity.setId(GuidUtils.asGuid(model.getId()));
+ }
+ if (model.isSetName()) {
+ entity.setName(model.getName());
+ }
+ if (model.isSetDescription()) {
+ entity.setDescription(model.getDescription());
+ }
+ if (model.isSetCluster() && model.getCluster().isSetId()) {
+ entity.setClusterId(GuidUtils.asGuid(model.getCluster().getId()));
+ }
+ if (model.isSetQos() && model.getQos().isSetId()) {
+ entity.setQosId(GuidUtils.asGuid(model.getQos().getId()));
+ }
+ return entity;
+ }
+
+ @Mapping(from =
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class, to =
CpuProfile.class)
+ public static CpuProfile
map(org.ovirt.engine.core.common.businessentities.profiles.CpuProfile entity,
+ CpuProfile template) {
+ CpuProfile model = template != null ? template : new CpuProfile();
+ if (entity.getId() != null) {
+ model.setId(entity.getId().toString());
+ }
+ if (entity.getName() != null) {
+ model.setName(entity.getName());
+ }
+ if (entity.getDescription() != null) {
+ model.setDescription(entity.getDescription());
+ }
+ if (entity.getClusterId() != null) {
+ model.setCluster(new Cluster());
+ model.getCluster().setId(entity.getClusterId().toString());
+ }
+ if (entity.getQosId() != null) {
+ model.setQos(new QoS());
+ model.getQos().setId(entity.getQosId().toString());
+ }
+
+ return model;
+ }
+}
diff --git
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/CpuProfileMapperTest.java
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/CpuProfileMapperTest.java
new file mode 100644
index 0000000..c1c33a1
--- /dev/null
+++
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/CpuProfileMapperTest.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.api.restapi.types;
+
+import org.ovirt.engine.api.model.CpuProfile;
+
+public class CpuProfileMapperTest extends
AbstractInvertibleMappingTest<CpuProfile,
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile,
+ org.ovirt.engine.core.common.businessentities.profiles.CpuProfile> {
+
+ public CpuProfileMapperTest() {
+ super(CpuProfile.class,
+
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class,
+
org.ovirt.engine.core.common.businessentities.profiles.CpuProfile.class);
+ }
+
+ @Override
+ protected void verify(CpuProfile model, CpuProfile transform) {
+ assertNotNull(transform);
+ assertEquals(model.getName(), transform.getName());
+ assertEquals(model.getId(), transform.getId());
+ assertEquals(model.getDescription(), transform.getDescription());
+ assertNotNull(transform.getCluster());
+ assertEquals(model.getCluster().getId(),
transform.getCluster().getId());
+ assertNotNull(transform.getQos());
+ assertEquals(model.getQos().getId(), transform.getQos().getId());
+ }
+}
--
To view, visit http://gerrit.ovirt.org/31730
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I65976b00665a7f6d87b3fa6f62e54c753c51238c
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