-
Notifications
You must be signed in to change notification settings - Fork 4
/
injector.go
92 lines (75 loc) · 2.77 KB
/
injector.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
// Copyright 2022 Baidu Inc. All Rights Reserved.
// ~/baidu/jpaas-caas/baiducloud-cce-cni-driver/pkg/webhook/injector.go - injector fields to handler
// modification history
// --------------------
// 2022/07/28, by wangeweiwei22, create injector
// DESCRIPTION
package injector
import (
"github.com/baidubce/baiducloud-cce-cni-driver/pkg/bce/cloud"
"github.com/baidubce/baiducloud-cce-cni-driver/pkg/config/types"
"github.com/baidubce/baiducloud-cce-cni-driver/pkg/generated/clientset/versioned"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
crdinformers "github.com/baidubce/baiducloud-cce-cni-driver/pkg/generated/informers/externalversions"
)
// injector crd client to handler of webhook
type CRDClient interface {
InjectCRDClient(crdClient versioned.Interface) error
}
// CrdClientInto will set crdClient and return the result on i if it implements Scheme. Returns
// false if i does not implement Scheme.
func CrdClientInto(crdClient versioned.Interface, i interface{}) (bool, error) {
if is, ok := i.(CRDClient); ok {
return true, is.InjectCRDClient(crdClient)
}
return false, nil
}
// injector kube client to handler of webhook
type KubeClient interface {
InjectKubeClient(kubeClient kubernetes.Interface) error
}
// CrdClientInto will set crdClient and return the result on i if it implements Scheme. Returns
// false if i does not implement Scheme.
func KubeClientInto(kubeClient kubernetes.Interface, i interface{}) (bool, error) {
if is, ok := i.(KubeClient); ok {
return true, is.InjectKubeClient(kubeClient)
}
return false, nil
}
type CloudClientInject interface {
InjectCloudClient(bceClient cloud.Interface) error
}
func CloudClientInto(bceClient cloud.Interface, i interface{}) (bool, error) {
if is, ok := i.(CloudClientInject); ok {
return true, is.InjectCloudClient(bceClient)
}
return false, nil
}
type KubeInformerInject interface {
InjectKubeInformer(kubeInformer informers.SharedInformerFactory) error
}
func KubeInformerInto(kubeInformer informers.SharedInformerFactory, i interface{}) (bool, error) {
if is, ok := i.(KubeInformerInject); ok {
return true, is.InjectKubeInformer(kubeInformer)
}
return false, nil
}
type NetworkInformerInject interface {
InjectNetworkInformer(networkInformer crdinformers.SharedInformerFactory) error
}
func NetworkInformerInto(networkInformer crdinformers.SharedInformerFactory, i interface{}) (bool, error) {
if is, ok := i.(NetworkInformerInject); ok {
return true, is.InjectNetworkInformer(networkInformer)
}
return false, nil
}
type CNIModeInject interface {
InjectCNIMode(cniMode types.ContainerNetworkMode) error
}
func CNIModeInto(cniMode types.ContainerNetworkMode, i interface{}) (bool, error) {
if is, ok := i.(CNIModeInject); ok {
return true, is.InjectCNIMode(cniMode)
}
return false, nil
}