Repository: kubeflow/spark-operator

Issue:
Remove generated clientset, informer and listers
### What feature you would like to be added?

Remove generated clientset, informer and listers.

### Why is this needed?

- Generated clientset/informer/listers has not been updated for a long time and may not work.
- Simplify the codebase.

### Describe the solution you would like

Use controller-runtime client to interact with SparkApplication objects.

### Describe alternatives you have considered

_No response_

### Additional context

Related issue: #2268 .

### Love this feature?

Give it a 👍 We prioritize the features with most 👍

Hints from issue comments:
@jacobsalway: Something I came across: I need to go through this in more detail, but the [JobSet controller](https://github.com/kubernetes-sigs/jobset) which is also a Kubebuilder project seems to have up-to-date [code generation](https://github.com/kubernetes-sigs/jobset/blob/main/hack/update-codegen.sh)@ChenYi015: Let us remove them first since they have not been updated for a long time. If there are users requesting it in the future, we can consider adding it back and keep it up-to-date.

Besides, we can update the docs to guide users to use controller-runtime client.

Solution patch:
diff --git a/go.mod b/go.mod
index e659599..4098487 100644
--- a/go.mod
+++ b/go.mod
@@ -145,7 +145,7 @@ require (
 	go.opentelemetry.io/otel/trace v1.29.0 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
 	golang.org/x/crypto v0.36.0 // indirect
-	golang.org/x/net v0.37.0 // indirect
+	golang.org/x/net v0.38.0 // indirect
 	golang.org/x/oauth2 v0.25.0 // indirect
 	golang.org/x/sync v0.12.0 // indirect
 	golang.org/x/sys v0.31.0 // indirect
diff --git a/go.sum b/go.sum
index e72fc00..6f80be0 100644
--- a/go.sum
+++ b/go.sum
@@ -402,8 +402,8 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
-golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
 golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
 golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
diff --git a/hack/generate-groups.sh b/hack/generate-groups.sh
deleted file mode 100755
index 71534ec..0000000
--- a/hack/generate-groups.sh
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2017 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.
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-# generate-groups generates everything for a project with external types only, e.g. a project based
-# on CustomResourceDefinitions.
-
-if [ "$#" -lt 4 ] || [ "${1}" == "--help" ]; then
-cat <<EOF
-Usage: $(basename "$0") <generators> <output-package> <apis-package> <groups-versions> ...
-
-<generators>        the generators comma separated to run (deepcopy,defaulter,client,lister,informer) or "all".
-<output-package>    the output package name (e.g. github.com/example/project/pkg/generated).
-<apis-package>      the external types dir (e.g. github.com/example/api or github.com/example/project/pkg/apis).
-<groups-versions>   the groups and their versions in the format "groupA:v1,v2 groupB:v1 groupC:v2", relative
-to <api-package>.
-...                 arbitrary flags passed to all generator binaries.
-
-
-Examples:
-$(basename "$0") all             github.com/example/project/pkg/client github.com/example/project/pkg/apis "foo:v1 bar:v1alpha1,v1beta1"
-$(basename "$0") deepcopy,client github.com/example/project/pkg/client github.com/example/project/pkg/apis "foo:v1 bar:v1alpha1,v1beta1"
-EOF
-exit 0
-fi
-
-GENS="$1"
-OUTPUT_PKG="$2"
-APIS_PKG="$3"
-GROUPS_WITH_VERSIONS="$4"
-shift 4
-
-go install k8s.io/code-generator/cmd/{defaulter-gen,client-gen,lister-gen,informer-gen,deepcopy-gen}
-
-# Go installs the above commands to get installed in $GOBIN if defined, and $GOPATH/bin otherwise:
-GOBIN="$(go env GOBIN)"
-gobin="${GOBIN:-$(go env GOPATH)/bin}"
-
-function codegen::join() { local IFS="$1"; shift; echo "$*"; }
-
-# enumerate group versions
-FQ_APIS=() # e.g. k8s.io/api/apps/v1
-for GVs in ${GROUPS_WITH_VERSIONS}; do
-IFS=: read -r G Vs <<<"${GVs}"
-
-# enumerate versions
-for V in ${Vs//,/ }; do
-FQ_APIS+=("${APIS_PKG}/${G}/${V}")
-done
-done
-
-if [ "${GENS}" = "all" ] || grep -qw "deepcopy" <<<"${GENS}"; then
-echo "Generating deepcopy funcs"
-"${gobin}/deepcopy-gen" --input-dirs "$(codegen::join , "${FQ_APIS[@]}")" -O zz_generated.deepcopy --bounding-dirs "${APIS_PKG}" "$@"
-fi
-
-if [ "${GENS}" = "all" ] || grep -qw "client" <<<"${GENS}"; then
-echo "Generating clientset for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}"
-"${gobin}/client-gen" --clientset-name "${CLIENTSET_NAME_VERSIONED:-versioned}" --input-base "" --input "$(codegen::join , "${FQ_APIS[@]}")" --output-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}" "$@"
-fi
-
-if [ "${GENS}" = "all" ] || grep -qw "lister" <<<"${GENS}"; then
-echo "Generating listers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/listers"
-"${gobin}/lister-gen" --input-dirs "$(codegen::join , "${FQ_APIS[@]}")" --output-package "${OUTPUT_PKG}/listers" "$@"
-fi
-
-if [ "${GENS}" = "all" ] || grep -qw "informer" <<<"${GENS}"; then
-echo "Generating informers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/informers"
-"${gobin}/informer-gen" \
---input-dirs "$(codegen::join , "${FQ_APIS[@]}")" \
---versioned-clientset-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}/${CLIENTSET_NAME_VERSIONED:-versioned}" \
---listers-package "${OUTPUT_PKG}/listers" \
---output-package "${OUTPUT_PKG}/informers" \
-"$@"
-fi
diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh
deleted file mode 100755
index a74d7b3..0000000
--- a/hack/update-codegen.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 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.
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-SCRIPT_ROOT=$(dirname ${BASH_SOURCE})/..
-
-# generate the code with:
-# --output-base    because this script should also be able to run inside the vendor dir of
-#                  k8s.io/kubernetes. The output-base is needed for the generators to output into the vendor dir
-#                  instead of the $GOPATH directly. For normal projects this can be dropped.
-${SCRIPT_ROOT}/hack/generate-groups.sh "all" \
-  github.com/kubeflow/spark-operator/pkg/client github.com/kubeflow/spark-operator/pkg/apis \
-  sparkoperator.k8s.io:v1beta1,v1beta2 \
-  --go-header-file "$(dirname ${BASH_SOURCE})/custom-boilerplate.go.txt" \
-  --output-base "$(dirname ${BASH_SOURCE})/../../../.."
-
-# To use your own boilerplate text append:
-#   --go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
-
diff --git a/hack/verify-codegen.sh b/hack/verify-codegen.sh
deleted file mode 100755
index 6be80be..0000000
--- a/hack/verify-codegen.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 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.
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-SCRIPT_ROOT=$(dirname "${BASH_SOURCE}")/..
-
-DIFFROOT="${SCRIPT_ROOT}/pkg"
-TMP_DIFFROOT="${SCRIPT_ROOT}/_tmp/pkg"
-_tmp="${SCRIPT_ROOT}/_tmp"
-
-cleanup() {
-  rm -rf "${_tmp}"
-}
-trap "cleanup" EXIT SIGINT
-
-cleanup
-
-mkdir -p "${TMP_DIFFROOT}"
-cp -a "${DIFFROOT}"/* "${TMP_DIFFROOT}"
-
-"${SCRIPT_ROOT}/hack/update-codegen.sh"
-echo "diffing ${DIFFROOT} against freshly generated codegen"
-ret=0
-diff -Naupr "${DIFFROOT}" "${TMP_DIFFROOT}" || ret=$?
-cp -a "${TMP_DIFFROOT}"/* "${DIFFROOT}"
-if [[ $ret -eq 0 ]]
-then
-  echo "${DIFFROOT} up to date."
-else
-  echo "${DIFFROOT} is out of date. Please run hack/update-codegen.sh"
-  exit 1
-fi
diff --git a/pkg/client/clientset/versioned/clientset.go b/pkg/client/clientset/versioned/clientset.go
deleted file mode 100644
index 81bf0d0..0000000
--- a/pkg/client/clientset/versioned/clientset.go
+++ /dev/null
@@ -1,113 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package versioned
-
-import (
-	"fmt"
-
-	sparkoperatorv1beta1 "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1"
-	sparkoperatorv1beta2 "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2"
-	discovery "k8s.io/client-go/discovery"
-	rest "k8s.io/client-go/rest"
-	flowcontrol "k8s.io/client-go/util/flowcontrol"
-)
-
-type Interface interface {
-	Discovery() discovery.DiscoveryInterface
-	SparkoperatorV1beta1() sparkoperatorv1beta1.SparkoperatorV1beta1Interface
-	SparkoperatorV1beta2() sparkoperatorv1beta2.SparkoperatorV1beta2Interface
-}
-
-// Clientset contains the clients for groups. Each group has exactly one
-// version included in a Clientset.
-type Clientset struct {
-	*discovery.DiscoveryClient
-	sparkoperatorV1beta1 *sparkoperatorv1beta1.SparkoperatorV1beta1Client
-	sparkoperatorV1beta2 *sparkoperatorv1beta2.SparkoperatorV1beta2Client
-}
-
-// SparkoperatorV1beta1 retrieves the SparkoperatorV1beta1Client
-func (c *Clientset) SparkoperatorV1beta1() sparkoperatorv1beta1.SparkoperatorV1beta1Interface {
-	return c.sparkoperatorV1beta1
-}
-
-// SparkoperatorV1beta2 retrieves the SparkoperatorV1beta2Client
-func (c *Clientset) SparkoperatorV1beta2() sparkoperatorv1beta2.SparkoperatorV1beta2Interface {
-	return c.sparkoperatorV1beta2
-}
-
-// Discovery retrieves the DiscoveryClient
-func (c *Clientset) Discovery() discovery.DiscoveryInterface {
-	if c == nil {
-		return nil
-	}
-	return c.DiscoveryClient
-}
-
-// NewForConfig creates a new Clientset for the given config.
-// If config's RateLimiter is not set and QPS and Burst are acceptable,
-// NewForConfig will generate a rate-limiter in configShallowCopy.
-func NewForConfig(c *rest.Config) (*Clientset, error) {
-	configShallowCopy := *c
-	if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 {
-		if configShallowCopy.Burst <= 0 {
-			return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0")
-		}
-		configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst)
-	}
-	var cs Clientset
-	var err error
-	cs.sparkoperatorV1beta1, err = sparkoperatorv1beta1.NewForConfig(&configShallowCopy)
-	if err != nil {
-		return nil, err
-	}
-	cs.sparkoperatorV1beta2, err = sparkoperatorv1beta2.NewForConfig(&configShallowCopy)
-	if err != nil {
-		return nil, err
-	}
-
-	cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy)
-	if err != nil {
-		return nil, err
-	}
-	return &cs, nil
-}
-
-// NewForConfigOrDie creates a new Clientset for the given config and
-// panics if there is an error in the config.
-func NewForConfigOrDie(c *rest.Config) *Clientset {
-	var cs Clientset
-	cs.sparkoperatorV1beta1 = sparkoperatorv1beta1.NewForConfigOrDie(c)
-	cs.sparkoperatorV1beta2 = sparkoperatorv1beta2.NewForConfigOrDie(c)
-
-	cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c)
-	return &cs
-}
-
-// New creates a new Clientset for the given RESTClient.
-func New(c rest.Interface) *Clientset {
-	var cs Clientset
-	cs.sparkoperatorV1beta1 = sparkoperatorv1beta1.New(c)
-	cs.sparkoperatorV1beta2 = sparkoperatorv1beta2.New(c)
-
-	cs.DiscoveryClient = discovery.NewDiscoveryClient(c)
-	return &cs
-}
diff --git a/pkg/client/clientset/versioned/doc.go b/pkg/client/clientset/versioned/doc.go
deleted file mode 100644
index 1dbd100..0000000
--- a/pkg/client/clientset/versioned/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// This package has the automatically generated clientset.
-package versioned
diff --git a/pkg/client/clientset/versioned/fake/clientset_generated.go b/pkg/client/clientset/versioned/fake/clientset_generated.go
deleted file mode 100644
index 11da2fb..0000000
--- a/pkg/client/clientset/versioned/fake/clientset_generated.go
+++ /dev/null
@@ -1,91 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	clientset "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned"
-	sparkoperatorv1beta1 "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1"
-	fakesparkoperatorv1beta1 "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake"
-	sparkoperatorv1beta2 "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2"
-	fakesparkoperatorv1beta2 "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/watch"
-	"k8s.io/client-go/discovery"
-	fakediscovery "k8s.io/client-go/discovery/fake"
-	"k8s.io/client-go/testing"
-)
-
-// NewSimpleClientset returns a clientset that will respond with the provided objects.
-// It's backed by a very simple object tracker that processes creates, updates and deletions as-is,
-// without applying any validations and/or defaults. It shouldn't be considered a replacement
-// for a real clientset and is mostly useful in simple unit tests.
-func NewSimpleClientset(objects ...runtime.Object) *Clientset {
-	o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder())
-	for _, obj := range objects {
-		if err := o.Add(obj); err != nil {
-			panic(err)
-		}
-	}
-
-	cs := &Clientset{tracker: o}
-	cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
-	cs.AddReactor("*", "*", testing.ObjectReaction(o))
-	cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
-		gvr := action.GetResource()
-		ns := action.GetNamespace()
-		watch, err := o.Watch(gvr, ns)
-		if err != nil {
-			return false, nil, err
-		}
-		return true, watch, nil
-	})
-
-	return cs
-}
-
-// Clientset implements clientset.Interface. Meant to be embedded into a
-// struct to get a default implementation. This makes faking out just the method
-// you want to test easier.
-type Clientset struct {
-	testing.Fake
-	discovery *fakediscovery.FakeDiscovery
-	tracker   testing.ObjectTracker
-}
-
-func (c *Clientset) Discovery() discovery.DiscoveryInterface {
-	return c.discovery
-}
-
-func (c *Clientset) Tracker() testing.ObjectTracker {
-	return c.tracker
-}
-
-var _ clientset.Interface = &Clientset{}
-
-// SparkoperatorV1beta1 retrieves the SparkoperatorV1beta1Client
-func (c *Clientset) SparkoperatorV1beta1() sparkoperatorv1beta1.SparkoperatorV1beta1Interface {
-	return &fakesparkoperatorv1beta1.FakeSparkoperatorV1beta1{Fake: &c.Fake}
-}
-
-// SparkoperatorV1beta2 retrieves the SparkoperatorV1beta2Client
-func (c *Clientset) SparkoperatorV1beta2() sparkoperatorv1beta2.SparkoperatorV1beta2Interface {
-	return &fakesparkoperatorv1beta2.FakeSparkoperatorV1beta2{Fake: &c.Fake}
-}
diff --git a/pkg/client/clientset/versioned/fake/doc.go b/pkg/client/clientset/versioned/fake/doc.go
deleted file mode 100644
index 12b9b1b..0000000
--- a/pkg/client/clientset/versioned/fake/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// This package has the automatically generated fake clientset.
-package fake
diff --git a/pkg/client/clientset/versioned/fake/register.go b/pkg/client/clientset/versioned/fake/register.go
deleted file mode 100644
index 6fd11d3..0000000
--- a/pkg/client/clientset/versioned/fake/register.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	sparkoperatorv1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	sparkoperatorv1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	serializer "k8s.io/apimachinery/pkg/runtime/serializer"
-	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
-)
-
-var scheme = runtime.NewScheme()
-var codecs = serializer.NewCodecFactory(scheme)
-
-var localSchemeBuilder = runtime.SchemeBuilder{
-	sparkoperatorv1beta1.AddToScheme,
-	sparkoperatorv1beta2.AddToScheme,
-}
-
-// AddToScheme adds all types of this clientset into the given scheme. This allows composition
-// of clientsets, like in:
-//
-//	import (
-//	  "k8s.io/client-go/kubernetes"
-//	  clientsetscheme "k8s.io/client-go/kubernetes/scheme"
-//	  aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
-//	)
-//
-//	kclientset, _ := kubernetes.NewForConfig(c)
-//	_ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
-//
-// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
-// correctly.
-var AddToScheme = localSchemeBuilder.AddToScheme
-
-func init() {
-	v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"})
-	utilruntime.Must(AddToScheme(scheme))
-}
diff --git a/pkg/client/clientset/versioned/scheme/doc.go b/pkg/client/clientset/versioned/scheme/doc.go
deleted file mode 100644
index de419fd..0000000
--- a/pkg/client/clientset/versioned/scheme/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// This package contains the scheme of the automatically generated clientset.
-package scheme
diff --git a/pkg/client/clientset/versioned/scheme/register.go b/pkg/client/clientset/versioned/scheme/register.go
deleted file mode 100644
index d765130..0000000
--- a/pkg/client/clientset/versioned/scheme/register.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package scheme
-
-import (
-	sparkoperatorv1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	sparkoperatorv1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	serializer "k8s.io/apimachinery/pkg/runtime/serializer"
-	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
-)
-
-var Scheme = runtime.NewScheme()
-var Codecs = serializer.NewCodecFactory(Scheme)
-var ParameterCodec = runtime.NewParameterCodec(Scheme)
-var localSchemeBuilder = runtime.SchemeBuilder{
-	sparkoperatorv1beta1.AddToScheme,
-	sparkoperatorv1beta2.AddToScheme,
-}
-
-// AddToScheme adds all types of this clientset into the given scheme. This allows composition
-// of clientsets, like in:
-//
-//	import (
-//	  "k8s.io/client-go/kubernetes"
-//	  clientsetscheme "k8s.io/client-go/kubernetes/scheme"
-//	  aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
-//	)
-//
-//	kclientset, _ := kubernetes.NewForConfig(c)
-//	_ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
-//
-// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
-// correctly.
-var AddToScheme = localSchemeBuilder.AddToScheme
-
-func init() {
-	v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
-	utilruntime.Must(AddToScheme(Scheme))
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/doc.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/doc.go
deleted file mode 100644
index 468d8af..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// This package has the automatically generated typed clients.
-package v1beta1
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/doc.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/doc.go
deleted file mode 100644
index 4179d57..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// Package fake has the automatically generated clients.
-package fake
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_scheduledsparkapplication.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_scheduledsparkapplication.go
deleted file mode 100644
index 270b95a..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_scheduledsparkapplication.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeScheduledSparkApplications implements ScheduledSparkApplicationInterface
-type FakeScheduledSparkApplications struct {
-	Fake *FakeSparkoperatorV1beta1
-	ns   string
-}
-
-var scheduledsparkapplicationsResource = schema.GroupVersionResource{Group: "sparkoperator.k8s.io", Version: "v1beta1", Resource: "scheduledsparkapplications"}
-
-var scheduledsparkapplicationsKind = schema.GroupVersionKind{Group: "sparkoperator.k8s.io", Version: "v1beta1", Kind: "ScheduledSparkApplication"}
-
-// Get takes name of the scheduledSparkApplication, and returns the corresponding scheduledSparkApplication object, and an error if there is any.
-func (c *FakeScheduledSparkApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ScheduledSparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(scheduledsparkapplicationsResource, c.ns, name), &v1beta1.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta1.ScheduledSparkApplication), err
-}
-
-// List takes label and field selectors, and returns the list of ScheduledSparkApplications that match those selectors.
-func (c *FakeScheduledSparkApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ScheduledSparkApplicationList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(scheduledsparkapplicationsResource, scheduledsparkapplicationsKind, c.ns, opts), &v1beta1.ScheduledSparkApplicationList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1beta1.ScheduledSparkApplicationList{ListMeta: obj.(*v1beta1.ScheduledSparkApplicationList).ListMeta}
-	for _, item := range obj.(*v1beta1.ScheduledSparkApplicationList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested scheduledSparkApplications.
-func (c *FakeScheduledSparkApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(scheduledsparkapplicationsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a scheduledSparkApplication and creates it.  Returns the server's representation of the scheduledSparkApplication, and an error, if there is any.
-func (c *FakeScheduledSparkApplications) Create(ctx context.Context, scheduledSparkApplication *v1beta1.ScheduledSparkApplication, opts v1.CreateOptions) (result *v1beta1.ScheduledSparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(scheduledsparkapplicationsResource, c.ns, scheduledSparkApplication), &v1beta1.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta1.ScheduledSparkApplication), err
-}
-
-// Update takes the representation of a scheduledSparkApplication and updates it. Returns the server's representation of the scheduledSparkApplication, and an error, if there is any.
-func (c *FakeScheduledSparkApplications) Update(ctx context.Context, scheduledSparkApplication *v1beta1.ScheduledSparkApplication, opts v1.UpdateOptions) (result *v1beta1.ScheduledSparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(scheduledsparkapplicationsResource, c.ns, scheduledSparkApplication), &v1beta1.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta1.ScheduledSparkApplication), err
-}
-
-// Delete takes name of the scheduledSparkApplication and deletes it. Returns an error if one occurs.
-func (c *FakeScheduledSparkApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(scheduledsparkapplicationsResource, c.ns, name), &v1beta1.ScheduledSparkApplication{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeScheduledSparkApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(scheduledsparkapplicationsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1beta1.ScheduledSparkApplicationList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched scheduledSparkApplication.
-func (c *FakeScheduledSparkApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ScheduledSparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(scheduledsparkapplicationsResource, c.ns, name, pt, data, subresources...), &v1beta1.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta1.ScheduledSparkApplication), err
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_sparkapplication.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_sparkapplication.go
deleted file mode 100644
index d8b61c6..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_sparkapplication.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeSparkApplications implements SparkApplicationInterface
-type FakeSparkApplications struct {
-	Fake *FakeSparkoperatorV1beta1
-	ns   string
-}
-
-var sparkapplicationsResource = schema.GroupVersionResource{Group: "sparkoperator.k8s.io", Version: "v1beta1", Resource: "sparkapplications"}
-
-var sparkapplicationsKind = schema.GroupVersionKind{Group: "sparkoperator.k8s.io", Version: "v1beta1", Kind: "SparkApplication"}
-
-// Get takes name of the sparkApplication, and returns the corresponding sparkApplication object, and an error if there is any.
-func (c *FakeSparkApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.SparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(sparkapplicationsResource, c.ns, name), &v1beta1.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta1.SparkApplication), err
-}
-
-// List takes label and field selectors, and returns the list of SparkApplications that match those selectors.
-func (c *FakeSparkApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.SparkApplicationList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(sparkapplicationsResource, sparkapplicationsKind, c.ns, opts), &v1beta1.SparkApplicationList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1beta1.SparkApplicationList{ListMeta: obj.(*v1beta1.SparkApplicationList).ListMeta}
-	for _, item := range obj.(*v1beta1.SparkApplicationList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested sparkApplications.
-func (c *FakeSparkApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(sparkapplicationsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a sparkApplication and creates it.  Returns the server's representation of the sparkApplication, and an error, if there is any.
-func (c *FakeSparkApplications) Create(ctx context.Context, sparkApplication *v1beta1.SparkApplication, opts v1.CreateOptions) (result *v1beta1.SparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(sparkapplicationsResource, c.ns, sparkApplication), &v1beta1.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta1.SparkApplication), err
-}
-
-// Update takes the representation of a sparkApplication and updates it. Returns the server's representation of the sparkApplication, and an error, if there is any.
-func (c *FakeSparkApplications) Update(ctx context.Context, sparkApplication *v1beta1.SparkApplication, opts v1.UpdateOptions) (result *v1beta1.SparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(sparkapplicationsResource, c.ns, sparkApplication), &v1beta1.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta1.SparkApplication), err
-}
-
-// Delete takes name of the sparkApplication and deletes it. Returns an error if one occurs.
-func (c *FakeSparkApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(sparkapplicationsResource, c.ns, name), &v1beta1.SparkApplication{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeSparkApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(sparkapplicationsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1beta1.SparkApplicationList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched sparkApplication.
-func (c *FakeSparkApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.SparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(sparkapplicationsResource, c.ns, name, pt, data, subresources...), &v1beta1.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta1.SparkApplication), err
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_sparkoperator.k8s.io_client.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_sparkoperator.k8s.io_client.go
deleted file mode 100644
index d125413..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/fake/fake_sparkoperator.k8s.io_client.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	v1beta1 "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1"
-	rest "k8s.io/client-go/rest"
-	testing "k8s.io/client-go/testing"
-)
-
-type FakeSparkoperatorV1beta1 struct {
-	*testing.Fake
-}
-
-func (c *FakeSparkoperatorV1beta1) ScheduledSparkApplications(namespace string) v1beta1.ScheduledSparkApplicationInterface {
-	return &FakeScheduledSparkApplications{c, namespace}
-}
-
-func (c *FakeSparkoperatorV1beta1) SparkApplications(namespace string) v1beta1.SparkApplicationInterface {
-	return &FakeSparkApplications{c, namespace}
-}
-
-// RESTClient returns a RESTClient that is used to communicate
-// with API server by this client implementation.
-func (c *FakeSparkoperatorV1beta1) RESTClient() rest.Interface {
-	var ret *rest.RESTClient
-	return ret
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/generated_expansion.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/generated_expansion.go
deleted file mode 100644
index 7448b6b..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/generated_expansion.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1beta1
-
-type ScheduledSparkApplicationExpansion interface{}
-
-type SparkApplicationExpansion interface{}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go
deleted file mode 100644
index 9447017..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go
+++ /dev/null
@@ -1,180 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
-	"context"
-	"time"
-
-	v1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	scheme "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/scheme"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// ScheduledSparkApplicationsGetter has a method to return a ScheduledSparkApplicationInterface.
-// A group's client should implement this interface.
-type ScheduledSparkApplicationsGetter interface {
-	ScheduledSparkApplications(namespace string) ScheduledSparkApplicationInterface
-}
-
-// ScheduledSparkApplicationInterface has methods to work with ScheduledSparkApplication resources.
-type ScheduledSparkApplicationInterface interface {
-	Create(ctx context.Context, scheduledSparkApplication *v1beta1.ScheduledSparkApplication, opts v1.CreateOptions) (*v1beta1.ScheduledSparkApplication, error)
-	Update(ctx context.Context, scheduledSparkApplication *v1beta1.ScheduledSparkApplication, opts v1.UpdateOptions) (*v1beta1.ScheduledSparkApplication, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.ScheduledSparkApplication, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ScheduledSparkApplicationList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ScheduledSparkApplication, err error)
-	ScheduledSparkApplicationExpansion
-}
-
-// scheduledSparkApplications implements ScheduledSparkApplicationInterface
-type scheduledSparkApplications struct {
-	client rest.Interface
-	ns     string
-}
-
-// newScheduledSparkApplications returns a ScheduledSparkApplications
-func newScheduledSparkApplications(c *SparkoperatorV1beta1Client, namespace string) *scheduledSparkApplications {
-	return &scheduledSparkApplications{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the scheduledSparkApplication, and returns the corresponding scheduledSparkApplication object, and an error if there is any.
-func (c *scheduledSparkApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ScheduledSparkApplication, err error) {
-	result = &v1beta1.ScheduledSparkApplication{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of ScheduledSparkApplications that match those selectors.
-func (c *scheduledSparkApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ScheduledSparkApplicationList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1beta1.ScheduledSparkApplicationList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested scheduledSparkApplications.
-func (c *scheduledSparkApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a scheduledSparkApplication and creates it.  Returns the server's representation of the scheduledSparkApplication, and an error, if there is any.
-func (c *scheduledSparkApplications) Create(ctx context.Context, scheduledSparkApplication *v1beta1.ScheduledSparkApplication, opts v1.CreateOptions) (result *v1beta1.ScheduledSparkApplication, err error) {
-	result = &v1beta1.ScheduledSparkApplication{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(scheduledSparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a scheduledSparkApplication and updates it. Returns the server's representation of the scheduledSparkApplication, and an error, if there is any.
-func (c *scheduledSparkApplications) Update(ctx context.Context, scheduledSparkApplication *v1beta1.ScheduledSparkApplication, opts v1.UpdateOptions) (result *v1beta1.ScheduledSparkApplication, err error) {
-	result = &v1beta1.ScheduledSparkApplication{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(scheduledSparkApplication.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(scheduledSparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the scheduledSparkApplication and deletes it. Returns an error if one occurs.
-func (c *scheduledSparkApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *scheduledSparkApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched scheduledSparkApplication.
-func (c *scheduledSparkApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ScheduledSparkApplication, err error) {
-	result = &v1beta1.ScheduledSparkApplication{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/sparkapplication.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/sparkapplication.go
deleted file mode 100644
index b638991..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/sparkapplication.go
+++ /dev/null
@@ -1,180 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
-	"context"
-	"time"
-
-	v1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	scheme "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/scheme"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// SparkApplicationsGetter has a method to return a SparkApplicationInterface.
-// A group's client should implement this interface.
-type SparkApplicationsGetter interface {
-	SparkApplications(namespace string) SparkApplicationInterface
-}
-
-// SparkApplicationInterface has methods to work with SparkApplication resources.
-type SparkApplicationInterface interface {
-	Create(ctx context.Context, sparkApplication *v1beta1.SparkApplication, opts v1.CreateOptions) (*v1beta1.SparkApplication, error)
-	Update(ctx context.Context, sparkApplication *v1beta1.SparkApplication, opts v1.UpdateOptions) (*v1beta1.SparkApplication, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.SparkApplication, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.SparkApplicationList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.SparkApplication, err error)
-	SparkApplicationExpansion
-}
-
-// sparkApplications implements SparkApplicationInterface
-type sparkApplications struct {
-	client rest.Interface
-	ns     string
-}
-
-// newSparkApplications returns a SparkApplications
-func newSparkApplications(c *SparkoperatorV1beta1Client, namespace string) *sparkApplications {
-	return &sparkApplications{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the sparkApplication, and returns the corresponding sparkApplication object, and an error if there is any.
-func (c *sparkApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.SparkApplication, err error) {
-	result = &v1beta1.SparkApplication{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of SparkApplications that match those selectors.
-func (c *sparkApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.SparkApplicationList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1beta1.SparkApplicationList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested sparkApplications.
-func (c *sparkApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a sparkApplication and creates it.  Returns the server's representation of the sparkApplication, and an error, if there is any.
-func (c *sparkApplications) Create(ctx context.Context, sparkApplication *v1beta1.SparkApplication, opts v1.CreateOptions) (result *v1beta1.SparkApplication, err error) {
-	result = &v1beta1.SparkApplication{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(sparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a sparkApplication and updates it. Returns the server's representation of the sparkApplication, and an error, if there is any.
-func (c *sparkApplications) Update(ctx context.Context, sparkApplication *v1beta1.SparkApplication, opts v1.UpdateOptions) (result *v1beta1.SparkApplication, err error) {
-	result = &v1beta1.SparkApplication{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(sparkApplication.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(sparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the sparkApplication and deletes it. Returns an error if one occurs.
-func (c *sparkApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *sparkApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched sparkApplication.
-func (c *sparkApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.SparkApplication, err error) {
-	result = &v1beta1.SparkApplication{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/sparkoperator.k8s.io_client.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/sparkoperator.k8s.io_client.go
deleted file mode 100644
index 016a05d..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta1/sparkoperator.k8s.io_client.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
-	v1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	"github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/scheme"
-	rest "k8s.io/client-go/rest"
-)
-
-type SparkoperatorV1beta1Interface interface {
-	RESTClient() rest.Interface
-	ScheduledSparkApplicationsGetter
-	SparkApplicationsGetter
-}
-
-// SparkoperatorV1beta1Client is used to interact with features provided by the sparkoperator.k8s.io group.
-type SparkoperatorV1beta1Client struct {
-	restClient rest.Interface
-}
-
-func (c *SparkoperatorV1beta1Client) ScheduledSparkApplications(namespace string) ScheduledSparkApplicationInterface {
-	return newScheduledSparkApplications(c, namespace)
-}
-
-func (c *SparkoperatorV1beta1Client) SparkApplications(namespace string) SparkApplicationInterface {
-	return newSparkApplications(c, namespace)
-}
-
-// NewForConfig creates a new SparkoperatorV1beta1Client for the given config.
-func NewForConfig(c *rest.Config) (*SparkoperatorV1beta1Client, error) {
-	config := *c
-	if err := setConfigDefaults(&config); err != nil {
-		return nil, err
-	}
-	client, err := rest.RESTClientFor(&config)
-	if err != nil {
-		return nil, err
-	}
-	return &SparkoperatorV1beta1Client{client}, nil
-}
-
-// NewForConfigOrDie creates a new SparkoperatorV1beta1Client for the given config and
-// panics if there is an error in the config.
-func NewForConfigOrDie(c *rest.Config) *SparkoperatorV1beta1Client {
-	client, err := NewForConfig(c)
-	if err != nil {
-		panic(err)
-	}
-	return client
-}
-
-// New creates a new SparkoperatorV1beta1Client for the given RESTClient.
-func New(c rest.Interface) *SparkoperatorV1beta1Client {
-	return &SparkoperatorV1beta1Client{c}
-}
-
-func setConfigDefaults(config *rest.Config) error {
-	gv := v1beta1.GroupVersion
-	config.GroupVersion = &gv
-	config.APIPath = "/apis"
-	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
-
-	if config.UserAgent == "" {
-		config.UserAgent = rest.DefaultKubernetesUserAgent()
-	}
-
-	return nil
-}
-
-// RESTClient returns a RESTClient that is used to communicate
-// with API server by this client implementation.
-func (c *SparkoperatorV1beta1Client) RESTClient() rest.Interface {
-	if c == nil {
-		return nil
-	}
-	return c.restClient
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/doc.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/doc.go
deleted file mode 100644
index a148085..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// This package has the automatically generated typed clients.
-package v1beta2
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/doc.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/doc.go
deleted file mode 100644
index 4179d57..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// Package fake has the automatically generated clients.
-package fake
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_scheduledsparkapplication.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_scheduledsparkapplication.go
deleted file mode 100644
index be3cdec..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_scheduledsparkapplication.go
+++ /dev/null
@@ -1,144 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeScheduledSparkApplications implements ScheduledSparkApplicationInterface
-type FakeScheduledSparkApplications struct {
-	Fake *FakeSparkoperatorV1beta2
-	ns   string
-}
-
-var scheduledsparkapplicationsResource = schema.GroupVersionResource{Group: "sparkoperator.k8s.io", Version: "v1beta2", Resource: "scheduledsparkapplications"}
-
-var scheduledsparkapplicationsKind = schema.GroupVersionKind{Group: "sparkoperator.k8s.io", Version: "v1beta2", Kind: "ScheduledSparkApplication"}
-
-// Get takes name of the scheduledSparkApplication, and returns the corresponding scheduledSparkApplication object, and an error if there is any.
-func (c *FakeScheduledSparkApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.ScheduledSparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(scheduledsparkapplicationsResource, c.ns, name), &v1beta2.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.ScheduledSparkApplication), err
-}
-
-// List takes label and field selectors, and returns the list of ScheduledSparkApplications that match those selectors.
-func (c *FakeScheduledSparkApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.ScheduledSparkApplicationList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(scheduledsparkapplicationsResource, scheduledsparkapplicationsKind, c.ns, opts), &v1beta2.ScheduledSparkApplicationList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1beta2.ScheduledSparkApplicationList{ListMeta: obj.(*v1beta2.ScheduledSparkApplicationList).ListMeta}
-	for _, item := range obj.(*v1beta2.ScheduledSparkApplicationList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested scheduledSparkApplications.
-func (c *FakeScheduledSparkApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(scheduledsparkapplicationsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a scheduledSparkApplication and creates it.  Returns the server's representation of the scheduledSparkApplication, and an error, if there is any.
-func (c *FakeScheduledSparkApplications) Create(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.CreateOptions) (result *v1beta2.ScheduledSparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(scheduledsparkapplicationsResource, c.ns, scheduledSparkApplication), &v1beta2.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.ScheduledSparkApplication), err
-}
-
-// Update takes the representation of a scheduledSparkApplication and updates it. Returns the server's representation of the scheduledSparkApplication, and an error, if there is any.
-func (c *FakeScheduledSparkApplications) Update(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.UpdateOptions) (result *v1beta2.ScheduledSparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(scheduledsparkapplicationsResource, c.ns, scheduledSparkApplication), &v1beta2.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.ScheduledSparkApplication), err
-}
-
-// UpdateStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakeScheduledSparkApplications) UpdateStatus(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.UpdateOptions) (*v1beta2.ScheduledSparkApplication, error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateSubresourceAction(scheduledsparkapplicationsResource, "status", c.ns, scheduledSparkApplication), &v1beta2.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.ScheduledSparkApplication), err
-}
-
-// Delete takes name of the scheduledSparkApplication and deletes it. Returns an error if one occurs.
-func (c *FakeScheduledSparkApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(scheduledsparkapplicationsResource, c.ns, name), &v1beta2.ScheduledSparkApplication{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeScheduledSparkApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(scheduledsparkapplicationsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1beta2.ScheduledSparkApplicationList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched scheduledSparkApplication.
-func (c *FakeScheduledSparkApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ScheduledSparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(scheduledsparkapplicationsResource, c.ns, name, pt, data, subresources...), &v1beta2.ScheduledSparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.ScheduledSparkApplication), err
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_sparkapplication.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_sparkapplication.go
deleted file mode 100644
index b5bddec..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_sparkapplication.go
+++ /dev/null
@@ -1,144 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeSparkApplications implements SparkApplicationInterface
-type FakeSparkApplications struct {
-	Fake *FakeSparkoperatorV1beta2
-	ns   string
-}
-
-var sparkapplicationsResource = schema.GroupVersionResource{Group: "sparkoperator.k8s.io", Version: "v1beta2", Resource: "sparkapplications"}
-
-var sparkapplicationsKind = schema.GroupVersionKind{Group: "sparkoperator.k8s.io", Version: "v1beta2", Kind: "SparkApplication"}
-
-// Get takes name of the sparkApplication, and returns the corresponding sparkApplication object, and an error if there is any.
-func (c *FakeSparkApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.SparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(sparkapplicationsResource, c.ns, name), &v1beta2.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.SparkApplication), err
-}
-
-// List takes label and field selectors, and returns the list of SparkApplications that match those selectors.
-func (c *FakeSparkApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.SparkApplicationList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(sparkapplicationsResource, sparkapplicationsKind, c.ns, opts), &v1beta2.SparkApplicationList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1beta2.SparkApplicationList{ListMeta: obj.(*v1beta2.SparkApplicationList).ListMeta}
-	for _, item := range obj.(*v1beta2.SparkApplicationList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested sparkApplications.
-func (c *FakeSparkApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(sparkapplicationsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a sparkApplication and creates it.  Returns the server's representation of the sparkApplication, and an error, if there is any.
-func (c *FakeSparkApplications) Create(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.CreateOptions) (result *v1beta2.SparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(sparkapplicationsResource, c.ns, sparkApplication), &v1beta2.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.SparkApplication), err
-}
-
-// Update takes the representation of a sparkApplication and updates it. Returns the server's representation of the sparkApplication, and an error, if there is any.
-func (c *FakeSparkApplications) Update(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.UpdateOptions) (result *v1beta2.SparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(sparkapplicationsResource, c.ns, sparkApplication), &v1beta2.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.SparkApplication), err
-}
-
-// UpdateStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakeSparkApplications) UpdateStatus(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.UpdateOptions) (*v1beta2.SparkApplication, error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateSubresourceAction(sparkapplicationsResource, "status", c.ns, sparkApplication), &v1beta2.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.SparkApplication), err
-}
-
-// Delete takes name of the sparkApplication and deletes it. Returns an error if one occurs.
-func (c *FakeSparkApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(sparkapplicationsResource, c.ns, name), &v1beta2.SparkApplication{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeSparkApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(sparkapplicationsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1beta2.SparkApplicationList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched sparkApplication.
-func (c *FakeSparkApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.SparkApplication, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(sparkapplicationsResource, c.ns, name, pt, data, subresources...), &v1beta2.SparkApplication{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1beta2.SparkApplication), err
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_sparkoperator.k8s.io_client.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_sparkoperator.k8s.io_client.go
deleted file mode 100644
index e5fb851..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/fake/fake_sparkoperator.k8s.io_client.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	v1beta2 "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2"
-	rest "k8s.io/client-go/rest"
-	testing "k8s.io/client-go/testing"
-)
-
-type FakeSparkoperatorV1beta2 struct {
-	*testing.Fake
-}
-
-func (c *FakeSparkoperatorV1beta2) ScheduledSparkApplications(namespace string) v1beta2.ScheduledSparkApplicationInterface {
-	return &FakeScheduledSparkApplications{c, namespace}
-}
-
-func (c *FakeSparkoperatorV1beta2) SparkApplications(namespace string) v1beta2.SparkApplicationInterface {
-	return &FakeSparkApplications{c, namespace}
-}
-
-// RESTClient returns a RESTClient that is used to communicate
-// with API server by this client implementation.
-func (c *FakeSparkoperatorV1beta2) RESTClient() rest.Interface {
-	var ret *rest.RESTClient
-	return ret
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/generated_expansion.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/generated_expansion.go
deleted file mode 100644
index 5983e5a..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/generated_expansion.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1beta2
-
-type ScheduledSparkApplicationExpansion interface{}
-
-type SparkApplicationExpansion interface{}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go
deleted file mode 100644
index 2a1b6f8..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go
+++ /dev/null
@@ -1,197 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1beta2
-
-import (
-	"context"
-	"time"
-
-	v1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	scheme "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/scheme"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// ScheduledSparkApplicationsGetter has a method to return a ScheduledSparkApplicationInterface.
-// A group's client should implement this interface.
-type ScheduledSparkApplicationsGetter interface {
-	ScheduledSparkApplications(namespace string) ScheduledSparkApplicationInterface
-}
-
-// ScheduledSparkApplicationInterface has methods to work with ScheduledSparkApplication resources.
-type ScheduledSparkApplicationInterface interface {
-	Create(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.CreateOptions) (*v1beta2.ScheduledSparkApplication, error)
-	Update(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.UpdateOptions) (*v1beta2.ScheduledSparkApplication, error)
-	UpdateStatus(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.UpdateOptions) (*v1beta2.ScheduledSparkApplication, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.ScheduledSparkApplication, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.ScheduledSparkApplicationList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ScheduledSparkApplication, err error)
-	ScheduledSparkApplicationExpansion
-}
-
-// scheduledSparkApplications implements ScheduledSparkApplicationInterface
-type scheduledSparkApplications struct {
-	client rest.Interface
-	ns     string
-}
-
-// newScheduledSparkApplications returns a ScheduledSparkApplications
-func newScheduledSparkApplications(c *SparkoperatorV1beta2Client, namespace string) *scheduledSparkApplications {
-	return &scheduledSparkApplications{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the scheduledSparkApplication, and returns the corresponding scheduledSparkApplication object, and an error if there is any.
-func (c *scheduledSparkApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.ScheduledSparkApplication, err error) {
-	result = &v1beta2.ScheduledSparkApplication{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of ScheduledSparkApplications that match those selectors.
-func (c *scheduledSparkApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.ScheduledSparkApplicationList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1beta2.ScheduledSparkApplicationList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested scheduledSparkApplications.
-func (c *scheduledSparkApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a scheduledSparkApplication and creates it.  Returns the server's representation of the scheduledSparkApplication, and an error, if there is any.
-func (c *scheduledSparkApplications) Create(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.CreateOptions) (result *v1beta2.ScheduledSparkApplication, err error) {
-	result = &v1beta2.ScheduledSparkApplication{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(scheduledSparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a scheduledSparkApplication and updates it. Returns the server's representation of the scheduledSparkApplication, and an error, if there is any.
-func (c *scheduledSparkApplications) Update(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.UpdateOptions) (result *v1beta2.ScheduledSparkApplication, err error) {
-	result = &v1beta2.ScheduledSparkApplication{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(scheduledSparkApplication.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(scheduledSparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// UpdateStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *scheduledSparkApplications) UpdateStatus(ctx context.Context, scheduledSparkApplication *v1beta2.ScheduledSparkApplication, opts v1.UpdateOptions) (result *v1beta2.ScheduledSparkApplication, err error) {
-	result = &v1beta2.ScheduledSparkApplication{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(scheduledSparkApplication.Name).
-		SubResource("status").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(scheduledSparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the scheduledSparkApplication and deletes it. Returns an error if one occurs.
-func (c *scheduledSparkApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *scheduledSparkApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched scheduledSparkApplication.
-func (c *scheduledSparkApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ScheduledSparkApplication, err error) {
-	result = &v1beta2.ScheduledSparkApplication{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("scheduledsparkapplications").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/sparkapplication.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/sparkapplication.go
deleted file mode 100644
index 6e6e17a..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/sparkapplication.go
+++ /dev/null
@@ -1,197 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1beta2
-
-import (
-	"context"
-	"time"
-
-	v1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	scheme "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/scheme"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// SparkApplicationsGetter has a method to return a SparkApplicationInterface.
-// A group's client should implement this interface.
-type SparkApplicationsGetter interface {
-	SparkApplications(namespace string) SparkApplicationInterface
-}
-
-// SparkApplicationInterface has methods to work with SparkApplication resources.
-type SparkApplicationInterface interface {
-	Create(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.CreateOptions) (*v1beta2.SparkApplication, error)
-	Update(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.UpdateOptions) (*v1beta2.SparkApplication, error)
-	UpdateStatus(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.UpdateOptions) (*v1beta2.SparkApplication, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.SparkApplication, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.SparkApplicationList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.SparkApplication, err error)
-	SparkApplicationExpansion
-}
-
-// sparkApplications implements SparkApplicationInterface
-type sparkApplications struct {
-	client rest.Interface
-	ns     string
-}
-
-// newSparkApplications returns a SparkApplications
-func newSparkApplications(c *SparkoperatorV1beta2Client, namespace string) *sparkApplications {
-	return &sparkApplications{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the sparkApplication, and returns the corresponding sparkApplication object, and an error if there is any.
-func (c *sparkApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.SparkApplication, err error) {
-	result = &v1beta2.SparkApplication{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of SparkApplications that match those selectors.
-func (c *sparkApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.SparkApplicationList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1beta2.SparkApplicationList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested sparkApplications.
-func (c *sparkApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a sparkApplication and creates it.  Returns the server's representation of the sparkApplication, and an error, if there is any.
-func (c *sparkApplications) Create(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.CreateOptions) (result *v1beta2.SparkApplication, err error) {
-	result = &v1beta2.SparkApplication{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(sparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a sparkApplication and updates it. Returns the server's representation of the sparkApplication, and an error, if there is any.
-func (c *sparkApplications) Update(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.UpdateOptions) (result *v1beta2.SparkApplication, err error) {
-	result = &v1beta2.SparkApplication{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(sparkApplication.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(sparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// UpdateStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *sparkApplications) UpdateStatus(ctx context.Context, sparkApplication *v1beta2.SparkApplication, opts v1.UpdateOptions) (result *v1beta2.SparkApplication, err error) {
-	result = &v1beta2.SparkApplication{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(sparkApplication.Name).
-		SubResource("status").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(sparkApplication).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the sparkApplication and deletes it. Returns an error if one occurs.
-func (c *sparkApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *sparkApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched sparkApplication.
-func (c *sparkApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.SparkApplication, err error) {
-	result = &v1beta2.SparkApplication{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("sparkapplications").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/sparkoperator.k8s.io_client.go b/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/sparkoperator.k8s.io_client.go
deleted file mode 100644
index 6d9b3ae..0000000
--- a/pkg/client/clientset/versioned/typed/sparkoperator.k8s.io/v1beta2/sparkoperator.k8s.io_client.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1beta2
-
-import (
-	v1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	"github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/scheme"
-	rest "k8s.io/client-go/rest"
-)
-
-type SparkoperatorV1beta2Interface interface {
-	RESTClient() rest.Interface
-	ScheduledSparkApplicationsGetter
-	SparkApplicationsGetter
-}
-
-// SparkoperatorV1beta2Client is used to interact with features provided by the sparkoperator.k8s.io group.
-type SparkoperatorV1beta2Client struct {
-	restClient rest.Interface
-}
-
-func (c *SparkoperatorV1beta2Client) ScheduledSparkApplications(namespace string) ScheduledSparkApplicationInterface {
-	return newScheduledSparkApplications(c, namespace)
-}
-
-func (c *SparkoperatorV1beta2Client) SparkApplications(namespace string) SparkApplicationInterface {
-	return newSparkApplications(c, namespace)
-}
-
-// NewForConfig creates a new SparkoperatorV1beta2Client for the given config.
-func NewForConfig(c *rest.Config) (*SparkoperatorV1beta2Client, error) {
-	config := *c
-	if err := setConfigDefaults(&config); err != nil {
-		return nil, err
-	}
-	client, err := rest.RESTClientFor(&config)
-	if err != nil {
-		return nil, err
-	}
-	return &SparkoperatorV1beta2Client{client}, nil
-}
-
-// NewForConfigOrDie creates a new SparkoperatorV1beta2Client for the given config and
-// panics if there is an error in the config.
-func NewForConfigOrDie(c *rest.Config) *SparkoperatorV1beta2Client {
-	client, err := NewForConfig(c)
-	if err != nil {
-		panic(err)
-	}
-	return client
-}
-
-// New creates a new SparkoperatorV1beta2Client for the given RESTClient.
-func New(c rest.Interface) *SparkoperatorV1beta2Client {
-	return &SparkoperatorV1beta2Client{c}
-}
-
-func setConfigDefaults(config *rest.Config) error {
-	gv := v1beta2.SchemeGroupVersion
-	config.GroupVersion = &gv
-	config.APIPath = "/apis"
-	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
-
-	if config.UserAgent == "" {
-		config.UserAgent = rest.DefaultKubernetesUserAgent()
-	}
-
-	return nil
-}
-
-// RESTClient returns a RESTClient that is used to communicate
-// with API server by this client implementation.
-func (c *SparkoperatorV1beta2Client) RESTClient() rest.Interface {
-	if c == nil {
-		return nil
-	}
-	return c.restClient
-}
diff --git a/pkg/client/informers/externalversions/factory.go b/pkg/client/informers/externalversions/factory.go
deleted file mode 100644
index 7bcf90f..0000000
--- a/pkg/client/informers/externalversions/factory.go
+++ /dev/null
@@ -1,182 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package externalversions
-
-import (
-	reflect "reflect"
-	sync "sync"
-	time "time"
-
-	versioned "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned"
-	internalinterfaces "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/internalinterfaces"
-	sparkoperatork8sio "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/sparkoperator.k8s.io"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// SharedInformerOption defines the functional option type for SharedInformerFactory.
-type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory
-
-type sharedInformerFactory struct {
-	client           versioned.Interface
-	namespace        string
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	lock             sync.Mutex
-	defaultResync    time.Duration
-	customResync     map[reflect.Type]time.Duration
-
-	informers map[reflect.Type]cache.SharedIndexInformer
-	// startedInformers is used for tracking which informers have been started.
-	// This allows Start() to be called multiple times safely.
-	startedInformers map[reflect.Type]bool
-}
-
-// WithCustomResyncConfig sets a custom resync period for the specified informer types.
-func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption {
-	return func(factory *sharedInformerFactory) *sharedInformerFactory {
-		for k, v := range resyncConfig {
-			factory.customResync[reflect.TypeOf(k)] = v
-		}
-		return factory
-	}
-}
-
-// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
-func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption {
-	return func(factory *sharedInformerFactory) *sharedInformerFactory {
-		factory.tweakListOptions = tweakListOptions
-		return factory
-	}
-}
-
-// WithNamespace limits the SharedInformerFactory to the specified namespace.
-func WithNamespace(namespace string) SharedInformerOption {
-	return func(factory *sharedInformerFactory) *sharedInformerFactory {
-		factory.namespace = namespace
-		return factory
-	}
-}
-
-// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
-func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
-	return NewSharedInformerFactoryWithOptions(client, defaultResync)
-}
-
-// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
-// Listers obtained via this SharedInformerFactory will be subject to the same filters
-// as specified here.
-// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
-func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
-	return NewSharedInformerFactoryWithOptions(client, defaultResync, WithNamespace(namespace), WithTweakListOptions(tweakListOptions))
-}
-
-// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
-func NewSharedInformerFactoryWithOptions(client versioned.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory {
-	factory := &sharedInformerFactory{
-		client:           client,
-		namespace:        v1.NamespaceAll,
-		defaultResync:    defaultResync,
-		informers:        make(map[reflect.Type]cache.SharedIndexInformer),
-		startedInformers: make(map[reflect.Type]bool),
-		customResync:     make(map[reflect.Type]time.Duration),
-	}
-
-	// Apply all options
-	for _, opt := range options {
-		factory = opt(factory)
-	}
-
-	return factory
-}
-
-// Start initializes all requested informers.
-func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) {
-	f.lock.Lock()
-	defer f.lock.Unlock()
-
-	for informerType, informer := range f.informers {
-		if !f.startedInformers[informerType] {
-			go informer.Run(stopCh)
-			f.startedInformers[informerType] = true
-		}
-	}
-}
-
-// WaitForCacheSync waits for all started informers' cache were synced.
-func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool {
-	informers := func() map[reflect.Type]cache.SharedIndexInformer {
-		f.lock.Lock()
-		defer f.lock.Unlock()
-
-		informers := map[reflect.Type]cache.SharedIndexInformer{}
-		for informerType, informer := range f.informers {
-			if f.startedInformers[informerType] {
-				informers[informerType] = informer
-			}
-		}
-		return informers
-	}()
-
-	res := map[reflect.Type]bool{}
-	for informType, informer := range informers {
-		res[informType] = cache.WaitForCacheSync(stopCh, informer.HasSynced)
-	}
-	return res
-}
-
-// InternalInformerFor returns the SharedIndexInformer for obj using an internal
-// client.
-func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer {
-	f.lock.Lock()
-	defer f.lock.Unlock()
-
-	informerType := reflect.TypeOf(obj)
-	informer, exists := f.informers[informerType]
-	if exists {
-		return informer
-	}
-
-	resyncPeriod, exists := f.customResync[informerType]
-	if !exists {
-		resyncPeriod = f.defaultResync
-	}
-
-	informer = newFunc(f.client, resyncPeriod)
-	f.informers[informerType] = informer
-
-	return informer
-}
-
-// SharedInformerFactory provides shared informers for resources in all known
-// API group versions.
-type SharedInformerFactory interface {
-	internalinterfaces.SharedInformerFactory
-	ForResource(resource schema.GroupVersionResource) (GenericInformer, error)
-	WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
-
-	Sparkoperator() sparkoperatork8sio.Interface
-}
-
-func (f *sharedInformerFactory) Sparkoperator() sparkoperatork8sio.Interface {
-	return sparkoperatork8sio.New(f, f.namespace, f.tweakListOptions)
-}
diff --git a/pkg/client/informers/externalversions/generic.go b/pkg/client/informers/externalversions/generic.go
deleted file mode 100644
index 0e952e1..0000000
--- a/pkg/client/informers/externalversions/generic.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package externalversions
-
-import (
-	"fmt"
-
-	v1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	v1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// GenericInformer is type of SharedIndexInformer which will locate and delegate to other
-// sharedInformers based on type
-type GenericInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() cache.GenericLister
-}
-
-type genericInformer struct {
-	informer cache.SharedIndexInformer
-	resource schema.GroupResource
-}
-
-// Informer returns the SharedIndexInformer.
-func (f *genericInformer) Informer() cache.SharedIndexInformer {
-	return f.informer
-}
-
-// Lister returns the GenericLister.
-func (f *genericInformer) Lister() cache.GenericLister {
-	return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource)
-}
-
-// ForResource gives generic access to a shared informer of the matching type
-// TODO extend this to unknown resources with a client pool
-func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
-	switch resource {
-	// Group=sparkoperator.k8s.io, Version=v1beta1
-	case v1beta1.GroupVersion.WithResource("scheduledsparkapplications"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.Sparkoperator().V1beta1().ScheduledSparkApplications().Informer()}, nil
-	case v1beta1.GroupVersion.WithResource("sparkapplications"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.Sparkoperator().V1beta1().SparkApplications().Informer()}, nil
-
-		// Group=sparkoperator.k8s.io, Version=v1beta2
-	case v1beta2.GroupVersion.WithResource("scheduledsparkapplications"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.Sparkoperator().V1beta2().ScheduledSparkApplications().Informer()}, nil
-	case v1beta2.GroupVersion.WithResource("sparkapplications"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.Sparkoperator().V1beta2().SparkApplications().Informer()}, nil
-
-	}
-
-	return nil, fmt.Errorf("no informer found for %v", resource)
-}
diff --git a/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go b/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
deleted file mode 100644
index e6c5d76..0000000
--- a/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
+++ /dev/null
@@ -1,42 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package internalinterfaces
-
-import (
-	time "time"
-
-	versioned "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// NewInformerFunc takes versioned.Interface and time.Duration to return a SharedIndexInformer.
-type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer
-
-// SharedInformerFactory a small interface to allow for adding an informer without an import cycle
-type SharedInformerFactory interface {
-	Start(stopCh <-chan struct{})
-	InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
-}
-
-// TweakListOptionsFunc is a function that transforms a v1.ListOptions.
-type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/pkg/client/informers/externalversions/sparkoperator.k8s.io/interface.go b/pkg/client/informers/externalversions/sparkoperator.k8s.io/interface.go
deleted file mode 100644
index 51d0d24..0000000
--- a/pkg/client/informers/externalversions/sparkoperator.k8s.io/interface.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package sparkoperator
-
-import (
-	internalinterfaces "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/internalinterfaces"
-	v1beta1 "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1"
-	v1beta2 "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2"
-)
-
-// Interface provides access to each of this group's versions.
-type Interface interface {
-	// V1beta1 provides access to shared informers for resources in V1beta1.
-	V1beta1() v1beta1.Interface
-	// V1beta2 provides access to shared informers for resources in V1beta2.
-	V1beta2() v1beta2.Interface
-}
-
-type group struct {
-	factory          internalinterfaces.SharedInformerFactory
-	namespace        string
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-}
-
-// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
-	return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
-}
-
-// V1beta1 returns a new v1beta1.Interface.
-func (g *group) V1beta1() v1beta1.Interface {
-	return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
-}
-
-// V1beta2 returns a new v1beta2.Interface.
-func (g *group) V1beta2() v1beta2.Interface {
-	return v1beta2.New(g.factory, g.namespace, g.tweakListOptions)
-}
diff --git a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/interface.go b/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/interface.go
deleted file mode 100644
index af3efd3..0000000
--- a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/interface.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
-	internalinterfaces "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/internalinterfaces"
-)
-
-// Interface provides access to all the informers in this group version.
-type Interface interface {
-	// ScheduledSparkApplications returns a ScheduledSparkApplicationInformer.
-	ScheduledSparkApplications() ScheduledSparkApplicationInformer
-	// SparkApplications returns a SparkApplicationInformer.
-	SparkApplications() SparkApplicationInformer
-}
-
-type version struct {
-	factory          internalinterfaces.SharedInformerFactory
-	namespace        string
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-}
-
-// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
-	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
-}
-
-// ScheduledSparkApplications returns a ScheduledSparkApplicationInformer.
-func (v *version) ScheduledSparkApplications() ScheduledSparkApplicationInformer {
-	return &scheduledSparkApplicationInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// SparkApplications returns a SparkApplicationInformer.
-func (v *version) SparkApplications() SparkApplicationInformer {
-	return &sparkApplicationInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
diff --git a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go b/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go
deleted file mode 100644
index 7856495..0000000
--- a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
-	"context"
-	time "time"
-
-	sparkoperatork8siov1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	versioned "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned"
-	internalinterfaces "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/internalinterfaces"
-	v1beta1 "github.com/kubeflow/spark-operator/pkg/client/listers/sparkoperator.k8s.io/v1beta1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// ScheduledSparkApplicationInformer provides access to a shared informer and lister for
-// ScheduledSparkApplications.
-type ScheduledSparkApplicationInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1beta1.ScheduledSparkApplicationLister
-}
-
-type scheduledSparkApplicationInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewScheduledSparkApplicationInformer constructs a new informer for ScheduledSparkApplication type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewScheduledSparkApplicationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredScheduledSparkApplicationInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredScheduledSparkApplicationInformer constructs a new informer for ScheduledSparkApplication type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredScheduledSparkApplicationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.SparkoperatorV1beta1().ScheduledSparkApplications(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.SparkoperatorV1beta1().ScheduledSparkApplications(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&sparkoperatork8siov1beta1.ScheduledSparkApplication{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *scheduledSparkApplicationInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredScheduledSparkApplicationInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *scheduledSparkApplicationInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&sparkoperatork8siov1beta1.ScheduledSparkApplication{}, f.defaultInformer)
-}
-
-func (f *scheduledSparkApplicationInformer) Lister() v1beta1.ScheduledSparkApplicationLister {
-	return v1beta1.NewScheduledSparkApplicationLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/sparkapplication.go b/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/sparkapplication.go
deleted file mode 100644
index b33dd91..0000000
--- a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta1/sparkapplication.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
-	"context"
-	time "time"
-
-	sparkoperatork8siov1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	versioned "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned"
-	internalinterfaces "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/internalinterfaces"
-	v1beta1 "github.com/kubeflow/spark-operator/pkg/client/listers/sparkoperator.k8s.io/v1beta1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// SparkApplicationInformer provides access to a shared informer and lister for
-// SparkApplications.
-type SparkApplicationInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1beta1.SparkApplicationLister
-}
-
-type sparkApplicationInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewSparkApplicationInformer constructs a new informer for SparkApplication type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewSparkApplicationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredSparkApplicationInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredSparkApplicationInformer constructs a new informer for SparkApplication type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredSparkApplicationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.SparkoperatorV1beta1().SparkApplications(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.SparkoperatorV1beta1().SparkApplications(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&sparkoperatork8siov1beta1.SparkApplication{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *sparkApplicationInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredSparkApplicationInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *sparkApplicationInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&sparkoperatork8siov1beta1.SparkApplication{}, f.defaultInformer)
-}
-
-func (f *sparkApplicationInformer) Lister() v1beta1.SparkApplicationLister {
-	return v1beta1.NewSparkApplicationLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/interface.go b/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/interface.go
deleted file mode 100644
index d41ff90..0000000
--- a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/interface.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1beta2
-
-import (
-	internalinterfaces "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/internalinterfaces"
-)
-
-// Interface provides access to all the informers in this group version.
-type Interface interface {
-	// ScheduledSparkApplications returns a ScheduledSparkApplicationInformer.
-	ScheduledSparkApplications() ScheduledSparkApplicationInformer
-	// SparkApplications returns a SparkApplicationInformer.
-	SparkApplications() SparkApplicationInformer
-}
-
-type version struct {
-	factory          internalinterfaces.SharedInformerFactory
-	namespace        string
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-}
-
-// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
-	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
-}
-
-// ScheduledSparkApplications returns a ScheduledSparkApplicationInformer.
-func (v *version) ScheduledSparkApplications() ScheduledSparkApplicationInformer {
-	return &scheduledSparkApplicationInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// SparkApplications returns a SparkApplicationInformer.
-func (v *version) SparkApplications() SparkApplicationInformer {
-	return &sparkApplicationInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
diff --git a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go b/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go
deleted file mode 100644
index 6c0a0ac..0000000
--- a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1beta2
-
-import (
-	"context"
-	time "time"
-
-	sparkoperatork8siov1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	versioned "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned"
-	internalinterfaces "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/internalinterfaces"
-	v1beta2 "github.com/kubeflow/spark-operator/pkg/client/listers/sparkoperator.k8s.io/v1beta2"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// ScheduledSparkApplicationInformer provides access to a shared informer and lister for
-// ScheduledSparkApplications.
-type ScheduledSparkApplicationInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1beta2.ScheduledSparkApplicationLister
-}
-
-type scheduledSparkApplicationInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewScheduledSparkApplicationInformer constructs a new informer for ScheduledSparkApplication type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewScheduledSparkApplicationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredScheduledSparkApplicationInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredScheduledSparkApplicationInformer constructs a new informer for ScheduledSparkApplication type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredScheduledSparkApplicationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.SparkoperatorV1beta2().ScheduledSparkApplications(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.SparkoperatorV1beta2().ScheduledSparkApplications(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&sparkoperatork8siov1beta2.ScheduledSparkApplication{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *scheduledSparkApplicationInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredScheduledSparkApplicationInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *scheduledSparkApplicationInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&sparkoperatork8siov1beta2.ScheduledSparkApplication{}, f.defaultInformer)
-}
-
-func (f *scheduledSparkApplicationInformer) Lister() v1beta2.ScheduledSparkApplicationLister {
-	return v1beta2.NewScheduledSparkApplicationLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/sparkapplication.go b/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/sparkapplication.go
deleted file mode 100644
index 5ad4788..0000000
--- a/pkg/client/informers/externalversions/sparkoperator.k8s.io/v1beta2/sparkapplication.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1beta2
-
-import (
-	"context"
-	time "time"
-
-	sparkoperatork8siov1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	versioned "github.com/kubeflow/spark-operator/pkg/client/clientset/versioned"
-	internalinterfaces "github.com/kubeflow/spark-operator/pkg/client/informers/externalversions/internalinterfaces"
-	v1beta2 "github.com/kubeflow/spark-operator/pkg/client/listers/sparkoperator.k8s.io/v1beta2"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// SparkApplicationInformer provides access to a shared informer and lister for
-// SparkApplications.
-type SparkApplicationInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1beta2.SparkApplicationLister
-}
-
-type sparkApplicationInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewSparkApplicationInformer constructs a new informer for SparkApplication type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewSparkApplicationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredSparkApplicationInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredSparkApplicationInformer constructs a new informer for SparkApplication type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredSparkApplicationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.SparkoperatorV1beta2().SparkApplications(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.SparkoperatorV1beta2().SparkApplications(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&sparkoperatork8siov1beta2.SparkApplication{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *sparkApplicationInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredSparkApplicationInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *sparkApplicationInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&sparkoperatork8siov1beta2.SparkApplication{}, f.defaultInformer)
-}
-
-func (f *sparkApplicationInformer) Lister() v1beta2.SparkApplicationLister {
-	return v1beta2.NewSparkApplicationLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/client/listers/sparkoperator.k8s.io/v1beta1/expansion_generated.go b/pkg/client/listers/sparkoperator.k8s.io/v1beta1/expansion_generated.go
deleted file mode 100644
index 689c086..0000000
--- a/pkg/client/listers/sparkoperator.k8s.io/v1beta1/expansion_generated.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1beta1
-
-// ScheduledSparkApplicationListerExpansion allows custom methods to be added to
-// ScheduledSparkApplicationLister.
-type ScheduledSparkApplicationListerExpansion interface{}
-
-// ScheduledSparkApplicationNamespaceListerExpansion allows custom methods to be added to
-// ScheduledSparkApplicationNamespaceLister.
-type ScheduledSparkApplicationNamespaceListerExpansion interface{}
-
-// SparkApplicationListerExpansion allows custom methods to be added to
-// SparkApplicationLister.
-type SparkApplicationListerExpansion interface{}
-
-// SparkApplicationNamespaceListerExpansion allows custom methods to be added to
-// SparkApplicationNamespaceLister.
-type SparkApplicationNamespaceListerExpansion interface{}
diff --git a/pkg/client/listers/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go b/pkg/client/listers/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go
deleted file mode 100644
index b005837..0000000
--- a/pkg/client/listers/sparkoperator.k8s.io/v1beta1/scheduledsparkapplication.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
-	v1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// ScheduledSparkApplicationLister helps list ScheduledSparkApplications.
-// All objects returned here must be treated as read-only.
-type ScheduledSparkApplicationLister interface {
-	// List lists all ScheduledSparkApplications in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta1.ScheduledSparkApplication, err error)
-	// ScheduledSparkApplications returns an object that can list and get ScheduledSparkApplications.
-	ScheduledSparkApplications(namespace string) ScheduledSparkApplicationNamespaceLister
-	ScheduledSparkApplicationListerExpansion
-}
-
-// scheduledSparkApplicationLister implements the ScheduledSparkApplicationLister interface.
-type scheduledSparkApplicationLister struct {
-	indexer cache.Indexer
-}
-
-// NewScheduledSparkApplicationLister returns a new ScheduledSparkApplicationLister.
-func NewScheduledSparkApplicationLister(indexer cache.Indexer) ScheduledSparkApplicationLister {
-	return &scheduledSparkApplicationLister{indexer: indexer}
-}
-
-// List lists all ScheduledSparkApplications in the indexer.
-func (s *scheduledSparkApplicationLister) List(selector labels.Selector) (ret []*v1beta1.ScheduledSparkApplication, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1beta1.ScheduledSparkApplication))
-	})
-	return ret, err
-}
-
-// ScheduledSparkApplications returns an object that can list and get ScheduledSparkApplications.
-func (s *scheduledSparkApplicationLister) ScheduledSparkApplications(namespace string) ScheduledSparkApplicationNamespaceLister {
-	return scheduledSparkApplicationNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// ScheduledSparkApplicationNamespaceLister helps list and get ScheduledSparkApplications.
-// All objects returned here must be treated as read-only.
-type ScheduledSparkApplicationNamespaceLister interface {
-	// List lists all ScheduledSparkApplications in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta1.ScheduledSparkApplication, err error)
-	// Get retrieves the ScheduledSparkApplication from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1beta1.ScheduledSparkApplication, error)
-	ScheduledSparkApplicationNamespaceListerExpansion
-}
-
-// scheduledSparkApplicationNamespaceLister implements the ScheduledSparkApplicationNamespaceLister
-// interface.
-type scheduledSparkApplicationNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all ScheduledSparkApplications in the indexer for a given namespace.
-func (s scheduledSparkApplicationNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ScheduledSparkApplication, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1beta1.ScheduledSparkApplication))
-	})
-	return ret, err
-}
-
-// Get retrieves the ScheduledSparkApplication from the indexer for a given namespace and name.
-func (s scheduledSparkApplicationNamespaceLister) Get(name string) (*v1beta1.ScheduledSparkApplication, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1beta1.Resource("scheduledsparkapplication"), name)
-	}
-	return obj.(*v1beta1.ScheduledSparkApplication), nil
-}
diff --git a/pkg/client/listers/sparkoperator.k8s.io/v1beta1/sparkapplication.go b/pkg/client/listers/sparkoperator.k8s.io/v1beta1/sparkapplication.go
deleted file mode 100644
index 9afc432..0000000
--- a/pkg/client/listers/sparkoperator.k8s.io/v1beta1/sparkapplication.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1beta1
-
-import (
-	v1beta1 "github.com/kubeflow/spark-operator/api/v1beta1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// SparkApplicationLister helps list SparkApplications.
-// All objects returned here must be treated as read-only.
-type SparkApplicationLister interface {
-	// List lists all SparkApplications in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta1.SparkApplication, err error)
-	// SparkApplications returns an object that can list and get SparkApplications.
-	SparkApplications(namespace string) SparkApplicationNamespaceLister
-	SparkApplicationListerExpansion
-}
-
-// sparkApplicationLister implements the SparkApplicationLister interface.
-type sparkApplicationLister struct {
-	indexer cache.Indexer
-}
-
-// NewSparkApplicationLister returns a new SparkApplicationLister.
-func NewSparkApplicationLister(indexer cache.Indexer) SparkApplicationLister {
-	return &sparkApplicationLister{indexer: indexer}
-}
-
-// List lists all SparkApplications in the indexer.
-func (s *sparkApplicationLister) List(selector labels.Selector) (ret []*v1beta1.SparkApplication, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1beta1.SparkApplication))
-	})
-	return ret, err
-}
-
-// SparkApplications returns an object that can list and get SparkApplications.
-func (s *sparkApplicationLister) SparkApplications(namespace string) SparkApplicationNamespaceLister {
-	return sparkApplicationNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// SparkApplicationNamespaceLister helps list and get SparkApplications.
-// All objects returned here must be treated as read-only.
-type SparkApplicationNamespaceLister interface {
-	// List lists all SparkApplications in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta1.SparkApplication, err error)
-	// Get retrieves the SparkApplication from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1beta1.SparkApplication, error)
-	SparkApplicationNamespaceListerExpansion
-}
-
-// sparkApplicationNamespaceLister implements the SparkApplicationNamespaceLister
-// interface.
-type sparkApplicationNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all SparkApplications in the indexer for a given namespace.
-func (s sparkApplicationNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.SparkApplication, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1beta1.SparkApplication))
-	})
-	return ret, err
-}
-
-// Get retrieves the SparkApplication from the indexer for a given namespace and name.
-func (s sparkApplicationNamespaceLister) Get(name string) (*v1beta1.SparkApplication, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1beta1.Resource("sparkapplication"), name)
-	}
-	return obj.(*v1beta1.SparkApplication), nil
-}
diff --git a/pkg/client/listers/sparkoperator.k8s.io/v1beta2/expansion_generated.go b/pkg/client/listers/sparkoperator.k8s.io/v1beta2/expansion_generated.go
deleted file mode 100644
index beba3a0..0000000
--- a/pkg/client/listers/sparkoperator.k8s.io/v1beta2/expansion_generated.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1beta2
-
-// ScheduledSparkApplicationListerExpansion allows custom methods to be added to
-// ScheduledSparkApplicationLister.
-type ScheduledSparkApplicationListerExpansion interface{}
-
-// ScheduledSparkApplicationNamespaceListerExpansion allows custom methods to be added to
-// ScheduledSparkApplicationNamespaceLister.
-type ScheduledSparkApplicationNamespaceListerExpansion interface{}
-
-// SparkApplicationListerExpansion allows custom methods to be added to
-// SparkApplicationLister.
-type SparkApplicationListerExpansion interface{}
-
-// SparkApplicationNamespaceListerExpansion allows custom methods to be added to
-// SparkApplicationNamespaceLister.
-type SparkApplicationNamespaceListerExpansion interface{}
diff --git a/pkg/client/listers/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go b/pkg/client/listers/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go
deleted file mode 100644
index c4d9faa..0000000
--- a/pkg/client/listers/sparkoperator.k8s.io/v1beta2/scheduledsparkapplication.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1beta2
-
-import (
-	v1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// ScheduledSparkApplicationLister helps list ScheduledSparkApplications.
-// All objects returned here must be treated as read-only.
-type ScheduledSparkApplicationLister interface {
-	// List lists all ScheduledSparkApplications in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta2.ScheduledSparkApplication, err error)
-	// ScheduledSparkApplications returns an object that can list and get ScheduledSparkApplications.
-	ScheduledSparkApplications(namespace string) ScheduledSparkApplicationNamespaceLister
-	ScheduledSparkApplicationListerExpansion
-}
-
-// scheduledSparkApplicationLister implements the ScheduledSparkApplicationLister interface.
-type scheduledSparkApplicationLister struct {
-	indexer cache.Indexer
-}
-
-// NewScheduledSparkApplicationLister returns a new ScheduledSparkApplicationLister.
-func NewScheduledSparkApplicationLister(indexer cache.Indexer) ScheduledSparkApplicationLister {
-	return &scheduledSparkApplicationLister{indexer: indexer}
-}
-
-// List lists all ScheduledSparkApplications in the indexer.
-func (s *scheduledSparkApplicationLister) List(selector labels.Selector) (ret []*v1beta2.ScheduledSparkApplication, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1beta2.ScheduledSparkApplication))
-	})
-	return ret, err
-}
-
-// ScheduledSparkApplications returns an object that can list and get ScheduledSparkApplications.
-func (s *scheduledSparkApplicationLister) ScheduledSparkApplications(namespace string) ScheduledSparkApplicationNamespaceLister {
-	return scheduledSparkApplicationNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// ScheduledSparkApplicationNamespaceLister helps list and get ScheduledSparkApplications.
-// All objects returned here must be treated as read-only.
-type ScheduledSparkApplicationNamespaceLister interface {
-	// List lists all ScheduledSparkApplications in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta2.ScheduledSparkApplication, err error)
-	// Get retrieves the ScheduledSparkApplication from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1beta2.ScheduledSparkApplication, error)
-	ScheduledSparkApplicationNamespaceListerExpansion
-}
-
-// scheduledSparkApplicationNamespaceLister implements the ScheduledSparkApplicationNamespaceLister
-// interface.
-type scheduledSparkApplicationNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all ScheduledSparkApplications in the indexer for a given namespace.
-func (s scheduledSparkApplicationNamespaceLister) List(selector labels.Selector) (ret []*v1beta2.ScheduledSparkApplication, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1beta2.ScheduledSparkApplication))
-	})
-	return ret, err
-}
-
-// Get retrieves the ScheduledSparkApplication from the indexer for a given namespace and name.
-func (s scheduledSparkApplicationNamespaceLister) Get(name string) (*v1beta2.ScheduledSparkApplication, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1beta2.Resource("scheduledsparkapplication"), name)
-	}
-	return obj.(*v1beta2.ScheduledSparkApplication), nil
-}
diff --git a/pkg/client/listers/sparkoperator.k8s.io/v1beta2/sparkapplication.go b/pkg/client/listers/sparkoperator.k8s.io/v1beta2/sparkapplication.go
deleted file mode 100644
index 95cee75..0000000
--- a/pkg/client/listers/sparkoperator.k8s.io/v1beta2/sparkapplication.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Code generated by k8s code-generator DO NOT EDIT.
-
-/*
-Copyright 2018 Google LLC
-
-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
-
-    https://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.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1beta2
-
-import (
-	v1beta2 "github.com/kubeflow/spark-operator/api/v1beta2"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// SparkApplicationLister helps list SparkApplications.
-// All objects returned here must be treated as read-only.
-type SparkApplicationLister interface {
-	// List lists all SparkApplications in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta2.SparkApplication, err error)
-	// SparkApplications returns an object that can list and get SparkApplications.
-	SparkApplications(namespace string) SparkApplicationNamespaceLister
-	SparkApplicationListerExpansion
-}
-
-// sparkApplicationLister implements the SparkApplicationLister interface.
-type sparkApplicationLister struct {
-	indexer cache.Indexer
-}
-
-// NewSparkApplicationLister returns a new SparkApplicationLister.
-func NewSparkApplicationLister(indexer cache.Indexer) SparkApplicationLister {
-	return &sparkApplicationLister{indexer: indexer}
-}
-
-// List lists all SparkApplications in the indexer.
-func (s *sparkApplicationLister) List(selector labels.Selector) (ret []*v1beta2.SparkApplication, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1beta2.SparkApplication))
-	})
-	return ret, err
-}
-
-// SparkApplications returns an object that can list and get SparkApplications.
-func (s *sparkApplicationLister) SparkApplications(namespace string) SparkApplicationNamespaceLister {
-	return sparkApplicationNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// SparkApplicationNamespaceLister helps list and get SparkApplications.
-// All objects returned here must be treated as read-only.
-type SparkApplicationNamespaceLister interface {
-	// List lists all SparkApplications in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta2.SparkApplication, err error)
-	// Get retrieves the SparkApplication from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1beta2.SparkApplication, error)
-	SparkApplicationNamespaceListerExpansion
-}
-
-// sparkApplicationNamespaceLister implements the SparkApplicationNamespaceLister
-// interface.
-type sparkApplicationNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all SparkApplications in the indexer for a given namespace.
-func (s sparkApplicationNamespaceLister) List(selector labels.Selector) (ret []*v1beta2.SparkApplication, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1beta2.SparkApplication))
-	})
-	return ret, err
-}
-
-// Get retrieves the SparkApplication from the indexer for a given namespace and name.
-func (s sparkApplicationNamespaceLister) Get(name string) (*v1beta2.SparkApplication, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1beta2.Resource("sparkapplication"), name)
-	}
-	return obj.(*v1beta2.SparkApplication), nil
-}



Test patch:
diff --git a/internal/webhook/suite_test.go b/internal/webhook/suite_test.go
index e584f76..0a590e5 100644
--- a/internal/webhook/suite_test.go
+++ b/internal/webhook/suite_test.go
@@ -30,6 +30,7 @@ import (
 	. "github.com/onsi/gomega"
 
 	admissionv1 "k8s.io/api/admission/v1"
+	"k8s.io/client-go/kubernetes/scheme"
 	"k8s.io/client-go/rest"
 	ctrl "sigs.k8s.io/controller-runtime"
 	"sigs.k8s.io/controller-runtime/pkg/client"
@@ -41,7 +42,6 @@ import (
 
 	"github.com/kubeflow/spark-operator/api/v1beta1"
 	"github.com/kubeflow/spark-operator/api/v1beta2"
-	"github.com/kubeflow/spark-operator/pkg/client/clientset/versioned/scheme"
 	// +kubebuilder:scaffold:imports
 )