From aa4f31e382f72d34c042cfe521aa4db2c124b6a9 Mon Sep 17 00:00:00 2001
From: Haissam Kaj <haissam.kaj@gmail.com>
Date: Wed, 21 Nov 2018 15:50:26 +0100
Subject: [PATCH] add phase tag label join

---
 .../datadog_checks/base/checks/openmetrics/mixins.py        | 6 ++++++
 .../datadog_checks/kubernetes_state/kubernetes_state.py     | 4 ++++
 2 files changed, 10 insertions(+)

diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py
index 939eb0ad830c1..f6107d10b0d91 100644
--- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py
+++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py
@@ -300,6 +300,12 @@ def _store_labels(self, metric, scraper_config):
         if metric.name in scraper_config['label_joins']:
             matching_label = scraper_config['label_joins'][metric.name]['label_to_match']
             for sample in metric.samples:
+                # metadata-only metrics that are used for label joins are always equal to 1
+                # this is required for metrics where all combinations of a state are sent
+                # but only the active one is set to 1 (others are set to 0)
+                # example: kube_pod_status_phase in kube-state-metrics
+                if sample[self.SAMPLE_VALUE] != 1:
+                    continue
                 labels_list = []
                 matching_value = None
                 for label_name, label_value in iteritems(sample[self.SAMPLE_LABELS]):
diff --git a/kubernetes_state/datadog_checks/kubernetes_state/kubernetes_state.py b/kubernetes_state/datadog_checks/kubernetes_state/kubernetes_state.py
index dd0e59391551d..9a54de50fa533 100644
--- a/kubernetes_state/datadog_checks/kubernetes_state/kubernetes_state.py
+++ b/kubernetes_state/datadog_checks/kubernetes_state/kubernetes_state.py
@@ -248,6 +248,10 @@ def _create_kubernetes_state_prometheus_instance(self, instance):
                     'label_to_match': 'pod',
                     'labels_to_get': ['node']
                 },
+                'kube_pod_status_phase': {
+                    'label_to_match': 'pod',
+                    'labels_to_get': ['phase']
+                },
                 'kube_persistentvolume_info': {
                     'label_to_match': 'persistentvolume',
                     'labels_to_get': ['storageclass']