8
8
9
9
log "github.com/sirupsen/logrus"
10
10
corev1 "k8s.io/api/core/v1"
11
+ "k8s.io/apimachinery/pkg/api/errors"
11
12
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12
13
"k8s.io/client-go/kubernetes"
13
14
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp" // making sure gcp plugin is present
@@ -119,6 +120,25 @@ func (k *Kubernetes) localConfig() (*rest.Config, error) {
119
120
return clientcmd .BuildConfigFromFlags (k .context , k .kubeConfig )
120
121
}
121
122
123
+ // createNamespace is not found.
124
+ func (k * Kubernetes ) createNamespace () error {
125
+ var err error
126
+
127
+ if _ , err = k .clientset .CoreV1 ().Namespaces ().Get (k .namespace , metav1.GetOptions {}); err != nil {
128
+ if ! errors .IsNotFound (err ) {
129
+ return err
130
+ }
131
+
132
+ k .logger .Infof ("Creating namespace '%s'" , k .namespace )
133
+ spec := & corev1.Namespace {ObjectMeta : metav1.ObjectMeta {Name : k .namespace }}
134
+ if _ , err = k .clientset .CoreV1 ().Namespaces ().Create (spec ); err != nil {
135
+ return err
136
+ }
137
+ }
138
+
139
+ return nil
140
+ }
141
+
122
142
// NewKubernetes instantiate object by checking if local or in-cluster configuration first.
123
143
func NewKubernetes (kubeConfig , context , namespace string , inCluster bool ) (* Kubernetes , error ) {
124
144
var cfg * rest.Config
@@ -145,6 +165,9 @@ func NewKubernetes(kubeConfig, context, namespace string, inCluster bool) (*Kube
145
165
if k .clientset , err = kubernetes .NewForConfig (cfg ); err != nil {
146
166
return nil , err
147
167
}
168
+ if err = k .createNamespace (); err != nil {
169
+ return nil , err
170
+ }
148
171
149
172
return k , nil
150
173
}
0 commit comments