46 lines
878 B
Go
46 lines
878 B
Go
package crd
|
|
|
|
import (
|
|
"flink-kube-operator/internal/crd/v1alpha1"
|
|
|
|
"k8s.io/client-go/dynamic"
|
|
"k8s.io/client-go/rest"
|
|
"k8s.io/client-go/tools/clientcmd"
|
|
)
|
|
|
|
type Crd struct {
|
|
client dynamic.NamespaceableResourceInterface
|
|
}
|
|
|
|
func New() *Crd {
|
|
// Get Kubernetes config
|
|
config, err := clientcmd.BuildConfigFromFlags("", clientcmd.RecommendedHomeFile)
|
|
if err != nil {
|
|
config, err = rest.InClusterConfig()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
// Create dynamic client
|
|
dynamicClient, err := dynamic.NewForConfig(config)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// Get FlinkJob resource interface
|
|
flinkJobClient := dynamicClient.Resource(v1alpha1.FlinkJobGVR)
|
|
|
|
crd := Crd{
|
|
client: flinkJobClient,
|
|
}
|
|
|
|
// Watch for FlinkJob creation
|
|
jobEventObservable := crd.watchFlinkJobs()
|
|
|
|
// add finalizer to new resources
|
|
go crd.manageFinalizer(jobEventObservable)
|
|
|
|
return &crd
|
|
}
|