Tomas Jelinek has uploaded a new change for review.

Change subject: engine,frontend: don't check VM status right after VM creation
......................................................................

engine,frontend: don't check VM status right after VM creation

Create a VM from template with big disk and couple of nics. In
new vm dialog edit the nic->network assignment. Press OK.

First the AddVmFromTemplate is called. After it returns the
UpdateVmInterfaceCommand is called to edit the nic->network
assignment.

The problem is that the VM status can be "image locked" which
prevents the nic editing.

Solved by adding a parameter that in this case the VM status
will not be checked.

Change-Id: I478654d61ac69bee4a4252a7800fbe57bfa0b511
Bug-Url: https://bugzilla.redhat.com/988354
Signed-off-by: Tomas Jelinek <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmInterfaceParameters.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java
3 files changed, 27 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/17/17317/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java
index bd44a02..962936e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java
@@ -283,6 +283,10 @@
     }
 
     private boolean updateVmNicAllowed(VMStatus vmStatus) {
+        if (!getParameters().isCheckVmStatus()) {
+             return true;
+        }
+
         return vmStatus == VMStatus.Up || vmStatus == VMStatus.Down;
     }
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmInterfaceParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmInterfaceParameters.java
index 170f479..281ebd2 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmInterfaceParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmInterfaceParameters.java
@@ -10,6 +10,11 @@
     @Valid
     private VmNetworkInterface _interface;
 
+    /**
+     * If set to false do not check VM status and update the interface
+     */
+    private boolean checkVmStatus = true;
+
     public AddVmInterfaceParameters(Guid vmId, VmNetworkInterface iface) {
         super(vmId);
         _interface = iface;
@@ -21,4 +26,12 @@
 
     public AddVmInterfaceParameters() {
     }
+
+    public boolean isCheckVmStatus() {
+        return checkVmStatus;
+    }
+
+    public void setCheckVmStatus(boolean checkVmStatus) {
+        this.checkVmStatus = checkVmStatus;
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java
index 9dd8ba1..26356d5 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java
@@ -47,6 +47,9 @@
      * ones are created according to the nicsWithLogicalNetworks. If the VM is 
created with nics - e.g. by copying from template update they're virtual
      * networks as edited by the user (again, according to the 
nicsWithLogicalNetworks).
      *
+     * Since this method is used only after the VM has been created it is not 
running but can have the status "image locked". For
+     * this reason the vm status will not be checked.
+     *
      * @param vmId The ID of the VM
      * @param nicsWithLogicalNetworks list of nics as edited in the window
      */
@@ -58,7 +61,7 @@
                    // there are no networks created - create according to the 
setup
                    createNetworks(vmId, nicsWithLogicalNetworks);
                }
-           }.execute(vmId, nicsWithLogicalNetworks);
+           }.execute(vmId, nicsWithLogicalNetworks, false);
     }
 
     /**
@@ -74,7 +77,7 @@
                 // nothing to do
                 callback.networkCreated(vmId);
             }
-        }.execute(vmId, nicsWithLogicalNetworks);
+        }.execute(vmId, nicsWithLogicalNetworks, true);
     }
 
     /**
@@ -130,7 +133,7 @@
 
     abstract class UpdatedNicsUpdater {
 
-        public void execute(final Guid vmId, final 
List<NicWithLogicalNetworks> nicsWithLogicalNetworks) {
+        public void execute(final Guid vmId, final 
List<NicWithLogicalNetworks> nicsWithLogicalNetworks, final boolean 
checkStatus) {
             AsyncQuery getVmNicsQuery = new AsyncQuery();
             getVmNicsQuery.asyncCallback = new INewAsyncCallback() {
                 @Override
@@ -157,7 +160,10 @@
 
                                 if (sameNic && assignedNetworkChanged) {
                                     
created.setNetworkName(edited.getNetworkInterface().getNetworkName());
-                                    parameters.add(new 
AddVmInterfaceParameters(vmId, created));
+
+                                    AddVmInterfaceParameters param = new 
AddVmInterfaceParameters(vmId, created);
+                                    param.setCheckVmStatus(checkStatus);
+                                    parameters.add(param);
                                     break;
                                 }
                             }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I478654d61ac69bee4a4252a7800fbe57bfa0b511
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Tomas Jelinek <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to