Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit e056455

Browse files
committed
refactor
1 parent 87f0ec5 commit e056455

File tree

14 files changed

+270
-1046
lines changed

14 files changed

+270
-1046
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ CAPI_KIND_CLUSTER_NAME ?= capi-test
231231
# It is set by Prow GIT_TAG, a git-based tag of the form vYYYYMMDD-hash, e.g., v20210120-v0.3.10-308-gc61521971
232232

233233
# Next release is: v1.0.0-preview
234-
TAG ?= v1.0.0-preview.47
234+
TAG ?= v1.0.0-preview.71
235235
ARCH ?= $(shell go env GOARCH)
236236
ALL_ARCH = amd64 arm arm64
237237

config/default/manager_image_patch.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ spec:
77
template:
88
spec:
99
containers:
10-
- image: ghcr.io/patricklaabs/cluster-api-addon-provider-cdk8s/cluster-api-cdk8s-controller:v1.0.0-preview.47
10+
- image: ghcr.io/patricklaabs/cluster-api-addon-provider-cdk8s/cluster-api-cdk8s-controller:v1.0.0-preview.71
1111
name: manager

config/default/manager_image_patch.yaml-e

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ spec:
77
template:
88
spec:
99
containers:
10-
- image: ghcr.io/patricklaabs/cluster-api-addon-provider-cdk8s/cluster-api-cdk8s-controller:v1.0.0-preview.47
10+
- image: ghcr.io/patricklaabs/cluster-api-addon-provider-cdk8s/cluster-api-cdk8s-controller:v1.0.0-preview.71
1111
name: manager

controllers/cdk8sappproxy/applier/applier.go

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

controllers/cdk8sappproxy/applier/applier_test.go

Lines changed: 0 additions & 1 deletion
This file was deleted.

controllers/cdk8sappproxy/cdk8sappproxy_consts.go

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

controllers/cdk8sappproxy/cdk8sappproxy_controller.go

Lines changed: 3 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -18,128 +18,20 @@ package cdk8sappproxy
1818

1919
import (
2020
"context"
21-
"strings"
22-
2321
addonsv1alpha1 "github.com/PatrickLaabs/cluster-api-addon-provider-cdk8s/api/v1alpha1"
2422
"github.com/pkg/errors"
25-
corev1 "k8s.io/api/core/v1"
26-
apierrors "k8s.io/apimachinery/pkg/api/errors"
2723
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2824
"k8s.io/apimachinery/pkg/labels"
29-
"k8s.io/apimachinery/pkg/runtime/schema"
30-
"k8s.io/apimachinery/pkg/types"
31-
"k8s.io/client-go/dynamic"
32-
"k8s.io/client-go/tools/clientcmd"
3325
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
34-
"sigs.k8s.io/cluster-api/util/conditions"
3526
ctrl "sigs.k8s.io/controller-runtime"
3627
"sigs.k8s.io/controller-runtime/pkg/client"
37-
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3828
"sigs.k8s.io/controller-runtime/pkg/handler"
3929
"sigs.k8s.io/controller-runtime/pkg/log"
4030
)
4131

42-
func (r *Reconciler) checkIfResourceExists(ctx context.Context, dynClient dynamic.Interface, gvr schema.GroupVersionResource, namespace string, name string) (bool, error) {
43-
resourceGetter := dynClient.Resource(gvr)
44-
if namespace != "" {
45-
_, err := resourceGetter.Namespace(namespace).Get(ctx, name, metav1.GetOptions{})
46-
if err != nil {
47-
if apierrors.IsNotFound(err) {
48-
return false, nil
49-
}
50-
51-
return false, errors.Wrapf(err, "failed to get namespaced resource %s/%s with GVR %s", namespace, name, gvr.String())
52-
}
53-
} else {
54-
_, err := resourceGetter.Get(ctx, name, metav1.GetOptions{})
55-
if err != nil {
56-
if apierrors.IsNotFound(err) {
57-
return false, nil
58-
}
59-
60-
return false, errors.Wrapf(err, "failed to get cluster-scoped resource %s with GVR %s", name, gvr.String())
61-
}
62-
}
63-
64-
return true, nil
65-
}
66-
67-
func (r *Reconciler) getDynamicClientForCluster(ctx context.Context, secretNamespace, clusterName string) (dynamicClient dynamic.Interface, err error) {
68-
logger := log.FromContext(ctx).WithValues("secretNamespace", secretNamespace, "clusterName", clusterName)
69-
kubeconfigSecretName := clusterName + "-kubeconfig"
70-
71-
kubeconfigSecret := &corev1.Secret{}
72-
if err = r.Get(ctx, client.ObjectKey{Namespace: secretNamespace, Name: kubeconfigSecretName}, kubeconfigSecret); err != nil {
73-
logger.Error(err, "Failed to get Kubeconfig secret")
74-
75-
return nil, errors.Wrapf(err, "failed to get kubeconfig secret %s/%s", secretNamespace, kubeconfigSecretName)
76-
}
77-
kubeconfigData, ok := kubeconfigSecret.Data["value"]
78-
if !ok || len(kubeconfigData) == 0 {
79-
newErr := errors.Errorf("kubeconfig secret %s/%s does not contain 'value' data", secretNamespace, kubeconfigSecretName)
80-
logger.Error(newErr, "Invalid Kubeconfig secret")
81-
82-
return nil, newErr
83-
}
84-
logger.Info("Successfully retrieved Kubeconfig data")
85-
restConfig, err := clientcmd.RESTConfigFromKubeConfig(kubeconfigData)
86-
if err != nil {
87-
logger.Error(err, "Failed to create REST config from Kubeconfig")
88-
89-
return dynamicClient, errors.Wrapf(err, "failed to create REST config from kubeconfig for cluster %s", clusterName)
90-
}
91-
dynamicClient, err = dynamic.NewForConfig(restConfig)
92-
if err != nil {
93-
logger.Error(err, "Failed to create dynamic client")
94-
95-
return dynamicClient, errors.Wrapf(err, "failed to create dynamic client for cluster %s", clusterName)
96-
}
97-
logger.Info("Successfully created dynamic client")
98-
99-
return dynamicClient, err
100-
}
101-
102-
// Consolidated error handling.
103-
func (r *Reconciler) updateStatusWithError(ctx context.Context, cdk8sAppProxy *addonsv1alpha1.Cdk8sAppProxy, reason, message string, err error, removeFinalizer bool) error {
104-
logger := log.FromContext(ctx).WithValues("cdk8sappproxy", types.NamespacedName{Name: cdk8sAppProxy.Name, Namespace: cdk8sAppProxy.Namespace})
105-
106-
if err != nil {
107-
logger.Error(err, message, "reason", reason)
108-
conditions.MarkFalse(cdk8sAppProxy, addonsv1alpha1.DeploymentProgressingCondition, reason, clusterv1.ConditionSeverityError, "%s: %v", message, err)
109-
} else {
110-
logger.Info(message, "reason", reason)
111-
}
112-
113-
if removeFinalizer {
114-
controllerutil.RemoveFinalizer(cdk8sAppProxy, Finalizer)
115-
if updateErr := r.Update(ctx, cdk8sAppProxy); updateErr != nil {
116-
logger.Error(updateErr, "Failed to remove finalizer after error")
117-
118-
return updateErr
119-
}
120-
logger.Info("Removed finalizer after error/condition")
121-
} else {
122-
if statusUpdateErr := r.Status().Update(ctx, cdk8sAppProxy); statusUpdateErr != nil {
123-
logger.Error(statusUpdateErr, "Failed to update status after error")
124-
}
125-
}
126-
127-
return err
128-
}
129-
130-
// TODO: This is a naive pluralization and might not work for all kinds.
131-
// A more robust solution would use discovery client or a predefined map.
132-
func getPluralFromKind(kind string) string {
133-
lowerKind := strings.ToLower(kind)
134-
if strings.HasSuffix(lowerKind, "s") {
135-
return lowerKind + "es"
136-
}
137-
if strings.HasSuffix(lowerKind, "y") {
138-
return strings.TrimSuffix(lowerKind, "y") + "ies"
139-
}
140-
141-
return lowerKind + "s"
142-
}
32+
const (
33+
Finalizer = "cdk8sappproxy.addons.cluster.x-k8s.io/finalizer"
34+
)
14335

14436
// SetupWithManager sets up the controller with the Manager.
14537
func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {

0 commit comments

Comments
 (0)