mirror of
https://github.com/open-cluster-management-io/ocm.git
synced 2026-05-06 01:07:03 +00:00
94 lines
3.0 KiB
Go
94 lines
3.0 KiB
Go
package framework
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
|
"k8s.io/apimachinery/pkg/api/meta"
|
|
"k8s.io/client-go/dynamic"
|
|
"k8s.io/client-go/kubernetes"
|
|
"k8s.io/client-go/rest"
|
|
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
|
|
|
|
addonclient "open-cluster-management.io/api/client/addon/clientset/versioned"
|
|
clusterclient "open-cluster-management.io/api/client/cluster/clientset/versioned"
|
|
operatorclient "open-cluster-management.io/api/client/operator/clientset/versioned"
|
|
workv1client "open-cluster-management.io/api/client/work/clientset/versioned"
|
|
)
|
|
|
|
type Images struct {
|
|
RegistrationImage string
|
|
WorkImage string
|
|
SingletonImage string
|
|
}
|
|
|
|
// OCMClients contains every kind of client that we need to interact with ocm components
|
|
type OCMClients struct {
|
|
KubeClient kubernetes.Interface
|
|
APIExtensionsClient apiextensionsclient.Interface
|
|
OperatorClient operatorclient.Interface
|
|
ClusterClient clusterclient.Interface
|
|
WorkClient workv1client.Interface
|
|
AddonClient addonclient.Interface
|
|
DynamicClient dynamic.Interface
|
|
RestMapper meta.RESTMapper
|
|
}
|
|
|
|
func NewOCMClients(clusterCfg *rest.Config) (*OCMClients, error) {
|
|
kubeClient, err := kubernetes.NewForConfig(clusterCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster client: %w", err)
|
|
}
|
|
|
|
httpClient, err := rest.HTTPClientFor(clusterCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster http client: %w", err)
|
|
}
|
|
|
|
restMapper, err := apiutil.NewDynamicRESTMapper(clusterCfg, httpClient)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster rest mapper: %w", err)
|
|
}
|
|
|
|
dynamicClient, err := dynamic.NewForConfig(clusterCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster dynamic client: %w", err)
|
|
}
|
|
|
|
apiExtensionsClient, err := apiextensionsclient.NewForConfig(clusterCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster api extensions client: %w", err)
|
|
}
|
|
|
|
operatorClient, err := operatorclient.NewForConfig(clusterCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster operator client: %w", err)
|
|
}
|
|
|
|
clusterClient, err := clusterclient.NewForConfig(clusterCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster cluster client: %w", err)
|
|
}
|
|
|
|
workClient, err := workv1client.NewForConfig(clusterCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster work client: %w", err)
|
|
}
|
|
|
|
addonClient, err := addonclient.NewForConfig(clusterCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create managed cluster addon client: %w", err)
|
|
}
|
|
|
|
return &OCMClients{
|
|
KubeClient: kubeClient,
|
|
APIExtensionsClient: apiExtensionsClient,
|
|
OperatorClient: operatorClient,
|
|
ClusterClient: clusterClient,
|
|
WorkClient: workClient,
|
|
AddonClient: addonClient,
|
|
DynamicClient: dynamicClient,
|
|
RestMapper: restMapper,
|
|
}, nil
|
|
}
|