forked from openshift/origin
/
client_builder.go
84 lines (71 loc) · 2.81 KB
/
client_builder.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
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package controller
import (
restclient "k8s.io/client-go/rest"
"github.com/kubernetes-incubator/service-catalog/pkg/client/clientset_generated/clientset"
"github.com/golang/glog"
)
// ClientBuilder allows you to get clients and configs for controllers
type ClientBuilder interface {
// Config returns a new restclient.Config with the given user agent name.
Config(name string) (*restclient.Config, error)
// ConfigOrDie return a new restclient.Config with the given user agent
// name, or logs a fatal error.
ConfigOrDie(name string) *restclient.Config
// Client returns a new clientset.Interface with the given user agent
// name.
Client(name string) (clientset.Interface, error)
// ClientOrDie returns a new clientset.Interface with the given user agent
// name or logs a fatal error, destroying the computer and killing the
// operator and programmer.
ClientOrDie(name string) clientset.Interface
}
// SimpleClientBuilder returns a fixed client with different user agents
type SimpleClientBuilder struct {
// ClientConfig is a skeleton config to clone and use as the basis for each controller client
ClientConfig *restclient.Config
}
// Config returns a new restclient.Config with the given user agent name.
func (b SimpleClientBuilder) Config(name string) (*restclient.Config, error) {
clientConfig := *b.ClientConfig
return restclient.AddUserAgent(&clientConfig, name), nil
}
// ConfigOrDie return a new restclient.Config with the given user agent
// name, or logs a fatal error.
func (b SimpleClientBuilder) ConfigOrDie(name string) *restclient.Config {
clientConfig, err := b.Config(name)
if err != nil {
glog.Fatal(err)
}
return clientConfig
}
// Client returns a new clientset.Interface with the given user agent
// name.
func (b SimpleClientBuilder) Client(name string) (clientset.Interface, error) {
clientConfig, err := b.Config(name)
if err != nil {
return nil, err
}
return clientset.NewForConfig(clientConfig)
}
// ClientOrDie returns a new clientset.Interface with the given user agent
// name or logs a fatal error, destroying the computer and killing the
// operator and programmer.
func (b SimpleClientBuilder) ClientOrDie(name string) clientset.Interface {
client, err := b.Client(name)
if err != nil {
glog.Fatal(err)
}
return client
}