Add proper skip mechanism for Stacklight component

Change-Id: Id732f8b121e518e0ea7716c4072fb95b5223b3e5
Related-PROD: PROD-22000
diff --git a/cvp_checks/tests/test_stacklight.py b/cvp_checks/tests/test_stacklight.py
index 80917f1..81127d4 100644
--- a/cvp_checks/tests/test_stacklight.py
+++ b/cvp_checks/tests/test_stacklight.py
@@ -5,6 +5,7 @@
 from cvp_checks import utils
 
 
+@pytest.mark.usefixtures('check_kibana')
 def test_elasticsearch_cluster(local_salt_client):
     salt_output = local_salt_client.cmd(
         'kibana:server',
@@ -12,10 +13,6 @@
         ['_param:haproxy_elasticsearch_bind_host'],
         expr_form='pillar')
 
-    if not salt_output:
-        pytest.skip("Kibana service or kibana:server pillar \
-        are not found on this environment.")
-
     proxies = {"http": None, "https": None}
     for node in salt_output.keys():
         IP = salt_output[node]
@@ -41,6 +38,7 @@
             json.dumps(resp, indent=4))
 
 
+@pytest.mark.usefixtures('check_kibana')
 def test_elasticsearch_node_count(local_salt_client):
     now = datetime.datetime.now()
     today = now.strftime("%Y.%m.%d")
@@ -51,10 +49,6 @@
         ['_param:haproxy_elasticsearch_bind_host'],
         expr_form='pillar')
 
-    if not salt_output:
-        pytest.skip("Kibana service or kibana:server pillar \
-        are not found on this environment.")
-
     IP = salt_output.values()[0]
     proxies = {"http": None, "https": None}
     resp = json.loads(requests.post('http://{0}:9200/log-{1}/_search?pretty'.
@@ -83,16 +77,17 @@
 
 
 def test_stacklight_services_replicas(local_salt_client):
+    # TODO
+    # change to docker:swarm:role:master ?
     salt_output = local_salt_client.cmd(
-        'docker:client:stack:monitoring',
+        'I@docker:client:stack:monitoring and I@prometheus:server',
         'cmd.run',
         ['docker service ls'],
-        expr_form='pillar')
+        expr_form='compound')
 
     if not salt_output:
-        pytest.skip("Docker replicas or \
-        docker:client:stack:monitoring pillar \
-        are not found on this environment.")
+        pytest.skip("docker:client:stack:monitoring or \
+        prometheus:server pillars are not found on this environment.")
 
     wrong_items = []
     for line in salt_output[salt_output.keys()[0]].split('\n'):
@@ -104,6 +99,7 @@
               {}'''.format(json.dumps(wrong_items, indent=4))
 
 
+@pytest.mark.usefixtures('check_prometheus')
 def test_prometheus_alert_count(local_salt_client):
     IP = utils.get_monitoring_ip('cluster_public_host')
     # keystone:server can return 3 nodes instead of 1
@@ -116,10 +112,6 @@
          'grep -v "0 active"'.format(IP)],
         expr_form='pillar')
 
-    if not nodes_info:
-        pytest.skip("Prometheus server url or keystone:server \
-        pillar are not found on this environment.")
-
     result = nodes_info[nodes_info.keys()[0]].replace('</td>', '').replace(
         '<td><i class="icon-chevron-down"></i> <b>', '').replace('</b>', '')
     assert result == '', 'AlertManager page has some alerts! {}'.format(
@@ -128,14 +120,14 @@
 
 def test_stacklight_containers_status(local_salt_client):
     salt_output = local_salt_client.cmd(
-        'docker:swarm:role:master',
+        'I@docker:swarm:role:master and I@prometheus:server',
         'cmd.run',
         ['docker service ps $(docker stack services -q monitoring)'],
-        expr_form='pillar')
+        expr_form='compound')
 
     if not salt_output:
-        pytest.skip("Docker or docker:swarm:role:master \
-        pillar are not found on this environment.")
+        pytest.skip("docker:swarm:role:master or prometheus:server \
+        pillars are not found on this environment.")
 
     result = {}
     # for old reclass models, docker:swarm:role:master can return
diff --git a/cvp_checks/tests/test_ui_addresses.py b/cvp_checks/tests/test_ui_addresses.py
index 69c0f6a..ee02232 100644
--- a/cvp_checks/tests/test_ui_addresses.py
+++ b/cvp_checks/tests/test_ui_addresses.py
@@ -21,6 +21,7 @@
         IP[0])
 
 
+@pytest.mark.usefixtures('check_kibana')
 def test_ui_kibana(local_salt_client):
     IP = utils.get_monitoring_ip('stacklight_log_address')
     result = local_salt_client.cmd(
@@ -33,6 +34,7 @@
         'Kibana login page is not reachable on {} from ctl nodes'.format(IP)
 
 
+@pytest.mark.usefixtures('check_prometheus')
 def test_ui_prometheus(local_salt_client):
     IP = utils.get_monitoring_ip('stacklight_monitor_address')
     result = local_salt_client.cmd(
@@ -45,6 +47,7 @@
         'Prometheus page is not reachable on {} from ctl nodes'.format(IP)
 
 
+@pytest.mark.usefixtures('check_prometheus')
 def test_ui_alert_manager(local_salt_client):
     IP = utils.get_monitoring_ip('stacklight_monitor_address')
     result = local_salt_client.cmd(
@@ -56,6 +59,7 @@
         'AlertManager page is not reachable on {} from ctl nodes'.format(IP)
 
 
+@pytest.mark.usefixtures('check_grafana')
 def test_ui_grafana(local_salt_client):
     IP = utils.get_monitoring_ip('cluster_public_host')
     result = local_salt_client.cmd(