Arik Hadas has uploaded a new change for review.

Change subject: core: progress monitor for import vm
......................................................................

core: progress monitor for import vm

Change-Id: Icdeab17d43923cf86b322ba5c4233b758ac8b37e
Signed-off-by: Arik Hadas <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalProviderCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/JobListener.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsJob.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmManager.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/ImportProgressColumn.java
12 files changed, 146 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/79/39879/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalProviderCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalProviderCommand.java
index baeab6d..cdf15f8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalProviderCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalProviderCommand.java
@@ -64,6 +64,20 @@
     }
 
     @Override
+    public AuditLogType getAuditLogTypeValue() {
+        switch (getActionState()) {
+        case END_SUCCESS:
+            return getSucceeded() ? 
AuditLogType.IMPORTEXPORT_STARTING_IMPORT_VM
+                    : AuditLogType.IMPORTEXPORT_IMPORT_VM_FAILED;
+        case END_FAILURE:
+            return AuditLogType.IMPORTEXPORT_IMPORT_VM_FAILED;
+
+        default:
+        }
+        return super.getAuditLogTypeValue();
+    }
+
+    @Override
     protected void postConstruct() {
         T parameters = getParameters();
         setStoragePoolId(parameters.getStoragePoolId());
@@ -261,6 +275,8 @@
     }
 
     public void onJobFinished(Guid jobId) {
+        getResourceManager().getVmManager(jobId).setPhase(null);
+        getResourceManager().getVmManager(jobId).setProgress(0);
         Guid vdsId = pickProxyHostFromDataCenter();
         VDSReturnValue retValue = runVdsCommand(
                 VDSCommandType.QueryConvertedVm,
@@ -278,6 +294,11 @@
             }
 
             addImportedDevices(vm.getStaticData());
+            AuditLogableBase logable = new AuditLogableBase();
+            logable.addCustomValue("VmName", vm.getName());
+            logable.addCustomValue("StoragePoolName", getStoragePoolName());
+            logable.addCustomValue("VdsGroupName", getVdsGroupName());
+            auditLog(logable, AuditLogType.IMPORTEXPORT_IMPORT_VM);
         }
         finally {
             runVdsCommand(VDSCommandType.DeleteV2VJob,
@@ -285,6 +306,12 @@
         }
     }
 
+    @Override
+    public void progress(Guid jobId, String description, int progress) {
+        getResourceManager().getVmManager(jobId).setPhase(description);
+        getResourceManager().getVmManager(jobId).setProgress(progress);
+    }
+
     private void convertFailed() {
         removeVm();
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
index 66b0372..f2db902 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
@@ -162,6 +162,7 @@
         for (VM vm : vms) {
             VmHandler.updateVmGuestAgentVersion(vm);
             VmHandler.updateVmLock(vm);
+            VmHandler.updateOperationProgress(vm);
         }
         return vms;
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
index f097aca..b3fb9a6 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
@@ -85,6 +85,7 @@
 import org.ovirt.engine.core.utils.lock.LockManagerFactory;
 import org.ovirt.engine.core.utils.transaction.TransactionMethod;
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
+import org.ovirt.engine.core.vdsbroker.ResourceManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -471,6 +472,11 @@
         vm.setLockInfo(getLockManager().getLockInfo(String.format("%s%s", 
vm.getId(), LockingGroup.VM.name())));
     }
 
+    public static void updateOperationProgress(final VM vm) {
+        
vm.setPhase(ResourceManager.getInstance().getVmManager(vm.getId()).getPhase());
+        
vm.setProgress(ResourceManager.getInstance().getVmManager(vm.getId()).getProgress());
+    }
+
     protected static LockManager getLockManager() {
         return LockManagerFactory.getLockManager();
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/JobListener.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/JobListener.java
index 4e7e9c8..dbd9715 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/JobListener.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/JobListener.java
@@ -5,4 +5,5 @@
 public interface JobListener {
 
     public void onJobFinished(Guid jobId);
+    public void progress(Guid jobId, String description, int progress);
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
index 6e36983..91a3574 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
@@ -54,6 +54,9 @@
 
     private LockInfo lockInfo;
 
+    private int progress;
+    private String phase;
+
     public String getUserDefinedProperties() {
         return vmStatic.getUserDefinedProperties();
     }
@@ -1879,4 +1882,20 @@
     public void setGuestMemoryFree(Long guestMemoryFree) {
         vmDynamic.setGuestMemoryFree(guestMemoryFree);
     }
+
+    public int getProgress() {
+        return progress;
+    }
+
+    public void setProgress(int progress) {
+        this.progress = progress;
+    }
+
+    public String getPhase() {
+        return phase;
+    }
+
+    public void setPhase(String phase) {
+        this.phase = phase;
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsJob.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsJob.java
index d3c3697..218cabc 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsJob.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsJob.java
@@ -6,6 +6,8 @@
 
     private Guid id;
     private String status;
+    private String description;
+    private int progress;
 
     @Override
     public Guid getId() {
@@ -37,4 +39,20 @@
     public int hashCode() {
         return id.hashCode();
     }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public int getProgress() {
+        return progress;
+    }
+
+    public void setProgress(int progress) {
+        this.progress = progress;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
index da8df18..10e4784 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
@@ -98,6 +98,7 @@
 
     public void notifyVdsJobProgress(Guid jobId, VdsJob obj) {
         JobListener listener = jobListeners.get(jobId);
+        listener.progress(jobId, obj.getDescription(), obj.getProgress());
     }
 
     public void notifyVdsJobFinished(Guid jobId) {
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmManager.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmManager.java
index 0d4c3f3..bc0913a 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmManager.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmManager.java
@@ -19,6 +19,9 @@
     private final Guid id;
     private final ReentrantLock lock = new ReentrantLock();
 
+    private int progress;
+    private String phase;
+
     public VmManager(Guid id) {
         this.id = id;
     }
@@ -76,4 +79,20 @@
     protected DbFacade db() {
         return DbFacade.getInstance();
     }
+
+    public int getProgress() {
+        return progress;
+    }
+
+    public void setProgress(int progress) {
+        this.progress = progress;
+    }
+
+    public String getPhase() {
+        return phase;
+    }
+
+    public void setPhase(String phase) {
+        this.phase = phase;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
index f2456f1..229e8cb 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
@@ -1034,6 +1034,8 @@
         VdsJob job = new VdsJob();
         job.setId(Guid.createGuidFromString(jobId));
         job.setStatus(AssignStringValue(xmlRpcStruct, VdsProperties.status));
+        job.setDescription(AssignStringValue(xmlRpcStruct, 
VdsProperties.jobDescription));
+        job.setProgress(AssignIntValue(xmlRpcStruct, 
VdsProperties.jobProgress));
         return job;
     }
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
index dd7769b..8160b49 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
@@ -451,6 +451,8 @@
 
     // V2V Jobs
     public static final String vdsJobs = "v2vJobs";
+    public static final String jobDescription = "description";
+    public static final String jobProgress = "progress";
 
     // VM Jobs
     public static final String vmJobs = "vmJobs";
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
index 32795cc..ad931c0 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
@@ -37,6 +37,7 @@
 import 
org.ovirt.engine.ui.webadmin.widget.table.column.AbstractLineChartProgressBarColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.AbstractUptimeColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.CommentColumn;
+import org.ovirt.engine.ui.webadmin.widget.table.column.ImportProgressColumn;
 import 
org.ovirt.engine.ui.webadmin.widget.table.column.MigrationProgressColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.ReasonColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.VmStatusColumn;
@@ -194,11 +195,17 @@
                     return null;
                 }
 
+                if (vm.getPhase() != null) {
+                    // will be rendered by progress column
+                    return null;
+                }
+
                 return super.getValue(vm);
             }
         };
 
         MigrationProgressColumn migrationProgressColumn = new 
MigrationProgressColumn();
+        ImportProgressColumn importProgressColumn = new ImportProgressColumn();
 
         ReasonColumn<VM> reasonColumn = new ReasonColumn<VM>() {
 
@@ -213,6 +220,7 @@
         list.add(statusColumn);
         list.add(reasonColumn);
         list.add(migrationProgressColumn);
+        list.add(importProgressColumn);
 
         Cell<VM> compositeCell = new StatusCompositeCell<VM>(list);
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/ImportProgressColumn.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/ImportProgressColumn.java
new file mode 100644
index 0000000..38cf3e3
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/ImportProgressColumn.java
@@ -0,0 +1,42 @@
+package org.ovirt.engine.ui.webadmin.widget.table.column;
+
+import org.ovirt.engine.core.common.businessentities.VM;
+
+import com.google.gwt.safehtml.shared.SafeHtml;
+
+public class ImportProgressColumn extends AbstractOneColorPercentColumn<VM> {
+
+    public ImportProgressColumn() {
+        super(ProgressBarColors.GREEN);
+    }
+
+    @Override
+    protected Integer getProgressValue(VM object) {
+        return object.getPhase() != null ? object.getProgress() : null;
+    }
+
+    @Override
+    public SafeHtml getValue(VM object) {
+        if (object.getPhase() == null) {
+            return null;
+        }
+
+        return super.getValue(object);
+    }
+
+    @Override
+    protected String getStyle() {
+        return "engine-progress-box-migration";//$NON-NLS-1$
+    }
+
+    @Override
+    protected String getProgressText(VM object) {
+        if (object.getPhase() != null) {
+            return object.getProgress() == 0 ?
+                    "Initializing" //$NON-NLS-1$
+                    : object.getPhase();
+        }
+
+        return super.getProgressText(object);
+    }
+}


-- 
To view, visit https://gerrit.ovirt.org/39879
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to