Gilad Chaplik has uploaded a new change for review.

Change subject: core: Cpu Profile CRUD commands and queries
......................................................................

core: Cpu Profile CRUD commands and queries

Change-Id: I6be41103ad9b04fc7d0b530439ab4a2c731bbded
Signed-off-by: Gilad Chaplik <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetCpuProfilesByCpuQosIdQuery.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddCpuProfileCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddDiskProfileCommand.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddProfileCommandBase.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetAllCpuProfilesQuery.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetCpuProfileByIdQuery.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetCpuProfilesByClusterIdQuery.java
R 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileCommandBase.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveCpuProfileCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveDiskProfileCommand.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateCpuProfileCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateDiskProfileCommand.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateProfileCommandBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CpuProfileParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DiskProfileParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ProfileParametersBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
29 files changed, 581 insertions(+), 135 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/24/31824/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetCpuProfilesByCpuQosIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetCpuProfilesByCpuQosIdQuery.java
new file mode 100644
index 0000000..5de7d52
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetCpuProfilesByCpuQosIdQuery.java
@@ -0,0 +1,17 @@
+package org.ovirt.engine.core.bll;
+
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+
+public class GetCpuProfilesByCpuQosIdQuery extends 
QueriesCommandBase<IdQueryParameters> {
+
+    public GetCpuProfilesByCpuQosIdQuery(IdQueryParameters parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        getQueryReturnValue().setReturnValue(getDbFacade().getCpuProfileDao()
+                .getAllForQos(getParameters().getId()));
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddCpuProfileCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddCpuProfileCommand.java
new file mode 100644
index 0000000..87bb143
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddCpuProfileCommand.java
@@ -0,0 +1,49 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.ovirt.engine.core.bll.utils.PermissionSubject;
+import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.action.CpuProfileParameters;
+import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
+
+public class AddCpuProfileCommand extends 
AddProfileCommandBase<CpuProfileParameters, CpuProfile, CpuProfileValidator> {
+
+    public AddCpuProfileCommand(CpuProfileParameters parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected CpuProfileValidator getProfileValidator() {
+        return new CpuProfileValidator(getProfile());
+    }
+
+    @Override
+    protected ProfilesDao<CpuProfile> getProfileDao() {
+        return getCpuProfileDao();
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        return Collections.singletonList(new 
PermissionSubject(getParameters().getProfile() != null ? 
getParameters().getProfile()
+                .getClusterId()
+                : null,
+                VdcObjectType.VdsGroups,
+                getActionType().getActionGroup()));
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        super.setActionMessageParameters();
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__ADD);
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        return getSucceeded() ? AuditLogType.USER_ADDED_CPU_PROFILE : 
AuditLogType.USER_FAILED_TO_ADD_CPU_PROFILE;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddDiskProfileCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddDiskProfileCommand.java
index 10a96b8..2f801fe 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddDiskProfileCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddDiskProfileCommand.java
@@ -7,30 +7,24 @@
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.DiskProfileParameters;
+import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
-import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
 
-public class AddDiskProfileCommand extends DiskProfileCommandBase {
+public class AddDiskProfileCommand extends 
AddProfileCommandBase<DiskProfileParameters, DiskProfile, DiskProfileValidator> 
{
 
     public AddDiskProfileCommand(DiskProfileParameters parameters) {
         super(parameters);
     }
 
     @Override
-    protected boolean canDoAction() {
-        DiskProfileValidator validator = new 
DiskProfileValidator(getParameters().getProfile());
-        return validate(validator.diskProfileIsSet())
-                && validate(validator.storageDomainExists())
-                && validate(validator.qosExistsOrNull())
-                && validate(validator.diskProfileNameNotUsed());
+    protected DiskProfileValidator getProfileValidator() {
+        return new DiskProfileValidator(getProfile());
     }
 
     @Override
-    protected void executeCommand() {
-        getParameters().getProfile().setId(Guid.newGuid());
-        getDiskProfileDao().save(getParameters().getProfile());
-        
getReturnValue().setActionReturnValue(getParameters().getProfile().getId());
-        setSucceeded(true);
+    protected ProfilesDao<DiskProfile> getProfileDao() {
+        return getDiskProfileDao();
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddProfileCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddProfileCommandBase.java
new file mode 100644
index 0000000..ea45bc3
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/AddProfileCommandBase.java
@@ -0,0 +1,31 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import org.ovirt.engine.core.common.action.ProfileParametersBase;
+import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase;
+import org.ovirt.engine.core.compat.Guid;
+
+public abstract class AddProfileCommandBase<T extends 
ProfileParametersBase<P>, P extends ProfileBase, Q extends ProfileValidator<P>> 
extends ProfileCommandBase<T, P> {
+
+    public AddProfileCommandBase(T parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected boolean canDoAction() {
+        Q validator = getProfileValidator();
+        return validate(validator.profileIsSet())
+                && validate(validator.parentEntityExists())
+                && validate(validator.qosExistsOrNull())
+                && validate(validator.profileNameNotUsed());
+    }
+
+    @Override
+    protected void executeCommand() {
+        getParameters().getProfile().setId(Guid.newGuid());
+        getProfileDao().save(getParameters().getProfile());
+        
getReturnValue().setActionReturnValue(getParameters().getProfile().getId());
+        setSucceeded(true);
+    }
+
+    protected abstract Q getProfileValidator();
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java
new file mode 100644
index 0000000..b0173e4
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java
@@ -0,0 +1,79 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import java.util.List;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.ovirt.engine.core.bll.ValidationResult;
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+
+
+public class CpuProfileValidator extends ProfileValidator<CpuProfile> {
+    private VDSGroup cluster;
+
+    public CpuProfileValidator(CpuProfile profile) {
+        super(profile);
+    }
+
+    public CpuProfileValidator(Guid profileId) {
+        super(profileId);
+    }
+
+    @Override
+    public ValidationResult parentEntityExists() {
+        if 
(DbFacade.getInstance().getVdsGroupDao().get(getProfile().getClusterId()) == 
null) {
+            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CLUSTER_CAN_NOT_BE_EMPTY);
+        }
+        return ValidationResult.VALID;
+    }
+
+    @Override
+    public ValidationResult parentEntityNotChanged() {
+        if (ObjectUtils.equals(getProfile().getClusterId(), 
getProfileFromDb().getClusterId())) {
+            return ValidationResult.VALID;
+        }
+
+        return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_CHANGE_PROFILE);
+    }
+
+    protected VDSGroup getCluster() {
+        if (cluster == null) {
+            cluster = 
getDbFacade().getVdsGroupDao().get(getProfile().getClusterId());
+        }
+
+        return cluster;
+    }
+
+    @Override
+    public ValidationResult isParentEntityValid(Guid clusterId) {
+        if (clusterId == null) {
+            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_CPU_PROFILE_CLUSTER_NOT_PROVIDED);
+        }
+        Guid id = getProfile().getId();
+        if (id == null) {
+            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_CPU_PROFILE_EMPTY);
+        }
+        CpuProfile fetchedCpuProfile = getProfileDao().get(id);
+        if (fetchedCpuProfile == null) {
+            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CPU_PROFILE_NOT_FOUND);
+        }
+        if (!clusterId.equals(fetchedCpuProfile.getClusterId())) {
+            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_CPU_PROFILE_NOT_MATCH_CLUSTER);
+        }
+        return ValidationResult.VALID;
+    }
+
+    @Override
+    protected ProfilesDao<CpuProfile> getProfileDao() {
+        return getDbFacade().getCpuProfileDao();
+    }
+
+    @Override
+    protected List<CpuProfile> getProfilesByParentEntity() {
+        return 
getDbFacade().getCpuProfileDao().getAllForCluster(getCluster().getId());
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileHelper.java
index 1928c6d..0d5337c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileHelper.java
@@ -51,7 +51,7 @@
                 }
             } else {
                 ValidationResult result =
-                        new 
DiskProfileValidator(getDiskProfileDao().get(diskImage.getDiskProfileId())).isStorageDomainValid(storageDomainId);
+                        new 
DiskProfileValidator(getDiskProfileDao().get(diskImage.getDiskProfileId())).isParentEntityValid(storageDomainId);
                 if (result != ValidationResult.VALID) {
                     return result;
                 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java
index 5cc370c..5e994e2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java
@@ -1,132 +1,60 @@
 package org.ovirt.engine.core.bll.profiles;
 
-import java.util.Collection;
 import java.util.List;
 
 import org.apache.commons.lang.ObjectUtils;
 import org.ovirt.engine.core.bll.ValidationResult;
 import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
-import org.ovirt.engine.core.common.businessentities.Nameable;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.dao.profiles.DiskProfileDao;
-import org.ovirt.engine.core.utils.ReplacementUtils;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
 
-public class DiskProfileValidator {
 
-    private final Guid diskProfileId;
-    private DiskProfile diskProfile;
-    private DiskProfile diskProfileFromDb;
+public class DiskProfileValidator extends ProfileValidator<DiskProfile> {
     private StorageDomain storageDomain;
-    private List<DiskProfile> diskProfiles;
 
-    public DiskProfileValidator(DiskProfile diskProfile) {
-        this(diskProfile != null ? diskProfile.getId() : null);
-        this.diskProfile = diskProfile;
+    public DiskProfileValidator(DiskProfile profile) {
+        super(profile);
     }
 
-    public DiskProfileValidator(Guid diskProfileId) {
-        this.diskProfileId = diskProfileId;
+    public DiskProfileValidator(Guid profileId) {
+        super(profileId);
     }
 
-    protected DbFacade getDbFacade() {
-        return DbFacade.getInstance();
-    }
-
-    public ValidationResult diskProfileIsSet() {
-        return getDiskProfile() == null
-                ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROFILE_NOT_EXISTS)
-                : ValidationResult.VALID;
-    }
-
-    public ValidationResult diskProfileExists() {
-        return getDiskProfileFromDb() == null
-                ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROFILE_NOT_EXISTS)
-                : ValidationResult.VALID;
-    }
-
-    public ValidationResult storageDomainExists() {
+    @Override
+    public ValidationResult parentEntityExists() {
         return new StorageDomainValidator(getStorageDomain()).isDomainExist();
     }
 
-    public ValidationResult qosExistsOrNull() {
-        return getDiskProfile().getQosId() == null
-                || 
getDbFacade().getStorageQosDao().get(getDiskProfile().getQosId()) != null
-                ? ValidationResult.VALID
-                : new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_QOS_NOT_FOUND);
-    }
-
-    public ValidationResult diskProfileNameNotUsed() {
-        for (DiskProfile profile : getDiskProfiles()) {
-            if (profile.getName().equals(getDiskProfile().getName())
-                    && !profile.getId().equals(getDiskProfile().getId())) {
-                return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROFILE_NAME_IN_USE);
-            }
-        }
-
-        return ValidationResult.VALID;
-    }
-
-    public ValidationResult storageDomainNotChanged() {
-        if (ObjectUtils.equals(getDiskProfile().getStorageDomainId(), 
getDiskProfileFromDb().getStorageDomainId())) {
+    @Override
+    public ValidationResult parentEntityNotChanged() {
+        if (ObjectUtils.equals(getProfile().getStorageDomainId(), 
getProfileFromDb().getStorageDomainId())) {
             return ValidationResult.VALID;
         }
 
         return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_CHANGE_PROFILE);
     }
 
-    protected ValidationResult diskProfileNotUsed(List<? extends Nameable> 
entities, VdcBllMessages entitiesReplacement) {
-        if (entities.isEmpty()) {
-            return ValidationResult.VALID;
-        }
-
-        Collection<String> replacements = 
ReplacementUtils.replaceWithNameable("ENTITIES_USING_PROFILE", entities);
-        replacements.add(entitiesReplacement.name());
-        return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROFILE_IN_USE, 
replacements);
-    }
-
     protected StorageDomain getStorageDomain() {
         if (storageDomain == null) {
-            storageDomain = 
getDbFacade().getStorageDomainDao().get(getDiskProfile().getStorageDomainId());
+            storageDomain = 
getDbFacade().getStorageDomainDao().get(getProfile().getStorageDomainId());
         }
 
         return storageDomain;
     }
 
-    public DiskProfile getDiskProfile() {
-        if (diskProfile == null) {
-            diskProfile = getDiskProfileDao().get(diskProfileId);
-        }
-        return diskProfile;
-    }
-
-    protected List<DiskProfile> getDiskProfiles() {
-        if (diskProfiles == null) {
-            diskProfiles = 
getDiskProfileDao().getAllForStorageDomain(getDiskProfile().getStorageDomainId());
-        }
-
-        return diskProfiles;
-    }
-
-    protected DiskProfile getDiskProfileFromDb() {
-        if (diskProfileFromDb == null) {
-            diskProfileFromDb = 
getDbFacade().getDiskProfileDao().get(diskProfile.getId());
-        }
-
-        return diskProfileFromDb;
-    }
-
-    public ValidationResult isStorageDomainValid(Guid storageDomainId) {
+    @Override
+    public ValidationResult isParentEntityValid(Guid storageDomainId) {
         if (storageDomainId == null) {
             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_DISK_PROFILE_STORAGE_DOMAIN_NOT_PROVIDED);
         }
-        if (diskProfileId == null) {
+        Guid id = getProfile().getId();
+        if (id == null) {
             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_DISK_PROFILE_EMPTY);
         }
-        DiskProfile fetchedDiskProfile = 
getDiskProfileDao().get(diskProfileId);
+        DiskProfile fetchedDiskProfile = getProfileDao().get(id);
         if (fetchedDiskProfile == null) {
             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_DISK_PROFILE_NOT_FOUND);
         }
@@ -136,7 +64,13 @@
         return ValidationResult.VALID;
     }
 
-    private DiskProfileDao getDiskProfileDao() {
+    @Override
+    protected ProfilesDao<DiskProfile> getProfileDao() {
         return getDbFacade().getDiskProfileDao();
     }
+
+    @Override
+    protected List<DiskProfile> getProfilesByParentEntity() {
+        return 
getDbFacade().getDiskProfileDao().getAllForStorageDomain(getStorageDomain().getId());
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetAllCpuProfilesQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetAllCpuProfilesQuery.java
new file mode 100644
index 0000000..edea731
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetAllCpuProfilesQuery.java
@@ -0,0 +1,17 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+
+public class GetAllCpuProfilesQuery extends 
QueriesCommandBase<VdcQueryParametersBase> {
+
+    public GetAllCpuProfilesQuery(VdcQueryParametersBase parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        
getQueryReturnValue().setReturnValue(getDbFacade().getCpuProfileDao().getAll());
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetCpuProfileByIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetCpuProfileByIdQuery.java
new file mode 100644
index 0000000..33c470f
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetCpuProfileByIdQuery.java
@@ -0,0 +1,17 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+
+public class GetCpuProfileByIdQuery extends 
QueriesCommandBase<IdQueryParameters> {
+
+    public GetCpuProfileByIdQuery(IdQueryParameters parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        
getQueryReturnValue().setReturnValue(getDbFacade().getCpuProfileDao().get(getParameters().getId()));
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetCpuProfilesByClusterIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetCpuProfilesByClusterIdQuery.java
new file mode 100644
index 0000000..cfa4fce
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetCpuProfilesByClusterIdQuery.java
@@ -0,0 +1,18 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+
+public class GetCpuProfilesByClusterIdQuery extends 
QueriesCommandBase<IdQueryParameters> {
+
+    public GetCpuProfilesByClusterIdQuery(IdQueryParameters parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        getQueryReturnValue().setReturnValue(getDbFacade().getCpuProfileDao()
+                .getAllForCluster(getParameters().getId(), getUserID(), 
getParameters().isFiltered()));
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileCommandBase.java
similarity index 67%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileCommandBase.java
rename to 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileCommandBase.java
index 4806246..a4b8d19 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileCommandBase.java
@@ -1,20 +1,20 @@
 package org.ovirt.engine.core.bll.profiles;
 
 import org.ovirt.engine.core.bll.CommandBase;
-import org.ovirt.engine.core.common.action.DiskProfileParameters;
-import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile;
+import org.ovirt.engine.core.common.action.ProfileParametersBase;
+import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dao.profiles.ProfilesDao;
 
-public abstract class DiskProfileCommandBase extends 
CommandBase<DiskProfileParameters> {
-    private DiskProfile profile;
+public abstract class ProfileCommandBase<T extends ProfileParametersBase<P>, P 
extends ProfileBase> extends CommandBase<T> {
+    private P profile;
     private Guid profileId;
 
-    public DiskProfileCommandBase(DiskProfileParameters parameters) {
+    public ProfileCommandBase(T parameters) {
         super(parameters);
     }
 
-    public DiskProfile getProfile() {
+    public P getProfile() {
         if (profile == null) {
             if (getParameters().getProfile() != null) {
                 profile = getParameters().getProfile();
@@ -36,7 +36,5 @@
         return profileId;
     }
 
-    protected ProfilesDao<DiskProfile> getProfileDao() {
-        return getDiskProfileDao();
-    }
+    protected abstract ProfilesDao<P> getProfileDao();
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java
new file mode 100644
index 0000000..5c01203
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java
@@ -0,0 +1,98 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.ovirt.engine.core.bll.ValidationResult;
+import org.ovirt.engine.core.common.businessentities.Nameable;
+import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
+import org.ovirt.engine.core.utils.ReplacementUtils;
+
+public abstract class ProfileValidator<T extends ProfileBase> {
+
+    private final Guid profileId;
+    private T profile;
+    private T profileFromDb;
+
+    public ProfileValidator(T profile) {
+        this(profile != null ? profile.getId() : null);
+        this.profile = profile;
+    }
+
+    public ProfileValidator(Guid profileId) {
+        this.profileId = profileId;
+    }
+
+    protected DbFacade getDbFacade() {
+        return DbFacade.getInstance();
+    }
+
+    public ValidationResult profileIsSet() {
+        return getProfile() == null
+                ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROFILE_MISSING)
+                : ValidationResult.VALID;
+    }
+
+    public ValidationResult profileExists() {
+        return getProfileFromDb() == null
+                ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROFILE_NOT_EXISTS)
+                : ValidationResult.VALID;
+    }
+
+    public ValidationResult qosExistsOrNull() {
+        return getProfile().getQosId() == null
+                || 
getDbFacade().getStorageQosDao().get(getProfile().getQosId()) != null
+                ? ValidationResult.VALID
+                : new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_QOS_NOT_FOUND);
+    }
+
+    public ValidationResult profileNameNotUsed() {
+        for (T profile : getProfilesByParentEntity()) {
+            if (profile.getName().equals(getProfile().getName())
+                    && !profile.getId().equals(getProfile().getId())) {
+                return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROFILE_NAME_IN_USE);
+            }
+        }
+
+        return ValidationResult.VALID;
+    }
+
+    protected ValidationResult profileNotUsed(List<? extends Nameable> 
entities, VdcBllMessages entitiesReplacement) {
+        if (entities.isEmpty()) {
+            return ValidationResult.VALID;
+        }
+
+        Collection<String> replacements = 
ReplacementUtils.replaceWithNameable("ENTITIES_USING_PROFILE", entities);
+        replacements.add(entitiesReplacement.name());
+        return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROFILE_IN_USE, 
replacements);
+    }
+
+    public T getProfile() {
+        if (profile == null) {
+            profile = getProfileDao().get(profileId);
+        }
+        return profile;
+    }
+
+    protected T getProfileFromDb() {
+        if (profileFromDb == null) {
+            profileFromDb = getProfileDao().get(profile.getId());
+        }
+
+        return profileFromDb;
+    }
+
+    public abstract ValidationResult parentEntityExists();
+
+    public abstract ValidationResult parentEntityNotChanged();
+
+    public abstract ValidationResult isParentEntityValid(Guid parentEntityId);
+
+    protected abstract List<T> getProfilesByParentEntity();
+
+    protected abstract ProfilesDao<T> getProfileDao();
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveCpuProfileCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveCpuProfileCommand.java
new file mode 100644
index 0000000..bdfb7e8
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveCpuProfileCommand.java
@@ -0,0 +1,48 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.ovirt.engine.core.bll.utils.PermissionSubject;
+import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.action.CpuProfileParameters;
+import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
+
+public class RemoveCpuProfileCommand extends 
RemoveProfileCommandBase<CpuProfileParameters, CpuProfile, CpuProfileValidator> 
{
+
+    public RemoveCpuProfileCommand(CpuProfileParameters parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected CpuProfileValidator getProfileValidator() {
+        return new CpuProfileValidator(getProfile());
+    }
+
+    @Override
+    protected ProfilesDao<CpuProfile> getProfileDao() {
+        return getCpuProfileDao();
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        return Collections.singletonList(new 
PermissionSubject(getParameters().getProfileId(),
+                VdcObjectType.CpuProfile, getActionType().getActionGroup()));
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        super.setActionMessageParameters();
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__REMOVE);
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        return getSucceeded() ? AuditLogType.USER_REMOVED_CPU_PROFILE
+                : AuditLogType.USER_FAILED_TO_REMOVE_CPU_PROFILE;
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveDiskProfileCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveDiskProfileCommand.java
index a68b0ea..a8e6e8f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveDiskProfileCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveDiskProfileCommand.java
@@ -7,25 +7,24 @@
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.DiskProfileParameters;
+import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
 
-public class RemoveDiskProfileCommand extends DiskProfileCommandBase {
+public class RemoveDiskProfileCommand extends 
RemoveProfileCommandBase<DiskProfileParameters, DiskProfile, 
DiskProfileValidator> {
 
     public RemoveDiskProfileCommand(DiskProfileParameters parameters) {
         super(parameters);
     }
 
     @Override
-    protected boolean canDoAction() {
-        DiskProfileValidator validator = new 
DiskProfileValidator(getProfile());
-        return validate(validator.diskProfileIsSet())
-                && validate(validator.diskProfileExists());
+    protected DiskProfileValidator getProfileValidator() {
+        return new DiskProfileValidator(getProfile());
     }
 
     @Override
-    protected void executeCommand() {
-        
getDbFacade().getDiskProfileDao().remove(getParameters().getProfileId());
-        setSucceeded(true);
+    protected ProfilesDao<DiskProfile> getProfileDao() {
+        return getDiskProfileDao();
     }
 
     @Override
@@ -45,4 +44,5 @@
         return getSucceeded() ? AuditLogType.USER_REMOVED_DISK_PROFILE
                 : AuditLogType.USER_FAILED_TO_REMOVE_DISK_PROFILE;
     }
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java
new file mode 100644
index 0000000..c13e770
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import org.ovirt.engine.core.common.action.ProfileParametersBase;
+import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase;
+
+public abstract class RemoveProfileCommandBase<T extends 
ProfileParametersBase<P>, P extends ProfileBase, Q extends ProfileValidator<P>> 
extends ProfileCommandBase<T, P> {
+
+    public RemoveProfileCommandBase(T parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected boolean canDoAction() {
+        Q validator = getProfileValidator();
+        return validate(validator.profileIsSet())
+                && validate(validator.profileExists());
+    }
+
+    @Override
+    protected void executeCommand() {
+        getProfileDao().remove(getParameters().getProfileId());
+        setSucceeded(true);
+    }
+
+    protected abstract Q getProfileValidator();
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateCpuProfileCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateCpuProfileCommand.java
new file mode 100644
index 0000000..9e419a6
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateCpuProfileCommand.java
@@ -0,0 +1,47 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.ovirt.engine.core.bll.utils.PermissionSubject;
+import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.action.CpuProfileParameters;
+import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
+
+public class UpdateCpuProfileCommand extends 
UpdateProfileCommandBase<CpuProfileParameters, CpuProfile, CpuProfileValidator> 
{
+
+    public UpdateCpuProfileCommand(CpuProfileParameters parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected CpuProfileValidator getProfileValidator() {
+        return new CpuProfileValidator(getProfile());
+    }
+
+    @Override
+    protected ProfilesDao<CpuProfile> getProfileDao() {
+        return getCpuProfileDao();
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        return Collections.singletonList(new 
PermissionSubject(getParameters().getProfileId(),
+                VdcObjectType.CpuProfile, getActionType().getActionGroup()));
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        super.setActionMessageParameters();
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__UPDATE);
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        return getSucceeded() ? AuditLogType.USER_UPDATED_CPU_PROFILE
+                : AuditLogType.USER_FAILED_TO_UPDATE_CPU_PROFILE;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateDiskProfileCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateDiskProfileCommand.java
index c847146..247ea26 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateDiskProfileCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateDiskProfileCommand.java
@@ -7,29 +7,24 @@
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.DiskProfileParameters;
+import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.dao.profiles.ProfilesDao;
 
-public class UpdateDiskProfileCommand extends DiskProfileCommandBase {
+public class UpdateDiskProfileCommand extends 
UpdateProfileCommandBase<DiskProfileParameters, DiskProfile, 
DiskProfileValidator> {
 
     public UpdateDiskProfileCommand(DiskProfileParameters parameters) {
         super(parameters);
     }
 
     @Override
-    protected boolean canDoAction() {
-        DiskProfileValidator validator = new 
DiskProfileValidator(getParameters().getProfile());
-        return validate(validator.diskProfileIsSet())
-                && validate(validator.diskProfileExists())
-                && validate(validator.diskProfileNameNotUsed())
-                && validate(validator.storageDomainNotChanged())
-                && validate(validator.qosExistsOrNull());
+    protected DiskProfileValidator getProfileValidator() {
+        return new DiskProfileValidator(getProfile());
     }
 
     @Override
-    protected void executeCommand() {
-        getDiskProfileDao().update(getParameters().getProfile());
-        
getReturnValue().setActionReturnValue(getParameters().getProfile().getId());
-        setSucceeded(true);
+    protected ProfilesDao<DiskProfile> getProfileDao() {
+        return getDiskProfileDao();
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateProfileCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateProfileCommandBase.java
new file mode 100644
index 0000000..b208b82
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/UpdateProfileCommandBase.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.core.bll.profiles;
+
+import org.ovirt.engine.core.common.action.ProfileParametersBase;
+import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase;
+
+public abstract class UpdateProfileCommandBase<T extends 
ProfileParametersBase<P>, P extends ProfileBase, Q extends ProfileValidator<P>> 
extends ProfileCommandBase<T, P> {
+
+    public UpdateProfileCommandBase(T parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected boolean canDoAction() {
+        Q validator = getProfileValidator();
+        return validate(validator.profileIsSet())
+                && validate(validator.profileExists())
+                && validate(validator.profileNameNotUsed())
+                && validate(validator.parentEntityNotChanged())
+                && validate(validator.qosExistsOrNull());
+    }
+
+    @Override
+    protected void executeCommand() {
+        getProfileDao().update(getParameters().getProfile());
+        
getReturnValue().setActionReturnValue(getParameters().getProfile().getId());
+        setSucceeded(true);
+    }
+
+    protected abstract Q getProfileValidator();
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
index 9cdb7ab..feb4bcd 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
@@ -1010,6 +1010,14 @@
     USER_UPDATED_DISK_PROFILE(10124),
     USER_FAILED_TO_UPDATE_DISK_PROFILE(10125, AuditLogSeverity.ERROR),
 
+    // Cpu Profile
+    USER_ADDED_CPU_PROFILE(10130),
+    USER_FAILED_TO_ADD_CPU_PROFILE(10131, AuditLogSeverity.ERROR),
+    USER_REMOVED_CPU_PROFILE(10132),
+    USER_FAILED_TO_REMOVE_CPU_PROFILE(10133, AuditLogSeverity.ERROR),
+    USER_UPDATED_CPU_PROFILE(10134),
+    USER_FAILED_TO_UPDATE_CPU_PROFILE(10135, AuditLogSeverity.ERROR),
+
     //mom policies
     USER_UPDATED_MOM_POLICIES(10200),
     USER_FAILED_TO_UPDATE_MOM_POLICIES(10201, AuditLogSeverity.WARNING),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CpuProfileParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CpuProfileParameters.java
new file mode 100644
index 0000000..14208e9
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CpuProfileParameters.java
@@ -0,0 +1,15 @@
+package org.ovirt.engine.core.common.action;
+
+import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
+import org.ovirt.engine.core.compat.Guid;
+
+public class CpuProfileParameters extends ProfileParametersBase<CpuProfile> {
+    private static final long serialVersionUID = 1303388881332223324L;
+
+    public CpuProfileParameters() {
+    }
+
+    public CpuProfileParameters(CpuProfile cpuProfile, Guid cpuProfileId) {
+        super(cpuProfile, cpuProfileId);
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DiskProfileParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DiskProfileParameters.java
index 1364f2a..cd249e8 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DiskProfileParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DiskProfileParameters.java
@@ -4,7 +4,6 @@
 import org.ovirt.engine.core.compat.Guid;
 
 public class DiskProfileParameters extends ProfileParametersBase<DiskProfile> {
-
     private static final long serialVersionUID = 1303388881254823324L;
 
     public DiskProfileParameters() {
@@ -13,4 +12,5 @@
     public DiskProfileParameters(DiskProfile diskProfile, Guid diskProfileId) {
         super(diskProfile, diskProfileId);
     }
+
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ProfileParametersBase.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ProfileParametersBase.java
index c0c07f2..9a91a42 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ProfileParametersBase.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ProfileParametersBase.java
@@ -5,7 +5,7 @@
 import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase;
 import org.ovirt.engine.core.compat.Guid;
 
-public class ProfileParametersBase<T extends ProfileBase> extends 
VdcActionParametersBase {
+public abstract class ProfileParametersBase<T extends ProfileBase> extends 
VdcActionParametersBase {
 
     private static final long serialVersionUID = 1303387921254823324L;
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
index b19fa6f..8cd48d4 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
@@ -339,6 +339,10 @@
     AddDiskProfile(1760, ActionGroup.CREATE_STORAGE_DISK_PROFILE, false, 
QuotaDependency.NONE),
     UpdateDiskProfile(1761, ActionGroup.CONFIGURE_STORAGE_DISK_PROFILE, false, 
QuotaDependency.NONE),
     RemoveDiskProfile(1762, ActionGroup.DELETE_STORAGE_DISK_PROFILE, false, 
QuotaDependency.NONE),
+    // cpu profiles
+    AddCpuProfile(1763, ActionGroup.EDIT_CLUSTER_CONFIGURATION, false, 
QuotaDependency.NONE),
+    UpdateCpuProfile(1764, ActionGroup.EDIT_CLUSTER_CONFIGURATION, false, 
QuotaDependency.NONE),
+    RemoveCpuProfile(1765, ActionGroup.EDIT_CLUSTER_CONFIGURATION, false, 
QuotaDependency.NONE),
 
     // External Tasks
     AddExternalJob(1800, ActionGroup.INJECT_EXTERNAL_TASKS, false, 
QuotaDependency.NONE),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index e4a5e14..079e863 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -1007,6 +1007,7 @@
     QOS_CPU_SHARES_OUT_OF_RANGE(ErrorType.BAD_PARAMETERS),
 
     // profiles
+    ACTION_TYPE_FAILED_PROFILE_MISSING(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_PROFILE_NOT_EXISTS(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_PROFILE_NAME_IN_USE(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_CANNOT_CHANGE_PROFILE(ErrorType.BAD_PARAMETERS),
@@ -1015,6 +1016,10 @@
     ACTION_TYPE_FAILED_DISK_PROFILE_NOT_FOUND(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_DISK_PROFILE_STORAGE_DOMAIN_NOT_PROVIDED(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_DISK_PROFILE_NOT_MATCH_STORAGE_DOMAIN(ErrorType.BAD_PARAMETERS),
+    ACTION_TYPE_CPU_PROFILE_CLUSTER_NOT_PROVIDED(ErrorType.BAD_PARAMETERS),
+    ACTION_TYPE_CPU_PROFILE_EMPTY(ErrorType.BAD_PARAMETERS),
+    ACTION_TYPE_FAILED_CPU_PROFILE_NOT_FOUND(ErrorType.BAD_PARAMETERS),
+    ACTION_TYPE_CPU_PROFILE_NOT_MATCH_CLUSTER(ErrorType.BAD_PARAMETERS),
 
     // Affinity Groups
     AFFINITY_GROUP_NAME_TOO_LONG(ErrorType.BAD_PARAMETERS),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index 76a1994..faa779d 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -370,6 +370,12 @@
     GetDiskProfilesByStorageDomainId(VdcQueryAuthType.User),
     GetDiskProfilesByStorageQosId,
 
+    // Cpu Profiles
+    GetCpuProfileById,
+    GetAllCpuProfiles,
+    GetCpuProfilesByClusterId(VdcQueryAuthType.User),
+    GetCpuProfilesByCpuQosId,
+
     // Default type instead of having to null check
     Unknown(VdcQueryAuthType.User);
 
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
index 41d130e..31ed560 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
@@ -48,6 +48,7 @@
 import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao;
 import org.ovirt.engine.core.dao.network.VmNicDao;
 import org.ovirt.engine.core.dao.network.VnicProfileDao;
+import org.ovirt.engine.core.dao.profiles.CpuProfileDao;
 import org.ovirt.engine.core.dao.profiles.DiskProfileDao;
 import org.ovirt.engine.core.dao.provider.ProviderDao;
 import org.ovirt.engine.core.utils.log.Log;
@@ -666,6 +667,10 @@
         return getDbFacade().getDiskProfileDao();
     }
 
+    public CpuProfileDao getCpuProfileDao() {
+        return getDbFacade().getCpuProfileDao();
+    }
+
     protected DbFacade getDbFacade() {
         return DbFacade.getInstance();
     }
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 6ef497c..3ef6df3 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -1135,6 +1135,7 @@
 ACTION_TYPE_FAILED_QOS_NOT_FOUND=Cannot ${action} ${type}. QoS element not 
found.
 
 # profiles
+ACTION_TYPE_FAILED_PROFILE_MISSING=Cannot ${action} ${type}. Profile isn't 
provided.
 ACTION_TYPE_FAILED_PROFILE_NOT_EXISTS=Cannot ${action} ${type}. Profile not 
exists.
 ACTION_TYPE_FAILED_PROFILE_NAME_IN_USE=Cannot ${action} ${type}. Profile name 
is in use.
 ACTION_TYPE_FAILED_CANNOT_CHANGE_PROFILE=Cannot ${action} ${type}. Cannot 
change profile.
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index 63c2fc0..09d1d78 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -3081,6 +3081,9 @@
     @DefaultStringValue("Cannot ${action} ${type}. QoS element not found.")
     String ACTION_TYPE_FAILED_QOS_NOT_FOUND();
 
+    @DefaultStringValue("Cannot ${action} ${type}. Profile isn't provided.")
+    String ACTION_TYPE_FAILED_PROFILE_MISSING();
+
     @DefaultStringValue("Cannot ${action} ${type}. Profile not exists.")
     String ACTION_TYPE_FAILED_PROFILE_NOT_EXISTS();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 915a8bf..ed9b545 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -1110,6 +1110,7 @@
 ACTION_TYPE_FAILED_QOS_NOT_FOUND=Cannot ${action} ${type}. QoS element not 
found.
 
 # profiles
+ACTION_TYPE_FAILED_PROFILE_MISSING=Cannot ${action} ${type}. Profile isn't 
provided.
 ACTION_TYPE_FAILED_PROFILE_NOT_EXISTS=Cannot ${action} ${type}. Profile not 
exists.
 ACTION_TYPE_FAILED_PROFILE_NAME_IN_USE=Cannot ${action} ${type}. Profile name 
is in use.
 ACTION_TYPE_FAILED_CANNOT_CHANGE_PROFILE=Cannot ${action} ${type}. Cannot 
change profile.


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6be41103ad9b04fc7d0b530439ab4a2c731bbded
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Gilad Chaplik <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to