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

Reply via email to