Skip to content

Commit a405e7b

Browse files
committed
Automatically create namespace if its not found in hubaddon install command
Signed-off-by: Rokibul Hasan <[email protected]>
1 parent e5a4b77 commit a405e7b

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

pkg/cmd/install/hubaddon/exec.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
package hubaddon
33

44
import (
5+
"context"
56
"fmt"
7+
corev1 "k8s.io/api/core/v1"
8+
"k8s.io/apimachinery/pkg/api/errors"
9+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
610
"os"
711
"strings"
812

@@ -77,6 +81,28 @@ func (o *Options) runWithClient() error {
7781
if err != nil {
7882
return fmt.Errorf("Error deploying %s CRDs: %w", addon, err)
7983
}
84+
85+
// create namespace if its missing
86+
clientSet, err := o.ClusteradmFlags.KubectlFactory.KubernetesClientSet()
87+
if err != nil {
88+
return fmt.Errorf("failed to create kubernetes clientSet")
89+
}
90+
91+
ns, err := clientSet.CoreV1().Namespaces().Get(context.Background(), o.values.Namespace, metav1.GetOptions{})
92+
if err != nil && errors.IsNotFound(err) {
93+
ns, err = clientSet.CoreV1().Namespaces().Create(context.Background(), &corev1.Namespace{
94+
ObjectMeta: metav1.ObjectMeta{
95+
Name: o.values.Namespace,
96+
},
97+
}, metav1.CreateOptions{})
98+
if err != nil {
99+
return fmt.Errorf("failed to create namespace %s: %w", ns, err)
100+
}
101+
102+
} else if err != nil {
103+
return fmt.Errorf("failed to get namespace %s: %w", ns, err)
104+
}
105+
80106
err = r.Apply(scenario.Files, o.values, files.ConfigFiles...)
81107
if err != nil {
82108
return fmt.Errorf("Error deploying %s dependencies: %w", addon, err)

0 commit comments

Comments
 (0)