Gilad Chaplik has uploaded a new change for review. Change subject: core: Adding affinity groups command and queries ......................................................................
core: Adding affinity groups command and queries queries: get by cluster id and get by vm id commands: create update and delete For more information please refer to: http://www.ovirt.org/Features/VM-Affinity Change-Id: I5251d0ee6ff2a719394cdb5ebec7b63e0ae37e3b Bug-Url: https://bugzilla.redhat.com/1036638 Signed-off-by: Gilad Chaplik <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AddAffinityGroupCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/EditAffinityGroupCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/RemoveAffinityGroupCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/queries/GetAffinityGroupsByClusterIdQuery.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/queries/GetAffinityGroupsByVmIdQuery.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/queries/VdcQueryType.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/scheduling/parameters/AffinityGroupCRUDParameters.java 9 files changed, 219 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/15/22715/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AddAffinityGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AddAffinityGroupCommand.java new file mode 100644 index 0000000..f6f7612 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AddAffinityGroupCommand.java @@ -0,0 +1,32 @@ +package org.ovirt.engine.core.bll.scheduling.commands; + +import org.ovirt.engine.core.common.scheduling.parameters.AffinityGroupCRUDParameters; +import org.ovirt.engine.core.compat.Guid; + +public class AddAffinityGroupCommand extends AffinityGroupCRUDCommand { + + public AddAffinityGroupCommand(AffinityGroupCRUDParameters parameters) { + super(parameters); + } + + @Override + protected boolean canDoAction() { + // name validation + // description validation + // affinity enforce mode not empty + // polarity not empty + // cluster is valid + // vms: + // all vms reside in cluster + // no duplicate vms + + return super.canDoAction(); + } + + @Override + protected void executeCommand() { + getAffinityGroup().setId(Guid.newGuid()); + getAffinityGroupDao().save(getAffinityGroup()); + setSucceeded(true); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java new file mode 100644 index 0000000..f03d8da --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java @@ -0,0 +1,37 @@ +package org.ovirt.engine.core.bll.scheduling.commands; + +import java.util.Collections; +import java.util.List; + +import org.ovirt.engine.core.bll.CommandBase; +import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.common.VdcObjectType; +import org.ovirt.engine.core.common.scheduling.AffinityGroup; +import org.ovirt.engine.core.common.scheduling.parameters.AffinityGroupCRUDParameters; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dao.scheduling.AffinityGroupDao; + +public abstract class AffinityGroupCRUDCommand extends CommandBase<AffinityGroupCRUDParameters> { + + public AffinityGroupCRUDCommand(AffinityGroupCRUDParameters parameters) { + super(parameters); + } + + protected AffinityGroup getAffinityGroup() { + // TODO: DAO + return getParameters().getAffinityGroup(); + } + + @Override + public List<PermissionSubject> getPermissionCheckSubjects() { + // TODO Auto-generated method stub + return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, + VdcObjectType.System, + getActionType().getActionGroup())); + } + + protected AffinityGroupDao getAffinityGroupDao() { + return DbFacade.getInstance().getAffinityGroupDao(); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/EditAffinityGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/EditAffinityGroupCommand.java new file mode 100644 index 0000000..d4baa7e --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/EditAffinityGroupCommand.java @@ -0,0 +1,26 @@ +package org.ovirt.engine.core.bll.scheduling.commands; + +import org.ovirt.engine.core.common.scheduling.parameters.AffinityGroupCRUDParameters; + + +public class EditAffinityGroupCommand extends AddAffinityGroupCommand { + + public EditAffinityGroupCommand(AffinityGroupCRUDParameters parameters) { + super(parameters); + } + + @Override + protected boolean canDoAction() { + boolean canDoAction = super.canDoAction(); + // affinity id is valid + // cluster wasn't changed + return canDoAction; + + } + + @Override + protected void executeCommand() { + getAffinityGroupDao().update(getAffinityGroup()); + setSucceeded(true); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/RemoveAffinityGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/RemoveAffinityGroupCommand.java new file mode 100644 index 0000000..7eaf091 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/RemoveAffinityGroupCommand.java @@ -0,0 +1,24 @@ +package org.ovirt.engine.core.bll.scheduling.commands; + +import org.ovirt.engine.core.common.scheduling.parameters.AffinityGroupCRUDParameters; + + +public class RemoveAffinityGroupCommand extends AffinityGroupCRUDCommand { + + public RemoveAffinityGroupCommand(AffinityGroupCRUDParameters parameters) { + super(parameters); + } + + @Override + protected boolean canDoAction() { + // id is valid + return super.canDoAction(); + } + + @Override + protected void executeCommand() { + getAffinityGroupDao().remove(getParameters().getAffinityGroupId()); + setSucceeded(true); + } + +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/queries/GetAffinityGroupsByClusterIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/queries/GetAffinityGroupsByClusterIdQuery.java new file mode 100644 index 0000000..e382a5e --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/queries/GetAffinityGroupsByClusterIdQuery.java @@ -0,0 +1,22 @@ +package org.ovirt.engine.core.bll.scheduling.queries; + +import org.ovirt.engine.core.bll.QueriesCommandBase; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dao.scheduling.AffinityGroupDao; + +public class GetAffinityGroupsByClusterIdQuery extends QueriesCommandBase<IdQueryParameters> { + + public GetAffinityGroupsByClusterIdQuery(IdQueryParameters parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + getQueryReturnValue().setReturnValue(getAffinityGroupDao().getAllAffinityGroupsByClusterId(getParameters().getId())); + } + + protected AffinityGroupDao getAffinityGroupDao() { + return DbFacade.getInstance().getAffinityGroupDao(); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/queries/GetAffinityGroupsByVmIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/queries/GetAffinityGroupsByVmIdQuery.java new file mode 100644 index 0000000..c40c170 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/queries/GetAffinityGroupsByVmIdQuery.java @@ -0,0 +1,22 @@ +package org.ovirt.engine.core.bll.scheduling.queries; + +import org.ovirt.engine.core.bll.QueriesCommandBase; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dao.scheduling.AffinityGroupDao; + +public class GetAffinityGroupsByVmIdQuery extends QueriesCommandBase<IdQueryParameters> { + + public GetAffinityGroupsByVmIdQuery(IdQueryParameters parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + getQueryReturnValue().setReturnValue(getAffinityGroupDao().getAllAffinityGroupsByVmId(getParameters().getId())); + } + + protected AffinityGroupDao getAffinityGroupDao() { + return DbFacade.getInstance().getAffinityGroupDao(); + } +} 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 e755a4d..8fa7bc0 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 @@ -306,7 +306,13 @@ AddInternalJob(1850, false, QuotaDependency.NONE), AddInternalStep(1851, false, QuotaDependency.NONE), - UpdateMomPolicy(1900, ActionGroup.MANIPUTLATE_HOST, false, QuotaDependency.NONE); + UpdateMomPolicy(1900, ActionGroup.MANIPUTLATE_HOST, false, QuotaDependency.NONE), + + // Affinity Groups + // TODO: new action group for affinity groups + AddAffinityGroup(1950, ActionGroup.EDIT_CLUSTER_CONFIGURATION, false, QuotaDependency.NONE), + EditAffinityGroup(1951, ActionGroup.EDIT_CLUSTER_CONFIGURATION, false, QuotaDependency.NONE), + RemoveAffinityGroup(1952, ActionGroup.EDIT_CLUSTER_CONFIGURATION, false, QuotaDependency.NONE); private int intValue; private ActionGroup actionGroup; 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 c51d6e4..05ca5b4 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 @@ -296,6 +296,9 @@ GetClusterPolicyById, GetAllPolicyUnits, GetAttachedClustersByClusterPolicyId, + GetAffinityGroupsByClusterId, + GetAffinityGroupsByVmId, + GetAllDisksPartialDataByVmId(VdcQueryAuthType.User), GetVmTemplateCount, // Default type instead of having to null check diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/scheduling/parameters/AffinityGroupCRUDParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/scheduling/parameters/AffinityGroupCRUDParameters.java new file mode 100644 index 0000000..ce804b2 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/scheduling/parameters/AffinityGroupCRUDParameters.java @@ -0,0 +1,46 @@ +package org.ovirt.engine.core.common.scheduling.parameters; + +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.scheduling.AffinityGroup; +import org.ovirt.engine.core.compat.Guid; + +public class AffinityGroupCRUDParameters extends VdcActionParametersBase { + private static final long serialVersionUID = 8144928386101354544L; + private Guid affinityGroupId; + private AffinityGroup affinityGroup; + private Guid clusterId; + + public AffinityGroupCRUDParameters() { + } + + public AffinityGroupCRUDParameters(Guid affinityGroupId, AffinityGroup affinityGroup, Guid clusterId) { + this.affinityGroupId = affinityGroupId; + this.affinityGroup = affinityGroup; + this.setClusterId(clusterId); + } + + public Guid getAffinityGroupId() { + return affinityGroupId; + } + + public void setAffinityGroupId(Guid affinityGroupId) { + this.affinityGroupId = affinityGroupId; + } + + public AffinityGroup getAffinityGroup() { + return affinityGroup; + } + + public void setAffinityGroup(AffinityGroup affinityGroup) { + this.affinityGroup = affinityGroup; + } + + public Guid getClusterId() { + return clusterId; + } + + public void setClusterId(Guid clusterId) { + this.clusterId = clusterId; + } + +} -- To view, visit http://gerrit.ovirt.org/22715 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5251d0ee6ff2a719394cdb5ebec7b63e0ae37e3b 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
