Skip to content

Commit c6447fa

Browse files
authored
Introduce generic setControllerReference helper (#880)
Signed-off-by: sho-iizuka <sho-iizuka@cybozu.co.jp>
1 parent ee70eab commit c6447fa

File tree

1 file changed

+18
-149
lines changed

1 file changed

+18
-149
lines changed

controllers/mysqlcluster_controller.go

Lines changed: 18 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ func (r *MySQLClusterReconciler) reconcileUserSecret(ctx context.Context, req ct
372372
WithLabels(labelSet(cluster, false)).
373373
WithData(newSecret.Data)
374374

375-
if err := setControllerReferenceWithSecret(cluster, secret, r.Scheme); err != nil {
375+
if err := setControllerReference(cluster, secret, r.Scheme); err != nil {
376376
return fmt.Errorf("failed to set ownerReference to Secret %s/%s: %w", cluster.Namespace, name, err)
377377
}
378378

@@ -408,7 +408,7 @@ func (r *MySQLClusterReconciler) reconcileMyCnfSecret(ctx context.Context, req c
408408
WithLabels(labelSet(cluster, false)).
409409
WithData(mycnfSecret.Data)
410410

411-
if err := setControllerReferenceWithSecret(cluster, secret, r.Scheme); err != nil {
411+
if err := setControllerReference(cluster, secret, r.Scheme); err != nil {
412412
return fmt.Errorf("failed to set ownerReference to Secret %s/%s: %w", cluster.Namespace, name, err)
413413
}
414414

@@ -483,7 +483,7 @@ func (r *MySQLClusterReconciler) reconcileV1MyCnf(ctx context.Context, req ctrl.
483483
WithLabels(labelSet(cluster, false)).
484484
WithData(cmData)
485485

486-
if err := setControllerReferenceWithConfigMap(cluster, cm, r.Scheme); err != nil {
486+
if err := setControllerReference(cluster, cm, r.Scheme); err != nil {
487487
return nil, fmt.Errorf("failed to set ownerReference to ConfigMap %s/%s: %w", cluster.Namespace, cmName, err)
488488
}
489489

@@ -553,7 +553,7 @@ func (r *MySQLClusterReconciler) reconcileV1FluentBitConfigMap(ctx context.Conte
553553
WithLabels(labelSet(cluster, false)).
554554
WithData(data)
555555

556-
if err := setControllerReferenceWithConfigMap(cluster, cm, r.Scheme); err != nil {
556+
if err := setControllerReference(cluster, cm, r.Scheme); err != nil {
557557
return nil, fmt.Errorf("failed to set ownerReference to ConfigMap %s/%s: %w", cluster.Namespace, cmName, err)
558558
}
559559

@@ -625,7 +625,7 @@ func (r *MySQLClusterReconciler) reconcileV1ServiceAccount(ctx context.Context,
625625
sa := corev1ac.ServiceAccount(name, cluster.Namespace).
626626
WithLabels(labelSet(cluster, false))
627627

628-
if err := setControllerReferenceWithServiceAccount(cluster, sa, r.Scheme); err != nil {
628+
if err := setControllerReference(cluster, sa, r.Scheme); err != nil {
629629
return fmt.Errorf("failed to set ownerReference to Service %s/%s: %w", cluster.Namespace, name, err)
630630
}
631631

@@ -736,7 +736,7 @@ func (r *MySQLClusterReconciler) reconcileV1Service1(ctx context.Context, cluste
736736
)
737737
}
738738

739-
if err := setControllerReferenceWithService(cluster, svc, r.Scheme); err != nil {
739+
if err := setControllerReference(cluster, svc, r.Scheme); err != nil {
740740
return fmt.Errorf("failed to set ownerReference to Service %s/%s: %w", cluster.Namespace, name, err)
741741
}
742742

@@ -957,7 +957,7 @@ func (r *MySQLClusterReconciler) reconcileV1StatefulSet(ctx context.Context, req
957957

958958
sts.Spec.Template.WithSpec(&podSpec)
959959

960-
if err := setControllerReferenceWithStatefulSet(cluster, sts, r.Scheme); err != nil {
960+
if err := setControllerReference(cluster, sts, r.Scheme); err != nil {
961961
return fmt.Errorf("failed to set ownerReference to StatefulSet %s/%s: %w", cluster.Namespace, cluster.PrefixedName(), err)
962962
}
963963

@@ -1080,7 +1080,7 @@ func (r *MySQLClusterReconciler) reconcileV1PDB(ctx context.Context, req ctrl.Re
10801080
),
10811081
)
10821082

1083-
if err := setControllerReferenceWithPDB(cluster, pdbApplyConfig, r.Scheme); err != nil {
1083+
if err := setControllerReference(cluster, pdbApplyConfig, r.Scheme); err != nil {
10841084
return fmt.Errorf("failed to set ownerReference to PDB %s/%s: %w", pdb.Namespace, pdb.Name, err)
10851085
}
10861086

@@ -1332,7 +1332,7 @@ func (r *MySQLClusterReconciler) reconcileV1BackupJob(ctx context.Context, req c
13321332
)
13331333
}
13341334

1335-
if err := setControllerReferenceWithCronJob(cluster, cronJob, r.Scheme); err != nil {
1335+
if err := setControllerReference(cluster, cronJob, r.Scheme); err != nil {
13361336
return fmt.Errorf("failed to set ownerReference to CronJob %s/%s: %w", cluster.Namespace, cronJobName, err)
13371337
}
13381338

@@ -1392,7 +1392,7 @@ func (r *MySQLClusterReconciler) reconcileV1BackupJobRole(ctx context.Context, r
13921392
WithVerbs("create", "update", "patch"),
13931393
)
13941394

1395-
if err := setControllerReferenceWithRole(cluster, role, r.Scheme); err != nil {
1395+
if err := setControllerReference(cluster, role, r.Scheme); err != nil {
13961396
return fmt.Errorf("failed to set ownerReference to Role %s/%s: %w", cluster.Namespace, name, err)
13971397
}
13981398

@@ -1437,7 +1437,7 @@ func (r *MySQLClusterReconciler) reconcileV1BackupJobRoleBinding(ctx context.Con
14371437
WithName(bp.Spec.JobConfig.ServiceAccountName).
14381438
WithNamespace(cluster.Namespace))
14391439

1440-
if err := setControllerReferenceWithRoleBinding(cluster, roleBinding, r.Scheme); err != nil {
1440+
if err := setControllerReference(cluster, roleBinding, r.Scheme); err != nil {
14411441
return fmt.Errorf("failed to set ownerReference to RoleBinding %s/%s: %w", cluster.Namespace, name, err)
14421442
}
14431443

@@ -1594,7 +1594,7 @@ func (r *MySQLClusterReconciler) reconcileV1RestoreJob(ctx context.Context, req
15941594
),
15951595
)
15961596

1597-
if err := setControllerReferenceWithJob(cluster, job, r.Scheme); err != nil {
1597+
if err := setControllerReference(cluster, job, r.Scheme); err != nil {
15981598
return fmt.Errorf("failed to set ownerReference to Job %s/%s: %w", cluster.Namespace, jobName, err)
15991599
}
16001600

@@ -1655,7 +1655,7 @@ func (r *MySQLClusterReconciler) reconcileV1RestoreJobRole(ctx context.Context,
16551655
WithVerbs("create"),
16561656
)
16571657

1658-
if err := setControllerReferenceWithRole(cluster, role, r.Scheme); err != nil {
1658+
if err := setControllerReference(cluster, role, r.Scheme); err != nil {
16591659
return fmt.Errorf("failed to set ownerReference to Role %s/%s: %w", cluster.Namespace, name, err)
16601660
}
16611661

@@ -1700,7 +1700,7 @@ func (r *MySQLClusterReconciler) reconcileV1RestoreJobRoleBinding(ctx context.Co
17001700
WithName(cluster.Spec.Restore.JobConfig.ServiceAccountName).
17011701
WithNamespace(cluster.Namespace))
17021702

1703-
if err := setControllerReferenceWithRoleBinding(cluster, roleBinding, r.Scheme); err != nil {
1703+
if err := setControllerReference(cluster, roleBinding, r.Scheme); err != nil {
17041704
return fmt.Errorf("failed to set ownerReference to RoleBinding %s/%s: %w", cluster.Namespace, name, err)
17051705
}
17061706

@@ -1909,57 +1909,16 @@ func isForceRollingUpdate(cluster *mocov1beta2.MySQLCluster) bool {
19091909
return cluster.Annotations[constants.AnnForceRollingUpdate] == "true"
19101910
}
19111911

1912-
func setControllerReferenceWithConfigMap(cluster *mocov1beta2.MySQLCluster, cm *corev1ac.ConfigMapApplyConfiguration, scheme *runtime.Scheme) error {
1913-
gvk, err := apiutil.GVKForObject(cluster, scheme)
1914-
if err != nil {
1915-
return err
1916-
}
1917-
cm.WithOwnerReferences(metav1ac.OwnerReference().
1918-
WithAPIVersion(gvk.GroupVersion().String()).
1919-
WithKind(gvk.Kind).
1920-
WithName(cluster.Name).
1921-
WithUID(cluster.GetUID()).
1922-
WithBlockOwnerDeletion(true).
1923-
WithController(true))
1924-
return nil
1925-
}
1926-
1927-
func setControllerReferenceWithSecret(cluster *mocov1beta2.MySQLCluster, secret *corev1ac.SecretApplyConfiguration, scheme *runtime.Scheme) error {
1928-
gvk, err := apiutil.GVKForObject(cluster, scheme)
1929-
if err != nil {
1930-
return err
1931-
}
1932-
secret.WithOwnerReferences(metav1ac.OwnerReference().
1933-
WithAPIVersion(gvk.GroupVersion().String()).
1934-
WithKind(gvk.Kind).
1935-
WithName(cluster.Name).
1936-
WithUID(cluster.GetUID()).
1937-
WithBlockOwnerDeletion(true).
1938-
WithController(true))
1939-
return nil
1940-
}
1941-
1942-
func setControllerReferenceWithService(cluster *mocov1beta2.MySQLCluster, svc *corev1ac.ServiceApplyConfiguration, scheme *runtime.Scheme) error {
1943-
gvk, err := apiutil.GVKForObject(cluster, scheme)
1944-
if err != nil {
1945-
return err
1946-
}
1947-
svc.WithOwnerReferences(metav1ac.OwnerReference().
1948-
WithAPIVersion(gvk.GroupVersion().String()).
1949-
WithKind(gvk.Kind).
1950-
WithName(cluster.Name).
1951-
WithUID(cluster.GetUID()).
1952-
WithBlockOwnerDeletion(true).
1953-
WithController(true))
1954-
return nil
1912+
type ownerRefSetter[T any] interface {
1913+
WithOwnerReferences(...*metav1ac.OwnerReferenceApplyConfiguration) T
19551914
}
19561915

1957-
func setControllerReferenceWithStatefulSet(cluster *mocov1beta2.MySQLCluster, sts *appsv1ac.StatefulSetApplyConfiguration, scheme *runtime.Scheme) error {
1916+
func setControllerReference[T ownerRefSetter[T]](cluster *mocov1beta2.MySQLCluster, obj T, scheme *runtime.Scheme) error {
19581917
gvk, err := apiutil.GVKForObject(cluster, scheme)
19591918
if err != nil {
19601919
return err
19611920
}
1962-
sts.WithOwnerReferences(metav1ac.OwnerReference().
1921+
obj.WithOwnerReferences(metav1ac.OwnerReference().
19631922
WithAPIVersion(gvk.GroupVersion().String()).
19641923
WithKind(gvk.Kind).
19651924
WithName(cluster.Name).
@@ -1998,96 +1957,6 @@ func setControllerReferenceWithPVC(cluster *mocov1beta2.MySQLCluster, pvc *corev
19981957
return nil
19991958
}
20001959

2001-
func setControllerReferenceWithServiceAccount(cluster *mocov1beta2.MySQLCluster, sa *corev1ac.ServiceAccountApplyConfiguration, scheme *runtime.Scheme) error {
2002-
gvk, err := apiutil.GVKForObject(cluster, scheme)
2003-
if err != nil {
2004-
return err
2005-
}
2006-
sa.WithOwnerReferences(metav1ac.OwnerReference().
2007-
WithAPIVersion(gvk.GroupVersion().String()).
2008-
WithKind(gvk.Kind).
2009-
WithName(cluster.Name).
2010-
WithUID(cluster.GetUID()).
2011-
WithBlockOwnerDeletion(true).
2012-
WithController(true))
2013-
return nil
2014-
}
2015-
2016-
func setControllerReferenceWithPDB(cluster *mocov1beta2.MySQLCluster, pdb *policyv1ac.PodDisruptionBudgetApplyConfiguration, scheme *runtime.Scheme) error {
2017-
gvk, err := apiutil.GVKForObject(cluster, scheme)
2018-
if err != nil {
2019-
return err
2020-
}
2021-
pdb.WithOwnerReferences(metav1ac.OwnerReference().
2022-
WithAPIVersion(gvk.GroupVersion().String()).
2023-
WithKind(gvk.Kind).
2024-
WithName(cluster.Name).
2025-
WithUID(cluster.GetUID()).
2026-
WithBlockOwnerDeletion(true).
2027-
WithController(true))
2028-
return nil
2029-
}
2030-
2031-
func setControllerReferenceWithRole(cluster *mocov1beta2.MySQLCluster, role *rbacv1ac.RoleApplyConfiguration, scheme *runtime.Scheme) error {
2032-
gvk, err := apiutil.GVKForObject(cluster, scheme)
2033-
if err != nil {
2034-
return err
2035-
}
2036-
role.WithOwnerReferences(metav1ac.OwnerReference().
2037-
WithAPIVersion(gvk.GroupVersion().String()).
2038-
WithKind(gvk.Kind).
2039-
WithName(cluster.Name).
2040-
WithUID(cluster.GetUID()).
2041-
WithBlockOwnerDeletion(true).
2042-
WithController(true))
2043-
return nil
2044-
}
2045-
2046-
func setControllerReferenceWithRoleBinding(cluster *mocov1beta2.MySQLCluster, roleBinding *rbacv1ac.RoleBindingApplyConfiguration, scheme *runtime.Scheme) error {
2047-
gvk, err := apiutil.GVKForObject(cluster, scheme)
2048-
if err != nil {
2049-
return err
2050-
}
2051-
roleBinding.WithOwnerReferences(metav1ac.OwnerReference().
2052-
WithAPIVersion(gvk.GroupVersion().String()).
2053-
WithKind(gvk.Kind).
2054-
WithName(cluster.Name).
2055-
WithUID(cluster.GetUID()).
2056-
WithBlockOwnerDeletion(true).
2057-
WithController(true))
2058-
return nil
2059-
}
2060-
2061-
func setControllerReferenceWithJob(cluster *mocov1beta2.MySQLCluster, job *batchv1ac.JobApplyConfiguration, scheme *runtime.Scheme) error {
2062-
gvk, err := apiutil.GVKForObject(cluster, scheme)
2063-
if err != nil {
2064-
return err
2065-
}
2066-
job.WithOwnerReferences(metav1ac.OwnerReference().
2067-
WithAPIVersion(gvk.GroupVersion().String()).
2068-
WithKind(gvk.Kind).
2069-
WithName(cluster.Name).
2070-
WithUID(cluster.GetUID()).
2071-
WithBlockOwnerDeletion(true).
2072-
WithController(true))
2073-
return nil
2074-
}
2075-
2076-
func setControllerReferenceWithCronJob(cluster *mocov1beta2.MySQLCluster, cronJob *batchv1ac.CronJobApplyConfiguration, scheme *runtime.Scheme) error {
2077-
gvk, err := apiutil.GVKForObject(cluster, scheme)
2078-
if err != nil {
2079-
return err
2080-
}
2081-
cronJob.WithOwnerReferences(metav1ac.OwnerReference().
2082-
WithAPIVersion(gvk.GroupVersion().String()).
2083-
WithKind(gvk.Kind).
2084-
WithName(cluster.Name).
2085-
WithUID(cluster.GetUID()).
2086-
WithBlockOwnerDeletion(true).
2087-
WithController(true))
2088-
return nil
2089-
}
2090-
20911960
// SetupWithManager sets up the controller with the Manager.
20921961
func (r *MySQLClusterReconciler) SetupWithManager(mgr ctrl.Manager) error {
20931962
certHandler := handler.EnqueueRequestsFromMapFunc(func(ctx context.Context, a client.Object) []reconcile.Request {

0 commit comments

Comments
 (0)