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

Reply via email to