Skip to content

Commit 6fc47e6

Browse files
authoredOct 28, 2020
Apply same code format for all resources (#427)
This commit is a simple copy and paste such that all resources have the same code format in the form of: type Builder struct Build() Update() private methods
1 parent 7fdb23c commit 6fc47e6

File tree

7 files changed

+118
-115
lines changed

7 files changed

+118
-115
lines changed
 

Diff for: ‎internal/resource/client_service.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@ import (
2323
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
2424
)
2525

26+
type ClientServiceBuilder struct {
27+
Instance *rabbitmqv1beta1.RabbitmqCluster
28+
Scheme *runtime.Scheme
29+
}
30+
2631
func (builder *RabbitmqResourceBuilder) ClientService() *ClientServiceBuilder {
2732
return &ClientServiceBuilder{
2833
Instance: builder.Instance,
2934
Scheme: builder.Scheme,
3035
}
3136
}
3237

33-
type ClientServiceBuilder struct {
34-
Instance *rabbitmqv1beta1.RabbitmqCluster
35-
Scheme *runtime.Scheme
36-
}
37-
3838
func (builder *ClientServiceBuilder) Build() (runtime.Object, error) {
3939
return &corev1.Service{
4040
ObjectMeta: metav1.ObjectMeta{

Diff for: ‎internal/resource/configmap.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ func (builder *RabbitmqResourceBuilder) ServerConfigMap() *ServerConfigMapBuilde
5252
}
5353
}
5454

55+
func (builder *ServerConfigMapBuilder) Build() (runtime.Object, error) {
56+
return &corev1.ConfigMap{
57+
ObjectMeta: metav1.ObjectMeta{
58+
Name: builder.Instance.ChildResourceName(ServerConfigMapName),
59+
Namespace: builder.Instance.Namespace,
60+
},
61+
}, nil
62+
}
63+
5564
func (builder *ServerConfigMapBuilder) Update(object runtime.Object) error {
5665
configMap := object.(*corev1.ConfigMap)
5766
configMap.Labels = metadata.GetLabels(builder.Instance.Name, builder.Instance.Labels)
@@ -115,15 +124,6 @@ func (builder *ServerConfigMapBuilder) Update(object runtime.Object) error {
115124
return nil
116125
}
117126

118-
func (builder *ServerConfigMapBuilder) Build() (runtime.Object, error) {
119-
return &corev1.ConfigMap{
120-
ObjectMeta: metav1.ObjectMeta{
121-
Name: builder.Instance.ChildResourceName(ServerConfigMapName),
122-
Namespace: builder.Instance.Namespace,
123-
},
124-
}, nil
125-
}
126-
127127
func updateProperty(configMapData map[string]string, key string, value string) {
128128
if value == "" {
129129
delete(configMapData, key)

Diff for: ‎internal/resource/rabbitmq_plugins.go

+42-41
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package resource
22

33
import (
44
"fmt"
5-
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
65
"strings"
76

7+
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
8+
89
rabbitmqv1beta1 "github.com/rabbitmq/cluster-operator/api/v1beta1"
910
"github.com/rabbitmq/cluster-operator/internal/metadata"
1011
corev1 "k8s.io/api/core/v1"
@@ -20,16 +21,51 @@ var requiredPlugins = []string{
2021

2122
const PluginsConfigName = "plugins-conf"
2223

23-
type RabbitmqPlugins struct {
24-
requiredPlugins []string
25-
additionalPlugins []string
26-
}
27-
2824
type RabbitmqPluginsConfigMapBuilder struct {
2925
Instance *rabbitmqv1beta1.RabbitmqCluster
3026
Scheme *runtime.Scheme
3127
}
3228

29+
func (builder *RabbitmqResourceBuilder) RabbitmqPluginsConfigMap() *RabbitmqPluginsConfigMapBuilder {
30+
return &RabbitmqPluginsConfigMapBuilder{
31+
Instance: builder.Instance,
32+
Scheme: builder.Scheme,
33+
}
34+
}
35+
36+
func (builder *RabbitmqPluginsConfigMapBuilder) Build() (runtime.Object, error) {
37+
return &corev1.ConfigMap{
38+
ObjectMeta: metav1.ObjectMeta{
39+
Name: builder.Instance.ChildResourceName(PluginsConfigName),
40+
Namespace: builder.Instance.Namespace,
41+
},
42+
Data: map[string]string{
43+
"enabled_plugins": desiredPluginsAsString([]rabbitmqv1beta1.Plugin{}),
44+
},
45+
}, nil
46+
}
47+
48+
func (builder *RabbitmqPluginsConfigMapBuilder) Update(object runtime.Object) error {
49+
configMap := object.(*corev1.ConfigMap)
50+
configMap.Labels = metadata.GetLabels(builder.Instance.Name, builder.Instance.Labels)
51+
configMap.Annotations = metadata.ReconcileAndFilterAnnotations(configMap.GetAnnotations(), builder.Instance.Annotations)
52+
53+
if configMap.Data == nil {
54+
configMap.Data = make(map[string]string)
55+
}
56+
configMap.Data["enabled_plugins"] = desiredPluginsAsString(builder.Instance.Spec.Rabbitmq.AdditionalPlugins)
57+
58+
if err := controllerutil.SetControllerReference(builder.Instance, configMap, builder.Scheme); err != nil {
59+
return fmt.Errorf("failed setting controller reference: %v", err)
60+
}
61+
return nil
62+
}
63+
64+
type RabbitmqPlugins struct {
65+
requiredPlugins []string
66+
additionalPlugins []string
67+
}
68+
3369
func NewRabbitmqPlugins(plugins []rabbitmqv1beta1.Plugin) RabbitmqPlugins {
3470
additionalPlugins := make([]string, len(plugins))
3571
for i := range additionalPlugins {
@@ -60,41 +96,6 @@ func (r *RabbitmqPlugins) AsString(sep string) string {
6096
return strings.Join(r.DesiredPlugins(), sep)
6197
}
6298

63-
func (builder *RabbitmqResourceBuilder) RabbitmqPluginsConfigMap() *RabbitmqPluginsConfigMapBuilder {
64-
return &RabbitmqPluginsConfigMapBuilder{
65-
Instance: builder.Instance,
66-
Scheme: builder.Scheme,
67-
}
68-
}
69-
70-
func (builder *RabbitmqPluginsConfigMapBuilder) Update(object runtime.Object) error {
71-
configMap := object.(*corev1.ConfigMap)
72-
configMap.Labels = metadata.GetLabels(builder.Instance.Name, builder.Instance.Labels)
73-
configMap.Annotations = metadata.ReconcileAndFilterAnnotations(configMap.GetAnnotations(), builder.Instance.Annotations)
74-
75-
if configMap.Data == nil {
76-
configMap.Data = make(map[string]string)
77-
}
78-
configMap.Data["enabled_plugins"] = desiredPluginsAsString(builder.Instance.Spec.Rabbitmq.AdditionalPlugins)
79-
80-
if err := controllerutil.SetControllerReference(builder.Instance, configMap, builder.Scheme); err != nil {
81-
return fmt.Errorf("failed setting controller reference: %v", err)
82-
}
83-
return nil
84-
}
85-
86-
func (builder *RabbitmqPluginsConfigMapBuilder) Build() (runtime.Object, error) {
87-
return &corev1.ConfigMap{
88-
ObjectMeta: metav1.ObjectMeta{
89-
Name: builder.Instance.ChildResourceName(PluginsConfigName),
90-
Namespace: builder.Instance.Namespace,
91-
},
92-
Data: map[string]string{
93-
"enabled_plugins": desiredPluginsAsString([]rabbitmqv1beta1.Plugin{}),
94-
},
95-
}, nil
96-
}
97-
9899
func desiredPluginsAsString(additionalPlugins []rabbitmqv1beta1.Plugin) string {
99100
plugins := NewRabbitmqPlugins(additionalPlugins)
100101
return "[" + plugins.AsString(",") + "]."

Diff for: ‎internal/resource/rabbitmq_resource_builder.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ type RabbitmqResourceBuilder struct {
2020
}
2121

2222
type ResourceBuilder interface {
23-
Update(runtime.Object) error
2423
Build() (runtime.Object, error)
24+
Update(runtime.Object) error
2525
}
2626

2727
func (builder *RabbitmqResourceBuilder) ResourceBuilders() ([]ResourceBuilder, error) {

Diff for: ‎internal/resource/role.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ package resource
1111

1212
import (
1313
"fmt"
14+
1415
rabbitmqv1beta1 "github.com/rabbitmq/cluster-operator/api/v1beta1"
1516
"github.com/rabbitmq/cluster-operator/internal/metadata"
1617
rbacv1 "k8s.io/api/rbac/v1"
@@ -35,6 +36,15 @@ func (builder *RabbitmqResourceBuilder) Role() *RoleBuilder {
3536
}
3637
}
3738

39+
func (builder *RoleBuilder) Build() (runtime.Object, error) {
40+
return &rbacv1.Role{
41+
ObjectMeta: metav1.ObjectMeta{
42+
Namespace: builder.Instance.Namespace,
43+
Name: builder.Instance.ChildResourceName(roleName),
44+
},
45+
}, nil
46+
}
47+
3848
func (builder *RoleBuilder) Update(object runtime.Object) error {
3949
role := object.(*rbacv1.Role)
4050
role.Labels = metadata.GetLabels(builder.Instance.Name, builder.Instance.Labels)
@@ -55,15 +65,5 @@ func (builder *RoleBuilder) Update(object runtime.Object) error {
5565
if err := controllerutil.SetControllerReference(builder.Instance, role, builder.Scheme); err != nil {
5666
return fmt.Errorf("failed setting controller reference: %v", err)
5767
}
58-
5968
return nil
6069
}
61-
62-
func (builder *RoleBuilder) Build() (runtime.Object, error) {
63-
return &rbacv1.Role{
64-
ObjectMeta: metav1.ObjectMeta{
65-
Namespace: builder.Instance.Namespace,
66-
Name: builder.Instance.ChildResourceName(roleName),
67-
},
68-
}, nil
69-
}

Diff for: ‎internal/resource/service_account.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ package resource
1111

1212
import (
1313
"fmt"
14+
1415
rabbitmqv1beta1 "github.com/rabbitmq/cluster-operator/api/v1beta1"
1516
"github.com/rabbitmq/cluster-operator/internal/metadata"
1617
corev1 "k8s.io/api/core/v1"
@@ -35,6 +36,15 @@ func (builder *RabbitmqResourceBuilder) ServiceAccount() *ServiceAccountBuilder
3536
}
3637
}
3738

39+
func (builder *ServiceAccountBuilder) Build() (runtime.Object, error) {
40+
return &corev1.ServiceAccount{
41+
ObjectMeta: metav1.ObjectMeta{
42+
Namespace: builder.Instance.Namespace,
43+
Name: builder.Instance.ChildResourceName(serviceAccountName),
44+
},
45+
}, nil
46+
}
47+
3848
func (builder *ServiceAccountBuilder) Update(object runtime.Object) error {
3949
serviceAccount := object.(*corev1.ServiceAccount)
4050
serviceAccount.Labels = metadata.GetLabels(builder.Instance.Name, builder.Instance.Labels)
@@ -45,12 +55,3 @@ func (builder *ServiceAccountBuilder) Update(object runtime.Object) error {
4555
}
4656
return nil
4757
}
48-
49-
func (builder *ServiceAccountBuilder) Build() (runtime.Object, error) {
50-
return &corev1.ServiceAccount{
51-
ObjectMeta: metav1.ObjectMeta{
52-
Namespace: builder.Instance.Namespace,
53-
Name: builder.Instance.ChildResourceName(serviceAccountName),
54-
},
55-
}, nil
56-
}

Diff for: ‎internal/resource/statefulset.go

+41-40
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ package resource
1212
import (
1313
"encoding/json"
1414
"fmt"
15+
1516
"k8s.io/apimachinery/pkg/util/intstr"
1617

1718
rabbitmqv1beta1 "github.com/rabbitmq/cluster-operator/api/v1beta1"
@@ -34,18 +35,18 @@ const (
3435
DeletionMarker string = "skipPreStopChecks"
3536
)
3637

38+
type StatefulSetBuilder struct {
39+
Instance *rabbitmqv1beta1.RabbitmqCluster
40+
Scheme *runtime.Scheme
41+
}
42+
3743
func (builder *RabbitmqResourceBuilder) StatefulSet() *StatefulSetBuilder {
3844
return &StatefulSetBuilder{
3945
Instance: builder.Instance,
4046
Scheme: builder.Scheme,
4147
}
4248
}
4349

44-
type StatefulSetBuilder struct {
45-
Instance *rabbitmqv1beta1.RabbitmqCluster
46-
Scheme *runtime.Scheme
47-
}
48-
4950
func (builder *StatefulSetBuilder) Build() (runtime.Object, error) {
5051
// PVC, ServiceName & Selector: can't be updated without deleting the statefulset
5152
pvc, err := persistentVolumeClaim(builder.Instance, builder.Scheme)
@@ -98,41 +99,6 @@ func (builder *StatefulSetBuilder) Build() (runtime.Object, error) {
9899
return sts, nil
99100
}
100101

101-
func persistentVolumeClaim(instance *rabbitmqv1beta1.RabbitmqCluster, scheme *runtime.Scheme) ([]corev1.PersistentVolumeClaim, error) {
102-
pvc := corev1.PersistentVolumeClaim{
103-
ObjectMeta: metav1.ObjectMeta{
104-
Name: "persistence",
105-
Namespace: instance.GetNamespace(),
106-
Labels: metadata.Label(instance.Name),
107-
Annotations: metadata.ReconcileAndFilterAnnotations(map[string]string{}, instance.Annotations),
108-
},
109-
Spec: corev1.PersistentVolumeClaimSpec{
110-
Resources: corev1.ResourceRequirements{
111-
Requests: corev1.ResourceList{
112-
corev1.ResourceStorage: *instance.Spec.Persistence.Storage,
113-
},
114-
},
115-
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
116-
StorageClassName: instance.Spec.Persistence.StorageClassName,
117-
},
118-
}
119-
120-
if err := controllerutil.SetControllerReference(instance, &pvc, scheme); err != nil {
121-
return []corev1.PersistentVolumeClaim{}, fmt.Errorf("failed setting controller reference: %v", err)
122-
}
123-
disableBlockOwnerDeletion(pvc)
124-
125-
return []corev1.PersistentVolumeClaim{pvc}, nil
126-
}
127-
128-
// required for OpenShift compatibility, see https://github.com/rabbitmq/cluster-operator/issues/234
129-
func disableBlockOwnerDeletion(pvc corev1.PersistentVolumeClaim) {
130-
refs := pvc.OwnerReferences
131-
for i := range refs {
132-
refs[i].BlockOwnerDeletion = pointer.BoolPtr(false)
133-
}
134-
}
135-
136102
func (builder *StatefulSetBuilder) Update(object runtime.Object) error {
137103
sts := object.(*appsv1.StatefulSet)
138104

@@ -213,6 +179,41 @@ func applyStsOverride(sts *appsv1.StatefulSet, stsOverride *rabbitmqv1beta1.Stat
213179
return nil
214180
}
215181

182+
func persistentVolumeClaim(instance *rabbitmqv1beta1.RabbitmqCluster, scheme *runtime.Scheme) ([]corev1.PersistentVolumeClaim, error) {
183+
pvc := corev1.PersistentVolumeClaim{
184+
ObjectMeta: metav1.ObjectMeta{
185+
Name: "persistence",
186+
Namespace: instance.GetNamespace(),
187+
Labels: metadata.Label(instance.Name),
188+
Annotations: metadata.ReconcileAndFilterAnnotations(map[string]string{}, instance.Annotations),
189+
},
190+
Spec: corev1.PersistentVolumeClaimSpec{
191+
Resources: corev1.ResourceRequirements{
192+
Requests: corev1.ResourceList{
193+
corev1.ResourceStorage: *instance.Spec.Persistence.Storage,
194+
},
195+
},
196+
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
197+
StorageClassName: instance.Spec.Persistence.StorageClassName,
198+
},
199+
}
200+
201+
if err := controllerutil.SetControllerReference(instance, &pvc, scheme); err != nil {
202+
return []corev1.PersistentVolumeClaim{}, fmt.Errorf("failed setting controller reference: %v", err)
203+
}
204+
disableBlockOwnerDeletion(pvc)
205+
206+
return []corev1.PersistentVolumeClaim{pvc}, nil
207+
}
208+
209+
// required for OpenShift compatibility, see https://github.com/rabbitmq/cluster-operator/issues/234
210+
func disableBlockOwnerDeletion(pvc corev1.PersistentVolumeClaim) {
211+
refs := pvc.OwnerReferences
212+
for i := range refs {
213+
refs[i].BlockOwnerDeletion = pointer.BoolPtr(false)
214+
}
215+
}
216+
216217
func patchPodSpec(podSpec, podSpecOverride *corev1.PodSpec) (corev1.PodSpec, error) {
217218
originalPodSpec, err := json.Marshal(podSpec)
218219
if err != nil {

0 commit comments

Comments
 (0)
Please sign in to comment.