Martin Betak has uploaded a new change for review.

Change subject: backend: Add support for Vm Boot Menu
......................................................................

backend: Add support for Vm Boot Menu

Added boolean property VmBase#bootMenuEnabled which
enables support for SeaBIOS boot device menu.

Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1047624
Change-Id: I415f9ce2c20f1f80fea314c587b68a8db2a956b0
Signed-off-by: Martin Betak <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
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/OvfWriter.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
A packaging/dbscripts/upgrade/03_05_0160_add_vm_boot_menu.sql
M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
M packaging/dbscripts/vm_templates_sp.sql
M packaging/dbscripts/vms_sp.sql
22 files changed, 114 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/26126/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
index 9798a0f..77f8df6 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
@@ -515,7 +515,8 @@
                         getParameters().getBaseTemplateId(),
                         getParameters().getTemplateVersionName(),
                         getParameters().getMasterVm().getSerialNumberPolicy(),
-                        
getParameters().getMasterVm().getCustomSerialNumber()));
+                        getParameters().getMasterVm().getCustomSerialNumber(),
+                        getParameters().getMasterVm().isBootMenuEnabled()));
         DbFacade.getInstance().getVmTemplateDao().save(getVmTemplate());
         getCompensationContext().snapshotNewEntity(getVmTemplate());
         setActionReturnValue(getVmTemplate().getId());
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
index ee4ee3e..7f59446 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
@@ -296,4 +296,13 @@
     public static boolean ovfStoreOnAnyDomain(Version version) {
         return supportedInConfig(ConfigValues.OvfStoreOnAnyDomain, version);
     }
+
+    /**
+     * @param version
+     *            Compatibility version to check for.
+     * @return <code>true</code> if get boot menu is supported for the given 
version.
+     */
+    public static boolean bootMenu(Version version) {
+        return supportedInConfig(ConfigValues.BootMenuSupported, version);
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
index dea0b0d..6208eda 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
@@ -1702,4 +1702,12 @@
     public void setCustomSerialNumber(String customSerialNumber) {
         vmStatic.setCustomSerialNumber(customSerialNumber);
     }
+
+    public boolean isBootMenuEnabled() {
+        return vmStatic.isBootMenuEnabled();
+    }
+
+    public void setBootMenuEnabled(boolean enabled) {
+        vmStatic.setBootMenuEnabled(enabled);
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
index d5f5825..4844233 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
@@ -302,6 +302,11 @@
     @Size(max = BusinessEntitiesDefinitions.VM_SERIAL_NUMBER_SIZE)
     private String customSerialNumber;
 
+    @CopyOnNewVersion
+    @EditableOnVmStatusField
+    @EditableOnTemplate
+    private boolean bootMenuEnabled;
+
     public VmBase(VmBase vmBase) {
         this(vmBase.getName(),
                 vmBase.getId(),
@@ -346,7 +351,8 @@
                 vmBase.getMigrationDowntime(),
                 vmBase.getVmInit(),
                 vmBase.getSerialNumberPolicy(),
-                vmBase.getCustomSerialNumber());
+                vmBase.getCustomSerialNumber(),
+                vmBase.isBootMenuEnabled());
     }
 
     public VmBase(
@@ -393,7 +399,8 @@
             Integer migrationDowntime,
             VmInit vmInit,
             SerialNumberPolicy serialNumberPolicy,
-            String customSerialNumber) {
+            String customSerialNumber,
+            boolean bootMenuEnabled) {
         this();
         this.name = name;
         this.id = id;
@@ -439,6 +446,7 @@
         this.vmInit = vmInit;
         this.serialNumberPolicy = serialNumberPolicy;
         this.customSerialNumber = customSerialNumber;
+        this.bootMenuEnabled = bootMenuEnabled;
     }
 
     public long getDbGeneration() {
@@ -776,6 +784,7 @@
         result = prime * result + ((migrationDowntime == null) ? 0 : 
migrationDowntime.hashCode());
         result = prime * result + ((serialNumberPolicy == null) ? 0 : 
serialNumberPolicy.hashCode());
         result = prime * result + ((customSerialNumber == null) ? 0 : 
customSerialNumber.hashCode());
+        result = prime * result + (bootMenuEnabled ? 1231 : 1237);
         return result;
     }
 
@@ -827,7 +836,8 @@
                 && cpuShares == other.cpuShares
                 && ObjectUtils.objectsEqual(migrationDowntime, 
other.migrationDowntime))
                 && serialNumberPolicy == other.serialNumberPolicy
-                && ObjectUtils.objectsEqual(customSerialNumber, 
other.customSerialNumber);
+                && ObjectUtils.objectsEqual(customSerialNumber, 
other.customSerialNumber)
+                && bootMenuEnabled == other.bootMenuEnabled;
     }
 
     public Guid getQuotaId() {
@@ -982,4 +992,12 @@
     public void setCustomSerialNumber(String customSerialNumber) {
         this.customSerialNumber = customSerialNumber;
     }
+
+    public boolean isBootMenuEnabled() {
+        return bootMenuEnabled;
+    }
+
+    public void setBootMenuEnabled(boolean bootMenuEnabled) {
+        this.bootMenuEnabled = bootMenuEnabled;
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
index ac89bfd..64871ef 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
@@ -76,7 +76,8 @@
             String kernelParams, Guid quotaId, Guid dedicatedVmForVds, 
MigrationSupport migrationSupport,
             boolean allowConsoleReconnect, String isoPath, Integer 
migrationDowntime,
             Guid baseTemplateId, String templateVersionName,
-            SerialNumberPolicy serialNumberPolicy, String customSerialNumber) {
+            SerialNumberPolicy serialNumberPolicy, String customSerialNumber,
+            boolean bootMenuEnabled) {
         super(name,
                 vmtGuid,
                 vdsGroupId,
@@ -120,7 +121,8 @@
                 migrationDowntime,
                 null,
                 serialNumberPolicy,
-                customSerialNumber);
+                customSerialNumber,
+                bootMenuEnabled);
 
         diskTemplateMap = new HashMap<Guid, DiskImage>();
         diskImageMap = new HashMap<Guid, DiskImage>();
@@ -184,6 +186,7 @@
         setOrigin(template.getOrigin());
         setSerialNumberPolicy(template.getSerialNumberPolicy());
         setCustomSerialNumber(template.getCustomSerialNumber());
+        setBootMenuEnabled(template.isBootMenuEnabled());
     }
 
     public ArchitectureType getClusterArch() {
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
index 889b559..2ae0875 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
@@ -1678,5 +1678,9 @@
     @DefaultValueAttribute("2")
     StorageDomainOvfStoreCount,
 
+    @TypeConverterAttribute(Boolean.class)
+    @DefaultValueAttribute("true")
+    BootMenuSupported,
+
     Invalid;
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
index 45bd4ad..d69e3c0 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
@@ -118,7 +118,8 @@
     IsMigrationSupported(ConfigAuthType.User),
     IsMemorySnapshotSupported(ConfigAuthType.User),
     IsSuspendSupported(ConfigAuthType.User),
-    SerialNumberPolicySupported;
+    SerialNumberPolicySupported,
+    BootMenuSupported;
 
     public static enum ConfigAuthType {
         Admin,
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
index 6ec2ec2..10b0276 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
@@ -52,6 +52,7 @@
         entity.setMigrationDowntime((Integer) 
rs.getObject("migration_downtime"));
         entity.setSerialNumberPolicy(SerialNumberPolicy.forValue((Integer) 
rs.getObject("serial_number_policy")));
         entity.setCustomSerialNumber(rs.getString("custom_serial_number"));
+        entity.setBootMenuEnabled(rs.getBoolean("is_boot_menu_enabled"));
     }
 
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
index 2fb1b2d..bbd672c 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
@@ -422,6 +422,7 @@
             entity.setCurrentCd(rs.getString("current_cd"));
             entity.setSerialNumberPolicy(SerialNumberPolicy.forValue((Integer) 
rs.getObject("serial_number_policy")));
             entity.setCustomSerialNumber(rs.getString("custom_serial_number"));
+            entity.setBootMenuEnabled(rs.getBoolean("is_boot_menu_enabled"));
             return entity;
         }
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
index b4bb5e3..4bc1190 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
@@ -100,7 +100,8 @@
                 .addValue("template_version_number", vm.isUseLatestVersion() ?
                         USE_LATEST_VERSION_NUMBER_INDICATOR : 
DONT_USE_LATEST_VERSION_NUMBER_INDICATOR)
                 .addValue("serial_number_policy", vm.getSerialNumberPolicy() 
== null ? null : vm.getSerialNumberPolicy().getValue())
-                .addValue("custom_serial_number", vm.getCustomSerialNumber());
+                .addValue("custom_serial_number", vm.getCustomSerialNumber())
+                .addValue("is_boot_menu_enabled", vm.isBootMenuEnabled());
     }
 
     @Override
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
index 741e6c3..acab170 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
@@ -204,7 +204,8 @@
                 .addValue("base_template_id", template.getBaseTemplateId())
                 .addValue("template_version_name", 
template.getTemplateVersionName())
                 .addValue("serial_number_policy", 
template.getSerialNumberPolicy() == null ? null : 
template.getSerialNumberPolicy().getValue())
-                .addValue("custom_serial_number", 
template.getCustomSerialNumber());
+                .addValue("custom_serial_number", 
template.getCustomSerialNumber())
+                .addValue("is_boot_menu_enabled", 
template.isBootMenuEnabled());
     }
 
     @Override
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 842994f..a8af887 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -1555,6 +1555,7 @@
         <column>template_version_name</column>
         <column>serial_number_policy</column>
         <column>custom_serial_number</column>
+        <column>is_boot_menu_enabled</column>
 
         <!-- Templates -->
         <row>
@@ -1611,6 +1612,7 @@
             <null />
             <value>0</value>
             <null />
+            <value>false</value>
         </row>
         <row>
             <value>1b85420c-b84c-4f29-997e-0eb674b40b79</value>
@@ -1666,6 +1668,7 @@
             <value>ver 1</value>
             <null />
             <value>Serial number: 123456</value>
+            <value>true</value>
         </row>
         <row>
             <value>1b85420c-b84c-4f29-997e-0eb674b40b80</value>
@@ -1721,6 +1724,7 @@
             <null />
             <value>2</value>
             <value>RHVSN: 09123</value>
+            <value>true</value>
         </row>
         <row>
             <value>1b85420c-b84c-4f29-997e-0eb674b40b81</value>
@@ -1776,6 +1780,7 @@
             <null />
             <value>1</value>
             <null />
+            <value>false</value>
         </row>
          <row>
             <value>1b85420c-b84c-4f29-997e-0eb674b40b82</value>
@@ -1831,6 +1836,7 @@
             <null />
             <value>1</value>
             <null />
+            <value>false</value>
         </row>
          <row>
             <value>99408929-82cf-4dc7-a532-9d998063fa95</value>
@@ -1886,6 +1892,7 @@
             <null />
             <null />
             <null />
+            <value>true</value>
         </row>
          <row>
             <value>5849b030-626e-47cb-ad90-3ce782d831b3</value>
@@ -1941,6 +1948,7 @@
             <null />
             <null />
             <null />
+            <value>false</value>
         </row>
         <row>
             <value>1b85420c-b84c-4f29-997e-0eb674b40b83</value>
@@ -1996,6 +2004,7 @@
             <value>verver</value>
             <null />
             <null />
+            <value>true</value>
         </row>
 
         <!-- VMS -->
@@ -2053,6 +2062,7 @@
             <null />
             <value>2</value>
             <null />
+            <value>true</value>
         </row>
         <row>
             <value>77296e00-0cad-4e5a-9299-008a7b6f4355</value>
@@ -2108,6 +2118,7 @@
             <null />
             <null />
             <value>VSN 1234</value>
+            <value>true</value>
         </row>
         <row>
             <value>77296e00-0cad-4e5a-9299-008a7b6f4356</value>
@@ -2163,6 +2174,7 @@
             <null />
             <value>2</value>
             <value>My very specific serial number</value>
+            <value>true</value>
         </row>
         <row>
             <value>77296e00-0cad-4e5a-9299-008a7b6f4357</value>
@@ -2218,6 +2230,7 @@
             <null />
             <null />
             <value>Custom serial number</value>
+            <value>false</value>
         </row>
         <row>
             <value>77296e00-0cad-4e5a-9299-008a7b6f4359</value>
@@ -2273,6 +2286,7 @@
             <null />
             <value>1</value>
             <null />
+            <value>false</value>
         </row>
         <row>
             <value>77296e00-0cad-4e5a-9299-008a7b6f4360</value>
@@ -2328,6 +2342,7 @@
             <null />
             <null />
             <null />
+            <value>false</value>
         </row>
         <row>
             <value>77296e00-0cad-4e5a-9299-008a7b6f5001</value>
@@ -2383,6 +2398,7 @@
             <null />
             <null />
             <null />
+            <value>true</value>
         </row>
         <row>
             <value>77296e00-0cad-4e5a-9299-008a7b6f5002</value>
@@ -2438,6 +2454,7 @@
             <null />
             <null />
             <null />
+            <value>true</value>
         </row>
         <row>
             <value>77296e00-0cad-4e5a-9299-008a7b6f5003</value>
@@ -2493,6 +2510,7 @@
             <null />
             <value>0</value>
             <null />
+            <value>false</value>
         </row>
     </table>
 
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 21d4035..e6f75d3 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
@@ -65,4 +65,5 @@
     final static String TEMPLATE_VERSION_NAME = "TemplateVersionName";
     final static String SERIAL_NUMBER_POLICY = "SerialNumberPolicy";
     final static String CUSTOM_SERIAL_NUMBER = "CustomSerialNumber";
+    final static String IS_BOOT_MENU_ENABLED = "IsBootMenuEnabled";
 }
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 46fb295..a3b5535 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
@@ -535,6 +535,11 @@
             vmBase.setPriority(Integer.parseInt(node.innerText));
         }
 
+        node = content.SelectSingleNode(OvfProperties.IS_BOOT_MENU_ENABLED);
+        if (node != null) {
+            vmBase.setBootMenuEnabled(Boolean.parseBoolean(node.innerText));
+        }
+
         readGeneralData(content);
 
         readVmInit(content);
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 4193eba..cafc333 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
@@ -353,6 +353,10 @@
             _writer.WriteRaw(vmBase.getCustomSerialNumber());
             _writer.WriteEndElement();
         }
+
+        _writer.WriteStartElement(OvfProperties.IS_BOOT_MENU_ENABLED);
+        _writer.WriteRaw(String.valueOf(vmBase.isBootMenuEnabled()));
+        _writer.WriteEndElement();
     }
 
     protected abstract void writeAppList();
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
index 72c62b9..0059add 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
@@ -228,6 +228,7 @@
 
     public static final String kvmEnable = "kvmEnable"; // Optional
     public static final String acpiEnable = "acpiEnable"; // Optional
+    public static final String BOOT_MENU_ENABLE = "bootMenuEnable";
     public static final String win2kHackEnable = "win2kHackEnable"; // Optional
     public static final String initFromFloppy = "initFromFloppy"; // Optional
     public static final String sysprepInf = "sysprepInf"; // for the binary sys
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
index 0a8aafe..2183d42 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
@@ -95,6 +95,7 @@
                 .toLowerCase());
         createInfo.put(VdsProperties.acpiEnable, vm.getAcpiEnable().toString()
                 .toLowerCase());
+        createInfo.put(VdsProperties.BOOT_MENU_ENABLE, 
Boolean.toString(vm.isBootMenuEnabled()));
 
         createInfo.put(VdsProperties.Custom,
                 
VmPropertiesUtils.getInstance().getVMProperties(vm.getVdsGroupCompatibilityVersion(),
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
index 19b2829..6632a58 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
@@ -216,6 +216,7 @@
         vm.setUseLatestVersion(instance.isUseLatestVersion());
         vm.setSerialNumberPolicy(instance.getSerialNumberPolicy());
         vm.setCustomSerialNumber(instance.getCustomSerialNumber());
+        vm.setBootMenuEnabled(instance.isBootMenuEnabled());
 
         return vm;
     }
@@ -434,6 +435,7 @@
         obj.setTemplateVersionName(instance.getTemplateVersionName());
         obj.setSerialNumberPolicy(instance.getSerialNumberPolicy());
         obj.setCustomSerialNumber(instance.getCustomSerialNumber());
+        obj.setBootMenuEnabled(instance.isBootMenuEnabled());
 
         return obj;
     }
@@ -473,6 +475,7 @@
         obj.setUseLatestVersion(instance.isUseLatestVersion());
         obj.setSerialNumberPolicy(instance.getSerialNumberPolicy());
         obj.setCustomSerialNumber(instance.getCustomSerialNumber());
+        obj.setBootMenuEnabled(instance.isBootMenuEnabled());
 
         return obj;
     }
diff --git a/packaging/dbscripts/upgrade/03_05_0160_add_vm_boot_menu.sql 
b/packaging/dbscripts/upgrade/03_05_0160_add_vm_boot_menu.sql
new file mode 100644
index 0000000..5ce2a8a
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_05_0160_add_vm_boot_menu.sql
@@ -0,0 +1 @@
+select fn_db_add_column('vm_static', 'is_boot_menu_enabled', 'boolean not null 
default false');
diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 
b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
index e623f56..9a1ff98 100644
--- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
+++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
@@ -238,6 +238,11 @@
 select fn_db_add_config_value('OvfStoreOnAnyDomain','false','3.2');
 select fn_db_add_config_value('OvfStoreOnAnyDomain','false','3.3');
 select fn_db_add_config_value('OvfStoreOnAnyDomain','false','3.4');
+select fn_db_add_config_value('BootMenuSupported','false','3.0');
+select fn_db_add_config_value('BootMenuSupported','false','3.1');
+select fn_db_add_config_value('BootMenuSupported','false','3.2');
+select fn_db_add_config_value('BootMenuSupported','false','3.3');
+select fn_db_add_config_value('BootMenuSupported','false','3.4');
 
 -- by default use no proxy
 select fn_db_add_config_value('SpiceProxyDefault','','general');
diff --git a/packaging/dbscripts/vm_templates_sp.sql 
b/packaging/dbscripts/vm_templates_sp.sql
index a2d7198..a01ea80b 100644
--- a/packaging/dbscripts/vm_templates_sp.sql
+++ b/packaging/dbscripts/vm_templates_sp.sql
@@ -55,7 +55,8 @@
  v_base_template_id UUID,
  v_template_version_name VARCHAR(40),
  v_serial_number_policy SMALLINT,
- v_custom_serial_number VARCHAR(255))
+ v_custom_serial_number VARCHAR(255),
+ v_is_boot_menu_enabled BOOLEAN)
 
 RETURNS VOID
    AS $procedure$
@@ -124,7 +125,8 @@
     vmt_guid,
     template_version_name,
     serial_number_policy,
-    custom_serial_number)
+    custom_serial_number,
+    is_boot_menu_enabled)
 VALUES(
     v_child_count,
     v_creation_date,
@@ -175,7 +177,8 @@
     v_base_template_id,
     v_template_version_name,
     v_serial_number_policy,
-    v_custom_serial_number);
+    v_custom_serial_number,
+    v_is_boot_menu_enabled);
 -- perform deletion from vm_ovf_generations to ensure that no record exists 
when performing insert to avoid PK violation.
 DELETE FROM vm_ovf_generations gen WHERE gen.vm_guid = v_vmt_guid;
 INSERT INTO vm_ovf_generations(vm_guid, storage_pool_id)
@@ -236,7 +239,8 @@
  v_migration_downtime INTEGER,
  v_template_version_name VARCHAR(40),
  v_serial_number_policy SMALLINT,
- v_custom_serial_number VARCHAR(255))
+ v_custom_serial_number VARCHAR(255),
+ v_is_boot_menu_enabled BOOLEAN)
 RETURNS VOID
 
        --The [vm_templates] table doesn't have a timestamp column. Optimistic 
concurrency logic cannot be generated
@@ -262,7 +266,8 @@
       vnc_keyboard_layout = v_vnc_keyboard_layout, min_allocated_mem = 
v_min_allocated_mem, is_run_and_pause = v_is_run_and_pause, created_by_user_id 
= v_created_by_user_id,
       migration_downtime = v_migration_downtime,
       template_version_name = v_template_version_name,
-      serial_number_policy = v_serial_number_policy, custom_serial_number = 
v_custom_serial_number
+      serial_number_policy = v_serial_number_policy, custom_serial_number = 
v_custom_serial_number,
+      is_boot_menu_enabled = v_is_boot_menu_enabled
       WHERE vm_guid = v_vmt_guid
       AND   entity_type = v_template_type;
 END; $procedure$
diff --git a/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql
index cab24bb..77514ed 100644
--- a/packaging/dbscripts/vms_sp.sql
+++ b/packaging/dbscripts/vms_sp.sql
@@ -474,12 +474,13 @@
     v_migration_downtime INTEGER,
     v_template_version_number INTEGER,
     v_serial_number_policy SMALLINT,
-    v_custom_serial_number VARCHAR(255))
+    v_custom_serial_number VARCHAR(255),
+    v_is_boot_menu_enabled BOOLEAN)
 RETURNS VOID
    AS $procedure$
 BEGIN
-INSERT INTO vm_static(description, free_text_comment, mem_size_mb, os, 
vds_group_id, vm_guid, VM_NAME, vmt_guid,creation_date,num_of_monitors, 
single_qxl_pci, 
allow_console_reconnect,is_initialized,num_of_sockets,cpu_per_socket,usb_policy,
 time_zone,auto_startup,is_stateless,dedicated_vm_for_vds, fail_back, 
default_boot_sequence, vm_type, nice_level, cpu_shares, default_display_type, 
priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem,
 entity_type, quota_id, cpu_pinning, is_smartcard_enabled,is_delete_protected, 
sso_method, host_cpu_flags, tunnel_migration, vnc_keyboard_layout, 
is_run_and_pause, created_by_user_id, instance_type_id, image_type_id, 
original_template_id, original_template_name, migration_downtime, 
template_version_number, serial_number_policy, custom_serial_number)
-       VALUES(v_description, v_free_text_comment, v_mem_size_mb, v_os, 
v_vds_group_id, v_vm_guid, v_vm_name, v_vmt_guid, v_creation_date, 
v_num_of_monitors,v_single_qxl_pci, v_allow_console_reconnect, 
v_is_initialized, v_num_of_sockets, v_cpu_per_socket, v_usb_policy, 
v_time_zone, v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back, 
v_default_boot_sequence, v_vm_type, v_nice_level, v_cpu_shares, 
v_default_display_type, 
v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem,
 'VM', v_quota_id, v_cpu_pinning, v_is_smartcard_enabled,v_is_delete_protected, 
v_sso_method, v_host_cpu_flags, v_tunnel_migration, v_vnc_keyboard_layout, 
v_is_run_and_pause, v_created_by_user_id, v_instance_type_id, v_image_type_id, 
v_original_template_id, v_original_template_name, v_migration_downtime, 
v_template_version_number, v_serial_number_policy, v_custom_serial_number);
+INSERT INTO vm_static(description, free_text_comment, mem_size_mb, os, 
vds_group_id, vm_guid, VM_NAME, vmt_guid,creation_date,num_of_monitors, 
single_qxl_pci, 
allow_console_reconnect,is_initialized,num_of_sockets,cpu_per_socket,usb_policy,
 time_zone,auto_startup,is_stateless,dedicated_vm_for_vds, fail_back, 
default_boot_sequence, vm_type, nice_level, cpu_shares, default_display_type, 
priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem,
 entity_type, quota_id, cpu_pinning, is_smartcard_enabled,is_delete_protected, 
sso_method, host_cpu_flags, tunnel_migration, vnc_keyboard_layout, 
is_run_and_pause, created_by_user_id, instance_type_id, image_type_id, 
original_template_id, original_template_name, migration_downtime, 
template_version_number, serial_number_policy, custom_serial_number, 
is_boot_menu_enabled)
+       VALUES(v_description, v_free_text_comment, v_mem_size_mb, v_os, 
v_vds_group_id, v_vm_guid, v_vm_name, v_vmt_guid, v_creation_date, 
v_num_of_monitors,v_single_qxl_pci, v_allow_console_reconnect, 
v_is_initialized, v_num_of_sockets, v_cpu_per_socket, v_usb_policy, 
v_time_zone, v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back, 
v_default_boot_sequence, v_vm_type, v_nice_level, v_cpu_shares, 
v_default_display_type, 
v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem,
 'VM', v_quota_id, v_cpu_pinning, v_is_smartcard_enabled,v_is_delete_protected, 
v_sso_method, v_host_cpu_flags, v_tunnel_migration, v_vnc_keyboard_layout, 
v_is_run_and_pause, v_created_by_user_id, v_instance_type_id, v_image_type_id, 
v_original_template_id, v_original_template_name, v_migration_downtime, 
v_template_version_number, v_serial_number_policy, v_custom_serial_number, 
v_is_boot_menu_!
 enabled);
 
 -- perform deletion from vm_ovf_generations to ensure that no record exists 
when performing insert to avoid PK violation.
 DELETE FROM vm_ovf_generations gen WHERE gen.vm_guid = v_vm_guid;
@@ -602,7 +603,8 @@
 v_migration_downtime INTEGER,
 v_template_version_number INTEGER,
 v_serial_number_policy SMALLINT,
-v_custom_serial_number VARCHAR(255))
+v_custom_serial_number VARCHAR(255),
+v_is_boot_menu_enabled BOOLEAN)
 
 RETURNS VOID
 
@@ -633,7 +635,8 @@
       instance_type_id = v_instance_type_id, image_type_id = v_image_type_id, 
original_template_id = v_original_template_id,
       original_template_name = v_original_template_name,
       migration_downtime = v_migration_downtime, template_version_number = 
v_template_version_number,
-      serial_number_policy = v_serial_number_policy, custom_serial_number = 
v_custom_serial_number
+      serial_number_policy = v_serial_number_policy, custom_serial_number = 
v_custom_serial_number,
+      is_boot_menu_enabled = v_is_boot_menu_enabled
       WHERE vm_guid = v_vm_guid
       AND   entity_type = 'VM';
 END; $procedure$


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

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

Reply via email to