|
2 | 2 | package hubaddon |
3 | 3 |
|
4 | 4 | import ( |
| 5 | + "context" |
5 | 6 | "fmt" |
| 7 | + corev1 "k8s.io/api/core/v1" |
| 8 | + "k8s.io/apimachinery/pkg/api/errors" |
| 9 | + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
6 | 10 | "os" |
7 | 11 | "strings" |
8 | 12 |
|
@@ -77,6 +81,28 @@ func (o *Options) runWithClient() error { |
77 | 81 | if err != nil { |
78 | 82 | return fmt.Errorf("Error deploying %s CRDs: %w", addon, err) |
79 | 83 | } |
| 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 | + |
80 | 106 | err = r.Apply(scenario.Files, o.values, files.ConfigFiles...) |
81 | 107 | if err != nil { |
82 | 108 | return fmt.Errorf("Error deploying %s dependencies: %w", addon, err) |
|
0 commit comments