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:
Sanket Sudake
2022-04-21 16:49:52 +05:30
committed by GitHub
parent 3bdbeb6c87
commit 2a43213387
39 changed files with 123 additions and 129 deletions
@@ -43,15 +43,15 @@ const (
// Kubernetes Version
type KubernetesVersion struct {
client *kubernetes.Clientset
client kubernetes.Interface
}
func NewKubernetesVersion(clientset *kubernetes.Clientset) Resource {
func NewKubernetesVersion(clientset kubernetes.Interface) Resource {
return KubernetesVersion{client: clientset}
}
func (res KubernetesVersion) Dump(dumpDir string) {
serverVer, err := res.client.ServerVersion()
serverVer, err := res.client.Discovery().ServerVersion()
if err != nil {
console.Error(fmt.Sprintf("Error setting up kubernetes client: %v", err))
return
@@ -63,12 +63,12 @@ func (res KubernetesVersion) Dump(dumpDir string) {
// Kubernetes Object Dumper
type KubernetesObjectDumper struct {
client *kubernetes.Clientset
client kubernetes.Interface
objType string
selector string
}
func NewKubernetesObjectDumper(clientset *kubernetes.Clientset, objType string, selector string) Resource {
func NewKubernetesObjectDumper(clientset kubernetes.Interface, objType string, selector string) Resource {
return KubernetesObjectDumper{
client: clientset,
objType: objType,
@@ -184,11 +184,11 @@ func nodeClean(node corev1.Node) corev1.Node {
}
type KubernetesPodLogDumper struct {
client *kubernetes.Clientset
client kubernetes.Interface
labelSelector string
}
func NewKubernetesPodLogDumper(clientset *kubernetes.Clientset, selector string) Resource {
func NewKubernetesPodLogDumper(clientset kubernetes.Interface, selector string) Resource {
return KubernetesPodLogDumper{
client: clientset,
labelSelector: selector,
+1 -1
View File
@@ -105,7 +105,7 @@ func KubifyName(old string) string {
// GetKubernetesClient builds a new kubernetes client. If the KUBECONFIG
// environment variable is empty or doesn't exist, ~/.kube/config is used for
// the kube config path
func GetKubernetesClient(kubeContext string) (*restclient.Config, *kubernetes.Clientset, error) {
func GetKubernetesClient(kubeContext string) (*restclient.Config, kubernetes.Interface, error) {
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
kubeConfigPath := os.Getenv("KUBECONFIG")