Moti Asayag has uploaded a new change for review.

Change subject: engine: Require VnicProfile permission for vnic template
......................................................................

engine: Require VnicProfile permission for vnic template

The patch requires permission on the vnic profile which is
used for adding or updating a template vnic.

Change-Id: I745b4f8bf1b658c7160362a4d98aca017a377483
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
2 files changed, 23 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/62/17362/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
index 117af95..1f6eb70 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java
@@ -4,7 +4,6 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.VmCommand;
 import org.ovirt.engine.core.bll.VmTemplateHandler;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
@@ -19,6 +18,7 @@
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType;
 import org.ovirt.engine.core.common.businessentities.network.VmNic;
+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;
@@ -115,17 +115,16 @@
     public List<PermissionSubject> getPermissionCheckSubjects() {
         List<PermissionSubject> subjects = super.getPermissionCheckSubjects();
 
-        if (getParameters().getInterface() != null && 
StringUtils.isNotEmpty(getNetworkName())
+        if (getParameters().getInterface() != null && 
getParameters().getInterface().getVnicProfileId() != null
                 && getVmTemplate() != null) {
 
-            Network network = 
getNetworkDAO().getByNameAndCluster(getNetworkName(), 
getVmTemplate().getVdsGroupId());
-            if (getParameters().getInterface().isPortMirroring()) {
-                subjects.add(new PermissionSubject(network == null ? null : 
network.getId(),
-                        VdcObjectType.Network,
-                        ActionGroup.PORT_MIRRORING));
+            VnicProfile profile = 
getVnicProfileDao().get(getParameters().getInterface().getVnicProfileId());
+
+            if (profile != null && profile.isPortMirroring()) {
+                subjects.add(new PermissionSubject(profile.getId(), 
VdcObjectType.VnicProfile, ActionGroup.PORT_MIRRORING));
             } else {
-                subjects.add(new PermissionSubject(network == null ? null : 
network.getId(),
-                        VdcObjectType.Network,
+                subjects.add(new PermissionSubject(profile == null ? null : 
profile.getId(),
+                        VdcObjectType.VnicProfile,
                         getActionType().getActionGroup()));
             }
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
index a30b180..91f5d6a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.validator.VmNicValidator;
@@ -11,9 +12,8 @@
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.VmDevice;
 import org.ovirt.engine.core.common.businessentities.VmDeviceId;
-import org.ovirt.engine.core.common.businessentities.network.Network;
-import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.businessentities.network.VmNic;
+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.UpdateEntity;
 import org.ovirt.engine.core.compat.Version;
@@ -96,24 +96,23 @@
     public List<PermissionSubject> getPermissionCheckSubjects() {
         List<PermissionSubject> permissionList = 
super.getPermissionCheckSubjects();
 
-        if (getParameters().getInterface() != null && 
StringUtils.isNotEmpty(getNetworkName())
+        if (getParameters().getInterface() != null && 
getParameters().getInterface().getVnicProfileId() != null
                 && getVmTemplate() != null) {
 
-            VmNetworkInterface iface = 
getVmNetworkInterfaceDao().get(getParameters().getInterface().getId());
-            if (iface != null) {
-                Network network =
-                        getNetworkDAO().getByNameAndCluster(getNetworkName(), 
getVmTemplate().getVdsGroupId());
+            VmNic oldNic = 
getVmNicDao().get(getParameters().getInterface().getId());
+            if (oldNic != null) {
+                VnicProfile profile = 
getVnicProfileDao().get(getParameters().getInterface().getVnicProfileId());
 
-                if (getParameters().getInterface().isPortMirroring()
-                        && (isNetworkChanged(iface) || 
!iface.isPortMirroring())) {
-                    permissionList.add(new PermissionSubject(network == null ? 
null : network.getId(),
-                            VdcObjectType.Network,
+                if (profile != null && profile.isPortMirroring()
+                        && isVnicProfileChanged(oldNic, 
getParameters().getInterface())) {
+                    permissionList.add(new 
PermissionSubject(getParameters().getInterface().getVnicProfileId(),
+                            VdcObjectType.VnicProfile,
                             ActionGroup.PORT_MIRRORING));
                 } else {
                     // If the vNic's network is changed, the user should have 
permission for using the new network
-                    if (isNetworkChanged(iface)) {
-                        permissionList.add(new PermissionSubject(network == 
null ? null : network.getId(),
-                                VdcObjectType.Network,
+                    if (isVnicProfileChanged(oldNic, 
getParameters().getInterface())) {
+                        permissionList.add(new PermissionSubject(profile == 
null ? null : profile.getId(),
+                                VdcObjectType.VnicProfile,
                                 getActionType().getActionGroup()));
                     }
                 }
@@ -122,7 +121,7 @@
         return permissionList;
     }
 
-    private boolean isNetworkChanged(VmNetworkInterface iface) {
-        return !getNetworkName().equals(iface.getNetworkName());
+    private boolean isVnicProfileChanged(VmNic oldNic, VmNic newProfile) {
+        return !ObjectUtils.equals(oldNic.getVnicProfileId(), 
newProfile.getVnicProfileId());
     }
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I745b4f8bf1b658c7160362a4d98aca017a377483
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <masa...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to