blob: bf22f40c859c4233985fe0b25337fd770126f8c1 [file] [log] [blame]
package installer
import (
"context"
"fmt"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)
type NamespaceCreator interface {
Create(name string) error
}
type realNamespaceCreator struct {
clientset *kubernetes.Clientset
}
func NewOutOfClusterNamespaceCreator(kubeconfig string) (NamespaceCreator, error) {
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {
return nil, err
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, err
}
return &realNamespaceCreator{clientset}, nil
}
func NewInClusterNamespaceCreator() (NamespaceCreator, error) {
config, err := rest.InClusterConfig()
if err != nil {
panic(err.Error())
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, err
}
return &realNamespaceCreator{clientset}, nil
}
func (n *realNamespaceCreator) Create(name string) error {
_, err := n.clientset.CoreV1().Namespaces().Create(context.Background(), &corev1.Namespace{
TypeMeta: metav1.TypeMeta{
Kind: " ",
APIVersion: "",
},
ObjectMeta: metav1.ObjectMeta{
Name: name,
},
}, metav1.CreateOptions{})
fmt.Printf("++++ Created ns: %s %+v\n", name, err)
return err
}