Martin Betak has uploaded a new change for review. Change subject: backend: Add support for auto-convergence and XBZRLE compression ......................................................................
backend: Add support for auto-convergence and XBZRLE compression Change-Id: I04a651c4a6995876742092be31ca6e3510194b31 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=867453 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/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.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/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MigrateVDSCommandParameters.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmBaseDaoDbFacade.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/MigrateBrokerVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.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_06_0330_add_vm_auto_convergence.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, 261 insertions(+), 27 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/32/32132/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 2152032..db0c127 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 @@ -577,7 +577,9 @@ getParameters().getMasterVm().isBootMenuEnabled(), getParameters().getMasterVm().isSpiceFileTransferEnabled(), getParameters().getMasterVm().isSpiceCopyPasteEnabled(), - getParameters().getMasterVm().getCpuProfileId())); + getParameters().getMasterVm().getCpuProfileId(), + getParameters().getMasterVm().isAutoConverge(), + getParameters().getMasterVm().isMigrateCompressed())); 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/MigrateVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java index 3e7354b..1a610f6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java @@ -166,7 +166,7 @@ return new MigrateVDSCommandParameters(getVdsId(), getVmId(), srcVdsHost, getDestinationVdsId(), dstVdsHost, MigrationMethod.ONLINE, isTunnelMigrationUsed(), getMigrationNetworkIp(), getVds().getVdsGroupCompatibilityVersion(), - getMaximumMigrationDowntime()); + getMaximumMigrationDowntime(), getAutoConverge(), getMigrateCompressed()); } @Override @@ -179,6 +179,22 @@ } } + private Boolean getAutoConverge() { + if (FeatureSupported.autoConvergence(getVm().getVdsGroupCompatibilityVersion())) { + return getVm().isAutoConverge(); + } + + return null; + } + + private Boolean getMigrateCompressed() { + if (FeatureSupported.migrationCompression(getVm().getVdsGroupCompatibilityVersion())) { + return getVm().isMigrateCompressed(); + } + + return null; + } + private int getMaximumMigrationDowntime() { if (getVm().getMigrationDowntime() != null) { return getVm().getMigrationDowntime(); 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 81221ff..ebc8c18 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 @@ -431,4 +431,22 @@ public static boolean jsonProtocol(Version version) { return supportedInConfig(ConfigValues.JsonProtocolSupported, version); } + + /** + * @param version + * Compatibility version to check for. + * @return <code>true</code> if forcing convergence on migration is supported for the given version + */ + public static boolean autoConvergence(Version version) { + return supportedInConfig(ConfigValues.AutoConvergenceSupported, version); + } + + /** + * @param version + * Compatibility version to check for. + * @return <code>true</code> if compressing memory pages on migration is supported for the given version + */ + public static boolean migrationCompression(Version version) { + return supportedInConfig(ConfigValues.MigrationCompressionSupported, 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 8f3694c..071d6fb 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 @@ -1850,4 +1850,20 @@ public void setCpuProfileId(Guid cpuProfileId) { vmStatic.setCpuProfileId(cpuProfileId); } + + public boolean isAutoConverge() { + return vmStatic.isAutoConverge(); + } + + public void setAutoConverge(boolean autoConverge) { + vmStatic.setAutoConverge(autoConverge); + } + + public boolean isMigrateCompressed() { + return vmStatic.isMigrateCompressed(); + } + + public void setMigrateCompressed(boolean migrateCompressed) { + vmStatic.setMigrateCompressed(migrateCompressed); + } } 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 f6afc3c..5fafd43 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 @@ -330,6 +330,14 @@ @EditableOnTemplate private Guid cpuProfileId; + @CopyOnNewVersion + @EditableField + private boolean autoConverge; + + @CopyOnNewVersion + @EditableField + private boolean migrateCompressed; + public VmBase(VmBase vmBase) { this(vmBase.getName(), vmBase.getId(), @@ -378,7 +386,9 @@ vmBase.isBootMenuEnabled(), vmBase.isSpiceFileTransferEnabled(), vmBase.isSpiceCopyPasteEnabled(), - vmBase.getCpuProfileId()); + vmBase.getCpuProfileId(), + vmBase.isAutoConverge(), + vmBase.isMigrateCompressed()); } public VmBase( @@ -429,7 +439,9 @@ boolean bootMenuEnabled, boolean spiceFileTransferEnabled, boolean spiceCopyPasteEnabled, - Guid cpuProfileId) { + Guid cpuProfileId, + boolean autoConverge, + boolean migrateCompressed) { this(); this.name = name; this.id = id; @@ -479,6 +491,8 @@ this.spiceFileTransferEnabled = spiceFileTransferEnabled; this.spiceCopyPasteEnabled = spiceCopyPasteEnabled; this.cpuProfileId = cpuProfileId; + this.autoConverge = autoConverge; + this.migrateCompressed = migrateCompressed; } public long getDbGeneration() { @@ -820,6 +834,8 @@ result = prime * result + (spiceFileTransferEnabled ? 1231 : 1237); result = prime * result + (spiceCopyPasteEnabled ? 1231 : 1237); result = prime * result + ((cpuProfileId == null) ? 0 : cpuProfileId.hashCode()); + result = prime * result + (autoConverge ? 1231 : 1237); + result = prime * result + (migrateCompressed ? 1231 : 1237); return result; } @@ -875,7 +891,9 @@ && bootMenuEnabled == other.bootMenuEnabled && spiceFileTransferEnabled == other.spiceFileTransferEnabled && spiceCopyPasteEnabled == other.spiceCopyPasteEnabled - && ObjectUtils.objectsEqual(cpuProfileId, other.cpuProfileId); + && ObjectUtils.objectsEqual(cpuProfileId, other.cpuProfileId) + && autoConverge == other.autoConverge + && migrateCompressed == other.migrateCompressed; } public Guid getQuotaId() { @@ -1054,4 +1072,20 @@ public void setCpuProfileId(Guid cpuProfileId) { this.cpuProfileId = cpuProfileId; } + + public boolean isAutoConverge() { + return autoConverge; + } + + public void setAutoConverge(boolean autoConverge) { + this.autoConverge = autoConverge; + } + + public boolean isMigrateCompressed() { + return migrateCompressed; + } + + public void setMigrateCompressed(boolean migrateCompressed) { + this.migrateCompressed = migrateCompressed; + } } 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 d226fe4..3a832e3 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 @@ -78,7 +78,7 @@ Guid baseTemplateId, String templateVersionName, SerialNumberPolicy serialNumberPolicy, String customSerialNumber, boolean bootMenuEnabled, boolean spiceFIleTransferEnabled, boolean spiceCopyPasteEnabled, - Guid cpuProfileId) { + Guid cpuProfileId, boolean autoConverge, boolean migrateCompressed) { super(name, vmtGuid, vdsGroupId, @@ -126,7 +126,9 @@ bootMenuEnabled, spiceFIleTransferEnabled, spiceCopyPasteEnabled, - cpuProfileId); + cpuProfileId, + autoConverge, + migrateCompressed); diskTemplateMap = new HashMap<Guid, DiskImage>(); diskImageMap = new HashMap<Guid, DiskImage>(); @@ -193,6 +195,8 @@ setBootMenuEnabled(template.isBootMenuEnabled()); setSpiceFileTransferEnabled(template.isSpiceFileTransferEnabled()); setSpiceCopyPasteEnabled(template.isSpiceCopyPasteEnabled()); + setAutoConverge(template.isAutoConverge()); + setMigrateCompressed(template.isMigrateCompressed()); } 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 7583464..d117b9a 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 @@ -1948,5 +1948,13 @@ @OptionBehaviourAttribute(behaviour = OptionBehaviour.CommaSeparatedStringArray) UnsupportedLocalesFilter, + @TypeConverterAttribute(Boolean.class) + @DefaultValueAttribute("true") + AutoConvergenceSupported, + + @TypeConverterAttribute(Boolean.class) + @DefaultValueAttribute("true") + MigrationCompressionSupported, + 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 1fdd8b8..cb45328 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 @@ -147,7 +147,9 @@ MaxIopsUpperBoundQosValue, MaxReadIopsUpperBoundQosValue, MaxWriteIopsUpperBoundQosValue, - MaxCpuLimitQosValue; + MaxCpuLimitQosValue, + AutoConvergenceSupported(ConfigAuthType.User), + MigrationCompressionSupported(ConfigAuthType.User); public static enum ConfigAuthType { Admin, diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MigrateVDSCommandParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MigrateVDSCommandParameters.java index fb201cf..aa5437f 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MigrateVDSCommandParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/MigrateVDSCommandParameters.java @@ -13,10 +13,13 @@ private String dstQemu; private Version clusterVersion; private Integer migrationDowntime; + private Boolean autoConverge; + private Boolean migrateCompressed; public MigrateVDSCommandParameters(Guid vdsId, Guid vmId, String srcHost, Guid dstVdsId, String dstHost, MigrationMethod migrationMethod, boolean tunnelMigration, - String dstQemu, Version clusterVersion, int migrationDowntime) { + String dstQemu, Version clusterVersion, int migrationDowntime, + Boolean autoConverge, Boolean migrateCompressed) { super(vdsId, vmId); this.srcHost = srcHost; this.dstVdsId = dstVdsId; @@ -26,6 +29,8 @@ this.dstQemu = dstQemu; this.clusterVersion = clusterVersion; this.migrationDowntime = migrationDowntime; + this.autoConverge = autoConverge; + this.migrateCompressed = migrateCompressed; } public String getSrcHost() { @@ -56,20 +61,38 @@ return migrationDowntime; } + public Boolean getMigrateCompressed() { + return migrateCompressed; + } + + public void setMigrateCompressed(Boolean migrateCompressed) { + this.migrateCompressed = migrateCompressed; + } + + public Boolean getAutoConverge() { + return autoConverge; + } + + public void setAutoConverge(Boolean autoConverge) { + this.autoConverge = autoConverge; + } + public MigrateVDSCommandParameters() { migrationMethod = MigrationMethod.OFFLINE; } @Override public String toString() { - return String.format("%s, srcHost=%s, dstVdsId=%s, dstHost=%s, migrationMethod=%s, tunnelMigration=%s, migrationDowntime=%s", + return String.format("%s, srcHost=%s, dstVdsId=%s, dstHost=%s, migrationMethod=%s, tunnelMigration=%s, migrationDowntime=%s, autoConverge=%s, migrateCompressed=%s", super.toString(), getSrcHost(), getDstVdsId(), getDstHost(), getMigrationMethod(), isTunnelMigration(), - getMigrationDowntime()); + getMigrationDowntime(), + getAutoConverge(), + getMigrateCompressed()); } public void setClusterVersion(Version clusterVersion) { diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmBaseDaoDbFacade.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmBaseDaoDbFacade.java index 063efed..6122a6e 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmBaseDaoDbFacade.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmBaseDaoDbFacade.java @@ -68,7 +68,9 @@ .addValue("is_boot_menu_enabled", entity.isBootMenuEnabled()) .addValue("is_spice_file_transfer_enabled", entity.isSpiceFileTransferEnabled()) .addValue("is_spice_copy_paste_enabled", entity.isSpiceCopyPasteEnabled()) - .addValue("cpu_profile_id", entity.getCpuProfileId()); + .addValue("cpu_profile_id", entity.getCpuProfileId()) + .addValue("is_auto_converge", entity.isAutoConverge()) + .addValue("is_migrate_compressed", entity.isMigrateCompressed()); } /** @@ -123,6 +125,8 @@ entity.setMinAllocatedMem(rs.getInt("min_allocated_mem")); entity.setQuotaId(getGuid(rs, "quota_id")); entity.setCpuProfileId(getGuid(rs, "cpu_profile_id")); + entity.setAutoConverge(rs.getBoolean("is_auto_converge")); + entity.setMigrateCompressed(rs.getBoolean("is_migrate_compressed")); } } } diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml b/backend/manager/modules/dal/src/test/resources/fixtures.xml index 800367e..b0ca9a8 100644 --- a/backend/manager/modules/dal/src/test/resources/fixtures.xml +++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml @@ -1884,6 +1884,8 @@ <column>is_spice_file_transfer_enabled</column> <column>is_spice_copy_paste_enabled</column> <column>cpu_profile_id</column> + <column>is_auto_converge</column> + <column>is_migrate_compressed</column> <!-- Templates --> <row> <value>00000000-0000-0000-0000-000000000000</value> @@ -1944,6 +1946,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>1b85420c-b84c-4f29-997e-0eb674b40b79</value> @@ -2004,6 +2008,8 @@ <value>true</value> <value>true</value> <value>fd81f1e1-785b-4579-ab75-1419ebb87052</value> + <value>true</value> + <value>true</value> </row> <row> <value>1b85420c-b84c-4f29-997e-0eb674b40b80</value> @@ -2064,6 +2070,8 @@ <value>true</value> <value>true</value> <null /> + <value>false</value> + <value>true</value> </row> <row> <value>1b85420c-b84c-4f29-997e-0eb674b40b81</value> @@ -2124,6 +2132,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>false</value> </row> <row> <value>1b85420c-b84c-4f29-997e-0eb674b40b82</value> @@ -2184,6 +2194,8 @@ <value>true</value> <value>true</value> <null /> + <value>false</value> + <value>false</value> </row> <row> <value>99408929-82cf-4dc7-a532-9d998063fa95</value> @@ -2244,6 +2256,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>5849b030-626e-47cb-ad90-3ce782d831b3</value> @@ -2304,6 +2318,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>1b85420c-b84c-4f29-997e-0eb674b40b83</value> @@ -2364,6 +2380,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <!-- VMS --> @@ -2426,6 +2444,8 @@ <value>true</value> <value>true</value> <value>fd81f1e1-785b-4579-ab75-1419ebb87052</value> + <value>true</value> + <value>true</value> </row> <row> <value>77296e00-0cad-4e5a-9299-008a7b6f4355</value> @@ -2486,6 +2506,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>77296e00-0cad-4e5a-9299-008a7b6f4356</value> @@ -2546,6 +2568,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>77296e00-0cad-4e5a-9299-008a7b6f4357</value> @@ -2606,6 +2630,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>77296e00-0cad-4e5a-9299-008a7b6f4359</value> @@ -2666,6 +2692,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>77296e00-0cad-4e5a-9299-008a7b6f4360</value> @@ -2726,6 +2754,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>77296e00-0cad-4e5a-9299-008a7b6f5001</value> @@ -2786,6 +2816,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>77296e00-0cad-4e5a-9299-008a7b6f5002</value> @@ -2846,6 +2878,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</value> </row> <row> <value>77296e00-0cad-4e5a-9299-008a7b6f5003</value> @@ -2906,6 +2940,8 @@ <value>true</value> <value>true</value> <null /> + <value>true</value> + <value>true</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 8a013b2..d78b8f3 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfProperties.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfProperties.java @@ -69,4 +69,6 @@ final static String IS_SPICE_FILE_TRANSFER_ENABLED = "IsSpiceFileTransferEnabled"; final static String IS_SPICE_COPY_PASTE_ENABLED = "IsSpiceCopyPasteEnabled"; final static String COMMENT = "Comment"; + final static String IS_AUTO_CONVERGE = "IsAutoConverge"; + final static String IS_MIGRATE_COMPRESSED = "IsMigrateCompressed"; } 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 46a7200..b2c2647 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 @@ -681,6 +681,16 @@ vmBase.setSpiceCopyPasteEnabled(Boolean.parseBoolean(node.innerText)); } + node = content.SelectSingleNode(OvfProperties.IS_AUTO_CONVERGE); + if (node != null) { + vmBase.setAutoConverge(Boolean.parseBoolean(node.innerText)); + } + + node = content.SelectSingleNode(OvfProperties.IS_MIGRATE_COMPRESSED); + if (node != null) { + vmBase.setMigrateCompressed(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 02e0ef6..53091d6 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 @@ -369,6 +369,14 @@ _writer.WriteStartElement(OvfProperties.IS_SPICE_COPY_PASTE_ENABLED); _writer.WriteRaw(String.valueOf(vmBase.isSpiceCopyPasteEnabled())); _writer.WriteEndElement(); + + _writer.WriteStartElement(OvfProperties.IS_AUTO_CONVERGE); + _writer.WriteRaw(String.valueOf(vmBase.isAutoConverge())); + _writer.WriteEndElement(); + + _writer.WriteStartElement(OvfProperties.IS_MIGRATE_COMPRESSED); + _writer.WriteRaw(String.valueOf(vmBase.isMigrateCompressed())); + _writer.WriteEndElement(); } protected abstract void writeAppList(); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/MigrateBrokerVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/MigrateBrokerVDSCommand.java index e9dd31b..bdf866d 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/MigrateBrokerVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/MigrateBrokerVDSCommand.java @@ -46,6 +46,14 @@ migrationInfo.put(VdsProperties.MIGRATION_DOWNTIME, Integer.toString(parameters.getMigrationDowntime())); } + if (parameters.getAutoConverge() != null) { + migrationInfo.put(VdsProperties.AUTO_CONVERGE, parameters.getAutoConverge().toString()); + } + + if (parameters.getMigrateCompressed() != null) { + migrationInfo.put(VdsProperties.MIGRATE_COMPRESSED, parameters.getMigrateCompressed().toString()); + } + return migrationInfo; } } 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 3686b1e..70b2549 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 @@ -351,6 +351,8 @@ public static final String TUNNELED = "tunneled"; public static final String DST_QEMU = "dstqemu"; public static final String MIGRATION_DOWNTIME = "downtime"; + public static final String AUTO_CONVERGE = "autoConverge"; + public static final String MIGRATE_COMPRESSED = "compressed"; // storage domains public static final String code = "code"; 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 df3a81a..9f929d7 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 @@ -222,6 +222,8 @@ vm.setSpiceFileTransferEnabled(instance.isSpiceFileTransferEnabled()); vm.setSpiceCopyPasteEnabled(instance.isSpiceCopyPasteEnabled()); vm.setCpuProfileId(instance.getCpuProfileId()); + vm.setAutoConverge(instance.isAutoConverge()); + vm.setMigrateCompressed(instance.isMigrateCompressed()); return vm; } @@ -447,6 +449,8 @@ obj.setSpiceFileTransferEnabled(instance.isSpiceFileTransferEnabled()); obj.setSpiceCopyPasteEnabled(instance.isSpiceCopyPasteEnabled()); obj.setCpuProfileId(instance.getCpuProfileId()); + obj.setAutoConverge(instance.isAutoConverge()); + obj.setMigrateCompressed(instance.isMigrateCompressed()); return obj; } @@ -490,6 +494,8 @@ obj.setSpiceFileTransferEnabled(instance.isSpiceFileTransferEnabled()); obj.setSpiceCopyPasteEnabled(instance.isSpiceCopyPasteEnabled()); obj.setCpuProfileId(instance.getCpuProfileId()); + obj.setAutoConverge(instance.isAutoConverge()); + obj.setMigrateCompressed(instance.isMigrateCompressed()); return obj; } diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index 8726340..7bdf156 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -446,7 +446,8 @@ vm_templates.is_boot_menu_enabled as is_boot_menu_enabled, vm_templates.is_spice_file_transfer_enabled as is_spice_file_transfer_enabled, vm_templates.is_spice_copy_paste_enabled as is_spice_copy_paste_enabled, - vm_templates.cpu_profile_id as cpu_profile_id + vm_templates.cpu_profile_id as cpu_profile_id, + vm_templates.is_auto_converge as is_auto_converge, vm_templates.is_migrate_compressed as is_migrate_compressed FROM vm_static AS vm_templates LEFT OUTER JOIN vds_groups ON vm_templates.vds_group_id = vds_groups.vds_group_id left outer JOIN @@ -485,7 +486,8 @@ vm_templates.serial_number_policy as serial_number_policy, vm_templates.custom_serial_number as custom_serial_number, vm_templates.is_boot_menu_enabled as is_boot_menu_enabled, vm_templates.is_spice_file_transfer_enabled as is_spice_file_transfer_enabled, vm_templates.is_spice_copy_paste_enabled as is_spice_copy_paste_enabled, - vm_templates.cpu_profile_id as cpu_profile_id + vm_templates.cpu_profile_id as cpu_profile_id, + vm_templates.is_auto_converge as is_auto_converge, vm_templates.is_migrate_compressed as is_migrate_compressed FROM vm_static AS vm_templates LEFT OUTER 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 @@ -515,7 +517,8 @@ vm_templates_1.is_boot_menu_enabled as is_boot_menu_enabled, vm_templates_1.is_spice_file_transfer_enabled as is_spice_file_transfer_enabled, vm_templates_1.is_spice_copy_paste_enabled as is_spice_copy_paste_enabled, - vm_templates_1.cpu_profile_id as cpu_profile_id + vm_templates_1.cpu_profile_id as cpu_profile_id, + vm_templates_1.is_auto_converge as is_auto_converge, vm_templates_1.is_migrate_compressed as is_migrate_compressed FROM vm_static AS vm_templates_1 LEFT OUTER 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 @@ -665,7 +668,8 @@ (snapshots.snapshot_id is not null) as next_run_config_exists, vm_static.numatune_mode as numatune_mode, vm_static.is_spice_file_transfer_enabled as is_spice_file_transfer_enabled, vm_static.is_spice_copy_paste_enabled as is_spice_copy_paste_enabled, - vm_static.cpu_profile_id as cpu_profile_id + vm_static.cpu_profile_id as cpu_profile_id, + vm_static.is_auto_converge as is_auto_converge, vm_static.is_migrate_compressed as is_migrate_compressed 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 @@ -713,7 +717,8 @@ (snapshots.snapshot_id is not null) as next_run_config_exists, vms.numatune_mode, vms.is_spice_file_transfer_enabled, vms.is_spice_copy_paste_enabled, - vms.cpu_profile_id + vms.cpu_profile_id, + vms.is_auto_converge, vms.is_migrate_compressed 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_06_0330_add_vm_auto_convergence.sql b/packaging/dbscripts/upgrade/03_06_0330_add_vm_auto_convergence.sql new file mode 100644 index 0000000..a1e05c0 --- /dev/null +++ b/packaging/dbscripts/upgrade/03_06_0330_add_vm_auto_convergence.sql @@ -0,0 +1,2 @@ +SELECT fn_db_add_column('vm_static', 'is_auto_converge', 'BOOLEAN DEFAULT FALSE'); +SELECT fn_db_add_column('vm_static', 'is_migrate_compressed', 'BOOLEAN DEFAULT FALSE'); diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql index 5aa81b3..68b951d 100644 --- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql +++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql @@ -344,6 +344,20 @@ select fn_db_add_config_value('VmSlaPolicySupported','false','3.3'); select fn_db_add_config_value('VmSlaPolicySupported','false','3.4'); +select fn_db_add_config_value('AutoConvergenceSupported','false','3.0'); +select fn_db_add_config_value('AutoConvergenceSupported','false','3.1'); +select fn_db_add_config_value('AutoConvergenceSupported','false','3.2'); +select fn_db_add_config_value('AutoConvergenceSupported','false','3.3'); +select fn_db_add_config_value('AutoConvergenceSupported','false','3.4'); +select fn_db_add_config_value('AutoConvergenceSupported','false','3.5'); + +select fn_db_add_config_value('MigrationCompressionSupported','false','3.0'); +select fn_db_add_config_value('MigrationCompressionSupported','false','3.1'); +select fn_db_add_config_value('MigrationCompressionSupported','false','3.2'); +select fn_db_add_config_value('MigrationCompressionSupported','false','3.3'); +select fn_db_add_config_value('MigrationCompressionSupported','false','3.4'); +select fn_db_add_config_value('MigrationCompressionSupported','false','3.5'); + -- 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 7f81570..19fd956 100644 --- a/packaging/dbscripts/vm_templates_sp.sql +++ b/packaging/dbscripts/vm_templates_sp.sql @@ -59,7 +59,9 @@ v_is_boot_menu_enabled BOOLEAN, v_is_spice_file_transfer_enabled BOOLEAN, v_is_spice_copy_paste_enabled BOOLEAN, - v_cpu_profile_id UUID) + v_cpu_profile_id UUID, + v_is_auto_converge BOOLEAN, + v_is_migrate_compressed BOOLEAN) RETURNS VOID AS $procedure$ @@ -132,7 +134,9 @@ is_boot_menu_enabled, is_spice_file_transfer_enabled, is_spice_copy_paste_enabled, - cpu_profile_id) + cpu_profile_id, + is_auto_converge, + is_migrate_compressed) VALUES( v_child_count, v_creation_date, @@ -187,7 +191,9 @@ v_is_boot_menu_enabled, v_is_spice_file_transfer_enabled, v_is_spice_copy_paste_enabled, - v_cpu_profile_id); + v_cpu_profile_id, + v_is_auto_converge, + v_is_migrate_compressed); -- 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) @@ -252,7 +258,9 @@ v_is_boot_menu_enabled BOOLEAN, v_is_spice_file_transfer_enabled BOOLEAN, v_is_spice_copy_paste_enabled BOOLEAN, - v_cpu_profile_id UUID) + v_cpu_profile_id UUID, + v_is_auto_converge BOOLEAN, + v_is_migrate_compressed BOOLEAN) RETURNS VOID --The [vm_templates] table doesn't have a timestamp column. Optimistic concurrency logic cannot be generated @@ -280,7 +288,8 @@ template_version_name = v_template_version_name, serial_number_policy = v_serial_number_policy, custom_serial_number = v_custom_serial_number, is_boot_menu_enabled = v_is_boot_menu_enabled, - is_spice_file_transfer_enabled = v_is_spice_file_transfer_enabled, is_spice_copy_paste_enabled = v_is_spice_copy_paste_enabled, cpu_profile_id = v_cpu_profile_id + is_spice_file_transfer_enabled = v_is_spice_file_transfer_enabled, is_spice_copy_paste_enabled = v_is_spice_copy_paste_enabled, cpu_profile_id = v_cpu_profile_id, + is_auto_converge = v_is_auto_converge, is_migrate_compressed = v_is_migrate_compressed WHERE vm_guid = v_vmt_guid AND entity_type = v_template_type; diff --git a/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql index 9892e54..6523cc6 100644 --- a/packaging/dbscripts/vms_sp.sql +++ b/packaging/dbscripts/vms_sp.sql @@ -510,7 +510,9 @@ v_numatune_mode VARCHAR(20), v_is_spice_file_transfer_enabled BOOLEAN, v_is_spice_copy_paste_enabled BOOLEAN, - v_cpu_profile_id UUID) + v_cpu_profile_id UUID, + v_is_auto_converge BOOLEAN, + v_is_migrate_compressed BOOLEAN) RETURNS VOID AS $procedure$ DECLARE @@ -518,8 +520,8 @@ BEGIN -- lock template for child count update select vm_guid into v_val FROM vm_static WHERE vm_guid = v_vmt_guid for update; -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, numatune_mode, is_spice_file_transfer_enabled, is_spice_copy_paste_enabled, cpu_profi! le_id) - 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, v_numatune_mode, v_is_spice_file_transfer_enabled, v_is_spice_copy_paste_enabled, v_cpu_profile_id); +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, numatune_mode, is_spice_file_transfer_enabled, is_spice_copy_paste_enabled, cpu_profi! le_id, is_auto_converge, is_migrate_compressed) + 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, v_numatune_mode, v_is_spice_file_transfer_enabled, v_is_spice_copy_paste_enabled, v_cpu_profile_id, v_is_auto_converge, v_is_migrate_compressed); -- 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; @@ -651,7 +653,9 @@ v_numatune_mode VARCHAR(20), v_is_spice_file_transfer_enabled BOOLEAN, v_is_spice_copy_paste_enabled BOOLEAN, -v_cpu_profile_id UUID) +v_cpu_profile_id UUID, +v_is_auto_converge BOOLEAN, +v_is_migrate_compressed BOOLEAN) RETURNS VOID @@ -686,7 +690,8 @@ is_boot_menu_enabled = v_is_boot_menu_enabled, numatune_mode = v_numatune_mode, is_spice_file_transfer_enabled = v_is_spice_file_transfer_enabled, is_spice_copy_paste_enabled = v_is_spice_copy_paste_enabled, - cpu_profile_id = v_cpu_profile_id + cpu_profile_id = v_cpu_profile_id, + is_auto_converge = v_is_auto_converge, is_migrate_compressed = v_is_migrate_compressed WHERE vm_guid = v_vm_guid AND entity_type = 'VM'; END; $procedure$ -- To view, visit http://gerrit.ovirt.org/32132 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I04a651c4a6995876742092be31ca6e3510194b31 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
