41 lines
931 B
Go
41 lines
931 B
Go
package tasks
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/klog/v2"
|
|
|
|
"github.com/karmada-io/karmada/operator/pkg/util/apiclient"
|
|
"github.com/karmada-io/karmada/operator/pkg/workflow"
|
|
)
|
|
|
|
// NewNamespaceTask init a task to create namespace
|
|
func NewNamespaceTask() workflow.Task {
|
|
return workflow.Task{
|
|
Name: "Namespace",
|
|
Run: runNamespace,
|
|
}
|
|
}
|
|
|
|
func runNamespace(r workflow.RunData) error {
|
|
data, ok := r.(InitData)
|
|
if !ok {
|
|
return errors.New("namespace task invoked with an invalid data struct")
|
|
}
|
|
klog.V(4).InfoS("[namespace] Running namespace task", "karmada", klog.KObj(data))
|
|
|
|
err := apiclient.CreateNamespace(data.RemoteClient(), &corev1.Namespace{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: data.GetNamespace(),
|
|
},
|
|
})
|
|
if err != nil {
|
|
return fmt.Errorf("failed to create namespace for %s, err: %w", data.GetName(), err)
|
|
}
|
|
|
|
return nil
|
|
}
|