From 5624c5a9a8ac90f985a7624b1d98f93bd0eb1d73 Mon Sep 17 00:00:00 2001
From: paulfantom <pawel@krupa.net.pl>
Date: Fri, 15 Jan 2021 09:26:57 +0100
Subject: [PATCH] jsonnet: refactor the rest of mixins and grafana inclusion

Signed-off-by: paulfantom <pawel@krupa.net.pl>
---
 example.jsonnet                               |  2 +-
 .../kube-prometheus/grafana/grafana.libsonnet |  2 +-
 .../kube-prometheus/kube-prometheus.libsonnet |  9 ++++++--
 .../kube-prometheus/mixin/custom.libsonnet    |  6 ++---
 .../mixin/kubernetes.libsonnet                | 22 +++++++++----------
 5 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/example.jsonnet b/example.jsonnet
index 94a40b70..8cc37f9c 100644
--- a/example.jsonnet
+++ b/example.jsonnet
@@ -14,7 +14,7 @@ local kp =
     },
   };
 
-{ ['setup/0namespace-namespace']: kp.kubePrometheus.namespace } +
+{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +
 {
   ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]
   for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))
diff --git a/jsonnet/kube-prometheus/grafana/grafana.libsonnet b/jsonnet/kube-prometheus/grafana/grafana.libsonnet
index d20c0b70..4dfe516c 100644
--- a/jsonnet/kube-prometheus/grafana/grafana.libsonnet
+++ b/jsonnet/kube-prometheus/grafana/grafana.libsonnet
@@ -60,7 +60,7 @@ function(params) {
   dashboardDefinitions: if std.length(g.config.dashboards) > 0 then {
     apiVersion: 'v1',
     kind: 'ConfigMapList',
-    items: g.dashboardDefinitions,
+    items: glib.grafana.dashboardDefinitions,
   },
   serviceMonitor: {
     apiVersion: 'monitoring.coreos.com/v1',
diff --git a/jsonnet/kube-prometheus/kube-prometheus.libsonnet b/jsonnet/kube-prometheus/kube-prometheus.libsonnet
index 709cbfe9..fbf5963d 100644
--- a/jsonnet/kube-prometheus/kube-prometheus.libsonnet
+++ b/jsonnet/kube-prometheus/kube-prometheus.libsonnet
@@ -11,6 +11,7 @@ local prometheus = import './prometheus/prometheus.libsonnet';
 local prometheusOperator = import './prometheus-operator/prometheus-operator.libsonnet';
 
 {
+  local all = self,
   alertmanager: alertmanager({
     name: $._config.alertmanagerName,
     namespace: $._config.namespace,
@@ -25,12 +26,16 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
     version: '0.18.0',
     image: 'quay.io/prometheus/blackbox-exporter:v0.18.0',
   }),
+  // TODO(paulfantom) This should be done by iterating over all objects and looking for object.mixin.grafanaDashboards
+  local allDashboards = $.nodeExporter.mixin.grafanaDashboards +
+                        $.prometheus.mixin.grafanaDashboards +
+                        $.kubernetesMixin.mixin.grafanaDashboards,
   grafana: grafana({
     namespace: $._config.namespace,
     version: '7.3.5',
     image: 'grafana/grafana:v7.3.7',
-    dashboards: {},
     prometheusName: $._config.prometheusName,
+    dashboards: allDashboards,
   }),
   kubeStateMetrics: kubeStateMetrics({
     namespace: $._config.namespace,
@@ -106,4 +111,4 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
       prometheus: $._config.prometheusName,
     },
   },
-}
+}
\ No newline at end of file
diff --git a/jsonnet/kube-prometheus/mixin/custom.libsonnet b/jsonnet/kube-prometheus/mixin/custom.libsonnet
index d1c0b086..278ddc76 100644
--- a/jsonnet/kube-prometheus/mixin/custom.libsonnet
+++ b/jsonnet/kube-prometheus/mixin/custom.libsonnet
@@ -9,9 +9,9 @@ local defaults = {
   mixin: {
     ruleLabels: {},
     _config: {
-        nodeExporterSelector: 'job="node-exporter"',
-        hostNetworkInterfaceSelector: 'device!~"veth.+"',
-      },
+      nodeExporterSelector: 'job="node-exporter"',
+      hostNetworkInterfaceSelector: 'device!~"veth.+"',
+    },
   },
 };
 
diff --git a/jsonnet/kube-prometheus/mixin/kubernetes.libsonnet b/jsonnet/kube-prometheus/mixin/kubernetes.libsonnet
index b3bc563e..f399a529 100644
--- a/jsonnet/kube-prometheus/mixin/kubernetes.libsonnet
+++ b/jsonnet/kube-prometheus/mixin/kubernetes.libsonnet
@@ -9,17 +9,17 @@ local defaults = {
   mixin: {
     ruleLabels: {},
     _config: {
-        cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"',
-        kubeletSelector: 'job="kubelet", metrics_path="/metrics"',
-        kubeStateMetricsSelector: 'job="kube-state-metrics"',
-        nodeExporterSelector: 'job="node-exporter"',
-        kubeSchedulerSelector: 'job="kube-scheduler"',
-        kubeControllerManagerSelector: 'job="kube-controller-manager"',
-        kubeApiserverSelector: 'job="apiserver"',
-        podLabel: 'pod',
-        runbookURLPattern: 'https://github.com/prometheus-operator/kube-prometheus/wiki/%s',
-        diskDeviceSelector: 'device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"',
-        hostNetworkInterfaceSelector: 'device!~"veth.+"',
+      cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"',
+      kubeletSelector: 'job="kubelet", metrics_path="/metrics"',
+      kubeStateMetricsSelector: 'job="kube-state-metrics"',
+      nodeExporterSelector: 'job="node-exporter"',
+      kubeSchedulerSelector: 'job="kube-scheduler"',
+      kubeControllerManagerSelector: 'job="kube-controller-manager"',
+      kubeApiserverSelector: 'job="apiserver"',
+      podLabel: 'pod',
+      runbookURLPattern: 'https://github.com/prometheus-operator/kube-prometheus/wiki/%s',
+      diskDeviceSelector: 'device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"',
+      hostNetworkInterfaceSelector: 'device!~"veth.+"',
     },
   },
 };
-- 
GitLab