From ade451bf04bac77b54fbb7eb1a8bd8d4a64abafc Mon Sep 17 00:00:00 2001
From: paulfantom <pawel@krupa.net.pl>
Date: Wed, 20 Oct 2021 19:24:39 +0200
Subject: [PATCH] jsonnet: refactor grafana component to include new
 kubernetes-grafana library

---
 .../components/grafana.libsonnet              | 103 +++++-------------
 jsonnet/kube-prometheus/main.libsonnet        |   2 +-
 2 files changed, 27 insertions(+), 78 deletions(-)

diff --git a/jsonnet/kube-prometheus/components/grafana.libsonnet b/jsonnet/kube-prometheus/components/grafana.libsonnet
index 9f18e4b0..e6879d4a 100644
--- a/jsonnet/kube-prometheus/components/grafana.libsonnet
+++ b/jsonnet/kube-prometheus/components/grafana.libsonnet
@@ -1,3 +1,5 @@
+local kubernetesGrafana = import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet';
+
 local defaults = {
   local defaults = self,
   name: 'grafana',
@@ -20,88 +22,35 @@ local defaults = {
     if !std.setMember(labelName, ['app.kubernetes.io/version'])
   },
   prometheusName: error 'must provide prometheus name',
-  dashboards: {},
-  // TODO(paulfantom): expose those to have a stable API. After kubernetes-grafana refactor those could probably be removed.
-  rawDashboards: {},
-  folderDashboards: {},
-  containers: [],
-  datasources: [],
-  config: {},
-  ldap: null,
-  plugins: [],
-  env: [],
 };
 
-function(params) {
-  local g = self,
-  _config:: defaults + params,
+function(params)
+  local config = defaults + params;
   // Safety check
-  assert std.isObject(g._config.resources),
+  assert std.isObject(config.resources);
 
-  local glib = (import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') + {
-    _config+:: {
-      namespace: g._config.namespace,
-      versions+:: {
-        grafana: g._config.version,
-      },
-      imageRepos+:: {
-        grafana: std.split(g._config.image, ':')[0],
-      },
-      prometheus+:: {
-        name: g._config.prometheusName,
-      },
-      grafana+:: {
-        labels: g._config.commonLabels,
-        dashboards: g._config.dashboards,
-        resources: g._config.resources,
-        rawDashboards: g._config.rawDashboards,
-        folderDashboards: g._config.folderDashboards,
-        containers: g._config.containers,
-        config+: g._config.config,
-        ldap: g._config.ldap,
-        plugins+: g._config.plugins,
-        env: g._config.env,
-      } + (
-        // Conditionally overwrite default setting.
-        if std.length(g._config.datasources) > 0 then
-          { datasources: g._config.datasources }
-        else {}
-      ),
-    },
-  },
+  kubernetesGrafana(config) {
+    local g = self,
+    _config+:: config,
 
-  config: glib.grafana.config,
-  service: glib.grafana.service,
-  serviceAccount: glib.grafana.serviceAccount,
-  deployment: glib.grafana.deployment,
-  dashboardDatasources: glib.grafana.dashboardDatasources,
-  dashboardSources: glib.grafana.dashboardSources,
-
-  dashboardDefinitions: if std.length(g._config.dashboards) > 0 ||
-                           std.length(g._config.rawDashboards) > 0 ||
-                           std.length(g._config.folderDashboards) > 0 then {
-    apiVersion: 'v1',
-    kind: 'ConfigMapList',
-    items: glib.grafana.dashboardDefinitions,
-  },
-  serviceMonitor: {
-    apiVersion: 'monitoring.coreos.com/v1',
-    kind: 'ServiceMonitor',
-    metadata: {
-      name: 'grafana',
-      namespace: g._config.namespace,
-      labels: g._config.commonLabels,
-    },
-    spec: {
-      selector: {
-        matchLabels: {
-          'app.kubernetes.io/name': 'grafana',
+    serviceMonitor: {
+      apiVersion: 'monitoring.coreos.com/v1',
+      kind: 'ServiceMonitor',
+      metadata: {
+        name: 'grafana',
+        namespace: g._config.namespace,
+        labels: g._config.commonLabels,
+      },
+      spec: {
+        selector: {
+          matchLabels: {
+            'app.kubernetes.io/name': 'grafana',
+          },
         },
+        endpoints: [{
+          port: 'http',
+          interval: '15s',
+        }],
       },
-      endpoints: [{
-        port: 'http',
-        interval: '15s',
-      }],
     },
-  },
-}
+  }
diff --git a/jsonnet/kube-prometheus/main.libsonnet b/jsonnet/kube-prometheus/main.libsonnet
index 877619b2..cccc7933 100644
--- a/jsonnet/kube-prometheus/main.libsonnet
+++ b/jsonnet/kube-prometheus/main.libsonnet
@@ -39,7 +39,7 @@ local utils = import './lib/utils.libsonnet';
       images: {
         alertmanager: 'quay.io/prometheus/alertmanager:v' + $.values.common.versions.alertmanager,
         blackboxExporter: 'quay.io/prometheus/blackbox-exporter:v' + $.values.common.versions.blackboxExporter,
-        grafana: 'grafana/grafana:v' + $.values.common.versions.grafana,
+        grafana: 'grafana/grafana:' + $.values.common.versions.grafana,
         kubeStateMetrics: 'k8s.gcr.io/kube-state-metrics/kube-state-metrics:v' + $.values.common.versions.kubeStateMetrics,
         nodeExporter: 'quay.io/prometheus/node-exporter:v' + $.values.common.versions.nodeExporter,
         prometheus: 'quay.io/prometheus/prometheus:v' + $.values.common.versions.prometheus,
-- 
GitLab