diff --git a/_modules/runtest/tempest_sections/__init__.py b/_modules/runtest/tempest_sections/__init__.py
index bfa5c8f..91b79ac 100644
--- a/_modules/runtest/tempest_sections/__init__.py
+++ b/_modules/runtest/tempest_sections/__init__.py
@@ -5,6 +5,7 @@
 import baremetal_feature_enabled
 import compute
 import compute_feature_enabled
+import dashboard
 import debug
 import default
 import dns
@@ -33,6 +34,7 @@
     baremetal_feature_enabled.BaremetalFeatureEnabled,
     compute.Compute,
     compute_feature_enabled.ComputeFeatureEnabled,
+    dashboard.Dashboard,
     debug.Debug,
     default.Default,
     dns.Dns,
diff --git a/_modules/runtest/tempest_sections/dashboard.py b/_modules/runtest/tempest_sections/dashboard.py
new file mode 100644
index 0000000..d9a20d0
--- /dev/null
+++ b/_modules/runtest/tempest_sections/dashboard.py
@@ -0,0 +1,42 @@
+import base_section
+
+from runtest import conditions
+
+class Dashboard(base_section.BaseSection):
+
+    name = "dashboard"
+    options = [
+        'dashboard_url',
+        'login_url',
+        'disable_ssl_certificate_validation',
+    ]
+
+
+    @property
+    def dashboard_url(self):
+
+        horizon_enable = conditions.BaseRule('horizon.server.enabled', 'eq', True,multiple='any')
+        if not horizon_enable:
+            return
+
+        nginx_enable = conditions.BaseRule('nginx.server.enabled', 'eq', True)
+
+        if self.get_item_when_condition_match('horizon.server.enabled', horizon_enable):
+            if self.get_item_when_condition_match('nginx.server.enabled', nginx_enable):
+                port = self.get_item_when_condition_match('nginx.server.site.nginx_proxy_openstack_web.host.port', nginx_enable)
+                protocol = self.get_item_when_condition_match('nginx.server.site.nginx_proxy_openstack_web.host.protocol', nginx_enable)
+                ip = self.get_item_when_condition_match('nginx.server.site.nginx_proxy_openstack_web.host.name', nginx_enable)
+            else:
+                port = self.get_item_when_condition_match('horizon.server.bind.port', horizon_enable)
+                protocol = 'http'
+                ip = self.get_item_when_condition_match('_param.cluster_local_address', horizon_enable)
+            return "{}://{}:{}".format(protocol, ip, port)
+
+    @property
+    def login_url(self):
+        if self.dashboard_url:
+            return "{}/auth/login/".format(self.dashboard_url)
+
+    @property
+    def disable_ssl_certificate_validation(self):
+        pass
\ No newline at end of file
diff --git a/_modules/runtest/tempest_sections/service_available.py b/_modules/runtest/tempest_sections/service_available.py
index abe4c1b..381eab8 100644
--- a/_modules/runtest/tempest_sections/service_available.py
+++ b/_modules/runtest/tempest_sections/service_available.py
@@ -14,6 +14,7 @@
         'nova',
         'sahara',
         'swift',
+        'horizon',
     ]
 
 
@@ -76,3 +77,6 @@
     def swift(self):
         return self._is_service_enabled('swift')
 
+    @property
+    def horizon(self):
+        return self._is_service_enabled('horizon')
\ No newline at end of file
