Oved Ourfali has uploaded a new change for review.

Change subject: core: importing external and hosted-engine VMs to the engine
......................................................................

core: importing external and hosted-engine VMs to the engine

This patch adds two new origin types:
1. Hosted engine - VMs that were created by the hosted-engine setup.
2. External - VMs that run on the engine hosts, but weren't created by
any oVirt project

Change-Id: Ic00289a53aba6db5c6fe0364101e407178a48158
Signed-off-by: Oved Ourfali <oourf...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CancelMigrateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachDiskFromVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PauseVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetVmTicketCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/StopVmCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmLogonCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommandTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/OriginType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
M 
frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
M 
frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
38 files changed, 267 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/17993/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
index 0a8842a..81eeb84 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
@@ -88,6 +88,10 @@
         VM vm = getVm();
 
         if (vm != null) {
+            if (!canRunActionOnNonManagedVm()) {
+                return false;
+            }
+
             updateDisksFromDb();
             // if user sent drive check that its not in use
             if (!isDiskCanBeAddedToVm(getParameters().getDiskInfo(), vm) ||
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
index 32db917..0c1c092 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
@@ -74,6 +74,10 @@
             return false;
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         updateDisksFromDb();
         if (!isDiskCanBeAddedToVm(disk, getVm()) || 
!isDiskPassPciAndIdeLimit(disk)) {
             return false;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CancelMigrateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CancelMigrateVmCommand.java
index 282cfc7..2abc4ee 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CancelMigrateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CancelMigrateVmCommand.java
@@ -38,6 +38,11 @@
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST);
             return false;
         }
+
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (getVm().getStatus() != VMStatus.MigratingFrom) {
             
addCanDoActionMessage(VdcBllMessages.VM_CANNOT_CANCEL_MIGRATION_WHEN_VM_IS_NOT_MIGRATING);
             return false;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
index f28443e..c455861 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
@@ -24,7 +24,16 @@
     @Override
     protected boolean canDoAction() {
         boolean retValue = true;
-        if (!getVm().isRunningOrPaused()) {
+        if (getVm() == null) {
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST);
+            retValue = false;
+        }
+
+        if (retValue && !canRunActionOnNonManagedVm()) {
+            retValue = false;
+        }
+
+        if (retValue && !getVm().isRunningOrPaused()) {
             setSucceeded(false);
             retValue = false;
             addCanDoActionMessage(VdcBllMessages.VAR__TYPE__VM);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java
index 6371b72..920f867 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java
@@ -40,6 +40,11 @@
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST);
             return false;
         } else {
+
+            if (!canRunActionOnNonManagedVm()) {
+                return false;
+            }
+
             if (ObjectIdentityChecker.CanUpdateField(vm, "vdsGroupId", 
vm.getStatus())) {
                 targetCluster = 
DbFacade.getInstance().getVdsGroupDao().get(getParameters().getClusterId());
                 if (targetCluster == null) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
index 06c1a5f..d375ab4 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
@@ -411,6 +411,16 @@
 
     @Override
     protected boolean canDoAction() {
+
+        if (getVm() == null) {
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST);
+            return false;
+        }
+
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         // Initialize validators.
         VmValidator vmValidator = createVmValidator();
         SnapshotsValidator snapshotValidator = createSnapshotValidator();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachDiskFromVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachDiskFromVmCommand.java
index cd83378..661d34f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachDiskFromVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachDiskFromVmCommand.java
@@ -24,6 +24,10 @@
     @Override
     protected boolean canDoAction() {
         boolean retValue = isVmExist();
+        if (retValue) {
+            retValue = canRunActionOnNonManagedVm();
+        }
+
         if (retValue && getVm().getStatus() != VMStatus.Up && 
getVm().getStatus() != VMStatus.Down) {
             retValue = false;
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_STATUS_ILLEGAL);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
index c81908e..a4ee64c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java
@@ -234,6 +234,11 @@
         if (getVm() == null) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND);
         }
+
+        if (!canRunActionOnNonManagedVm()) {
+           return false;
+        }
+
         VMStatus vmStatus = getVm().getStatus();
         if (vmStatus == VMStatus.WaitForLaunch || vmStatus == 
VMStatus.NotResponding) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_STATUS_ILLEGAL);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
index 6ab31de..00096dc 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
@@ -45,6 +45,7 @@
         return
                 isVmExist() &&
                 isVmInUpPausedDownStatus() &&
+                canRunActionOnNonManagedVm() &&
                 isDiskExist(disk) &&
                 checkCanPerformPlugUnPlugDisk() &&
                 isVmNotInPreviewSnapshot() &&
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
index 6b6774d..b58b2fe 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
@@ -243,6 +243,11 @@
         if (vm == null) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND);
         }
+
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         // If VM is pinned to host, no migration can occur
         if (vm.getMigrationSupport() == MigrationSupport.PINNED_TO_HOST) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_PINNED_TO_HOST);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PauseVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PauseVmCommand.java
index 9228cc4..9e70525 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PauseVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PauseVmCommand.java
@@ -33,15 +33,22 @@
         return getSucceeded() ? AuditLogType.USER_PAUSE_VM : 
AuditLogType.USER_FAILED_PAUSE_VM;
     }
 
-    public static boolean CanPauseVm(Guid vmId, java.util.ArrayList<String> 
message) {
+    public boolean CanPauseVm(Guid vmId, java.util.ArrayList<String> message) {
         boolean retValue = true;
         VM vm = DbFacade.getInstance().getVmDao().get(vmId);
         if (vm == null) {
             retValue = false;
             
message.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND.toString());
         } else {
-            if (vm.getStatus() == VMStatus.WaitForLaunch || vm.getStatus() == 
VMStatus.MigratingFrom
-                    || vm.getStatus() == VMStatus.NotResponding) {
+
+            ValidationResult nonManagedVmValidationResult = 
VmHandler.canRunActionOnNonManagedVm(getVm(), this.getActionType());
+            if (!nonManagedVmValidationResult.isValid()) {
+                
message.add(nonManagedVmValidationResult.getMessage().toString());
+                retValue = false;
+            }
+
+            if (retValue && (vm.getStatus() == VMStatus.WaitForLaunch || 
vm.getStatus() == VMStatus.MigratingFrom
+                    || vm.getStatus() == VMStatus.NotResponding)) {
                 retValue = false;
                 
message.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_STATUS_ILLEGAL.toString());
             } else if (!vm.isRunning()) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
index 32bb5f8..7e3992e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
@@ -198,6 +198,14 @@
     protected boolean canDoAction() {
         initializeObjectState();
 
+        if (getVm() == null) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND);
+        }
+
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (!validate(new StoragePoolValidator(getStoragePool()).isUp()) ||
                 !validateVmNotDuringSnapshot() ||
                 !validateVmNotInPreview() ||
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
index ba35b6d..ef4ab02 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
@@ -122,6 +122,10 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND);
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (getVm().isDeleteProtected()) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_DELETE_PROTECTION_ENABLED);
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
index badac89..c59935f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
@@ -312,6 +312,14 @@
 
     @Override
     protected boolean canDoAction() {
+        if (getVm() == null) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND);
+        }
+
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (Guid.Empty.equals(getParameters().getDstSnapshotId())) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_CORRUPTED_VM_SNAPSHOT_ID);
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
index 09db8f9..4e7f59d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
@@ -761,6 +761,10 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND);
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (vm.getStatus() == VMStatus.Paused) {
             // if VM is paused, it was already checked before that it is 
capable to run
             return true;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetVmTicketCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetVmTicketCommand.java
index def8c88..853bc83 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetVmTicketCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SetVmTicketCommand.java
@@ -95,6 +95,10 @@
             return false;
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         // Check that the virtual machine is in state that allows connections
         // to the console:
         final VMStatus status = vm.getStatus();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/StopVmCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/StopVmCommandBase.java
index fa90ef5..e0a44c8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/StopVmCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/StopVmCommandBase.java
@@ -49,6 +49,10 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND);
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (!getVm().isRunning() && getVm().getStatus() != VMStatus.Paused
                 && getVm().getStatus() != VMStatus.NotResponding && 
getVm().getStatus() != VMStatus.Suspended) {
             return failCanDoAction(
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
index d187571..a23b744 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
@@ -219,6 +219,10 @@
             return false;
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (StringUtils.isEmpty(vmFromParams.getName())) {
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_NAME_MAY_NOT_BE_EMPTY);
             return false;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java
index 2b8b908..20d8134 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java
@@ -118,6 +118,10 @@
             return false;
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         List<VM> vmsDiskPluggedTo = getVmsDiskPluggedTo();
         if (vmsDiskPluggedTo != null && !vmsDiskPluggedTo.isEmpty()) {
             // only virtual drive size can be updated when VMs is running
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
index 20e87f9..7935dbc 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
@@ -15,6 +15,7 @@
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
 import org.ovirt.engine.core.bll.storage.StoragePoolStatusHandler;
 import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.action.AddVmFromScratchParameters;
 import org.ovirt.engine.core.common.action.FenceVdsActionParameters;
 import org.ovirt.engine.core.common.action.HostStoragePoolParametersBase;
 import org.ovirt.engine.core.common.action.MigrateVmToServerParameters;
@@ -309,6 +310,17 @@
     }
 
     @Override
+    public void addExternallyManagedVms(List<VmStatic> externalVmList) {
+        for (VmStatic currVm : externalVmList) {
+            AddVmFromScratchParameters params = new 
AddVmFromScratchParameters(currVm, null, null);
+            VdcReturnValueBase returnValue = 
Backend.getInstance().runInternalAction(VdcActionType.AddVmFromScratch, params, 
ExecutionHandler.createInternalJobContext());
+            if (!returnValue.getSucceeded()) {
+                log.debugFormat("Failed adding Externally managed VM {0}", 
currVm.getName());
+            }
+        }
+    }
+
+    @Override
     public void rerun(Guid vmId) {
         final IVdsAsyncCommand command = 
Backend.getInstance().getResourceManager().GetAsyncCommandForVm(vmId);
         if (command != null) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
index 9ab8da8..a2ebb46 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
@@ -460,4 +460,13 @@
         }
         return returnValue;
     }
+
+    protected boolean canRunActionOnNonManagedVm() {
+        ValidationResult nonManagedVmValidationResult = 
VmHandler.canRunActionOnNonManagedVm(getVm(), this.getActionType());
+        if (!nonManagedVmValidationResult.isValid()) {
+            return failCanDoAction(nonManagedVmValidationResult.getMessage());
+        }
+        return true;
+    }
+
 }
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 bb3002d..9cbec43 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
@@ -2,8 +2,10 @@
 
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.context.CompensationContext;
@@ -11,12 +13,14 @@
 import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
 import org.ovirt.engine.core.bll.validator.VmValidationUtils;
 import org.ovirt.engine.core.common.FeatureSupported;
+import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.backendinterfaces.BaseHandler;
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.EditableField;
 import org.ovirt.engine.core.common.businessentities.EditableOnVmStatusField;
+import org.ovirt.engine.core.common.businessentities.OriginType;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
@@ -59,6 +63,7 @@
 
     private static final Log log = LogFactory.getLog(VmHandler.class);
 
+    private static Set<VdcActionType> COMMANDS_ALLOWED_ON_NON_MANAGED_VMS = 
new HashSet<>();
     /**
      * Initialize static list containers, for identity and permission check. 
The initialization should be executed
      * before calling ObjectIdentityChecker.
@@ -84,7 +89,10 @@
                 inspectedClassNames)) {
             
mUpdateVmsStatic.AddField(Arrays.asList(pair.getFirst().statuses()), 
pair.getSecond());
         }
-
+        COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.MigrateVm);
+        COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.SetVmTicket);
+        COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.VmLogon);
+        COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.CancelMigrateVm);
     }
 
     public static boolean isUpdateValid(VmStatic source, VmStatic destination, 
VMStatus status) {
@@ -558,4 +566,28 @@
         // not calling validate in order not to add the messages per domain
         return (new 
StorageDomainValidator(storageDomain).isDomainHasSpaceForRequest(sizeRequested)).isValid();
     }
+
+    public static ValidationResult canRunActionOnNonManagedVm(VM vm, 
VdcActionType actionType) {
+        ValidationResult validationResult = ValidationResult.VALID;
+
+        if (!isManagedVm(vm)) {
+            if (!COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.contains(actionType)) {
+                validationResult = new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_RUN_ACTION_ON_NON_MANAGED_VM);
+            }
+        }
+        return validationResult;
+    }
+
+    public static boolean isHostedEngine(VM vm) {
+        return OriginType.HOSTED_ENGINE.equals(vm.getOrigin());
+    }
+
+    public static boolean isExternalVm(VM vm) {
+        return OriginType.EXTERNAL.equals(vm.getOrigin());
+    }
+
+    public static boolean isManagedVm(VM vm) {
+        return !isHostedEngine(vm) && !isExternalVm(vm);
+    }
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmLogonCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmLogonCommand.java
index 4bbc689..c34b12a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmLogonCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmLogonCommand.java
@@ -29,6 +29,10 @@
             return false;
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         // Everything is OK:
         return true;
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
index 8ef2ede..51675a2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
@@ -47,6 +47,16 @@
 
     @Override
     protected boolean canDoAction() {
+
+        if (getVm() == null) {
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST);
+            return false;
+        }
+
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (!activateDeactivateVmNicAllowed(getVm().getStatus())) {
             
addCanDoActionMessage(VdcBllMessages.ACTIVATE_DEACTIVATE_NIC_VM_STATUS_ILLEGAL);
             return false;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java
index 35c62c2..3fe8e23 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java
@@ -102,6 +102,10 @@
             return false;
         }
 
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         switch (getVmDynamicDao().get(getParameters().getVmId()).getStatus()) {
         case Up:
         case Down:
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java
index a4d7ad7..db0c1ca 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/RemoveVmInterfaceCommand.java
@@ -51,6 +51,14 @@
 
     @Override
     protected boolean canDoAction() {
+        if (getVm() == null) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND);
+        }
+
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         VmDynamic vm = getVmDynamicDao().get(getParameters().getVmId());
         if (vm.getStatus() != VMStatus.Down
                 && getDbFacade().getVmDeviceDao()
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..6bc1d96 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
@@ -139,6 +139,15 @@
     @Override
     protected boolean canDoAction() {
 
+        if (getVm() == null) {
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST);
+            return false;
+        }
+
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
+        }
+
         if (!updateVmNicAllowed(getVm().getStatus())) {
             
addCanDoActionMessage(VdcBllMessages.NETWORK_CANNOT_CHANGE_STATUS_WHEN_NOT_DOWN_UP);
             return false;
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommandTest.java
index 1fcec21..ecc401a 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommandTest.java
@@ -21,6 +21,7 @@
 import org.ovirt.engine.core.bll.validator.VmValidator;
 import org.ovirt.engine.core.common.action.CreateAllSnapshotsFromVmParameters;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
+import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dao.SnapshotDao;
@@ -44,6 +45,9 @@
     private SnapshotsValidator snapshotsValidator;
 
     @Mock
+    private VM vm;
+
+    @Mock
     private DiskImagesValidator diskImagesValidator;
 
     @Mock
@@ -57,6 +61,7 @@
     public void setUp() {
         CreateAllSnapshotsFromVmParameters params = new 
CreateAllSnapshotsFromVmParameters(Guid.newGuid(), "");
         cmd = spy(new 
CreateAllSnapshotsFromVmCommand<CreateAllSnapshotsFromVmParameters>(params));
+        doReturn(vm).when(cmd).getVm();
         doReturn(vmValidator).when(cmd).createVmValidator();
         doReturn(snapshotsValidator).when(cmd).createSnapshotValidator();
         doReturn(storagePoolValidator).when(cmd).createStoragePoolValidator();
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
index 32127f0..cd1b424 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.core.common.businessentities;
 
+import java.util.List;
 import java.util.Map;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
@@ -57,4 +58,6 @@
     void runFailedAutoStartVM(Guid vmId);
 
     boolean restartVds(Guid vdsId);
+
+    void addExternallyManagedVms(List<VmStatic> externalVmList);
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/OriginType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/OriginType.java
index 687d0f7..782edaf 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/OriginType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/OriginType.java
@@ -7,7 +7,11 @@
     RHEV(0),
     VMWARE(1),
     XEN(2),
-    OVIRT(3);
+    OVIRT(3),
+    // VMs that externally run on the host (not created by the engine)
+    EXTERNAL(4),
+    // VMs that were created by the hosted engine setup
+    HOSTED_ENGINE(5);
 
     private int intValue;
     private static Map<Integer, OriginType> mappings;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index 4429958..e8d0405 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -130,6 +130,7 @@
     ACTION_TYPE_FAILED_VM_RUNNING_STATELESS(ErrorType.CONFLICT),
     
ACTION_TYPE_FAILED_VM_HAS_STATELESS_SNAPSHOT_LEFTOVER(ErrorType.DATA_CORRUPTION),
     ACTION_TYPE_FAILED_VM_IN_USE_BY_OTHER_USER(ErrorType.CONFLICT),
+    
ACTION_TYPE_FAILED_CANNOT_RUN_ACTION_ON_NON_MANAGED_VM(ErrorType.NOT_SUPPORTED),
     ACTION_TYPE_FAILED_DELETE_PROTECTION_ENABLED(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_EXCEEDED_MAX_PCI_SLOTS(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_EXCEEDED_MAX_IDE_SLOTS(ErrorType.CONFLICT),
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 60d0e7b..7852457 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -16,6 +16,7 @@
 ACTION_TYPE_FAILED_CORRUPTED_VM_SNAPSHOT_ID=Cannot ${action} ${type}. The 
snapshot configuration is corrupted (snapshot ID is empty). Please contact the 
system administrator.
 ACTION_TYPE_FAILED_VM_SNAPSHOT_HAS_NO_CONFIGURATION=Cannot ${action} ${type}. 
The snapshot ${SnapshotName} of VM ${VmName} has no configuration available. 
Please choose a snapshot with configuration available.
 ACTION_TYPE_FAILED_VM_SNAPSHOT_IS_BROKEN=Cannot ${action} ${type}. The 
snapshot is broken, and no further work can be done on it. Please remove this 
snapshot from the VM.
+ACTION_TYPE_FAILED_CANNOT_RUN_ACTION_ON_NON_MANAGED_VM=Cannot ${action} 
${type}. This VM is not managed by the engine.
 IMAGE_REPOSITORY_NOT_FOUND=Storage Domain cannot be accessed.\n\
 Possible reasons:\n\
        No operational Host in Data Center or Data Center state is not Up.
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
index 5af3ae9..cef1ab8 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
@@ -24,6 +24,7 @@
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.DiskImageDynamic;
 import org.ovirt.engine.core.common.businessentities.Entities;
+import org.ovirt.engine.core.common.businessentities.OriginType;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
@@ -39,6 +40,7 @@
 import org.ovirt.engine.core.common.businessentities.VmExitStatus;
 import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface;
 import org.ovirt.engine.core.common.businessentities.VmPauseStatus;
+import org.ovirt.engine.core.common.businessentities.VmStatic;
 import org.ovirt.engine.core.common.businessentities.VmStatistics;
 import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
 import org.ovirt.engine.core.common.businessentities.network.Network;
@@ -108,6 +110,7 @@
     private final List<Guid> _succededToRunVms = new ArrayList<Guid>();
     private static final Map<Guid,Integer> vmsWithBalloonDriverProblem = new 
HashMap<>();
     private static final Map<Guid,Integer> vmsWithUncontrolledBalloon = new 
HashMap<>();
+    private final List<VmStatic> _externalVmsToAdd = new ArrayList();
     private boolean _saveVdsDynamic;
     private VDSStatus _firstStatus = VDSStatus.forValue(0);
     private boolean _saveVdsStatistics;
@@ -123,6 +126,8 @@
     private static final Log log = 
LogFactory.getLog(VdsUpdateRunTimeInfo.class);
 
     private static final int TO_MEGA_BYTES = 1024;
+    private static final String HOSTED_ENGINE_VM_NAME = "oVirtHostedEngine";
+    private static final String EXTERNAL_VM_NAME_FORMAT = "external-%1$s";
 
     private void saveDataToDb() {
         if (_saveVdsDynamic) {
@@ -168,6 +173,7 @@
         updateAllInTransaction(_vmDiskImageDynamicToSave.values(), 
getDbFacade().getDiskImageDynamicDao());
         saveVmDevicesToDb();
         saveVmGuestAgentNetworkDevices();
+        
ResourceManager.getInstance().getEventListener().addExternallyManagedVms(_externalVmsToAdd);
     }
 
     private void saveVmGuestAgentNetworkDevices() {
@@ -972,6 +978,8 @@
             proceedDownVms();
 
             proceedGuaranteedMemoryCheck();
+
+            processExternallyManagedVms();
             // update repository and check if there are any vm in cache that 
not
             // in vdsm
             updateRepository(running);
@@ -1586,6 +1594,48 @@
         }
     }
 
+    private void processExternallyManagedVms() {
+        List<String> vmsToQuery = new ArrayList<String>();
+        // Searching for External VMs that run on the host
+        for (VmInternalData vmInternalData : _runningVms.values()) {
+            VM currentVmData = 
_vmDict.get(vmInternalData.getVmDynamic().getId());
+            if (currentVmData == null) {
+                if 
(getDbFacade().getVmStaticDao().get(vmInternalData.getVmDynamic().getId()) == 
null) {
+                    Guid vmId = vmInternalData.getVmDynamic().getId();
+                    vmsToQuery.add(vmId.toString());
+                }
+            }
+        }
+        // Fetching for details from the host
+        // and marking the VMs for addition
+        if (!vmsToQuery.isEmpty()) {
+            // Query VDSM for VMs info, and creating a proper VMStatic to be 
used when importing them
+            Map[] vmsInfo = getVmInfo(vmsToQuery);
+            for (Map vmInfo : vmsInfo) {
+                Guid vmId = Guid.createGuidFromString((String) 
vmInfo.get(VdsProperties.vm_guid));
+                VmStatic vmStatic = new VmStatic();
+                vmStatic.setId(vmId);
+                vmStatic.setCreationDate(new Date());
+                vmStatic.setVdsGroupId(_vds.getVdsGroupId());
+                String vmNameOnHost = (String) 
vmInfo.get(VdsProperties.vm_name);
+
+                if (StringUtils.equals(HOSTED_ENGINE_VM_NAME, vmNameOnHost)) {
+                    vmStatic.setName(vmNameOnHost);
+                    vmStatic.setOrigin(OriginType.HOSTED_ENGINE);
+                } else {
+                    vmStatic.setName(String.format(EXTERNAL_VM_NAME_FORMAT, 
vmNameOnHost));
+                    vmStatic.setOrigin(OriginType.EXTERNAL);
+                }
+
+                vmStatic.setNumOfSockets(Integer.parseInt((String) 
vmInfo.get(VdsProperties.num_of_cpus)));
+                vmStatic.setMemSizeMb(Integer.parseInt((String) 
vmInfo.get(VdsProperties.mem_size_mb)));
+                _externalVmsToAdd.add(vmStatic);
+                log.infoFormat("Importing VM {0} as {1}, as it is running on 
the on Host, but does not exist in the engine.", vmNameOnHost, 
vmStatic.getName());
+            }
+        }
+    }
+
+
     private void updateRepository(List<VM> running) {
         for (VmInternalData vmInternalData : _runningVms.values()) {
             VmDynamic runningVm = vmInternalData.getVmDynamic();
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index 4ad4ad4..0a441cd 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -58,6 +58,9 @@
     @DefaultStringValue("Cannot ${action} ${type}. The snapshot is broken, and 
no further work can be done on it. Please remove this snapshot from the VM.")
     String ACTION_TYPE_FAILED_VM_SNAPSHOT_IS_BROKEN();
 
+    @DefaultStringValue("Cannot ${action} ${type}. This VM is not managed by 
the engine.")
+    String ACTION_TYPE_FAILED_CANNOT_RUN_ACTION_ON_NON_MANAGED_VM();
+
     @DefaultStringValue("Storage Domain cannot be accessed.\nPossible 
reasons:\nNo operational Host in Data Center or Data Center state is not Up.")
     String IMAGE_REPOSITORY_NOT_FOUND();
 
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
index 404b1a9..686af81 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
@@ -193,6 +193,9 @@
 
     String OriginType___OVIRT();
 
+    String OriginType___HOSTED_ENGINE();
+
+    String OriginType___EXTERNAL();
     /**
      * This needs to cleaned up. We are leaving it in place to support import 
of
      * VMs created using previous versions.
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
index d5f99f3..ffd1467 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
+++ 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
@@ -94,6 +94,8 @@
 OriginType___OVIRT=oVirt
 OriginType___VMWARE=VmWare
 OriginType___XEN=Xen
+OriginType___HOSTED_ENGINE=Hosted Engine
+OriginType___EXTERNAL=External
 VmInterfaceType___rtl8139_pv=Dual mode rtl8139, VirtIO
 VmInterfaceType___rtl8139=rtl8139
 VmInterfaceType___e1000=e1000
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 10f060d..0349b62 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -16,6 +16,7 @@
 ACTION_TYPE_FAILED_CORRUPTED_VM_SNAPSHOT_ID=Cannot ${action} ${type}. The 
snapshot configuration is corrupted (snapshot ID is empty). Please contact the 
system administrator.
 ACTION_TYPE_FAILED_VM_SNAPSHOT_HAS_NO_CONFIGURATION=Cannot ${action} ${type}. 
The snapshot ${SnapshotName} of VM ${VmName} has no configuration available. 
Please choose a snapshot with configuration available.
 ACTION_TYPE_FAILED_VM_SNAPSHOT_IS_BROKEN=Cannot ${action} ${type}. The 
snapshot is broken, and no further work can be done on it. Please remove this 
snapshot from the VM.
+ACTION_TYPE_FAILED_CANNOT_RUN_ACTION_ON_NON_MANAGED_VM=Cannot ${action} 
${type}. This VM is not managed by the engine.
 IMAGE_REPOSITORY_NOT_FOUND=Storage Domain cannot be accessed.\n\
 Possible reasons:\n\
        No operational Host in Data Center or Data Center state is not Up.
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index dc57b46..eabae40 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -16,6 +16,7 @@
 ACTION_TYPE_FAILED_CORRUPTED_VM_SNAPSHOT_ID=Cannot ${action} ${type}. The 
snapshot configuration is corrupted (snapshot ID is empty). Please contact the 
system administrator.
 ACTION_TYPE_FAILED_VM_SNAPSHOT_HAS_NO_CONFIGURATION=Cannot ${action} ${type}. 
The snapshot ${SnapshotName} of VM ${VmName} has no configuration available. 
Please choose a snapshot with configuration available.
 ACTION_TYPE_FAILED_VM_SNAPSHOT_IS_BROKEN=Cannot ${action} ${type}. The 
snapshot is broken, and no further work can be done on it. Please remove this 
snapshot from the VM.
+ACTION_TYPE_FAILED_CANNOT_RUN_ACTION_ON_NON_MANAGED_VM=Cannot ${action} 
${type}. This VM is not managed by the engine.
 IMAGE_REPOSITORY_NOT_FOUND=Storage Domain cannot be accessed.\n\
 Possible reasons:\n\
        No operational Host in Data Center or Data Center state is not Up.


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

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

Reply via email to