Skip to content

Commit 46f25d3

Browse files
committed
Moving grafana-dashbaord configmap to dashboards directory with specific json file. Adding create and delete configmap function to combine prombench.json and node-metrics.json into an single configmap
Signed-off-by: Raj Babu Das <[email protected]>
1 parent 1d0d20b commit 46f25d3

File tree

5 files changed

+5643
-5558
lines changed

5 files changed

+5643
-5558
lines changed

pkg/provider/k8s/k8s.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,13 @@ func (c *K8s) DeploymentsParse(*kingpin.ParseContext) error {
145145
// ResourceApply applies k8s objects.
146146
// The input is a slice of structs containing the filename and the slice of k8s objects present in the file.
147147
func (c *K8s) ResourceApply(deployments []Resource) error {
148-
149148
var err error
149+
150+
err = provider.CreateGrafanaDashboardsConfigMap()
151+
if err != nil {
152+
return fmt.Errorf("error applying grafana dashboards config err:%v", err)
153+
}
154+
150155
for _, deployment := range deployments {
151156
for _, resource := range deployment.Objects {
152157
switch kind := strings.ToLower(resource.GetObjectKind().GroupVersionKind().Kind); kind {
@@ -190,6 +195,7 @@ func (c *K8s) ResourceApply(deployments []Resource) error {
190195
}
191196
}
192197
}
198+
193199
return nil
194200
}
195201

@@ -198,6 +204,12 @@ func (c *K8s) ResourceApply(deployments []Resource) error {
198204
func (c *K8s) ResourceDelete(deployments []Resource) error {
199205

200206
var err error
207+
208+
err = provider.DeleteGrafanaDashboardsConfigMap()
209+
if err != nil {
210+
return fmt.Errorf("error deleting grafana dashboards config err:%v", err)
211+
}
212+
201213
for _, deployment := range deployments {
202214
for _, resource := range deployment.Objects {
203215
switch kind := strings.ToLower(resource.GetObjectKind().GroupVersionKind().Kind); kind {

pkg/provider/provider.go

+80
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,14 @@ package provider
1515

1616
import (
1717
"bytes"
18+
"context"
19+
"flag"
1820
"fmt"
1921
"io/ioutil"
22+
corev1 "k8s.io/api/core/v1"
23+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24+
"k8s.io/client-go/kubernetes"
25+
"k8s.io/client-go/tools/clientcmd"
2026
"log"
2127
"os"
2228
"path/filepath"
@@ -39,6 +45,8 @@ type DeploymentResource struct {
3945
FlagDeploymentVars map[string]string
4046
// Default DeploymentVars.
4147
DefaultDeploymentVars map[string]string
48+
// Dashboards
49+
Dashboards map[string]string
4250
}
4351

4452
// NewDeploymentResource returns DeploymentResource with default values.
@@ -138,3 +146,75 @@ func MergeDeploymentVars(ms ...map[string]string) map[string]string {
138146
}
139147
return res
140148
}
149+
150+
func getK8sClientSet() (*kubernetes.Clientset, error) {
151+
kubeconfig := flag.String("kubeconfig", "/home/raj/.kube/config", "absolute path to the kubeconfig file")
152+
153+
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
154+
if err != nil {
155+
return nil, err
156+
}
157+
158+
clientset, err := kubernetes.NewForConfig(config)
159+
if err != nil {
160+
return nil, err
161+
}
162+
return clientset, nil
163+
}
164+
165+
func CreateGrafanaDashboardsConfigMap() error {
166+
167+
clientset, err := getK8sClientSet()
168+
if err != nil {
169+
return err
170+
}
171+
172+
NodeMetrics, err := ioutil.ReadFile("manifests/dashboards/node-metrics.json")
173+
if err != nil {
174+
return nil
175+
}
176+
PromBench, err := ioutil.ReadFile("manifests/dashboards/prombench.json")
177+
if err != nil {
178+
return nil
179+
}
180+
181+
ConfigMapData := map[string]string{
182+
"node-metrics.json": string(NodeMetrics),
183+
"prombench.json": string(PromBench),
184+
}
185+
186+
newConfigMap := corev1.ConfigMap{
187+
TypeMeta: metav1.TypeMeta{
188+
Kind: "ConfigMap",
189+
APIVersion: "v1",
190+
},
191+
ObjectMeta: metav1.ObjectMeta{
192+
Name: "grafana-dashboards",
193+
},
194+
Data: ConfigMapData,
195+
}
196+
197+
_, err = clientset.CoreV1().ConfigMaps("default").Create(context.TODO(), &newConfigMap, metav1.CreateOptions{})
198+
if err != nil {
199+
return nil
200+
}
201+
202+
log.Printf("resource created - kind: ConfigMap, name: grafana-dashboards")
203+
return nil
204+
}
205+
206+
func DeleteGrafanaDashboardsConfigMap() error {
207+
208+
clientset, err := getK8sClientSet()
209+
if err != nil {
210+
return err
211+
}
212+
213+
err = clientset.CoreV1().ConfigMaps("default").Delete(context.TODO(), "grafana-dashboards", metav1.DeleteOptions{})
214+
if err != nil {
215+
return err
216+
}
217+
218+
log.Printf("resource created - kind: ConfigMap, name: grafana-dashboards")
219+
return nil
220+
}

0 commit comments

Comments
 (0)