Skip to content

Commit 1183832

Browse files
committed
simplifies k8s client creation with singleton pattern
Signed-off-by: Harisudarsan <[email protected]>
1 parent b60e374 commit 1183832

File tree

2 files changed

+41
-44
lines changed

2 files changed

+41
-44
lines changed

cmd/cluster.go

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,13 @@ var ListOssCmd = &cobra.Command{
5555
log.Fatalf("Failed to prompt for kubernetes context: %v", err)
5656
}
5757

58+
k8sClient, err := common.CreateK8sClient()
59+
if err != nil {
60+
log.Fatalf("Error creating k8s client", err)
61+
}
62+
5863
// Read the installer data from the ConfigMap
59-
entries, err := common.ReadInstallerConfigMap()
64+
entries, err := common.ReadInstallerConfigMap(k8sClient)
6065
if err != nil {
6166
log.Fatalf("Failed to list servers: %v", err)
6267
}
@@ -90,8 +95,13 @@ var ShowValuesCmd = &cobra.Command{
9095
log.Fatalf("Failed to prompt for Kubernetes context: %v", err)
9196
}
9297

98+
k8sClient, err := common.CreateK8sClient()
99+
if err != nil {
100+
log.Fatalf("Error creating k8s client", err)
101+
}
102+
93103
// Read the installer data from the ConfigMap
94-
entries, err := common.ReadInstallerConfigMap()
104+
entries, err := common.ReadInstallerConfigMap(k8sClient)
95105
if err != nil {
96106
log.Fatalf("Failed to list OSS servers: %v", err)
97107
}
@@ -139,8 +149,13 @@ var UninstallOssCmd = &cobra.Command{
139149
log.Fatalf("Failed to prompt for Kubernetes context: %v", err)
140150
}
141151

152+
k8sClient, err := common.CreateK8sClient()
153+
if err != nil {
154+
log.Fatalf("Error creating k8s client", err)
155+
}
156+
142157
// Read the installer data from the ConfigMap
143-
entries, err := common.ReadInstallerConfigMap()
158+
entries, err := common.ReadInstallerConfigMap(k8sClient)
144159
if err != nil {
145160
log.Fatalf("Failed to fetch OSS servers: %v", err)
146161
}
@@ -176,12 +191,12 @@ var UninstallOssCmd = &cobra.Command{
176191
}
177192

178193
// Remove entry from ConfigMap
179-
if err := common.RemoveInstallerEntry(selectedCluster.Name); err != nil {
194+
if err := common.RemoveInstallerEntry(selectedCluster.Name, k8sClient); err != nil {
180195
log.Fatalf("Failed to remove entry from ConfigMap: %v", err)
181196
}
182197

183198
// Delete secret
184-
if err := deleteSecret(selectedCluster.Namespace, "parseable-env-secret"); err != nil {
199+
if err := deleteSecret(selectedCluster.Namespace, "parseable-env-secret", k8sClient); err != nil {
185200
log.Printf("Warning: Failed to delete secret 'parseable-env-secret': %v", err)
186201
} else {
187202
fmt.Println(common.Green + "Secret 'parseable-env-secret' deleted successfully." + common.Reset)
@@ -217,18 +232,9 @@ func uninstallCluster(entry common.InstallerEntry) error {
217232
return nil
218233
}
219234

220-
func deleteSecret(namespace, secretName string) error {
221-
config, err := common.LoadKubeConfig()
222-
if err != nil {
223-
return fmt.Errorf("failed to create Kubernetes client: %v", err)
224-
}
225-
226-
clientset, err := kubernetes.NewForConfig(config)
227-
if err != nil {
228-
return fmt.Errorf("failed to create Kubernetes client: %w", err)
229-
}
230-
231-
err = clientset.CoreV1().Secrets(namespace).Delete(context.TODO(), "parseable-env-secret", metav1.DeleteOptions{})
235+
func deleteSecret(namespace, secretName string, k8sClient *kubernetes.Clientset) error {
236+
// Delete the secrets
237+
err := k8sClient.CoreV1().Secrets(namespace).Delete(context.TODO(), "parseable-env-secret", metav1.DeleteOptions{})
232238
if err != nil {
233239
return fmt.Errorf("failed to delete secret '%s': %v", secretName, err)
234240
}

pkg/common/common.go

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,9 @@ type InstallerEntry struct {
5656
}
5757

5858
// ReadInstallerConfigMap fetches and parses installer data from a ConfigMap
59-
func ReadInstallerConfigMap() ([]InstallerEntry, error) {
60-
61-
// Load kubeconfig and create a Kubernetes client
62-
config, err := LoadKubeConfig()
63-
if err != nil {
64-
return nil, fmt.Errorf("failed to load kubeconfig: %w", err)
65-
}
66-
67-
clientset, err := kubernetes.NewForConfig(config)
68-
if err != nil {
69-
return nil, fmt.Errorf("failed to create Kubernetes client: %w", err)
70-
}
71-
59+
func ReadInstallerConfigMap(k8sclient *kubernetes.Clientset) ([]InstallerEntry, error) {
7260
// Get the ConfigMap
73-
cm, err := clientset.CoreV1().ConfigMaps(namespace).Get(context.TODO(), configMapName, metav1.GetOptions{})
61+
cm, err := k8sclient.CoreV1().ConfigMaps(namespace).Get(context.TODO(), configMapName, metav1.GetOptions{})
7462
if err != nil {
7563
if apiErrors.IsNotFound(err) {
7664
fmt.Println(Yellow + "\nNo existing Parseable OSS clusters found.\n" + Reset)
@@ -102,6 +90,20 @@ func LoadKubeConfig() (*rest.Config, error) {
10290
return clientcmd.BuildConfigFromFlags("", kubeconfig)
10391
}
10492

93+
func CreateK8sClient() (*kubernetes.Clientset, error) {
94+
// Load kubeconfig and create a Kubernetes client
95+
config, err := LoadKubeConfig()
96+
if err != nil {
97+
return nil, fmt.Errorf("failed to load kubeconfig: %w", err)
98+
}
99+
100+
clientset, err := kubernetes.NewForConfig(config)
101+
if err != nil {
102+
return nil, fmt.Errorf("failed to create Kubernetes client: %w", err)
103+
}
104+
return clientset, nil
105+
}
106+
105107
// PromptK8sContext retrieves Kubernetes contexts from kubeconfig.
106108
func PromptK8sContext() (clusterName string, err error) {
107109
kubeconfigPath := os.Getenv("KUBECONFIG")
@@ -220,20 +222,9 @@ func CreateDeploymentSpinner(infoMsg string) *spinner.Spinner {
220222

221223
return s
222224
}
223-
func RemoveInstallerEntry(name string) error {
224-
// Load kubeconfig and create a Kubernetes client
225-
config, err := LoadKubeConfig()
226-
if err != nil {
227-
return fmt.Errorf("failed to load kubeconfig: %w", err)
228-
}
229-
230-
clientset, err := kubernetes.NewForConfig(config)
231-
if err != nil {
232-
return fmt.Errorf("failed to create Kubernetes client: %w", err)
233-
}
234-
225+
func RemoveInstallerEntry(name string, k8sclient *kubernetes.Clientset) error {
235226
// Fetch the ConfigMap
236-
configMap, err := clientset.CoreV1().ConfigMaps(namespace).Get(context.TODO(), configMapName, metav1.GetOptions{})
227+
configMap, err := k8sclient.CoreV1().ConfigMaps(namespace).Get(context.TODO(), configMapName, metav1.GetOptions{})
237228
if err != nil {
238229
return fmt.Errorf("failed to fetch ConfigMap: %v", err)
239230
}

0 commit comments

Comments
 (0)