Use Clientset interface instead of type for Fission/kubernetes clients (#2416)
Using interface makes it easy to create a fake client and unit test a specific portion of the code. We should be able to more write unit test and increase coverage of code with this change. Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
+7
-17
@@ -31,20 +31,13 @@ import (
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
metricsclient "k8s.io/metrics/pkg/client/clientset/versioned"
|
||||
|
||||
genClientset "github.com/fission/fission/pkg/generated/clientset/versioned"
|
||||
)
|
||||
|
||||
type (
|
||||
// FissionClient exports the client interface to be used
|
||||
FissionClient struct {
|
||||
genClientset.Interface
|
||||
}
|
||||
"github.com/fission/fission/pkg/generated/clientset/versioned"
|
||||
)
|
||||
|
||||
// GetKubernetesClient gets a kubernetes client using the kubeconfig file at the
|
||||
// environment var $KUBECONFIG, or an in-cluster config if that's
|
||||
// undefined.
|
||||
func GetKubernetesClient() (*rest.Config, *kubernetes.Clientset, *apiextensionsclient.Clientset, *metricsclient.Clientset, error) {
|
||||
func GetKubernetesClient() (*rest.Config, kubernetes.Interface, apiextensionsclient.Interface, metricsclient.Interface, error) {
|
||||
var config *rest.Config
|
||||
var err error
|
||||
|
||||
@@ -79,29 +72,26 @@ func GetKubernetesClient() (*rest.Config, *kubernetes.Clientset, *apiextensionsc
|
||||
return config, clientset, apiExtClientset, metricsClient, nil
|
||||
}
|
||||
|
||||
func MakeFissionClient() (*FissionClient, *kubernetes.Clientset, *apiextensionsclient.Clientset, *metricsclient.Clientset, error) {
|
||||
func MakeFissionClient() (versioned.Interface, kubernetes.Interface, apiextensionsclient.Interface, metricsclient.Interface, error) {
|
||||
config, kubeClient, apiExtClient, metricsClient, err := GetKubernetesClient()
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, err
|
||||
}
|
||||
|
||||
// make a CRD REST client with the config
|
||||
crdClient, err := genClientset.NewForConfig(config)
|
||||
crdClient, err := versioned.NewForConfig(config)
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, err
|
||||
}
|
||||
|
||||
fc := &FissionClient{
|
||||
Interface: crdClient,
|
||||
}
|
||||
return fc, kubeClient, apiExtClient, metricsClient, nil
|
||||
return crdClient, kubeClient, apiExtClient, metricsClient, nil
|
||||
}
|
||||
|
||||
// WaitForCRDs does a timeout to check if CRDs have been installed
|
||||
func (fc *FissionClient) WaitForCRDs() error {
|
||||
func WaitForCRDs(fissionClient versioned.Interface) error {
|
||||
start := time.Now()
|
||||
for {
|
||||
fi := fc.CoreV1().Functions(metav1.NamespaceDefault)
|
||||
fi := fissionClient.CoreV1().Functions(metav1.NamespaceDefault)
|
||||
_, err := fi.List(context.TODO(), metav1.ListOptions{})
|
||||
if err != nil {
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ import (
|
||||
)
|
||||
|
||||
// EnsureFissionCRDs checks if all Fission CRDs are present
|
||||
func EnsureFissionCRDs(logger *zap.Logger, clientset *apiextensionsclient.Clientset) error {
|
||||
func EnsureFissionCRDs(logger *zap.Logger, clientset apiextensionsclient.Interface) error {
|
||||
crdsExpected := []string{
|
||||
"canaryconfigs.fission.io",
|
||||
"environments.fission.io",
|
||||
|
||||
Reference in New Issue
Block a user