-
Notifications
You must be signed in to change notification settings - Fork 129
/
clientset.go
117 lines (103 loc) · 3.96 KB
/
clientset.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package framework
import (
"fmt"
"testing"
clientappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
clientcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
policyv1client "k8s.io/client-go/kubernetes/typed/policy/v1"
restclient "k8s.io/client-go/rest"
configv1 "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1"
consoleclientv1 "github.com/openshift/client-go/console/clientset/versioned/typed/console/v1"
consoleclientv1alpha1 "github.com/openshift/client-go/console/clientset/versioned/typed/console/v1alpha1"
operatorclientv1 "github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1"
clientroutev1 "github.com/openshift/client-go/route/clientset/versioned/typed/route/v1"
)
// ClientSet is a set of Kubernetes clients.
type ClientSet struct {
// embedded
Core clientcorev1.CoreV1Interface
Apps clientappsv1.AppsV1Interface
Routes clientroutev1.RouteV1Interface
ConsoleCliDownloads consoleclientv1.ConsoleCLIDownloadInterface
ConsoleExternalLogLink consoleclientv1.ConsoleExternalLogLinkInterface
ConsoleLink consoleclientv1.ConsoleLinkInterface
ConsoleNotification consoleclientv1.ConsoleNotificationInterface
ConsolePluginV1Alpha1 consoleclientv1alpha1.ConsolePluginInterface
ConsolePluginV1 consoleclientv1.ConsolePluginInterface
ConsoleYAMLSample consoleclientv1.ConsoleYAMLSampleInterface
Operator operatorclientv1.ConsolesGetter
Console configv1.ConsolesGetter
ClusterOperator configv1.ClusterOperatorsGetter
Proxy configv1.ProxiesGetter
Infrastructure configv1.InfrastructuresGetter
Ingress configv1.IngressesGetter
PodDisruptionBudget policyv1client.PodDisruptionBudgetsGetter
}
// NewClientset creates a set of Kubernetes clients. The default kubeconfig is
// used if not provided.
func NewClientset(kubeconfig *restclient.Config) (*ClientSet, error) {
var err error
if kubeconfig == nil {
kubeconfig, err = GetConfig()
if err != nil {
return nil, fmt.Errorf("unable to get kubeconfig: %s", err)
}
}
clientset := &ClientSet{}
clientset.Core, err = clientcorev1.NewForConfig(kubeconfig)
if err != nil {
return nil, err
}
clientset.Apps, err = clientappsv1.NewForConfig(kubeconfig)
if err != nil {
return nil, err
}
clientset.Routes, err = clientroutev1.NewForConfig(kubeconfig)
if err != nil {
return nil, err
}
operatorsClient, err := operatorclientv1.NewForConfig(kubeconfig)
if err != nil {
return nil, err
}
clientset.Operator = operatorsClient
configClient, err := configv1.NewForConfig(kubeconfig)
if err != nil {
return nil, err
}
clientset.Console = configClient
clientset.Proxy = configClient
clientset.Infrastructure = configClient
clientset.Ingress = configClient
clientset.ClusterOperator = configClient
consoleClient, err := consoleclientv1.NewForConfig(kubeconfig)
if err != nil {
return nil, err
}
consoleClientAlpha1, err := consoleclientv1alpha1.NewForConfig(kubeconfig)
if err != nil {
return nil, err
}
clientset.ConsoleCliDownloads = consoleClient.ConsoleCLIDownloads()
clientset.ConsoleExternalLogLink = consoleClient.ConsoleExternalLogLinks()
clientset.ConsoleLink = consoleClient.ConsoleLinks()
clientset.ConsoleNotification = consoleClient.ConsoleNotifications()
clientset.ConsoleYAMLSample = consoleClient.ConsoleYAMLSamples()
clientset.ConsolePluginV1Alpha1 = consoleClientAlpha1.ConsolePlugins()
clientset.ConsolePluginV1 = consoleClient.ConsolePlugins()
policyClient, err := policyv1client.NewForConfig(kubeconfig)
if err != nil {
return nil, err
}
clientset.PodDisruptionBudget = policyClient
return clientset, nil
}
// MustNewClientset is like NewClienset but aborts the test if clienset cannot
// be constructed.
func MustNewClientset(t *testing.T, kubeconfig *restclient.Config) *ClientSet {
clientset, err := NewClientset(kubeconfig)
if err != nil {
t.Fatal(err)
}
return clientset
}