diff --git a/test_set/cvp-sanity/fixtures/base.py b/test_set/cvp-sanity/fixtures/base.py
index 60b8f28..0b83260 100644
--- a/test_set/cvp-sanity/fixtures/base.py
+++ b/test_set/cvp-sanity/fixtures/base.py
@@ -16,6 +16,50 @@
 
 
 @pytest.fixture(scope='session')
+def ctl_nodes_pillar(local_salt_client):
+    '''Return controller node pillars (OS or k8s ctls).
+       This will help to identify nodes to use for UI curl tests.
+       If no platform is installed (no OS or k8s) we need to skip
+       the test (product team use case).
+    '''
+    salt_output = local_salt_client.cmd(
+        'keystone:server',
+        'test.ping',
+        expr_form='pillar')
+    if salt_output:
+        return "keystone:server"
+    else:
+        salt_output = local_salt_client.cmd(
+            'etcd:server',
+            'test.ping',
+            expr_form='pillar')
+        return "etcd:server" if salt_output else pytest.skip("Neither \
+            Openstack nor k8s is found. Skipping test")
+
+
+@pytest.fixture(scope='session')
+def check_openstack(local_salt_client):
+    salt_output = local_salt_client.cmd(
+        'keystone:server',
+        'test.ping',
+        expr_form='pillar')
+    if not salt_output:
+        pytest.skip("Openstack not found or keystone:server pillar \
+          are not found on this environment.")
+
+
+@pytest.fixture(scope='session')
+def check_drivetrain(local_salt_client):
+    salt_output = local_salt_client.cmd(
+        'I@jenkins:client and not I@salt:master',
+        'test.ping',
+        expr_form='compound')
+    if not salt_output:
+        pytest.skip("Drivetrain service or jenkins:client pillar \
+          are not found on this environment.")
+
+
+@pytest.fixture(scope='session')
 def check_prometheus(local_salt_client):
     salt_output = local_salt_client.cmd(
         'prometheus:server',
diff --git a/test_set/cvp-sanity/tests/test_contrail.py b/test_set/cvp-sanity/tests/test_contrail.py
index 5e7e108..e5722bd 100644
--- a/test_set/cvp-sanity/tests/test_contrail.py
+++ b/test_set/cvp-sanity/tests/test_contrail.py
@@ -1,5 +1,6 @@
 import pytest
 import json
+import utils
 
 pytestmark = pytest.mark.usefixtures("contrail")
 
@@ -85,3 +86,18 @@
         'The length of vRouters {} differs' \
         ' from the length of compute nodes {}'.format(actual_vrouter_count,
                                                       len(cs.keys()))
+
+
+def test_public_ui_contrail(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
+    protocol = 'https'
+    port = '8143'
+    url = "{}://{}:{}".format(protocol, IP, port)
+    result = local_salt_client.cmd(
+        ctl_nodes_pillar,
+        'cmd.run',
+        ['curl -k {}/ 2>&1 | \
+         grep Contrail'.format(url)],
+        expr_form='pillar')
+    assert len(result[result.keys()[0]]) != 0, \
+        'Public Contrail UI is not reachable on {} from ctl nodes'.format(url)
diff --git a/test_set/cvp-sanity/tests/test_stacklight.py b/test_set/cvp-sanity/tests/test_stacklight.py
index bd6401d..c91a5f6 100644
--- a/test_set/cvp-sanity/tests/test_stacklight.py
+++ b/test_set/cvp-sanity/tests/test_stacklight.py
@@ -121,13 +121,13 @@
 
 
 @pytest.mark.usefixtures('check_prometheus')
-def test_prometheus_alert_count(local_salt_client):
+def test_prometheus_alert_count(local_salt_client, ctl_nodes_pillar):
     IP = utils.get_monitoring_ip('cluster_public_host')
     # keystone:server can return 3 nodes instead of 1
     # this will be fixed later
     # TODO
     nodes_info = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl -s http://{}:15010/alerts | grep icon-chevron-down | '
          'grep -v "0 active"'.format(IP)],
diff --git a/test_set/cvp-sanity/tests/test_ui_addresses.py b/test_set/cvp-sanity/tests/test_ui_addresses.py
index 1bb67ec..a2f0f2d 100644
--- a/test_set/cvp-sanity/tests/test_ui_addresses.py
+++ b/test_set/cvp-sanity/tests/test_ui_addresses.py
@@ -2,7 +2,8 @@
 import pytest
 
 
-def test_ui_horizon(local_salt_client):
+@pytest.mark.usefixtures('check_openstack')
+def test_ui_horizon(local_salt_client, ctl_nodes_pillar):
     salt_output = local_salt_client.cmd(
         'horizon:server',
         'pillar.get',
@@ -13,7 +14,7 @@
     IP = [salt_output[node] for node in salt_output
           if salt_output[node]]
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl --insecure https://{}/auth/login/ 2>&1 | \
          grep Login'.format(IP[0])],
@@ -23,14 +24,30 @@
         IP[0])
 
 
+@pytest.mark.usefixtures('check_openstack')
+def test_public_openstack(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
+    protocol = 'https'
+    port = '5000'
+    url = "{}://{}:{}/v3".format(protocol, IP, port)
+    result = local_salt_client.cmd(
+        ctl_nodes_pillar,
+        'cmd.run',
+        ['curl -k {}/ 2>&1 | \
+         grep stable'.format(url)],
+        expr_form='pillar')
+    assert len(result[result.keys()[0]]) != 0, \
+        'Public Openstack url is not reachable on {} from ctl nodes'.format(url)
+
+
 @pytest.mark.usefixtures('check_kibana')
-def test_internal_ui_kibana(local_salt_client):
+def test_internal_ui_kibana(local_salt_client, ctl_nodes_pillar):
     IP = utils.get_monitoring_ip('stacklight_log_address')
     protocol = 'http'
     port = '5601'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl {}/app/kibana 2>&1 | \
          grep loading'.format(url)],
@@ -41,13 +58,13 @@
 
 
 @pytest.mark.usefixtures('check_kibana')
-def test_public_ui_kibana(local_salt_client):
-    IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_kibana(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
     protocol = 'https'
     port = '5601'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl {}/app/kibana 2>&1 | \
          grep loading'.format(url)],
@@ -58,13 +75,13 @@
 
 
 @pytest.mark.usefixtures('check_prometheus')
-def test_internal_ui_prometheus(local_salt_client):
+def test_internal_ui_prometheus(local_salt_client, ctl_nodes_pillar):
     IP = utils.get_monitoring_ip('stacklight_monitor_address')
     protocol = 'http'
     port = '15010'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl {}/graph 2>&1 | \
          grep Prometheus'.format(url)],
@@ -75,13 +92,13 @@
 
 
 @pytest.mark.usefixtures('check_prometheus')
-def test_public_ui_prometheus(local_salt_client):
-    IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_prometheus(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
     protocol = 'https'
     port = '15010'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl {}/graph 2>&1 | \
          grep Prometheus'.format(url)],
@@ -92,13 +109,13 @@
 
 
 @pytest.mark.usefixtures('check_prometheus')
-def test_internal_ui_alert_manager(local_salt_client):
+def test_internal_ui_alert_manager(local_salt_client, ctl_nodes_pillar):
     IP = utils.get_monitoring_ip('stacklight_monitor_address')
     protocol = 'http'
     port = '15011'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl -s {}/ | grep Alertmanager'.format(url)],
         expr_form='pillar')
@@ -108,13 +125,13 @@
 
 
 @pytest.mark.usefixtures('check_prometheus')
-def test_public_ui_alert_manager(local_salt_client):
-    IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_alert_manager(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
     protocol = 'https'
     port = '15011'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl -s {}/ | grep Alertmanager'.format(url)],
         expr_form='pillar')
@@ -124,13 +141,13 @@
 
 
 @pytest.mark.usefixtures('check_grafana')
-def test_internal_ui_grafana(local_salt_client):
+def test_internal_ui_grafana(local_salt_client, ctl_nodes_pillar):
     IP = utils.get_monitoring_ip('stacklight_monitor_address')
     protocol = 'http'
     port = '15013'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl {}/login 2>&1 | grep Grafana'.format(url)],
         expr_form='pillar')
@@ -140,13 +157,13 @@
 
 
 @pytest.mark.usefixtures('check_grafana')
-def test_public_ui_grafana(local_salt_client):
-    IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_grafana(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
     protocol = 'https'
     port = '8084'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl {}/login 2>&1 | grep Grafana'.format(url)],
         expr_form='pillar')
@@ -155,13 +172,13 @@
 
 
 @pytest.mark.usefixtures('check_alerta')
-def test_internal_ui_alerta(local_salt_client):
+def test_internal_ui_alerta(local_salt_client, ctl_nodes_pillar):
     IP = utils.get_monitoring_ip('stacklight_monitor_address')
     protocol = 'http'
     port = '15017'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl {}/ 2>&1 | \
          grep Alerta'.format(url)],
@@ -171,16 +188,48 @@
 
 
 @pytest.mark.usefixtures('check_alerta')
-def test_public_ui_alerta(local_salt_client):
-    IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_alerta(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
     protocol = 'https'
     port = '15017'
     url = "{}://{}:{}".format(protocol, IP, port)
     result = local_salt_client.cmd(
-        'keystone:server',
+        ctl_nodes_pillar,
         'cmd.run',
         ['curl {}/ 2>&1 | \
          grep Alerta'.format(url)],
         expr_form='pillar')
     assert len(result[result.keys()[0]]) != 0, \
         'Public Alerta page is not reachable on {} from ctl nodes'.format(url)
+
+
+@pytest.mark.usefixtures('check_drivetrain')
+def test_public_ui_jenkins(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
+    protocol = 'https'
+    port = '8081'
+    url = "{}://{}:{}".format(protocol, IP, port)
+    result = local_salt_client.cmd(
+        ctl_nodes_pillar,
+        'cmd.run',
+        ['curl -k {}/ 2>&1 | \
+         grep Authentication'.format(url)],
+        expr_form='pillar')
+    assert len(result[result.keys()[0]]) != 0, \
+        'Public Jenkins page is not reachable on {} from ctl nodes'.format(url)
+
+
+@pytest.mark.usefixtures('check_drivetrain')
+def test_public_ui_gerrit(local_salt_client, ctl_nodes_pillar):
+    IP = utils.get_monitoring_ip('cluster_public_host')
+    protocol = 'https'
+    port = '8070'
+    url = "{}://{}:{}".format(protocol, IP, port)
+    result = local_salt_client.cmd(
+        ctl_nodes_pillar,
+        'cmd.run',
+        ['curl -k {}/ 2>&1 | \
+         grep "Gerrit Code Review"'.format(url)],
+        expr_form='pillar')
+    assert len(result[result.keys()[0]]) != 0, \
+        'Public Gerrit page is not reachable on {} from ctl nodes'.format(url)
