Francesco Romani has uploaded a new change for review.

Change subject: backend: add support to control spice file transfer
......................................................................

backend: add support to control spice file transfer

spice has agent based file transfer support.
This patch adds support on the backend to control this feature
and allow to disable whenever it is needed.

Change-Id: I945e6b23df2b9d0f7c18a4f1e73c64e12e9e1a78
Bug-Url: https://bugzilla.redhat.com/1082479
Signed-off-by: Francesco Romani <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.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/action/RunVmParams.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/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
M packaging/dbscripts/create_views.sql
A packaging/dbscripts/upgrade/03_05_0160_add_spice_file_xfer_toggle.sql
M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
M packaging/dbscripts/vm_templates_sp.sql
M packaging/dbscripts/vms_sp.sql
23 files changed, 118 insertions(+), 23 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/26241/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..4bcefeb 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().isSpiceFileXferEnabled()));
         DbFacade.getInstance().getVmTemplateDao().save(getVmTemplate());
         getCompensationContext().snapshotNewEntity(getVmTemplate());
         setActionReturnValue(getVmTemplate().getId());
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 bb613fd..7f7f742 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
@@ -619,7 +619,7 @@
         getVm().setKvmEnable(getParameters().getKvmEnable());
         getVm().setRunAndPause(getParameters().getRunAndPause() == null ? 
getVm().isRunAndPause() : getParameters().getRunAndPause());
         getVm().setAcpiEnable(getParameters().getAcpiEnable());
-
+        
getVm().setSpiceFileXferEnabled(getParameters().isSpiceFileXferEnabled() == 
null ?getVm().isSpiceFileXferEnabled() 
:getParameters().isSpiceFileXferEnabled());
         // Clear the first user:
         getVm().setConsoleUserId(null);
 
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 d0ced6d..46627ad 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
@@ -305,4 +305,13 @@
     public static boolean isIscsiMultipathingSupported(Version version) {
         return supportedInConfig(ConfigValues.IscsiMultipathingSupported, 
version);
     }
+
+    /**
+     * @param version
+     *          Compatibility version to check for.
+     * @return  <code>true</code> if SPICE file transfer disable is supported 
for the given version.
+     */
+    public static boolean isSpiceFileXferDisableSupported(Version version) {
+        return supportedInConfig(ConfigValues.SpiceFileXferToggleSuppored, 
version);
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java
index ab28f0a..0630779 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java
@@ -28,6 +28,7 @@
     private VmPayload payload;
     private boolean balloonEnabled;
     private int cpuShares;
+    private boolean spiceFileXferEnabled;
 
     public RunVmParams() {
     }
@@ -188,4 +189,11 @@
     public void setCpuShares(int cpuShares) {
         this.cpuShares = cpuShares;
     }
+
+    // for REST-API test compat
+    public Boolean getSpiceFileXferEnabled() { return spiceFileXferEnabled; }
+
+    public Boolean isSpiceFileXferEnabled() { return spiceFileXferEnabled; }
+
+    public void setBootMenuEnabled(Boolean spiceFileXferEnabled) { 
this.spiceFileXferEnabled = spiceFileXferEnabled; }
 }
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..7da23be 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 isSpiceFileXferEnabled() {
+        return vmStatic.isSpiceFileXferEnabled();
+    }
+
+    public void setSpiceFileXferEnabled(boolean enabled) {
+        vmStatic.setSpiceFileXferEnabled(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..0d08a47 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,10 @@
     @Size(max = BusinessEntitiesDefinitions.VM_SERIAL_NUMBER_SIZE)
     private String customSerialNumber;
 
+    @CopyOnNewVersion
+    @EditableOnTemplate
+    private boolean spiceFileXferEnabled;
+
     public VmBase(VmBase vmBase) {
         this(vmBase.getName(),
                 vmBase.getId(),
@@ -346,7 +350,8 @@
                 vmBase.getMigrationDowntime(),
                 vmBase.getVmInit(),
                 vmBase.getSerialNumberPolicy(),
-                vmBase.getCustomSerialNumber());
+                vmBase.getCustomSerialNumber(),
+                vmBase.isSpiceFileXferEnabled());
     }
 
     public VmBase(
@@ -393,7 +398,8 @@
             Integer migrationDowntime,
             VmInit vmInit,
             SerialNumberPolicy serialNumberPolicy,
-            String customSerialNumber) {
+            String customSerialNumber,
+            boolean spiceFileXferEnabled) {
         this();
         this.name = name;
         this.id = id;
@@ -439,6 +445,7 @@
         this.vmInit = vmInit;
         this.serialNumberPolicy = serialNumberPolicy;
         this.customSerialNumber = customSerialNumber;
+        this.spiceFileXferEnabled = spiceFileXferEnabled;
     }
 
     public long getDbGeneration() {
@@ -776,6 +783,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 + (spiceFileXferEnabled ? 1231 : 1237);
         return result;
     }
 
@@ -827,7 +835,8 @@
                 && cpuShares == other.cpuShares
                 && ObjectUtils.objectsEqual(migrationDowntime, 
other.migrationDowntime))
                 && serialNumberPolicy == other.serialNumberPolicy
-                && ObjectUtils.objectsEqual(customSerialNumber, 
other.customSerialNumber);
+                && ObjectUtils.objectsEqual(customSerialNumber, 
other.customSerialNumber)
+                && spiceFileXferEnabled == other.spiceFileXferEnabled;
     }
 
     public Guid getQuotaId() {
@@ -982,4 +991,8 @@
     public void setCustomSerialNumber(String customSerialNumber) {
         this.customSerialNumber = customSerialNumber;
     }
+
+    public boolean isSpiceFileXferEnabled() { return spiceFileXferEnabled; }
+
+    public void setSpiceFileXferEnabled(boolean spiceFileXferEnabled) { 
this.spiceFileXferEnabled = spiceFileXferEnabled; }
 }
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..01e6aa0 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 spiceFileXferEnabled) {
         super(name,
                 vmtGuid,
                 vdsGroupId,
@@ -120,7 +121,8 @@
                 migrationDowntime,
                 null,
                 serialNumberPolicy,
-                customSerialNumber);
+                customSerialNumber,
+                spiceFileXferEnabled);
 
         diskTemplateMap = new HashMap<Guid, DiskImage>();
         diskImageMap = new HashMap<Guid, DiskImage>();
@@ -184,6 +186,7 @@
         setOrigin(template.getOrigin());
         setSerialNumberPolicy(template.getSerialNumberPolicy());
         setCustomSerialNumber(template.getCustomSerialNumber());
+        setSpiceFileXferEnabled(template.isSpiceFileXferEnabled());
     }
 
     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 7677b6c..89b6bc8 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
@@ -1682,5 +1682,9 @@
     @DefaultValueAttribute("true")
     IscsiMultipathingSupported,
 
+    @TypeConverterAttribute(Boolean.class)
+    @DefaultValueAttribute("true")
+    SpiceFileXferToggleSuppored,
+
     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 fb46f72..36c98b3 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
@@ -119,7 +119,8 @@
     IsMemorySnapshotSupported(ConfigAuthType.User),
     IsSuspendSupported(ConfigAuthType.User),
     SerialNumberPolicySupported,
-    IscsiMultipathingSupported;
+    IscsiMultipathingSupported,
+    SpiceFileXferToggleSuppored;
 
     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..a176528 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.setSpiceFileXferEnabled(rs.getBoolean("is_spice_file_xfer_enabled"));
     }
 
 }
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..e3a63bc 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_spice_file_xfer_enabled", 
template.isSpiceFileXferEnabled());
     }
 
     @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..b24afde 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -613,6 +613,7 @@
         <column>spice_proxy</column>
         <column>serial_number_policy</column>
         <column>custom_serial_number</column>
+        <column>is_spice_file_xfer_enabled</column>
         <row>
             <value>b399944a-81ab-4ec5-8266-e19ba7c3c9d1</value>
             <value>rhel6.iscsi</value>
@@ -637,6 +638,7 @@
             <null/>
             <null />
             <null />
+            <value>true</value>
         </row>
         <row>
             <value>b399944a-81ab-4ec5-8266-e19ba7c3c9d2</value>
@@ -662,6 +664,7 @@
             <null/>
             <value>0</value>
             <null />
+            <value>false</value>
         </row>
         <row>
             <value>b399944a-81ab-4ec5-8266-e19ba7c3c9d3</value>
@@ -687,6 +690,7 @@
             <null/>
             <value>1</value>
             <null />
+            <value>true</value>
         </row>
         <row>
             <value>0e57070e-2469-4b38-84a2-f111aaabd49d</value>
@@ -712,6 +716,7 @@
             <null/>
             <value>2</value>
             <value>my custom serial number</value>
+            <value>false</value>
         </row>
         <row>
             <value>eba797fb-8e3b-4777-b63c-92e7a5957d7c</value>
@@ -737,6 +742,7 @@
             <null/>
             <null />
             <null />
+            <value>true</value>
         </row>
         <row>
             <value>eba797fb-8e3b-4777-b63c-92e7a5957d7d</value>
@@ -762,6 +768,7 @@
             <null/>
             <null />
             <null />
+            <value>false</value>
         </row>
         <row>
             <value>eba797fb-8e3b-4777-b63c-92e7a5957d7e</value>
@@ -787,6 +794,7 @@
             <null/>
             <null />
             <null />
+            <value>true</value>
         </row>
         <row>
             <value>eba797fb-8e3b-4777-b63c-92e7a5957d7f</value>
@@ -812,6 +820,7 @@
             <null/>
             <null />
             <null />
+            <value>false</value>
         </row>
         <row>
             <value>ae956031-6be2-43d6-bb8f-5191c9253314</value>
@@ -837,6 +846,7 @@
             <null/>
             <null />
             <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..be61bec 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_SPICE_FILE_XFER_ENABLED = "IsSpiceFileXferEnabled";
 }
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..348a34f 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_SPICE_FILE_XFER_ENABLED);
+        if (node != null) {
+            
vmBase.setSpiceFileXferEnabled(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..3516289 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_SPICE_FILE_XFER_ENABLED);
+        _writer.WriteRaw(String.valueOf(vmBase.isSpiceFileXferEnabled()));
+        _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..9e084cb 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
@@ -231,6 +231,7 @@
     public static final String win2kHackEnable = "win2kHackEnable"; // Optional
     public static final String initFromFloppy = "initFromFloppy"; // Optional
     public static final String sysprepInf = "sysprepInf"; // for the binary sys
+    public static final String spiceFileXferEnable = "spiceFileXferEnable";
                                                           // prep
     public static final String Boot = "boot"; // Optional
     public static final String BootOrder = "bootOrder";
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..7b819f9 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
@@ -139,6 +139,9 @@
         }
         createInfo.put(VdsProperties.transparent_huge_pages,
                 vm.isTransparentHugePages() ? "true" : "false");
+
+        createInfo.put(VdsProperties.spiceFileXferEnable,
+                Boolean.toString(vm.isSpiceFileXferEnabled()));
     }
 
     private void addCpuPinning(final String compatibilityVersion) {
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..a8f80a0 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.setSpiceFileXferEnabled(instance.isSpiceFileXferEnabled());
 
         return vm;
     }
@@ -434,6 +435,7 @@
         obj.setTemplateVersionName(instance.getTemplateVersionName());
         obj.setSerialNumberPolicy(instance.getSerialNumberPolicy());
         obj.setCustomSerialNumber(instance.getCustomSerialNumber());
+        obj.setSpiceFileXferEnabled(instance.isSpiceFileXferEnabled());
 
         return obj;
     }
@@ -473,6 +475,7 @@
         obj.setUseLatestVersion(instance.isUseLatestVersion());
         obj.setSerialNumberPolicy(instance.getSerialNumberPolicy());
         obj.setCustomSerialNumber(instance.getCustomSerialNumber());
+        obj.setSpiceFileXferEnabled(instance.isSpiceFileXferEnabled());
 
         return obj;
     }
diff --git a/packaging/dbscripts/create_views.sql 
b/packaging/dbscripts/create_views.sql
index 2e823d7..832ced9 100644
--- a/packaging/dbscripts/create_views.sql
+++ b/packaging/dbscripts/create_views.sql
@@ -417,7 +417,8 @@
        vm_templates.vmt_guid as base_template_id,
        vm_templates.template_version_name as template_version_name,
        vm_templates.serial_number_policy as serial_number_policy,
-       vm_templates.custom_serial_number as custom_serial_number
+       vm_templates.custom_serial_number as custom_serial_number,
+       vm_templates.is_spice_file_xfer_enabled as is_spice_file_xfer_enabled
 FROM       vm_static AS vm_templates  INNER JOIN
 vds_groups ON vm_templates.vds_group_id = vds_groups.vds_group_id
 left outer JOIN
@@ -453,7 +454,8 @@
                     vm_templates.entity_type, vds_groups.architecture,
                     vm_templates.template_version_number as 
template_version_number, vm_templates.vmt_guid as base_template_id,
                     vm_templates.template_version_name as 
template_version_name,
-                    vm_templates.serial_number_policy as serial_number_policy, 
vm_templates.custom_serial_number as custom_serial_number
+                    vm_templates.serial_number_policy as serial_number_policy, 
vm_templates.custom_serial_number as custom_serial_number,
+                    vm_templates.is_spice_file_xfer_enabled as 
is_spice_file_xfer_enabled
 FROM                  vm_static AS vm_templates INNER JOIN
                          vds_groups ON vm_templates.vds_group_id = 
vds_groups.vds_group_id LEFT OUTER JOIN
                       storage_pool ON storage_pool.id = 
vds_groups.storage_pool_id INNER JOIN
@@ -479,7 +481,8 @@
                       vm_templates_1.template_version_number as 
template_version_number, vm_templates_1.vmt_guid as base_template_id,
                       vm_templates_1.template_version_name as 
template_version_name,
                       vm_templates_1.serial_number_policy as 
serial_number_policy,
-                      vm_templates_1.custom_serial_number as 
custom_serial_number
+                      vm_templates_1.custom_serial_number as 
custom_serial_number,
+                      vm_templates_1.is_spice_file_xfer_enabled as 
is_spice_file_xfer_enabled
 FROM                  vm_static AS vm_templates_1 INNER JOIN
                       vds_groups AS vds_groups_1 ON 
vm_templates_1.vds_group_id = vds_groups_1.vds_group_id LEFT OUTER JOIN
                       storage_pool AS storage_pool_1 ON storage_pool_1.id = 
vds_groups_1.storage_pool_id INNER JOIN
@@ -622,7 +625,8 @@
                       vm_dynamic.last_watchdog_event as last_watchdog_event, 
vm_dynamic.last_watchdog_action as last_watchdog_action, vm_dynamic.is_run_once 
as is_run_once, vm_dynamic.vm_fqdn as vm_fqdn, vm_dynamic.cpu_name as cpu_name, 
vm_dynamic.current_cd as current_cd,
                       vm_static.instance_type_id as instance_type_id, 
vm_static.image_type_id as image_type_id, vds_groups.architecture as 
architecture, vm_static.original_template_id as original_template_id, 
vm_static.original_template_name as original_template_name, 
vm_dynamic.last_stop_time as last_stop_time,
                       vm_static.migration_downtime as migration_downtime, 
vm_static.template_version_number as template_version_number,
-                      vm_static.serial_number_policy as serial_number_policy, 
vm_static.custom_serial_number as custom_serial_number
+                      vm_static.serial_number_policy as serial_number_policy, 
vm_static.custom_serial_number as custom_serial_number,
+                      vm_static.is_spice_file_xfer_enabled as 
is_spice_file_xfer_enabled
 FROM         vm_static INNER JOIN
 vm_dynamic ON vm_static.vm_guid = vm_dynamic.vm_guid INNER JOIN
 vm_static AS vm_templates ON vm_static.vmt_guid = vm_templates.vm_guid INNER 
JOIN
@@ -664,7 +668,8 @@
             vms.instance_type_id as instance_type_id, vms.image_type_id as 
image_type_id, vms.architecture as architecture, vms.original_template_id as 
original_template_id, vms.original_template_name as original_template_name,
             vms.migration_downtime as migration_downtime, 
vms.template_version_number as template_version_number,
             vms.current_cd as current_cd,
-            vms.serial_number_policy as serial_number_policy, 
vms.custom_serial_number as custom_serial_number
+            vms.serial_number_policy as serial_number_policy, 
vms.custom_serial_number as custom_serial_number,
+            vms.is_spice_file_xfer_enabled
 FROM        vms LEFT OUTER JOIN
             tags_vm_map_view ON vms.vm_guid = tags_vm_map_view.vm_id LEFT 
OUTER JOIN
             vm_device ON vm_device.vm_id = vms.vm_guid LEFT OUTER JOIN
diff --git 
a/packaging/dbscripts/upgrade/03_05_0160_add_spice_file_xfer_toggle.sql 
b/packaging/dbscripts/upgrade/03_05_0160_add_spice_file_xfer_toggle.sql
new file mode 100644
index 0000000..f2d838c
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_05_0160_add_spice_file_xfer_toggle.sql
@@ -0,0 +1 @@
+select fn_db_add_column('vm_static', 'is_spice_file_xfer_enabled', 'boolean 
not null default true');
diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 
b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
index 04b5948..ff93e4b 100644
--- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
+++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
@@ -245,6 +245,12 @@
 select fn_db_add_config_value('IscsiMultipathingSupported','false','3.2');
 select fn_db_add_config_value('IscsiMultipathingSupported','false','3.3');
 
+select fn_db_add_config_value('SpiceFileXferToggleSuppored','false','3.0');
+select fn_db_add_config_value('SpiceFileXferToggleSuppored','false','3.1');
+select fn_db_add_config_value('SpiceFileXferToggleSuppored','false','3.2');
+select fn_db_add_config_value('SpiceFileXferToggleSuppored','false','3.3');
+select fn_db_add_config_value('SpiceFileXferToggleSuppored','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..a56a0e9 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_spice_file_xfer_enabled BOOLEAN)
 
 RETURNS VOID
    AS $procedure$
@@ -124,7 +125,8 @@
     vmt_guid,
     template_version_name,
     serial_number_policy,
-    custom_serial_number)
+    custom_serial_number,
+    spice_file_xfer_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_spice_file_xfer_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_spice_file_xfer_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,
+      spice_file_xfer_enabled = v_spice_file_xfer_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..a9432d7 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_spice_file_xfer_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, 
spice_file_xfer_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_spice_file_xf!
 er_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;
@@ -633,7 +634,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,
+      spice_file_xfer_enabeld = v_spice_file_xfer_enabled
       WHERE vm_guid = v_vm_guid
       AND   entity_type = 'VM';
 END; $procedure$


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

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

Reply via email to