Skip to content

Commit 4dd4eec

Browse files
authored
Merge pull request #1661 from grafana/fix/add-common-resource-labels
fix: add common labels to created resources
2 parents 97d612a + 749cbeb commit 4dd4eec

11 files changed

+44
-21
lines changed

controllers/model/dashboard_resources.go

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ func GetPluginsConfigMap(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme) *v1
1515
ObjectMeta: metav1.ObjectMeta{
1616
Name: fmt.Sprintf("%s-plugins", cr.Name),
1717
Namespace: cr.Namespace,
18+
Labels: CommonLabels,
1819
},
1920
}
2021
controllerutil.SetControllerReference(cr, config, scheme) //nolint:errcheck

controllers/model/grafana_resources.go

+12
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@ import (
1313
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1414
)
1515

16+
var CommonLabels = map[string]string{
17+
"app.kubernetes.io/managed-by": "grafana-operator",
18+
}
19+
1620
func GetGrafanaConfigMap(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme) *v1.ConfigMap {
1721
config := &v1.ConfigMap{
1822
ObjectMeta: metav1.ObjectMeta{
1923
Name: fmt.Sprintf("%s-ini", cr.Name),
2024
Namespace: cr.Namespace,
25+
Labels: CommonLabels,
2126
},
2227
}
2328
controllerutil.SetControllerReference(cr, config, scheme) //nolint:errcheck
@@ -29,6 +34,7 @@ func GetGrafanaAdminSecret(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme) *
2934
ObjectMeta: metav1.ObjectMeta{
3035
Name: fmt.Sprintf("%s-admin-credentials", cr.Name),
3136
Namespace: cr.Namespace,
37+
Labels: CommonLabels,
3238
},
3339
}
3440

@@ -43,6 +49,7 @@ func GetGrafanaDataPVC(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme) *v1.P
4349
ObjectMeta: metav1.ObjectMeta{
4450
Name: fmt.Sprintf("%s-pvc", cr.Name),
4551
Namespace: cr.Namespace,
52+
Labels: CommonLabels,
4653
},
4754
}
4855
// using OwnerReference specifically here to allow admins to change storage variables without the operator complaining
@@ -55,6 +62,7 @@ func GetGrafanaServiceAccount(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme
5562
ObjectMeta: metav1.ObjectMeta{
5663
Name: fmt.Sprintf("%s-sa", cr.Name),
5764
Namespace: cr.Namespace,
65+
Labels: CommonLabels,
5866
},
5967
}
6068
controllerutil.SetControllerReference(cr, sa, scheme) //nolint:errcheck
@@ -66,6 +74,7 @@ func GetGrafanaService(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme) *v1.S
6674
ObjectMeta: metav1.ObjectMeta{
6775
Name: fmt.Sprintf("%s-service", cr.Name),
6876
Namespace: cr.Namespace,
77+
Labels: CommonLabels,
6978
},
7079
}
7180
controllerutil.SetControllerReference(cr, service, scheme) //nolint:errcheck
@@ -77,6 +86,7 @@ func GetGrafanaIngress(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme) *v12.
7786
ObjectMeta: metav1.ObjectMeta{
7887
Name: fmt.Sprintf("%s-ingress", cr.Name),
7988
Namespace: cr.Namespace,
89+
Labels: CommonLabels,
8090
},
8191
}
8292
controllerutil.SetControllerReference(cr, ingress, scheme) //nolint:errcheck
@@ -88,6 +98,7 @@ func GetGrafanaRoute(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme) *routev
8898
ObjectMeta: metav1.ObjectMeta{
8999
Name: fmt.Sprintf("%s-route", cr.Name),
90100
Namespace: cr.Namespace,
101+
Labels: CommonLabels,
91102
},
92103
}
93104
controllerutil.SetControllerReference(cr, route, scheme) //nolint:errcheck
@@ -99,6 +110,7 @@ func GetGrafanaDeployment(cr *grafanav1beta1.Grafana, scheme *runtime.Scheme) *v
99110
ObjectMeta: metav1.ObjectMeta{
100111
Name: fmt.Sprintf("%s-deployment", cr.Name),
101112
Namespace: cr.Namespace,
113+
Labels: CommonLabels,
102114
},
103115
}
104116
if scheme != nil {

controllers/model/utils.go

+15
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package model
33
import (
44
"crypto/rand"
55
"encoding/base64"
6+
7+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
68
)
79

810
func generateRandomBytes(n int) []byte {
@@ -33,3 +35,16 @@ func MergeAnnotations(requested map[string]string, existing map[string]string) m
3335
func BoolPtr(b bool) *bool { return &b }
3436

3537
func IntPtr(b int64) *int64 { return &b }
38+
39+
func SetCommonLabels(obj metav1.ObjectMetaAccessor) {
40+
meta := obj.GetObjectMeta()
41+
labels := meta.GetLabels()
42+
if labels == nil {
43+
labels = CommonLabels
44+
} else {
45+
for k, v := range CommonLabels {
46+
labels[k] = v
47+
}
48+
}
49+
meta.SetLabels(labels)
50+
}

controllers/reconcilers/grafana/admin_secret_reconciler.go

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func NewAdminSecretReconciler(client client.Client) reconcilers.OperatorGrafanaR
2727
func (r *AdminSecretReconciler) Reconcile(ctx context.Context, cr *v1beta1.Grafana, status *v1beta1.GrafanaStatus, vars *v1beta1.OperatorReconcileVars, scheme *runtime.Scheme) (v1beta1.OperatorStageStatus, error) {
2828
secret := model.GetGrafanaAdminSecret(cr, scheme)
2929
_, err := controllerutil.CreateOrUpdate(ctx, r.client, secret, func() error {
30+
model.SetCommonLabels(secret)
3031
secret.Data = getData(cr, secret)
3132
return nil
3233
})

controllers/reconcilers/grafana/config_reconciler.go

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ func (r *ConfigReconciler) Reconcile(ctx context.Context, cr *v1beta1.Grafana, s
3131

3232
configMap := model.GetGrafanaConfigMap(cr, scheme)
3333
_, err := controllerutil.CreateOrUpdate(ctx, r.client, configMap, func() error {
34+
model.SetCommonLabels(configMap)
3435
if configMap.Data == nil {
3536
configMap.Data = make(map[string]string)
3637
}

controllers/reconcilers/grafana/deployment_reconciler.go

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func (r *DeploymentReconciler) Reconcile(ctx context.Context, cr *v1beta1.Grafan
5252

5353
deployment := model.GetGrafanaDeployment(cr, scheme)
5454
_, err := controllerutil.CreateOrUpdate(ctx, r.client, deployment, func() error {
55+
model.SetCommonLabels(deployment)
5556
deployment.Spec = getDeploymentSpec(cr, deployment.Name, scheme, vars, openshiftPlatform)
5657
err := v1beta1.Merge(deployment, cr.Spec.Deployment)
5758
return err

controllers/reconcilers/grafana/grafana_service_reconciler.go

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ func (r *ServiceReconciler) Reconcile(ctx context.Context, cr *v1beta1.Grafana,
3333
service := model.GetGrafanaService(cr, scheme)
3434

3535
_, err := controllerutil.CreateOrUpdate(ctx, r.client, service, func() error {
36+
model.SetCommonLabels(service)
3637
service.Spec = v1.ServiceSpec{
3738
Ports: getServicePorts(cr),
3839
Selector: map[string]string{

controllers/reconcilers/grafana/ingress_reconciler.go

+2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func (r *IngressReconciler) reconcileIngress(ctx context.Context, cr *v1beta1.Gr
5252
ingress := model.GetGrafanaIngress(cr, scheme)
5353

5454
_, err := controllerutil.CreateOrUpdate(ctx, r.client, ingress, func() error {
55+
model.SetCommonLabels(ingress)
5556
ingress.Spec = getIngressSpec(cr, scheme)
5657
return v1beta1.Merge(ingress, cr.Spec.Ingress)
5758
})
@@ -85,6 +86,7 @@ func (r *IngressReconciler) reconcileRoute(ctx context.Context, cr *v1beta1.Graf
8586
route := model.GetGrafanaRoute(cr, scheme)
8687

8788
_, err := controllerutil.CreateOrUpdate(ctx, r.client, route, func() error {
89+
model.SetCommonLabels(route)
8890
route.Spec = getRouteSpec(cr, scheme)
8991
err := v1beta1.Merge(route, cr.Spec.Route)
9092
return err

controllers/reconcilers/grafana/plugins_reconciler.go

+8-21
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import (
77
"github.com/grafana/grafana-operator/v5/api/v1beta1"
88
"github.com/grafana/grafana-operator/v5/controllers/model"
99
"github.com/grafana/grafana-operator/v5/controllers/reconcilers"
10-
"k8s.io/apimachinery/pkg/api/errors"
1110
"k8s.io/apimachinery/pkg/runtime"
1211
"sigs.k8s.io/controller-runtime/pkg/client"
12+
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1313
"sigs.k8s.io/controller-runtime/pkg/log"
1414
)
1515

@@ -26,27 +26,14 @@ func NewPluginsReconciler(client client.Client) reconcilers.OperatorGrafanaRecon
2626
func (r *PluginsReconciler) Reconcile(ctx context.Context, cr *v1beta1.Grafana, status *v1beta1.GrafanaStatus, vars *v1beta1.OperatorReconcileVars, scheme *runtime.Scheme) (v1beta1.OperatorStageStatus, error) {
2727
logger := log.FromContext(ctx).WithName("PluginsReconciler")
2828

29-
plugins := model.GetPluginsConfigMap(cr, scheme)
30-
selector := client.ObjectKey{
31-
Namespace: plugins.Namespace,
32-
Name: plugins.Name,
33-
}
34-
35-
err := r.client.Get(ctx, selector, plugins)
29+
vars.Plugins = ""
3630

37-
// plugins config map not found, we need to create it
38-
if err != nil && errors.IsNotFound(err) {
39-
err = r.client.Create(ctx, plugins)
40-
if err != nil {
41-
logger.Error(err, "error creating plugins config map", "name", plugins.Name, "namespace", plugins.Namespace)
42-
return v1beta1.OperatorStageResultFailed, err
43-
}
44-
45-
// no plugins yet, assign plugins to empty string
46-
vars.Plugins = ""
47-
48-
return v1beta1.OperatorStageResultSuccess, nil
49-
} else if err != nil {
31+
plugins := model.GetPluginsConfigMap(cr, scheme)
32+
_, err := controllerutil.CreateOrUpdate(ctx, r.client, plugins, func() error {
33+
model.SetCommonLabels(plugins)
34+
return nil
35+
})
36+
if err != nil {
5037
logger.Error(err, "error getting plugins config map", "name", plugins.Name, "namespace", plugins.Namespace)
5138
return v1beta1.OperatorStageResultFailed, err
5239
}

controllers/reconcilers/grafana/pvc_reconciler.go

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ func (r *PvcReconciler) Reconcile(ctx context.Context, cr *v1beta1.Grafana, stat
3232

3333
pvc := model.GetGrafanaDataPVC(cr, scheme)
3434
_, err := controllerutil.CreateOrUpdate(ctx, r.client, pvc, func() error {
35+
model.SetCommonLabels(pvc)
3536
return v1beta1.Merge(pvc, cr.Spec.PersistentVolumeClaim)
3637
})
3738
if err != nil {

controllers/reconcilers/grafana/service_account_reconciler.go

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ func (r *ServiceAccountReconciler) Reconcile(ctx context.Context, cr *v1beta1.Gr
2525
sa := model.GetGrafanaServiceAccount(cr, scheme)
2626

2727
_, err := controllerutil.CreateOrUpdate(ctx, r.client, sa, func() error {
28+
model.SetCommonLabels(sa)
2829
return v1beta1.Merge(sa, cr.Spec.ServiceAccount)
2930
})
3031
if err != nil {

0 commit comments

Comments
 (0)