Moti Asayag has uploaded a new change for review. Change subject: engine: Add AddVnicProfileCommand ......................................................................
engine: Add AddVnicProfileCommand The patch adds command for creating a new vnic profile entity in the system. Change-Id: I27100ced5acfdf9cc1125f865937fd0d7e4ffd17 Signed-off-by: Moti Asayag <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVnicProfileCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java 5 files changed, 100 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/74/16674/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java index 1fd2447..5d9f7ad 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java @@ -48,6 +48,17 @@ addPermission(userId, networkId, PredefinedRoles.NETWORK_ADMIN); } + public static void addPermissionsOnVnicProfile(Guid userId, Guid vnicProfileId, boolean publicUse) { + addPermission(userId, vnicProfileId, PredefinedRoles.NETWORK_ADMIN); + + // if the profile is for public use, set EVERYONE as a VNICProfileUser on the profile + if (publicUse) { + addPermission(MultiLevelAdministrationHandler.EVERYONE_OBJECT_ID, + vnicProfileId, + PredefinedRoles.VNIC_PROFILE_USER); + } + } + public static VnicProfile createVnicProfile(Network net) { VnicProfile profile = new VnicProfile(); profile.setId(Guid.newGuid()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVnicProfileCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVnicProfileCommand.java new file mode 100644 index 0000000..84cdc74 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVnicProfileCommand.java @@ -0,0 +1,81 @@ +package org.ovirt.engine.core.bll.network.vm; + +import java.util.Collections; +import java.util.List; + +import org.ovirt.engine.core.bll.network.cluster.NetworkHelper; +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.VnicProfileParameters; +import org.ovirt.engine.core.common.businessentities.Entities; +import org.ovirt.engine.core.common.businessentities.network.VnicProfile; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.validation.group.CreateEntity; +import org.ovirt.engine.core.compat.Guid; + +public class AddVnicProfileCommand<T extends VnicProfileParameters> extends VnicProfileCommon<T> { + + public AddVnicProfileCommand(T parameters) { + super(parameters); + } + + @Override + protected boolean canDoAction() { + if (getVnicProfile() == null) { + // TODO: Add CDA message 'profile not found' + return false; + } + + if (getNetworkDAO().get(getVnicProfile().getNetworkId()) == null) { + // TODO: Add CDA message 'network not found' + return false; + } + + List<VnicProfile> profiles = getVnicProfileDao().getAllForNetwork(getVnicProfile().getNetworkId()); + if (Entities.entitiesByName(profiles).containsKey(getVnicProfile().getName())) { + // Add CDA message 'vnic profile name already in use' + return false; + } + + return true; + } + + @Override + protected void executeCommand() { + getVnicProfile().setId(Guid.newGuid()); + getVnicProfileDao().save(getVnicProfile()); + NetworkHelper.addPermissionsOnVnicProfile(getCurrentUser().getUserId(), + getVnicProfile().getId(), + getParameters().isPublicUse()); + getReturnValue().setActionReturnValue(getVnicProfile().getId()); + setSucceeded(true); + } + + @Override + protected List<Class<?>> getValidationGroups() { + addValidationGroup(CreateEntity.class); + return super.getValidationGroups(); + } + + @Override + protected void setActionMessageParameters() { + super.setActionMessageParameters(); + addCanDoActionMessage(VdcBllMessages.VAR__ACTION__ADD); + } + + @Override + public AuditLogType getAuditLogTypeValue() { + return getSucceeded() ? AuditLogType.ADD_VNIC_PROFILE + : AuditLogType.ADD_VNIC_PROFILE_FAILED; + } + + @Override + public List<PermissionSubject> getPermissionCheckSubjects() { + Guid networkId = getVnicProfile() == null ? null : getVnicProfile().getNetworkId(); + + return Collections.singletonList(new PermissionSubject(networkId, + VdcObjectType.Network, + getActionType().getActionGroup())); + } +} 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 f6d659f..0434741 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 @@ -574,6 +574,8 @@ VLAN_ID_MISMATCH_FOR_MANAGEMENT_NETWORK_CONFIGURATION(1119), SETUP_NETWORK_FAILED_FOR_MANAGEMENT_NETWORK_CONFIGURATION(1120), PERSIST_NETWORK_FAILED_FOR_MANAGEMENT_NETWORK(1121), + ADD_VNIC_PROFILE(1121), + ADD_VNIC_PROFILE_FAILED(1122), // Import/Export IMPORTEXPORT_STARTING_EXPORT_VM(1162), 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 b6af413..77a2c42 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 @@ -83,6 +83,10 @@ UpdateNetwork(156, ActionGroup.CONFIGURE_STORAGE_POOL_NETWORK, false, QuotaDependency.NONE), CommitNetworkChanges(157, ActionGroup.CONFIGURE_HOST_NETWORK, QuotaDependency.NONE), SetupNetworks(158, ActionGroup.CONFIGURE_HOST_NETWORK, QuotaDependency.NONE), + + // VnicProfile Commands + AddVnicProfile(160, ActionGroup.CREATE_NETWORK_VNIC_PROFILE, false, QuotaDependency.NONE), + // VmTemplatesCommand AddVmTemplate(201, ActionGroup.CREATE_TEMPLATE, QuotaDependency.BOTH), UpdateVmTemplate(202, ActionGroup.EDIT_TEMPLATE_PROPERTIES, QuotaDependency.VDS_GROUP), diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java index b7bf464..4f75d27 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java @@ -744,6 +744,8 @@ severities.put(AuditLogType.VLAN_ID_MISMATCH_FOR_MANAGEMENT_NETWORK_CONFIGURATION, AuditLogSeverity.ERROR); severities.put(AuditLogType.SETUP_NETWORK_FAILED_FOR_MANAGEMENT_NETWORK_CONFIGURATION, AuditLogSeverity.ERROR); severities.put(AuditLogType.PERSIST_NETWORK_FAILED_FOR_MANAGEMENT_NETWORK, AuditLogSeverity.WARNING); + severities.put(AuditLogType.ADD_VNIC_PROFILE, AuditLogSeverity.NORMAL); + severities.put(AuditLogType.ADD_VNIC_PROFILE_FAILED, AuditLogSeverity.ERROR); // External Events/Alerts severities.put(AuditLogType.EXTERNAL_EVENT_NORMAL, AuditLogSeverity.NORMAL); -- To view, visit http://gerrit.ovirt.org/16674 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I27100ced5acfdf9cc1125f865937fd0d7e4ffd17 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Moti Asayag <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
