Eldan Shachar has uploaded a new change for review.

Change subject: core: Add migration options to OVF
......................................................................

core: Add migration options to OVF

Most migration options were not saved in OVF, this caused a problem when
changing those options while VM was running (due to the "next run" snapshot 
OVF).

- Added support for the options: MIGRATION_SUPPORT, DEDICATED_VM_FOR_VDS
  and USE_HOST_CPU in the OVF reader\writer.
- Added verifcation for the DEDICATED_VM_FOR_VDS option - makes sure host
  exists in the current  cluser. Added in: import vm, import template,
snapshot manager.

Change-Id: I5f0025e5ac59dac0a1569729c2fef8186e0885db
Bug-Url: https://bugzilla.redhat.com/1124449
Signed-off-by: Eldan Shachar <eshac...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.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/VmManagementCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.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/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfProperties.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
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
17 files changed, 123 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/32899/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 33232a7..10ad09e 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
@@ -296,7 +296,7 @@
                 return false;
             }
         }
-        return isDedicatedVdsOnSameCluster(vmStaticFromParams);
+        return isDedicatedVdsExistOnSameCluster(vmStaticFromParams, false);
     }
 
     protected boolean shouldCheckSpaceInStorageDomains() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
index 8f7965b..244f9a7 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
@@ -10,6 +10,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Set;
 
 import javax.ejb.TransactionRolledbackLocalException;
@@ -63,6 +64,8 @@
 import org.ovirt.engine.core.common.businessentities.CommandEntity;
 import org.ovirt.engine.core.common.businessentities.IVdsAsyncCommand;
 import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VmBase;
 import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
@@ -2306,4 +2309,37 @@
     protected MacPoolManagerStrategy getMacPool() {
         return 
MacPoolPerDcSingleton.getInstance().poolForDataCenter(getStoragePoolId());
     }
+
+    /**
+     * Checks that dedicated host exists on the same cluster as the VM
+     *
+     * @param vm
+     *            - the VM to check
+     * @param isQuietMode
+     *            - don't write errors (used for cases where the caller fixes 
the problem instead of throwing an error).
+     * @return
+     */
+    protected boolean isDedicatedVdsExistOnSameCluster(VmBase vm, Boolean 
isQuietMode) {
+        boolean result = true;
+        if (vm.getDedicatedVmForVds() != null) {
+            // get dedicated host id
+            Guid guid = vm.getDedicatedVmForVds();
+            // get dedicated host, checks if exists and compare its cluster to 
the VM cluster
+            VDS vds = getVdsDAO().get(guid);
+            if (vds == null) {
+                if(!isQuietMode) {
+                    getReturnValue().getCanDoActionMessages()
+                            
.add(VdcBllMessages.ACTION_TYPE_FAILED_DEDICATED_VDS_DOES_NOT_EXIST.toString());
+                }
+                result = false;
+            } else if (!Objects.equals(vm.getVdsGroupId(), 
vds.getVdsGroupId())) {
+                if(!isQuietMode) {
+                    getReturnValue().getCanDoActionMessages()
+                            
.add(VdcBllMessages.ACTION_TYPE_FAILED_DEDICATED_VDS_NOT_IN_SAME_CLUSTER.toString());
+                }
+                result = false;
+            }
+        }
+        return result;
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
index 90d2ef1..d03e83d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
@@ -1024,6 +1024,11 @@
         getVm().getStaticData().setMinAllocatedMem(computeMinAllocatedMem());
         getVm().getStaticData().setQuotaId(getParameters().getQuotaId());
 
+        // if "run on host" field points to a non existent vds (in the current 
cluster) -> remove field and continue
+        if(!isDedicatedVdsExistOnSameCluster(getVm().getStaticData(), true)){
+            getVm().setDedicatedVmForVds(null);
+        }
+
         if (getVm().getOriginalTemplateGuid() != null && 
!VmTemplateHandler.BLANK_VM_TEMPLATE_ID.equals(getVm().getOriginalTemplateGuid()))
 {
             // no need to check this for blank
             VmTemplate originalTemplate = 
getVmTemplateDAO().get(getVm().getOriginalTemplateGuid());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
index f299fb7..917c736 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
@@ -404,6 +404,12 @@
 
     protected void addVmTemplateToDb() {
         getVmTemplate().setVdsGroupId(getParameters().getVdsGroupId());
+
+        // if "run on host" field points to a non existent vds (in the current 
cluster) -> remove field and continue
+        if(!isDedicatedVdsExistOnSameCluster(getVmTemplate(), true)){
+            getVmTemplate().setDedicatedVmForVds(null);
+        }
+
         getVmTemplate().setStatus(VmTemplateStatus.Locked);
         getVmTemplate().setQuotaId(getParameters().getQuotaId());
         VmHandler.updateImportedVmUsbPolicy(getVmTemplate());
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 5b2a6be..5132110 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
@@ -439,7 +439,7 @@
             return failCanDoAction(VdcBllMessages.VM_CANNOT_UPDATE_CLUSTER);
         }
 
-        if (!isDedicatedVdsOnSameCluster(vmFromParams.getStaticData())) {
+        if (!isDedicatedVdsExistOnSameCluster(vmFromParams.getStaticData(), 
false)) {
             return false;
         }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
index 50469f5..fa95c26 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
@@ -5,7 +5,6 @@
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Objects;
 import java.util.regex.Pattern;
 
 import org.apache.commons.lang.StringUtils;
@@ -66,29 +65,6 @@
             instanceType = 
getVmTemplateDAO().getInstanceType(getInstanceTypeId());
         }
         return instanceType;
-    }
-
-    /**
-     * Checks that dedicated host is on the same cluster as the VM
-     *
-     * @param vm
-     *            - the VM to check
-     * @return
-     */
-    protected boolean isDedicatedVdsOnSameCluster(VmStatic vm) {
-        boolean result = true;
-        if (vm.getDedicatedVmForVds() != null) {
-            // get dedicated host id
-            Guid guid = vm.getDedicatedVmForVds();
-            // get dedicated host cluster and comparing it to VM cluster
-            VDS vds = getVdsDAO().get(guid);
-            result = vds != null && (Objects.equals(vm.getVdsGroupId(), 
vds.getVdsGroupId()));
-        }
-        if (!result) {
-            getReturnValue().getCanDoActionMessages()
-                    
.add(VdcBllMessages.ACTION_TYPE_FAILED_DEDICATED_VDS_NOT_IN_SAME_CLUSTER.toString());
-        }
-        return result;
     }
 
     private final static Pattern cpuPinningPattern =
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
index b856908..eaed86e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
@@ -5,6 +5,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
@@ -25,6 +26,7 @@
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotStatus;
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
+import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmDevice;
@@ -543,7 +545,6 @@
             vm.setInterfaces(interfaces);
 
             // These fields are not saved in the OVF, so get them from the 
current VM.
-            vm.setDedicatedVmForVds(oldVmStatic.getDedicatedVmForVds());
             vm.setIsoPath(oldVmStatic.getIsoPath());
             vm.setVdsGroupId(oldVmStatic.getVdsGroupId());
             // The VM configuration does not hold the vds group Id.
@@ -558,6 +559,10 @@
                     vm.setVdsGroupCpuName(vdsGroup.getcpu_name());
                 }
             }
+            // if the required dedicated host is invalid -> use current VM 
dedicated host
+            if(!isDedicatedVdsExistOnSameCluster(vm.getStaticData())) {
+                vm.setDedicatedVmForVds(oldVmStatic.getDedicatedVmForVds());
+            }
             validateQuota(vm);
             return true;
         } catch (OvfReaderException e) {
@@ -567,6 +572,27 @@
     }
 
     /**
+     * Checks that dedicated host exists on the same cluster as the VM
+     *
+     * @param vm
+     *            - the VM to check
+     * @return
+     */
+    protected boolean isDedicatedVdsExistOnSameCluster(VmStatic vm) {
+        boolean result = true;
+        if (vm.getDedicatedVmForVds() != null) {
+            // get dedicated host id
+            Guid guid = vm.getDedicatedVmForVds();
+            // get dedicated host, checks if exists and compare its cluster to 
the VM cluster
+            VDS vds = DbFacade.getInstance().getVdsDao().get(guid);
+            if (vds == null || !Objects.equals(vm.getVdsGroupId(), 
vds.getVdsGroupId())) {
+                result = false;
+            }
+        }
+        return result;
+    }
+
+    /**
      * Validate whether the quota supplied in snapshot configuration exists 
in<br>
      * current setup, if not reset to null.<br>
      *
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 f95ca61..bf88157 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
@@ -196,6 +196,7 @@
     ACTION_TYPE_FAILED_SPM_CHANGED(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_STORAGE_DOMAIN(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_DEDICATED_VDS_NOT_IN_SAME_CLUSTER(ErrorType.CONFLICT),
+    ACTION_TYPE_FAILED_DEDICATED_VDS_DOES_NOT_EXIST(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_DISK_MAX_SIZE_EXCEEDED(ErrorType.CONFLICT),
     
ACTION_TYPE_FAILED_DISK_CONFIGURATION_NOT_SUPPORTED(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_OVF_CONFIGURATION_NOT_SUPPORTED(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 7103806..1e04874 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -214,6 +214,7 @@
 ACTION_TYPE_FAILED_SPM_CHANGED=Cannot ${action} ${type}. The Data Center's 
Storage Pool Manager has changed.
 ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_STORAGE_DOMAIN=Cannot ${action} ${type}. 
Low disk space on Storage Domain ${storageName}.
 ACTION_TYPE_FAILED_DEDICATED_VDS_NOT_IN_SAME_CLUSTER=Cannot ${action} ${type}. 
VM is pinned to a specific host. The host's cluster must be the same as the 
selected VM cluster.
+ACTION_TYPE_FAILED_DEDICATED_VDS_DOES_NOT_EXIST=Cannot ${action} ${type}. VM 
is pinned to a specific host. The required host doesn't exist.
 ACTION_TYPE_FAILED_DISK_CONFIGURATION_NOT_SUPPORTED=Cannot ${action} ${type}. 
Disk configuration (${volumeFormat} ${volumeType}) is incompatible with the 
storage domain type.
 ACTION_TYPE_FAILED_OVF_CONFIGURATION_NOT_SUPPORTED=Cannot ${action} ${type}. 
The OVF configuration could not be parsed.
 ACTION_TYPE_FAILED_DISK_LUN_IS_ALREADY_IN_USE=Cannot ${action} ${type}. The 
provided lun is used by another disk.
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfProperties.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfProperties.java
index 8a013b2..4d85f14 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfProperties.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfProperties.java
@@ -69,4 +69,7 @@
     final static String IS_SPICE_FILE_TRANSFER_ENABLED = 
"IsSpiceFileTransferEnabled";
     final static String IS_SPICE_COPY_PASTE_ENABLED = 
"IsSpiceCopyPasteEnabled";
     final static String COMMENT = "Comment";
+    final static String MIGRATION_SUPPORT = "MigrationSupport";
+    final static String DEDICATED_VM_FOR_VDS = "DedicatedVmForVds";
+    final static String USE_HOST_CPU = "UseHostCpu";
 }
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
index 16c1b12..6f50efb 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.common.businessentities.DiskInterface;
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
+import org.ovirt.engine.core.common.businessentities.MigrationSupport;
 import org.ovirt.engine.core.common.businessentities.OriginType;
 import org.ovirt.engine.core.common.businessentities.SerialNumberPolicy;
 import org.ovirt.engine.core.common.businessentities.SsoMethod;
@@ -642,6 +643,21 @@
             }
         }
 
+        node = content.SelectSingleNode(OvfProperties.MIGRATION_SUPPORT);
+        if (node != null) {
+            if (StringUtils.isNotEmpty(node.innerText)) {
+                MigrationSupport migrationSupport = 
MigrationSupport.forValue(Integer.parseInt(node.innerText));
+                vmBase.setMigrationSupport(migrationSupport);
+            }
+        }
+
+        node = content.SelectSingleNode(OvfProperties.DEDICATED_VM_FOR_VDS);
+        if (node != null) {
+            if (StringUtils.isNotEmpty(node.innerText)) {
+                
vmBase.setDedicatedVmForVds(Guid.createGuidFromString(node.innerText));
+            }
+        }
+
         node = content.SelectSingleNode(OvfProperties.SERIAL_NUMBER_POLICY);
         if (node != null) {
             if (StringUtils.isNotEmpty(node.innerText)) {
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java
index ad3e099..efec66a 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java
@@ -207,6 +207,11 @@
         if (node != null) {
             _vm.setUseLatestVersion(Boolean.parseBoolean(node.innerText));
         }
+
+        node = content.SelectSingleNode(OvfProperties.USE_HOST_CPU);
+        if (node != null) {
+            _vm.setUseHostCpuFlags(Boolean.parseBoolean(node.innerText));
+        }
     }
 
     @Override
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java
index 97bd737..35b629a 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java
@@ -86,6 +86,10 @@
             _writer.WriteEndElement();
         }
 
+        _writer.WriteStartElement(OvfProperties.USE_HOST_CPU);
+        
_writer.WriteRaw(String.valueOf(_vm.getStaticData().isUseHostCpuFlags()));
+        _writer.WriteEndElement();
+
         _writer.WriteStartElement(OvfProperties.USE_LATEST_VERSION);
         _writer.WriteRaw(String.valueOf(_vm.isUseLatestVersion()));
         _writer.WriteEndElement();
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
index 02e0ef6..5e12e52 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
@@ -346,6 +346,18 @@
         }
         writeVmInit();
 
+        if (vmBase.getMigrationSupport() != null) {
+            _writer.WriteStartElement(OvfProperties.MIGRATION_SUPPORT);
+            
_writer.WriteRaw(String.valueOf(vmBase.getMigrationSupport().getValue()));
+            _writer.WriteEndElement();
+        }
+
+        if (vmBase.getDedicatedVmForVds() != null) {
+            _writer.WriteStartElement(OvfProperties.DEDICATED_VM_FOR_VDS);
+            _writer.WriteRaw(String.valueOf(vmBase.getDedicatedVmForVds()));
+            _writer.WriteEndElement();
+        }
+
         if (vmBase.getSerialNumberPolicy() != null) {
             _writer.WriteStartElement(OvfProperties.SERIAL_NUMBER_POLICY);
             
_writer.WriteRaw(String.valueOf(vmBase.getSerialNumberPolicy().getValue()));
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 460f230..977ca95 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
@@ -577,6 +577,9 @@
     @DefaultStringValue("Cannot ${action} ${type}. VM is pinned to a specific 
host. The host's cluster must be the same as the selected VM cluster.")
     String ACTION_TYPE_FAILED_DEDICATED_VDS_NOT_IN_SAME_CLUSTER();
 
+    @DefaultStringValue("Cannot ${action} ${type}. VM is pinned to a specific 
host. The required host doesn't exist.")
+    String ACTION_TYPE_FAILED_DEDICATED_VDS_DOES_NOT_EXIST();
+
     @DefaultStringValue("Cannot ${action} ${type}. Disk configuration 
(${volumeFormat} ${volumeType}) is incompatible with the storage domain type.")
     String ACTION_TYPE_FAILED_DISK_CONFIGURATION_NOT_SUPPORTED();
 
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 56f66c7..5a8a7e7 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
@@ -201,6 +201,7 @@
 ACTION_TYPE_FAILED_SPM_CHANGED=Cannot ${action} ${type}. The Data Center's 
Storage Pool Manager has changed.
 ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_STORAGE_DOMAIN=Cannot ${action} ${type}. 
Low disk space on Storage Domain ${storageName}.
 ACTION_TYPE_FAILED_DEDICATED_VDS_NOT_IN_SAME_CLUSTER=Cannot ${action} ${type}. 
VM is pinned to a specific host. The host's cluster must be the same as the 
selected VM cluster.
+ACTION_TYPE_FAILED_DEDICATED_VDS_DOES_NOT_EXIST=Cannot ${action} ${type}. VM 
is pinned to a specific host. The required host doesn't exist.
 ACTION_TYPE_FAILED_DISK_CONFIGURATION_NOT_SUPPORTED=Cannot ${action} ${type}. 
Disk configuration (${volumeFormat} ${volumeType}) is incompatible with the 
storage domain type.
 ACTION_TYPE_FAILED_OVF_CONFIGURATION_NOT_SUPPORTED=Cannot ${action} ${type}. 
The OVF configuration could not be parsed.
 ACTION_TYPE_FAILED_DISK_LUN_IS_ALREADY_IN_USE=Cannot ${action} ${type}. The 
provided lun is used by another disk.
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 29ee2ac..778d010 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
@@ -212,6 +212,7 @@
 ACTION_TYPE_FAILED_SPM_CHANGED=Cannot ${action} ${type}. The Data Center's 
Storage Pool Manager has changed.
 ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_STORAGE_DOMAIN=Cannot ${action} ${type}. 
Low disk space on Storage Domain ${storageName}.
 ACTION_TYPE_FAILED_DEDICATED_VDS_NOT_IN_SAME_CLUSTER=Cannot ${action} ${type}. 
VM is pinned to a specific host. The host's cluster must be the same as the 
selected VM cluster.
+ACTION_TYPE_FAILED_DEDICATED_VDS_DOES_NOT_EXIST=Cannot ${action} ${type}. VM 
is pinned to a specific host. The required host doesn't exist.
 ACTION_TYPE_FAILED_DISK_CONFIGURATION_NOT_SUPPORTED=Cannot ${action} ${type}. 
Disk configuration (${volumeFormat} ${volumeType}) is incompatible with the 
storage domain type.
 ACTION_TYPE_FAILED_OVF_CONFIGURATION_NOT_SUPPORTED=Cannot ${action} ${type}. 
The OVF configuration could not be parsed.
 ACTION_TYPE_FAILED_DISK_LUN_HAS_NO_VALID_TYPE=Cannot ${action} ${type}. The 
provided lun has no valid lun type.


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

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

Reply via email to