Arik Hadas has uploaded a new change for review.

Change subject: core: fix NPE on addition of external vm
......................................................................

core: fix NPE on addition of external vm

We add externally managed VMs using AddVmFromScratch command. This
command is called by the monitoring thread so no user is set as the
'current user' when it is executed. Thus we got NPE when trying to set
the its disk permissions. However, this kind of VMs are diskless VMs so
we are not supposed to set disk permissions for it.

Thus, changing AddVmCommand#addDiskPermissions in a way that the disk
owners will not be retrieved for diskless VMs prevents the NPE.

Change-Id: I2e0cff201b1c8c89682fc2c3a4ddbc88b4ec803e
Bug-Url: https://bugzilla.redhat.com/1176528
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
1 file changed, 6 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/48/36348/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
index 640c006..a46ab20 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
@@ -1243,12 +1243,10 @@
     protected void addDiskPermissions() {
         List<Guid> newDiskImageIds = new 
ArrayList<>(srcDiskIdToTargetDiskIdMapping.values());
         Permissions[] permsArray = new Permissions[newDiskImageIds.size()];
-        Guid diskOperatorIdFromParams = 
getParameters().getDiskOperatorAuthzPrincipalDbId();
-        Guid diskOperatorId = diskOperatorIdFromParams != null ? 
diskOperatorIdFromParams : getCurrentUser().getId();
 
         for (int i = 0; i < newDiskImageIds.size(); i++) {
             permsArray[i] =
-                    new Permissions(diskOperatorId,
+                    new Permissions(getUserIdOfDiskOperator(),
                             PredefinedRoles.DISK_OPERATOR.getId(),
                             newDiskImageIds.get(i),
                             VdcObjectType.Disk);
@@ -1256,6 +1254,11 @@
         MultiLevelAdministrationHandler.addPermission(permsArray);
     }
 
+    private Guid getUserIdOfDiskOperator() {
+        Guid diskOperatorIdFromParams = 
getParameters().getDiskOperatorAuthzPrincipalDbId();
+        return diskOperatorIdFromParams != null ? diskOperatorIdFromParams : 
getCurrentUser().getId();
+    }
+
     protected void addActiveSnapshot() {
         _vmSnapshotId = Guid.newGuid();
         new SnapshotsManager().addActiveSnapshot(_vmSnapshotId, getVm(), 
getCompensationContext());


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2e0cff201b1c8c89682fc2c3a4ddbc88b4ec803e
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Arik Hadas <aha...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to