Liron Ar has uploaded a new change for review.

Change subject: core: wip: Introducing ImportVmFromConfigurationCommand
......................................................................

core: wip: Introducing ImportVmFromConfigurationCommand

ImportVmFromConfigurationCommand is used for adding a vm to the engine
with a configuration specified in an ovf file.
The command adds the vm and related devices as specified in the given
configuration and then attempts to attach to the vm the related disks.

Change-Id: I9390bcc11e5f3cb8c8c89ce791aabe63fe0ca341
Signed-off-by: Liron Aravot <lara...@redhat.com>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ConfigurationType.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ImportVmFromConfigurationParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
M 
backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
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
14 files changed, 215 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/15894/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ConfigurationType.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ConfigurationType.java
new file mode 100644
index 0000000..9b922f0
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ConfigurationType.java
@@ -0,0 +1,12 @@
+package org.ovirt.engine.core.bll;
+
+public enum ConfigurationType {
+    OVF;
+
+    public static ConfigurationType getConfiugrationType(String type) {
+        if (type != null && type.equalsIgnoreCase("ovf")) {
+            return OVF;
+        }
+        return null;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
new file mode 100644
index 0000000..6f3a076
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
@@ -0,0 +1,133 @@
+package org.ovirt.engine.core.bll;
+
+import org.apache.commons.lang.StringUtils;
+import org.ovirt.engine.core.bll.context.CommandContext;
+import org.ovirt.engine.core.bll.utils.PermissionSubject;
+import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.action.AttachDettachVmDiskParameters;
+import org.ovirt.engine.core.common.action.ImportVmFromConfigurationParameters;
+import org.ovirt.engine.core.common.action.ImportVmParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import org.ovirt.engine.core.common.businessentities.Disk;
+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.dal.dbbroker.auditloghandling.AuditLogDirector;
+import org.ovirt.engine.core.utils.log.Log;
+import org.ovirt.engine.core.utils.log.LogFactory;
+import org.ovirt.engine.core.utils.ovf.OvfReaderException;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+@NonTransactiveCommandAttribute(forceCompensation = true)
+public class ImportVmFromConfigurationCommand<T extends 
ImportVmFromConfigurationParameters> extends CommandBase<T> {
+
+    private static final Log log = 
LogFactory.getLog(ImportVmFromConfigurationCommand.class);
+
+    protected ImportVmFromConfigurationCommand(Guid commandId) {
+        super(commandId);
+    }
+
+    public ImportVmFromConfigurationCommand(T parameters) {
+        super(parameters);
+        setCommandShouldBeLogged(false);
+        setVdsGroupId(getParameters().getVdsGroupId());
+    }
+
+    @Override
+    public boolean canDoAction() {
+        ConfigurationType configType = 
ConfigurationType.getConfiugrationType(getParameters().getConfigurationType());
+        if (configType == null) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_UNSUPPORTED_CONFIGURATION_TYPE);
+        }
+
+        if (getVmFromConfiguration(configType) == null) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_ERROR_PARSING_CONFIGURATION);
+        }
+
+        getVm().getStaticData().setVdsGroupId(getParameters().getVdsGroupId());
+        return true;
+    }
+
+    @Override
+    public void executeCommand() {
+        Collection<Disk> vmDisksToAttach = getVm().getDiskMap().values();
+        clearVmDisks();
+
+        ImportVmParameters importParams =
+                new ImportVmParameters(getVm(),
+                        Guid.Empty,
+                        Guid.Empty,
+                        getVdsGroup().getStoragePoolId().getValue(),
+                        getVdsGroup().getId());
+        importParams.setVm(getVm());
+        importParams.setVdsGroupId(getParameters().getVdsGroupId());
+        VdcReturnValueBase returnVal = 
getBackend().runInternalAction(VdcActionType.ImportVm, importParams, new 
CommandContext(getCompensationContext()));
+
+        if (returnVal.getSucceeded() && !vmDisksToAttach.isEmpty()) {
+            AuditLogDirector.log(this, 
attemptToAttachDisksToImportedVm(vmDisksToAttach));
+        }
+
+        setActionReturnValue(getVm().getId());
+        setSucceeded(returnVal.getSucceeded());
+    }
+
+    private void clearVmDisks(){
+        getVm().setDiskMap(Collections.<Guid, Disk> emptyMap());
+        getVm().getImages().clear();
+        getVm().getDiskList().clear();
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public Map<String, String> getJobMessageProperties() {
+        return Collections.emptyMap();
+    }
+
+    private AuditLogType attemptToAttachDisksToImportedVm(Collection<Disk> 
disks){
+        List<String> failedDisks = new LinkedList<>();
+        for (Disk disk : disks) {
+            AttachDettachVmDiskParameters params = new 
AttachDettachVmDiskParameters(getVm().getId(), disk.getId(), disk.getPlugged());
+            VdcReturnValueBase returnVal = 
getBackend().runInternalAction(VdcActionType.AttachDiskToVm, params);
+            if (!returnVal.getSucceeded()) {
+                failedDisks.add(disk.getDiskAlias());
+            }
+        }
+
+        if (!failedDisks.isEmpty()) {
+            this.addCustomValue("DiskAliases", StringUtils.join(failedDisks, 
","));
+            return 
AuditLogType.VM_IMPORT_FROM_CONFIGURATION_ATTACH_DISKS_FAILED;
+        }
+
+        return AuditLogType.VM_IMPORT_FROM_CONFIGURATION_EXECUTED_SUCCESFULLY;
+    }
+
+    protected VM getVmFromConfiguration(ConfigurationType configurationType) {
+        if (getVm() == null) {
+            if (ConfigurationType.OVF.equals(configurationType)) {
+                OvfManager ovfManager = new OvfManager();
+                try {
+                    
setVm(ovfManager.readVmFromOvf(getParameters().getVmConfiguration()));
+                } catch (OvfReaderException e) {
+                    log.debug("failed to parse a given ovf file", e);
+                    return null;
+                }
+            }
+        }
+        return getVm();
+    }
+
+    @Override
+    protected boolean isUserAuthorizedToRunAction() {
+        return true;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
index 219d717..65edde1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
@@ -420,20 +420,33 @@
      * adds imported VM or Template devices
      * @param entity
      */
-    public static <T extends VmBase> void addImportedDevices(T entity, boolean 
isImportAsNewEntity) {
+    public static <T extends VmBase> void addImportedDevices(T entity, boolean 
isImportAsNewEntity, boolean addDisks, boolean addInterfaces, boolean 
addOtherDevices) {
         if (isImportAsNewEntity) {
             setNewIdInImportedCollections(entity);
         }
         List<VmDevice> vmDeviceToAdd = new ArrayList<VmDevice>();
         List<VmDevice> vmDeviceToUpdate = new ArrayList<VmDevice>();
         VmDeviceDAO dao = DbFacade.getInstance().getVmDeviceDao();
-        addImportedDisks(entity, vmDeviceToUpdate);
-        addImportedInterfaces(entity, vmDeviceToUpdate);
-        addOtherDevices(entity, vmDeviceToAdd);
+
+        if (addDisks) {
+            addImportedDisks(entity, vmDeviceToUpdate);
+        }
+
+        if (addInterfaces) {
+            addImportedInterfaces(entity, vmDeviceToUpdate);
+        }
+
+        if (addOtherDevices) {
+            addOtherDevices(entity, vmDeviceToAdd);
+        }
         dao.saveAll(vmDeviceToAdd);
         dao.updateAll(vmDeviceToUpdate);
     }
 
+    public static <T extends VmBase> void addImportedDevices(T entity, boolean 
isImportAsNewEntity) {
+        addImportedDevices(entity, isImportAsNewEntity, true, true, true);
+    }
+
     public static void setVmDevices(VmBase vmBase) {
         Map<Guid, VmDevice> vmManagedDeviceMap = new HashMap<Guid, VmDevice>();
         List<VmDevice> devices = 
DbFacade.getInstance().getVmDeviceDao().getVmDeviceByVmId(vmBase.getId());
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
index 4e57c21..8dde174 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
@@ -371,6 +371,8 @@
     VM_PAUSED_EIO(145),
     VM_PAUSED_EPERM(146),
     VM_POWER_DOWN_FAILED(147),
+    VM_IMPORT_FROM_CONFIGURATION_EXECUTED_SUCCESFULLY(148),
+    VM_IMPORT_FROM_CONFIGURATION_ATTACH_DISKS_FAILED(149),
 
     USER_ADD_VM_POOL(300),
     USER_ADD_VM_POOL_FAILED(301),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ImportVmFromConfigurationParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ImportVmFromConfigurationParameters.java
new file mode 100644
index 0000000..0bdd2f7
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ImportVmFromConfigurationParameters.java
@@ -0,0 +1,31 @@
+package org.ovirt.engine.core.common.action;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class ImportVmFromConfigurationParameters extends ImportVmParameters{
+
+    private String vmConfiguration;
+    private String configurationType;
+
+    public ImportVmFromConfigurationParameters(String configurationType, 
String vmConfiguration, Guid vdsGroupId) {
+        super();
+        this.configurationType = configurationType;
+        this.vmConfiguration = vmConfiguration;
+        setVdsGroupId(vdsGroupId);
+    }
+
+    public String getConfigurationType() {
+        return configurationType;
+    }
+
+    public void setConfigurationType(String configurationType) {
+        this.configurationType = configurationType;
+    }
+
+    public String getVmConfiguration() {
+        return vmConfiguration;
+    }
+    public void setVmConfiguration(String vmConfiguration) {
+        this.vmConfiguration = vmConfiguration;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
index 953aaf1..4d02ace 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
@@ -48,6 +48,7 @@
     CancelMigrateVm(41, ActionGroup.MIGRATE_VM, false, QuotaDependency.NONE),
     ActivateDeactivateVmNic(42, QuotaDependency.NONE),
     AddVmFromSnapshot(52, ActionGroup.CREATE_VM, QuotaDependency.BOTH),
+    ImportVmFromConfiguration(43, ActionGroup.IMPORT_EXPORT_VM, 
QuotaDependency.NONE),
     // VdsCommands
     AddVds(101, ActionGroup.CREATE_HOST, QuotaDependency.NONE),
     UpdateVds(102, ActionGroup.EDIT_HOST_CONFIGURATION, false, 
QuotaDependency.NONE),
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 3933949..0f7eebb 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
@@ -272,6 +272,8 @@
     VM_CANNOT_RUN_FROM_DISK_WITHOUT_DISK(ErrorType.CONFLICT),
     VM_CANNOT_RUN_STATELESS_WHILE_IN_PREVIEW(ErrorType.CONFLICT),
     VM_CANNOT_RUN_STATELESS_HA(ErrorType.CONFLICT),
+    ACTION_TYPE_FAILED_ERROR_PARSING_CONFIGURATION(ErrorType.CONFLICT),
+    ACTION_TYPE_FAILED_UNSUPPORTED_CONFIGURATION_TYPE(ErrorType.CONFLICT),
     VM_CANNOT_IMPORT_VM_EXISTS(ErrorType.CONFLICT),
     VM_CANNOT_IMPORT_VM_NAME_EXISTS(ErrorType.CONFLICT),
     VM_CANNOT_SUSPEND_STATELESS_VM(ErrorType.CONFLICT),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
index 0f2c466..d79701b 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
@@ -681,6 +681,8 @@
         severities.put(AuditLogType.IMPORTEXPORT_FAILED_TO_IMPORT_TEMPLATE, 
AuditLogSeverity.WARNING);
         severities.put(AuditLogType.IMPORTEXPORT_IMPORT_VM_INVALID_INTERFACES, 
AuditLogSeverity.WARNING);
         
severities.put(AuditLogType.IMPORTEXPORT_IMPORT_TEMPLATE_INVALID_INTERFACES, 
AuditLogSeverity.NORMAL);
+        
severities.put(AuditLogType.VM_IMPORT_FROM_CONFIGURATION_EXECUTED_SUCCESFULLY, 
AuditLogSeverity.NORMAL);
+        
severities.put(AuditLogType.VM_IMPORT_FROM_CONFIGURATION_ATTACH_DISKS_FAILED, 
AuditLogSeverity.WARNING);
     }
 
     private static void initNetworkSeverities() {
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 054bce0..e4c04fc 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -40,6 +40,8 @@
        -Use the Run-Once command to select a different boot option and rerun 
the VM.
 VM_CANNOT_RUN_STATELESS_WHILE_IN_PREVIEW=Cannot ${action} ${type}. Stateless 
flag on VM conflicts with running the VM in Preview mode. Either remove the 
Stateless flag from the VM or run the VM not in Preview mode.
 VM_CANNOT_RUN_STATELESS_HA=Cannot ${action} ${type}. Highly Available Virtual 
servers can not be run as stateless.
+ACTION_TYPE_FAILED_ERROR_PARSING_CONFIGURATION="Cannot ${action} ${type}. 
Failed to parse the given configuration."
+ACTION_TYPE_FAILED_UNSUPPORTED_CONFIGURATION_TYPE="Cannot ${action} ${type}. 
The given configuration type '${configurationType}' isn't supported."
 ACTION_TYPE_FAILED_DELETE_PROTECTION_ENABLED=Cannot ${action} ${type}. Delete 
protection is enabled. In order to delete, disable Delete protection first.
 RESOURCE_MANAGER_FAILED_ATTACHING_VM_TO_USERS=Failed to attach VM to User.
 RESOURCE_MANAGER_MIGRATING_VM_IS_NOT_UP=Migration failed, VM is not running.
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
index 84eeda0..a91479f 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
@@ -301,6 +301,8 @@
 VM_PAUSED_EIO=VM ${VmName} has paused due to storage I/O problem.
 VM_PAUSED_EPERM=VM ${VmName} has paused due to storage permissions problem.
 VM_POWER_DOWN_FAILED=Shutdown of VM ${VmName} failed.
+VM_IMPORT_FROM_CONFIGURATION_EXECUTED_SUCCESFULLY=VM ${VmName} has been 
successfully imported from the given configuration.
+VM_IMPORT_FROM_CONFIGURATION_ATTACH_DISKS_FAILED=Failed to attach to VM 
${VmName} the following disk(s): ${DiskAliases}, please refer to the engine log 
for the failure reason for each disk.
 VDS_INSTALL=Host ${VdsName} installed
 VDS_INSTALL_FAILED=Host ${VdsName} installation failed. 
${FailedInstallMessage}.
 VDS_INITIALIZING=Host ${VdsName} is initializing. Message: ${ErrorMessage}
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
 
b/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
index a760995..f45a8d5 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
@@ -21,6 +21,7 @@
 job.AddDisk=Adding Disk ${DiskAlias}
 job.RemoveDisk=Removing Disk ${DiskAlias}
 job.ImportVm=Importing VM ${VM} to Cluster ${VdsGroups}
+job.ImportVmFromConfiguration=Importing VM ${VM} from configuration to Cluster 
${VdsGroups}
 job.RemoveVmFromImportExport=Removing VM ${VM} image from Storage Domain 
${Storage}
 job.RemoveVmTemplateFromImportExport=Removing VM Template ${VmTemplate} image 
from Storage Domain ${Storage}
 job.ImportVmTemplate=Importing VM Template ${VmTemplate} to Data Center 
${StoragePool}
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 6223557..2a9e912 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
@@ -91,6 +91,12 @@
     @DefaultStringValue("Cannot ${action} ${type}. Highly Available Virtual 
servers can not be run as stateless.")
     String VM_CANNOT_RUN_STATELESS_HA();
 
+    @DefaultStringValue("Cannot ${action} ${type}. Failed to parse the given 
configuration.")
+    String ACTION_TYPE_FAILED_ERROR_PARSING_CONFIGURATION();
+
+    @DefaultStringValue("Cannot ${action} ${type}. The given configuration 
type '${configurationType}' isn't supported.")
+    String ACTION_TYPE_FAILED_UNSUPPORTED_CONFIGURATION_TYPE();
+
     @DefaultStringValue("Cannot ${action} ${type}. Delete protection is 
enabled. In order to delete, disable Delete protection first.")
     String ACTION_TYPE_FAILED_DELETE_PROTECTION_ENABLED();
 
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 0924009..acb8907 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
@@ -40,6 +40,8 @@
        -Use the Run-Once command to select a different boot option and rerun 
the VM.
 VM_CANNOT_RUN_STATELESS_WHILE_IN_PREVIEW=Cannot ${action} ${type}. Stateless 
flag on VM conflicts with running the VM in Preview mode. Either remove the 
Stateless flag from the VM or run the VM not in Preview mode.
 VM_CANNOT_RUN_STATELESS_HA=Cannot ${action} ${type}. Highly Available Virtual 
servers can not be run as stateless.
+ACTION_TYPE_FAILED_ERROR_PARSING_CONFIGURATION="Cannot ${action} ${type}. 
Failed to parse the given configuration."
+ACTION_TYPE_FAILED_UNSUPPORTED_CONFIGURATION_TYPE="Cannot ${action} ${type}. 
The given configuration type '${configurationType}' isn't supported."
 ACTION_TYPE_FAILED_DELETE_PROTECTION_ENABLED=Cannot ${action} ${type}. Delete 
protection is enabled. In order to delete, disable Delete protection first.
 RESOURCE_MANAGER_FAILED_ATTACHING_VM_TO_USERS=Failed to attach VM to User.
 RESOURCE_MANAGER_MIGRATING_VM_IS_NOT_UP=Migration failed, VM is not running.
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 5cff21a..f1eff79 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
@@ -40,6 +40,8 @@
        -Use the Run-Once command to select a different boot option and rerun 
the VM.
 VM_CANNOT_RUN_STATELESS_WHILE_IN_PREVIEW=Cannot ${action} ${type}. Stateless 
flag on VM conflicts with running the VM in Preview mode. Either remove the 
Stateless flag from the VM or run the VM not in Preview mode.
 VM_CANNOT_RUN_STATELESS_HA=Cannot ${action} ${type}. Highly Available Virtual 
servers can not be run as stateless.
+ACTION_TYPE_FAILED_ERROR_PARSING_CONFIGURATION="Cannot ${action} ${type}. 
Failed to parse the given configuration."
+ACTION_TYPE_FAILED_UNSUPPORTED_CONFIGURATION_TYPE="Cannot ${action} ${type}. 
The given configuration type '${configurationType}' isn't supported."
 ACTION_TYPE_FAILED_DELETE_PROTECTION_ENABLED=Cannot ${action} ${type}. Delete 
protection is enabled. In order to delete, disable Delete protection first.
 RESOURCE_MANAGER_FAILED_ATTACHING_VM_TO_USERS=Failed to attach VM to User.
 RESOURCE_MANAGER_MIGRATING_VM_IS_NOT_UP=Migration failed, VM is not running.


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

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

Reply via email to