Skip to content

Commit 704adac

Browse files
committed
chore: Migrate force_delete_folder
1 parent d641c5a commit 704adac

File tree

2 files changed

+134
-130
lines changed

2 files changed

+134
-130
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
package controllers
2+
3+
import (
4+
"time"
5+
6+
"github.com/grafana/grafana-openapi-client-go/client/folders"
7+
"github.com/grafana/grafana-operator/v5/api/v1beta1"
8+
grafanaclient "github.com/grafana/grafana-operator/v5/controllers/client"
9+
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
12+
. "github.com/onsi/ginkgo/v2"
13+
. "github.com/onsi/gomega"
14+
)
15+
16+
var _ = Describe("Successfully delete GrafanaFolder with GrafanaAlertRuleGroup referencing it", func() {
17+
f := &v1beta1.GrafanaFolder{
18+
ObjectMeta: metav1.ObjectMeta{
19+
Namespace: "default",
20+
Name: "force-delete",
21+
},
22+
Spec: v1beta1.GrafanaFolderSpec{
23+
GrafanaCommonSpec: commonSpecSynchronized,
24+
CustomUID: "force-delete",
25+
},
26+
}
27+
noDataState := "NoData"
28+
arg := &v1beta1.GrafanaAlertRuleGroup{
29+
ObjectMeta: metav1.ObjectMeta{
30+
Namespace: "default",
31+
Name: "force-delete",
32+
},
33+
Spec: v1beta1.GrafanaAlertRuleGroupSpec{
34+
GrafanaCommonSpec: commonSpecSynchronized,
35+
FolderRef: f.Name,
36+
Interval: metav1.Duration{Duration: 60 * time.Second},
37+
Rules: []v1beta1.AlertRule{
38+
{
39+
Title: "TestRule",
40+
UID: "akdj-wonvo",
41+
Condition: "A",
42+
Data: []*v1beta1.AlertQuery{
43+
{
44+
RefID: "A",
45+
RelativeTimeRange: nil,
46+
DatasourceUID: "__expr__",
47+
Model: &v1.JSON{Raw: []byte(`{
48+
"conditions": [
49+
{
50+
"evaluator": {
51+
"params": [
52+
0,
53+
0
54+
],
55+
"type": "gt"
56+
},
57+
"operator": {
58+
"type": "and"
59+
},
60+
"query": {
61+
"params": []
62+
},
63+
"reducer": {
64+
"params": [],
65+
"type": "avg"
66+
},
67+
"type": "query"
68+
}
69+
],
70+
"datasource": {
71+
"name": "Expression",
72+
"type": "__expr__",
73+
"uid": "__expr__"
74+
},
75+
"expression": "1 > 0",
76+
"hide": false,
77+
"intervalMs": 1000,
78+
"maxDataPoints": 100,
79+
"refId": "B",
80+
"type": "math"
81+
}`)},
82+
},
83+
},
84+
NoDataState: &noDataState,
85+
ExecErrState: "Error",
86+
For: &metav1.Duration{Duration: 60 * time.Second},
87+
Annotations: map[string]string{},
88+
Labels: map[string]string{},
89+
IsPaused: true,
90+
},
91+
},
92+
},
93+
}
94+
95+
It("Creates folder and rule group, deletes folder, checks folder got deleted", func() {
96+
Expect(k8sClient.Create(testCtx, f)).To(Succeed())
97+
Expect(k8sClient.Create(testCtx, arg)).To(Succeed())
98+
99+
By("Reconcile Folder")
100+
req := requestFromMeta(f.ObjectMeta)
101+
fr := GrafanaFolderReconciler{Client: k8sClient, Scheme: k8sClient.Scheme()}
102+
_, err := fr.Reconcile(testCtx, req)
103+
Expect(err).ToNot(HaveOccurred())
104+
105+
By("Reconcile AlertRuleGroup")
106+
req = requestFromMeta(arg.ObjectMeta)
107+
argr := GrafanaAlertRuleGroupReconciler{Client: k8sClient, Scheme: k8sClient.Scheme()}
108+
_, err = argr.Reconcile(testCtx, req)
109+
Expect(err).ToNot(HaveOccurred())
110+
111+
cl, err := grafanaclient.NewGeneratedGrafanaClient(testCtx, k8sClient, externalGrafanaCr)
112+
Expect(err).ToNot(HaveOccurred())
113+
114+
By("Verifying folder and alert rule group exist")
115+
_, err = cl.Folders.GetFolderByUID(f.Spec.CustomUID) // nolint:errcheck
116+
Expect(err).NotTo(HaveOccurred(), "Folder should exist in Grafana")
117+
118+
_, err = cl.Provisioning.GetAlertRuleGroup(arg.GroupName(), f.Spec.CustomUID) // nolint:errcheck
119+
Expect(err).NotTo(HaveOccurred(), "AlertRuleGroup should exist in Grafana")
120+
121+
By("Deleting folder")
122+
Expect(k8sClient.Delete(testCtx, f)).Should(Succeed())
123+
124+
_, err = fr.Reconcile(testCtx, req)
125+
Expect(err).ToNot(HaveOccurred())
126+
127+
By("Verifying folder is missing")
128+
_, err = cl.Folders.GetFolderByUID(f.Spec.CustomUID) // nolint:errcheck
129+
Expect(err).To(HaveOccurred())
130+
131+
var notFound *folders.GetFolderByUIDNotFound
132+
Expect(err).Should(BeAssignableToTypeOf(notFound), "Folder should have been removed from Grafana")
133+
})
134+
})

tests/e2e/force_delete_folder/chainsaw-test.yaml

Lines changed: 0 additions & 130 deletions
This file was deleted.

0 commit comments

Comments
 (0)