Tomas Jelinek has uploaded a new change for review. Change subject: core: [RFE] Dislay Address Override ......................................................................
core: [RFE] Dislay Address Override This patch introduces the possibility to override the display address of the host by an IP or FQDN Detailed description: http://wiki.ovirt.org/wiki/Features/Display_Address_Override - vds_static enriched by a new field console_address - if it is null, it means the address has not been overridden - if it is not null, the address has been overridden and all VMs on this host will be considered to have the display address to be the the one in defined in console_address - the vds_static can be a valid FQDN or IP or null - to support this a new validator NullEnabledHostnameOrIp has been introduced Change-Id: Idacc0161a104c1de0969d86d98ddd5458c6787b8 Signed-off-by: Tomas Jelinek <tjeli...@redhat.com> --- M backend/manager/dbscripts/create_views.sql A backend/manager/dbscripts/upgrade/03_01_1490_add_console_address.sql A backend/manager/dbscripts/upgrade/pre_upgrade/03_01_1470_add_console_address.sql M backend/manager/dbscripts/vds_sp.sql M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BusinessEntitiesDefinitions.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDS.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatic.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/BaseHostnameOrIPConstraint.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/HostnameOrIPConstraint.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/NullEnabledHostnameOrIPConstraint.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/NullEnabledHostnameOrIp.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAODbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ExtendedVmDynamic.java 15 files changed, 124 insertions(+), 24 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/22/9022/1 diff --git a/backend/manager/dbscripts/create_views.sql b/backend/manager/dbscripts/create_views.sql index fb15073..7d1bdd4 100644 --- a/backend/manager/dbscripts/create_views.sql +++ b/backend/manager/dbscripts/create_views.sql @@ -636,7 +636,7 @@ CASE WHEN storage_pool.spm_vds_id = vds_static.vds_id THEN CASE WHEN storage_pool.status = 5 THEN 1 ELSE 2 END ELSE 0 END as spm_status, vds_dynamic.supported_cluster_levels as supported_cluster_levels, vds_dynamic.supported_engines as supported_engines, vds_groups.compatibility_version as vds_group_compatibility_version, vds_dynamic.host_os as host_os, vds_dynamic.kvm_version as kvm_version, vds_dynamic.spice_version as spice_version, vds_dynamic.kernel_version as kernel_version, vds_dynamic.iscsi_initiator_name as iscsi_initiator_name, vds_dynamic.transparent_hugepages_state as transparent_hugepages_state, vds_dynamic.anonymous_hugepages as anonymous_hugepages, vds_dynamic.non_operational_reason as non_operational_reason, - vds_static.recoverable as recoverable, vds_static.sshKeyFingerprint as sshKeyFingerprint + vds_static.recoverable as recoverable, vds_static.sshKeyFingerprint as sshKeyFingerprint, vds_static.console_address as console_address FROM vds_groups INNER JOIN vds_static ON vds_groups.vds_group_id = vds_static.vds_group_id INNER JOIN vds_dynamic ON vds_static.vds_id = vds_dynamic.vds_id INNER JOIN diff --git a/backend/manager/dbscripts/upgrade/03_01_1490_add_console_address.sql b/backend/manager/dbscripts/upgrade/03_01_1490_add_console_address.sql new file mode 100644 index 0000000..31f8c1d --- /dev/null +++ b/backend/manager/dbscripts/upgrade/03_01_1490_add_console_address.sql @@ -0,0 +1 @@ +select fn_db_add_column('vds_static', 'console_address', 'VARCHAR(255) default null'); diff --git a/backend/manager/dbscripts/upgrade/pre_upgrade/03_01_1470_add_console_address.sql b/backend/manager/dbscripts/upgrade/pre_upgrade/03_01_1470_add_console_address.sql new file mode 100644 index 0000000..31f8c1d --- /dev/null +++ b/backend/manager/dbscripts/upgrade/pre_upgrade/03_01_1470_add_console_address.sql @@ -0,0 +1 @@ +select fn_db_add_column('vds_static', 'console_address', 'VARCHAR(255) default null'); diff --git a/backend/manager/dbscripts/vds_sp.sql b/backend/manager/dbscripts/vds_sp.sql index 848c264..158abac 100644 --- a/backend/manager/dbscripts/vds_sp.sql +++ b/backend/manager/dbscripts/vds_sp.sql @@ -335,14 +335,15 @@ v_pm_options VARCHAR(4000) , v_pm_enabled BOOLEAN, v_vds_spm_priority INTEGER, - v_sshKeyFingerprint VARCHAR(128)) + v_sshKeyFingerprint VARCHAR(128), + v_console_address VARCHAR(255)) AS $procedure$ BEGIN IF v_vds_unique_id IS NULL OR NOT EXISTS(SELECT vds_name FROM vds_static WHERE vds_unique_id = v_vds_unique_id) then BEGIN v_vds_id := uuid_generate_v1(); - INSERT INTO vds_static(vds_id,host_name, ip, vds_unique_id, port, vds_group_id, vds_name, server_SSL_enabled,vds_type,vds_strength,pm_type,pm_user,pm_password,pm_port,pm_options,pm_enabled, vds_spm_priority, sshKeyFingerprint) - VALUES(v_vds_id,v_host_name, v_ip, v_vds_unique_id, v_port, v_vds_group_id, v_vds_name, v_server_SSL_enabled,v_vds_type,v_vds_strength,v_pm_type,v_pm_user,v_pm_password,v_pm_port,v_pm_options,v_pm_enabled, v_vds_spm_priority, v_sshKeyFingerprint); + INSERT INTO vds_static(vds_id,host_name, ip, vds_unique_id, port, vds_group_id, vds_name, server_SSL_enabled,vds_type,vds_strength,pm_type,pm_user,pm_password,pm_port,pm_options,pm_enabled, vds_spm_priority, sshKeyFingerprint, console_address) + VALUES(v_vds_id,v_host_name, v_ip, v_vds_unique_id, v_port, v_vds_group_id, v_vds_name, v_server_SSL_enabled,v_vds_type,v_vds_strength,v_pm_type,v_pm_user,v_pm_password,v_pm_port,v_pm_options,v_pm_enabled, v_vds_spm_priority, v_sshKeyFingerprint, v_console_address); END; end if; RETURN; @@ -371,7 +372,8 @@ v_pm_enabled BOOLEAN, v_otp_validity BIGINT, v_vds_spm_priority INTEGER, - v_sshKeyFingerprint VARCHAR(128)) + v_sshKeyFingerprint VARCHAR(128), + v_console_address VARCHAR(255)) RETURNS VOID --The [vds_static] table doesn't have a timestamp column. Optimistic concurrency logic cannot be generated @@ -385,7 +387,7 @@ vds_type = v_vds_type, _update_date = LOCALTIMESTAMP,vds_strength = v_vds_strength, pm_type = v_pm_type,pm_user = v_pm_user,pm_password = v_pm_password, - pm_port = v_pm_port,pm_options = v_pm_options,pm_enabled = v_pm_enabled, otp_validity = v_otp_validity, vds_spm_priority = v_vds_spm_priority, sshKeyFingerprint = v_sshKeyFingerprint + pm_port = v_pm_port,pm_options = v_pm_options,pm_enabled = v_pm_enabled, otp_validity = v_otp_validity, vds_spm_priority = v_vds_spm_priority, sshKeyFingerprint = v_sshKeyFingerprint, console_address = v_console_address WHERE vds_id = v_vds_id; END; @@ -654,15 +656,15 @@ v_pm_port INTEGER , v_pm_options VARCHAR(4000) , v_pm_enabled BOOLEAN, - v_vds_spm_priority INTEGER) + v_vds_spm_priority INTEGER, + v_console_address VARCHAR(255)) AS $procedure$ BEGIN BEGIN v_vds_id := uuid_generate_v1(); - INSERT INTO vds_static(vds_id,host_name, ip, vds_unique_id, port, vds_group_id, vds_name, server_SSL_enabled,vds_type,vds_strength,pm_type,pm_user,pm_password, pm_port, pm_options, pm_enabled, vds_spm_priority) - VALUES(v_vds_id,v_host_name, v_ip, v_vds_unique_id, v_port, v_vds_group_id, v_vds_name, v_server_SSL_enabled,v_vds_type, v_vds_strength,v_pm_type,v_pm_user,v_pm_password,v_pm_port, v_pm_options, v_pm_enabled, v_vds_spm_priority); - + INSERT INTO vds_static(vds_id,host_name, ip, vds_unique_id, port, vds_group_id, vds_name, server_SSL_enabled,vds_type,vds_strength,pm_type,pm_user,pm_password, pm_port, pm_options, pm_enabled, vds_spm_priority, console_address) + VALUES(v_vds_id,v_host_name, v_ip, v_vds_unique_id, v_port, v_vds_group_id, v_vds_name, v_server_SSL_enabled,v_vds_type, v_vds_strength,v_pm_type,v_pm_user,v_pm_password,v_pm_port, v_pm_options, v_pm_enabled, v_vds_spm_priority, v_console_address); INSERT INTO vds_dynamic(vds_id, status) VALUES(v_vds_id, 0); INSERT INTO vds_statistics(vds_id) VALUES(v_vds_id); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BusinessEntitiesDefinitions.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BusinessEntitiesDefinitions.java index 9721a9e..7e6c1ce 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BusinessEntitiesDefinitions.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BusinessEntitiesDefinitions.java @@ -23,6 +23,7 @@ // HOST (vds_static) public static final int HOST_NAME_SIZE = 255; public static final int HOST_HOSTNAME_SIZE = 255; + public static final int CONSOLE_ADDRESS_SIZE = 255; public static final int HOST_IP_SIZE = 255; public static final int HOST_UNIQUE_ID_SIZE = 128; public static final int HOST_PM_USER_SIZE = 50; diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDS.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDS.java index 0c1c444..3c920a3 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDS.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDS.java @@ -166,7 +166,7 @@ Integer reserved_mem, Integer guest_overhead, VDSStatus previous_status, String software_version, String version_name, String build_name, Long mem_available, Long mem_shared, boolean server_SSL_enabled, String vds_group_cpu_name, String cpu_name, Boolean net_config_dirty, String pm_type, String pm_user, - String pm_password, Integer pm_port, String pm_options, boolean pm_enabled) // Nullable<System.Int32> + String pm_password, Integer pm_port, String pm_options, boolean pm_enabled, String consoleAddress) // Nullable<System.Int32> // mem_cached, { mVdsStatic = new VdsStatic(); @@ -218,6 +218,7 @@ this.setpm_options(pm_options); this.setpm_type(pm_type); this.setpm_user(pm_user); + this.setConsoleAddress(consoleAddress); } public VDS(VdsStatic vdsStatic, VdsDynamic vdsDynamic, VdsStatistics vdsStatistics) { @@ -271,7 +272,8 @@ getpm_password(), getpm_port(), getpm_options(), - getpm_enabled()); + getpm_enabled(), + getConsoleAddress()); vds.setcpu_flags(getcpu_flags()); vds.setVdsSpmPriority(getVdsSpmPriority()); @@ -644,6 +646,14 @@ public void setmem_shared(Long value) { this.mVdsStatistics.setmem_shared(value); + } + + public String getConsoleAddress() { + return mVdsStatic.getConsoleAddress(); + } + + public void setConsoleAddress(String value) { + mVdsStatic.setConsoleAddress(value); } public Integer getmem_commited_percent() { @@ -1123,7 +1133,7 @@ "PmOptionsMap", "swap_free", "mem_shared_percent", "ManagmentIp", "supported_cluster_levels", "ContainingHooks", "NonOperationalReason", "host_os", "kernel_version", "spice_version", "kvm_version", "storage_pool_id", - "physical_mem_mb" })); + "physical_mem_mb", "consoleAddress" })); @Override public java.util.ArrayList<String> getChangeablePropertiesList() { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatic.java index f73d5f8..df2abbb 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatic.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatic.java @@ -24,6 +24,7 @@ import org.ovirt.engine.core.common.queries.ValueObjectMap; import org.ovirt.engine.core.common.utils.ValidationUtils; import org.ovirt.engine.core.common.validation.annotation.HostnameOrIp; +import org.ovirt.engine.core.common.validation.annotation.NullEnabledHostnameOrIp; import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.common.validation.group.PowerManagementCheck; import org.ovirt.engine.core.common.validation.group.UpdateEntity; @@ -65,6 +66,12 @@ @Size(max = BusinessEntitiesDefinitions.HOST_IP_SIZE) @Column(name = "ip") private String ip; + + @NullEnabledHostnameOrIp(message = "VALIDATION.VDS.CONSOLEADDRESSS.HOSTNAME_OR_IP", + groups = { CreateEntity.class, UpdateEntity.class }) + @Size(max = BusinessEntitiesDefinitions.CONSOLE_ADDRESS_SIZE) + @Column(name = "console_address", length = BusinessEntitiesDefinitions.CONSOLE_ADDRESS_SIZE) + private String consoleAddress; @Size(max = BusinessEntitiesDefinitions.HOST_UNIQUE_ID_SIZE) @Column(name = "vds_unique_id") @@ -329,6 +336,14 @@ this.sshKeyFingerprint = sshKeyFingerprint; } + public String getConsoleAddress() { + return consoleAddress; + } + + public void setConsoleAddress(String consoleAddress) { + this.consoleAddress = consoleAddress; + } + /** * Converts a PM Options map to string * @@ -382,6 +397,7 @@ final int prime = 31; int result = 1; result = prime * result + ((hostname == null) ? 0 : hostname.hashCode()); + result = prime * result + ((consoleAddress == null) ? 0 : consoleAddress.hashCode()); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((ip == null) ? 0 : ip.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); @@ -416,6 +432,11 @@ return false; } else if (!hostname.equals(other.hostname)) return false; + if (consoleAddress == null) { + if (other.consoleAddress != null) + return false; + } else if (!consoleAddress.equals(other.consoleAddress)) + return false; if (id == null) { if (other.id != null) return false; diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/BaseHostnameOrIPConstraint.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/BaseHostnameOrIPConstraint.java new file mode 100644 index 0000000..b75abb4 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/BaseHostnameOrIPConstraint.java @@ -0,0 +1,21 @@ +package org.ovirt.engine.core.common.validation; + +import java.lang.annotation.Annotation; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +import org.ovirt.engine.core.common.utils.ValidationUtils; + +public abstract class BaseHostnameOrIPConstraint<A extends Annotation> implements ConstraintValidator<A, String> { + + @Override + public void initialize(A constraintAnnotation) { + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + return ValidationUtils.validHostname(value); + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/HostnameOrIPConstraint.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/HostnameOrIPConstraint.java index 56f54c9..bde9431 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/HostnameOrIPConstraint.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/HostnameOrIPConstraint.java @@ -1,20 +1,14 @@ package org.ovirt.engine.core.common.validation; -import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; -import org.ovirt.engine.core.common.utils.ValidationUtils; import org.ovirt.engine.core.common.validation.annotation.HostnameOrIp; -public class HostnameOrIPConstraint implements ConstraintValidator<HostnameOrIp, String> { - - @Override - public void initialize(HostnameOrIp constraintAnnotation) { - } +public class HostnameOrIPConstraint extends BaseHostnameOrIPConstraint<HostnameOrIp> { @Override public boolean isValid(String name, ConstraintValidatorContext context) { - return (name != null) && ValidationUtils.validHostname(name); + return (name != null) && super.isValid(name, context); } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/NullEnabledHostnameOrIPConstraint.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/NullEnabledHostnameOrIPConstraint.java new file mode 100644 index 0000000..2266a94 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/NullEnabledHostnameOrIPConstraint.java @@ -0,0 +1,14 @@ +package org.ovirt.engine.core.common.validation; + +import javax.validation.ConstraintValidatorContext; + +import org.ovirt.engine.core.common.validation.annotation.NullEnabledHostnameOrIp; + +public class NullEnabledHostnameOrIPConstraint extends BaseHostnameOrIPConstraint<NullEnabledHostnameOrIp> { + + @Override + public boolean isValid(String name, ConstraintValidatorContext context) { + return name == null || super.isValid(name, context); + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/NullEnabledHostnameOrIp.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/NullEnabledHostnameOrIp.java new file mode 100644 index 0000000..e0d26c3 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/NullEnabledHostnameOrIp.java @@ -0,0 +1,28 @@ +package org.ovirt.engine.core.common.validation.annotation; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.Payload; + +import org.ovirt.engine.core.common.validation.NullEnabledHostnameOrIPConstraint; + +@Target({ ANNOTATION_TYPE, METHOD, FIELD, CONSTRUCTOR, PARAMETER }) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = NullEnabledHostnameOrIPConstraint.class) +public @interface NullEnabledHostnameOrIp { + + String message() default "VALIDATION_FIELD_NOT_MATCHING_HOSTNAME_OR_IP_PATTERN"; + + Class<?>[] groups() default {}; + + Class<? extends Payload>[] payload() default {}; +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAODbFacadeImpl.java index 5b40669..1c9f19d 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAODbFacadeImpl.java @@ -314,6 +314,7 @@ entity.setVdsSpmPriority(rs.getInt("vds_spm_priority")); entity.setAutoRecoverable(rs.getBoolean("recoverable")); entity.setSSHKeyFingerprint(rs.getString("sshKeyFingerprint")); + entity.setConsoleAddress(rs.getString("console_address")); entity.calculateFreeVirtualMemory(); return entity; } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java index 28bc864..aefda98 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java @@ -93,6 +93,7 @@ .addValue("pm_enabled", vds.getpm_enabled()) .addValue("otp_validity", vds.getOtpValidity()) .addValue("vds_spm_priority", vds.getVdsSpmPriority()) + .addValue("console_address", vds.getConsoleAddress()) .addValue("sshKeyFingerprint", vds.getSSHKeyFingerprint()); } @@ -135,6 +136,7 @@ entity.setpm_enabled(rs.getBoolean("pm_enabled")); entity.setOtpValidity(rs.getLong("otp_validity")); entity.setSSHKeyFingerprint(rs.getString("sshKeyFingerprint")); + entity.setConsoleAddress(rs.getString("console_address")); return entity; } diff --git a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties index 0052a4f..535300a 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -570,6 +570,7 @@ VALIDATION.VDS_GROUP.MigrateOnError.NOT_NULL=Cluster migrate on error option is required VALIDATION.STORAGE_POOL.ID.NOT_NULL=Data Center ID is required VALIDATION.VDS.HOSTNAME.HOSTNAME_OR_IP=Host address must be a FQDN or a valid IP address +VALIDATION.VDS.CONSOLEADDRESSS.HOSTNAME_OR_IP=Console address must be a FQDN or a valid IP address VALIDATION.VDS.POWER_MGMT.ADDRESS.HOSTNAME_OR_IP=Host power management address must be a FQDN or a valid IP address VALIDATION.VM.NUM_OF_MONITORS.EXCEEDED=VM exceeded the number of allowed monitors VALIDATION.STORAGE_DOMAIN.NAME.INVALID=Storage Domain name must be formed of "a-z0-9A-Z" or "-_" diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ExtendedVmDynamic.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ExtendedVmDynamic.java index 6505c8f..6c0befd 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ExtendedVmDynamic.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ExtendedVmDynamic.java @@ -13,9 +13,12 @@ @Override public void setdisplay_ip(String value) { - if (value.startsWith("0")) { - value = host.gethost_name(); + if (host.getConsoleAddress() != null) { + super.setdisplay_ip(host.getConsoleAddress()); + } else if (value.startsWith("0")) { + super.setdisplay_ip(host.gethost_name()); + } else { + super.setdisplay_ip(value); } - super.setdisplay_ip(value); } } -- To view, visit http://gerrit.ovirt.org/9022 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idacc0161a104c1de0969d86d98ddd5458c6787b8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <tjeli...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches