/*
Copyright 2024 chideat.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package mocks

import (
	"context"
	"io"

	v1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
	v1alpha1 "github.com/chideat/valkey-operator/api/v1alpha1"

	monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
	mock "github.com/stretchr/testify/mock"
	appsv1 "k8s.io/api/apps/v1"
	batchv1 "k8s.io/api/batch/v1"
	corev1 "k8s.io/api/core/v1"
	policyv1 "k8s.io/api/policy/v1"
	rbacv1 "k8s.io/api/rbac/v1"
	client "sigs.k8s.io/controller-runtime/pkg/client"
)

// ClientSet is an autogenerated mock type for the ClientSet type
type ClientSet struct {
	mock.Mock
}

// Client provides a mock function with given fields:
func (_m *ClientSet) Client() client.Client {
	ret := _m.Called()

	if len(ret) == 0 {
		panic("no return value specified for Client")
	}

	var r0 client.Client
	if rf, ok := ret.Get(0).(func() client.Client); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(client.Client)
		}
	}

	return r0
}

// CreateCertificate provides a mock function with given fields: ctx, namespace, cert
func (_m *ClientSet) CreateCertificate(ctx context.Context, namespace string, cert *v1.Certificate) error {
	ret := _m.Called(ctx, namespace, cert)

	if len(ret) == 0 {
		panic("no return value specified for CreateCertificate")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *v1.Certificate) error); ok {
		r0 = rf(ctx, namespace, cert)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateClusterRole provides a mock function with given fields: ctx, role
func (_m *ClientSet) CreateClusterRole(ctx context.Context, role *rbacv1.ClusterRole) error {
	ret := _m.Called(ctx, role)

	if len(ret) == 0 {
		panic("no return value specified for CreateClusterRole")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *rbacv1.ClusterRole) error); ok {
		r0 = rf(ctx, role)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateClusterRoleBinding provides a mock function with given fields: ctx, rb
func (_m *ClientSet) CreateClusterRoleBinding(ctx context.Context, rb *rbacv1.ClusterRoleBinding) error {
	ret := _m.Called(ctx, rb)

	if len(ret) == 0 {
		panic("no return value specified for CreateClusterRoleBinding")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *rbacv1.ClusterRoleBinding) error); ok {
		r0 = rf(ctx, rb)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateConfigMap provides a mock function with given fields: ctx, namespace, configMap
func (_m *ClientSet) CreateConfigMap(ctx context.Context, namespace string, configMap *corev1.ConfigMap) error {
	ret := _m.Called(ctx, namespace, configMap)

	if len(ret) == 0 {
		panic("no return value specified for CreateConfigMap")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.ConfigMap) error); ok {
		r0 = rf(ctx, namespace, configMap)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateCronJob provides a mock function with given fields: ctx, namespace, cronjob
func (_m *ClientSet) CreateCronJob(ctx context.Context, namespace string, cronjob *batchv1.CronJob) error {
	ret := _m.Called(ctx, namespace, cronjob)

	if len(ret) == 0 {
		panic("no return value specified for CreateCronJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *batchv1.CronJob) error); ok {
		r0 = rf(ctx, namespace, cronjob)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateDeployment provides a mock function with given fields: ctx, namespace, deployment
func (_m *ClientSet) CreateDeployment(ctx context.Context, namespace string, deployment *appsv1.Deployment) error {
	ret := _m.Called(ctx, namespace, deployment)

	if len(ret) == 0 {
		panic("no return value specified for CreateDeployment")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *appsv1.Deployment) error); ok {
		r0 = rf(ctx, namespace, deployment)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsCertificate provides a mock function with given fields: ctx, namespace, cert
func (_m *ClientSet) CreateIfNotExistsCertificate(ctx context.Context, namespace string, cert *v1.Certificate) error {
	ret := _m.Called(ctx, namespace, cert)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsCertificate")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *v1.Certificate) error); ok {
		r0 = rf(ctx, namespace, cert)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsConfigMap provides a mock function with given fields: ctx, namespace, configMap
func (_m *ClientSet) CreateIfNotExistsConfigMap(ctx context.Context, namespace string, configMap *corev1.ConfigMap) error {
	ret := _m.Called(ctx, namespace, configMap)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsConfigMap")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.ConfigMap) error); ok {
		r0 = rf(ctx, namespace, configMap)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsDeployment provides a mock function with given fields: ctx, namespace, deploy
func (_m *ClientSet) CreateIfNotExistsDeployment(ctx context.Context, namespace string, deploy *appsv1.Deployment) error {
	ret := _m.Called(ctx, namespace, deploy)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsDeployment")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *appsv1.Deployment) error); ok {
		r0 = rf(ctx, namespace, deploy)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsJob provides a mock function with given fields: ctx, namespace, job
func (_m *ClientSet) CreateIfNotExistsJob(ctx context.Context, namespace string, job *batchv1.Job) error {
	ret := _m.Called(ctx, namespace, job)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *batchv1.Job) error); ok {
		r0 = rf(ctx, namespace, job)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsPodDisruptionBudget provides a mock function with given fields: ctx, namespace, podDisruptionBudget
func (_m *ClientSet) CreateIfNotExistsPodDisruptionBudget(ctx context.Context, namespace string, podDisruptionBudget *policyv1.PodDisruptionBudget) error {
	ret := _m.Called(ctx, namespace, podDisruptionBudget)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsPodDisruptionBudget")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *policyv1.PodDisruptionBudget) error); ok {
		r0 = rf(ctx, namespace, podDisruptionBudget)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsUser provides a mock function with given fields: ctx, ru
func (_m *ClientSet) CreateIfNotExistsUser(ctx context.Context, ru *v1alpha1.User) error {
	ret := _m.Called(ctx, ru)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsUser")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.User) error); ok {
		r0 = rf(ctx, ru)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsSecret provides a mock function with given fields: ctx, namespace, secret
func (_m *ClientSet) CreateIfNotExistsSecret(ctx context.Context, namespace string, secret *corev1.Secret) error {
	ret := _m.Called(ctx, namespace, secret)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsSecret")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Secret) error); ok {
		r0 = rf(ctx, namespace, secret)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsService provides a mock function with given fields: ctx, namespace, service
func (_m *ClientSet) CreateIfNotExistsService(ctx context.Context, namespace string, service *corev1.Service) error {
	ret := _m.Called(ctx, namespace, service)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsService")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateIfNotExistsStatefulSet provides a mock function with given fields: ctx, namespace, statefulSet
func (_m *ClientSet) CreateIfNotExistsStatefulSet(ctx context.Context, namespace string, statefulSet *appsv1.StatefulSet) error {
	ret := _m.Called(ctx, namespace, statefulSet)

	if len(ret) == 0 {
		panic("no return value specified for CreateIfNotExistsStatefulSet")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *appsv1.StatefulSet) error); ok {
		r0 = rf(ctx, namespace, statefulSet)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateJob provides a mock function with given fields: ctx, namespace, job
func (_m *ClientSet) CreateJob(ctx context.Context, namespace string, job *batchv1.Job) error {
	ret := _m.Called(ctx, namespace, job)

	if len(ret) == 0 {
		panic("no return value specified for CreateJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *batchv1.Job) error); ok {
		r0 = rf(ctx, namespace, job)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateClusterRole provides a mock function with given fields: ctx, role
func (_m *ClientSet) CreateOrUpdateClusterRole(ctx context.Context, role *rbacv1.ClusterRole) error {
	ret := _m.Called(ctx, role)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateClusterRole")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *rbacv1.ClusterRole) error); ok {
		r0 = rf(ctx, role)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateClusterRoleBinding provides a mock function with given fields: ctx, rb
func (_m *ClientSet) CreateOrUpdateClusterRoleBinding(ctx context.Context, rb *rbacv1.ClusterRoleBinding) error {
	ret := _m.Called(ctx, rb)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateClusterRoleBinding")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *rbacv1.ClusterRoleBinding) error); ok {
		r0 = rf(ctx, rb)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateConfigMap provides a mock function with given fields: ctx, namespace, np
func (_m *ClientSet) CreateOrUpdateConfigMap(ctx context.Context, namespace string, np *corev1.ConfigMap) error {
	ret := _m.Called(ctx, namespace, np)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateConfigMap")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.ConfigMap) error); ok {
		r0 = rf(ctx, namespace, np)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateCronJob provides a mock function with given fields: ctx, namespace, cronjob
func (_m *ClientSet) CreateOrUpdateCronJob(ctx context.Context, namespace string, cronjob *batchv1.CronJob) error {
	ret := _m.Called(ctx, namespace, cronjob)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateCronJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *batchv1.CronJob) error); ok {
		r0 = rf(ctx, namespace, cronjob)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateDeployment provides a mock function with given fields: ctx, namespace, deployment
func (_m *ClientSet) CreateOrUpdateDeployment(ctx context.Context, namespace string, deployment *appsv1.Deployment) error {
	ret := _m.Called(ctx, namespace, deployment)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateDeployment")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *appsv1.Deployment) error); ok {
		r0 = rf(ctx, namespace, deployment)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateIfServiceChanged provides a mock function with given fields: ctx, namespace, service
func (_m *ClientSet) CreateOrUpdateIfServiceChanged(ctx context.Context, namespace string, service *corev1.Service) error {
	ret := _m.Called(ctx, namespace, service)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateIfServiceChanged")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateJob provides a mock function with given fields: ctx, namespace, job
func (_m *ClientSet) CreateOrUpdateJob(ctx context.Context, namespace string, job *batchv1.Job) error {
	ret := _m.Called(ctx, namespace, job)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *batchv1.Job) error); ok {
		r0 = rf(ctx, namespace, job)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdatePod provides a mock function with given fields: ctx, namespace, pod
func (_m *ClientSet) CreateOrUpdatePod(ctx context.Context, namespace string, pod *corev1.Pod) error {
	ret := _m.Called(ctx, namespace, pod)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdatePod")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Pod) error); ok {
		r0 = rf(ctx, namespace, pod)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdatePodDisruptionBudget provides a mock function with given fields: ctx, namespace, podDisruptionBudget
func (_m *ClientSet) CreateOrUpdatePodDisruptionBudget(ctx context.Context, namespace string, podDisruptionBudget *policyv1.PodDisruptionBudget) error {
	ret := _m.Called(ctx, namespace, podDisruptionBudget)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdatePodDisruptionBudget")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *policyv1.PodDisruptionBudget) error); ok {
		r0 = rf(ctx, namespace, podDisruptionBudget)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateUser provides a mock function with given fields: ctx, ru
func (_m *ClientSet) CreateOrUpdateUser(ctx context.Context, ru *v1alpha1.User) error {
	ret := _m.Called(ctx, ru)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateUser")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.User) error); ok {
		r0 = rf(ctx, ru)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateRole provides a mock function with given fields: ctx, namespace, role
func (_m *ClientSet) CreateOrUpdateRole(ctx context.Context, namespace string, role *rbacv1.Role) error {
	ret := _m.Called(ctx, namespace, role)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateRole")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *rbacv1.Role) error); ok {
		r0 = rf(ctx, namespace, role)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateRoleBinding provides a mock function with given fields: ctx, namespace, rb
func (_m *ClientSet) CreateOrUpdateRoleBinding(ctx context.Context, namespace string, rb *rbacv1.RoleBinding) error {
	ret := _m.Called(ctx, namespace, rb)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateRoleBinding")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *rbacv1.RoleBinding) error); ok {
		r0 = rf(ctx, namespace, rb)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateSecret provides a mock function with given fields: ctx, namespace, secret
func (_m *ClientSet) CreateOrUpdateSecret(ctx context.Context, namespace string, secret *corev1.Secret) error {
	ret := _m.Called(ctx, namespace, secret)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateSecret")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Secret) error); ok {
		r0 = rf(ctx, namespace, secret)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateService provides a mock function with given fields: ctx, namespace, service
func (_m *ClientSet) CreateOrUpdateService(ctx context.Context, namespace string, service *corev1.Service) error {
	ret := _m.Called(ctx, namespace, service)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateService")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateServiceAccount provides a mock function with given fields: ctx, namespace, sa
func (_m *ClientSet) CreateOrUpdateServiceAccount(ctx context.Context, namespace string, sa *corev1.ServiceAccount) error {
	ret := _m.Called(ctx, namespace, sa)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateServiceAccount")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.ServiceAccount) error); ok {
		r0 = rf(ctx, namespace, sa)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateServiceMonitor provides a mock function with given fields: ctx, namespace, sm
func (_m *ClientSet) CreateOrUpdateServiceMonitor(ctx context.Context, namespace string, sm *monitoringv1.ServiceMonitor) error {
	ret := _m.Called(ctx, namespace, sm)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateServiceMonitor")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *monitoringv1.ServiceMonitor) error); ok {
		r0 = rf(ctx, namespace, sm)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateStatefulSet provides a mock function with given fields: ctx, namespace, StatefulSet
func (_m *ClientSet) CreateOrUpdateStatefulSet(ctx context.Context, namespace string, StatefulSet *appsv1.StatefulSet) error {
	ret := _m.Called(ctx, namespace, StatefulSet)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrUpdateStatefulSet")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *appsv1.StatefulSet) error); ok {
		r0 = rf(ctx, namespace, StatefulSet)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreatePVC provides a mock function with given fields: ctx, namespace, pvc
func (_m *ClientSet) CreatePVC(ctx context.Context, namespace string, pvc *corev1.PersistentVolumeClaim) error {
	ret := _m.Called(ctx, namespace, pvc)

	if len(ret) == 0 {
		panic("no return value specified for CreatePVC")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.PersistentVolumeClaim) error); ok {
		r0 = rf(ctx, namespace, pvc)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreatePod provides a mock function with given fields: ctx, namespace, pod
func (_m *ClientSet) CreatePod(ctx context.Context, namespace string, pod *corev1.Pod) error {
	ret := _m.Called(ctx, namespace, pod)

	if len(ret) == 0 {
		panic("no return value specified for CreatePod")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Pod) error); ok {
		r0 = rf(ctx, namespace, pod)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreatePodDisruptionBudget provides a mock function with given fields: ctx, namespace, podDisruptionBudget
func (_m *ClientSet) CreatePodDisruptionBudget(ctx context.Context, namespace string, podDisruptionBudget *policyv1.PodDisruptionBudget) error {
	ret := _m.Called(ctx, namespace, podDisruptionBudget)

	if len(ret) == 0 {
		panic("no return value specified for CreatePodDisruptionBudget")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *policyv1.PodDisruptionBudget) error); ok {
		r0 = rf(ctx, namespace, podDisruptionBudget)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateUser provides a mock function with given fields: ctx, ru
func (_m *ClientSet) CreateUser(ctx context.Context, ru *v1alpha1.User) error {
	ret := _m.Called(ctx, ru)

	if len(ret) == 0 {
		panic("no return value specified for CreateUser")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.User) error); ok {
		r0 = rf(ctx, ru)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateRole provides a mock function with given fields: ctx, namespace, role
func (_m *ClientSet) CreateRole(ctx context.Context, namespace string, role *rbacv1.Role) error {
	ret := _m.Called(ctx, namespace, role)

	if len(ret) == 0 {
		panic("no return value specified for CreateRole")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *rbacv1.Role) error); ok {
		r0 = rf(ctx, namespace, role)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateRoleBinding provides a mock function with given fields: ctx, namespace, rb
func (_m *ClientSet) CreateRoleBinding(ctx context.Context, namespace string, rb *rbacv1.RoleBinding) error {
	ret := _m.Called(ctx, namespace, rb)

	if len(ret) == 0 {
		panic("no return value specified for CreateRoleBinding")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *rbacv1.RoleBinding) error); ok {
		r0 = rf(ctx, namespace, rb)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateSecret provides a mock function with given fields: ctx, namespace, secret
func (_m *ClientSet) CreateSecret(ctx context.Context, namespace string, secret *corev1.Secret) error {
	ret := _m.Called(ctx, namespace, secret)

	if len(ret) == 0 {
		panic("no return value specified for CreateSecret")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Secret) error); ok {
		r0 = rf(ctx, namespace, secret)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateService provides a mock function with given fields: ctx, namespace, service
func (_m *ClientSet) CreateService(ctx context.Context, namespace string, service *corev1.Service) error {
	ret := _m.Called(ctx, namespace, service)

	if len(ret) == 0 {
		panic("no return value specified for CreateService")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateServiceAccount provides a mock function with given fields: ctx, namespace, sa
func (_m *ClientSet) CreateServiceAccount(ctx context.Context, namespace string, sa *corev1.ServiceAccount) error {
	ret := _m.Called(ctx, namespace, sa)

	if len(ret) == 0 {
		panic("no return value specified for CreateServiceAccount")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.ServiceAccount) error); ok {
		r0 = rf(ctx, namespace, sa)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateServiceMonitor provides a mock function with given fields: ctx, namespace, sm
func (_m *ClientSet) CreateServiceMonitor(ctx context.Context, namespace string, sm *monitoringv1.ServiceMonitor) error {
	ret := _m.Called(ctx, namespace, sm)

	if len(ret) == 0 {
		panic("no return value specified for CreateServiceMonitor")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *monitoringv1.ServiceMonitor) error); ok {
		r0 = rf(ctx, namespace, sm)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateStatefulSet provides a mock function with given fields: ctx, namespace, statefulSet
func (_m *ClientSet) CreateStatefulSet(ctx context.Context, namespace string, statefulSet *appsv1.StatefulSet) error {
	ret := _m.Called(ctx, namespace, statefulSet)

	if len(ret) == 0 {
		panic("no return value specified for CreateStatefulSet")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *appsv1.StatefulSet) error); ok {
		r0 = rf(ctx, namespace, statefulSet)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteConfigMap provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeleteConfigMap(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeleteConfigMap")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteCronJob provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeleteCronJob(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeleteCronJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteDeployment provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeleteDeployment(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeleteDeployment")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteJob provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeleteJob(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeleteJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeletePod provides a mock function with given fields: ctx, namespace, name, opts
func (_m *ClientSet) DeletePod(ctx context.Context, namespace string, name string, opts ...client.DeleteOption) error {
	_va := make([]any, len(opts))
	for _i := range opts {
		_va[_i] = opts[_i]
	}
	var _ca []any
	_ca = append(_ca, ctx, namespace, name)
	_ca = append(_ca, _va...)
	ret := _m.Called(_ca...)

	if len(ret) == 0 {
		panic("no return value specified for DeletePod")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, ...client.DeleteOption) error); ok {
		r0 = rf(ctx, namespace, name, opts...)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeletePodDisruptionBudget provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeletePodDisruptionBudget(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeletePodDisruptionBudget")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteValkeyBackup provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeleteValkeyBackup(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeleteValkeyBackup")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteValkeyClusterBackup provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeleteValkeyClusterBackup(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeleteValkeyClusterBackup")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteSecret provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeleteSecret(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeleteSecret")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteService provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) DeleteService(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for DeleteService")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteStatefulSet provides a mock function with given fields: ctx, namespace, name, opts
func (_m *ClientSet) DeleteStatefulSet(ctx context.Context, namespace string, name string, opts ...client.DeleteOption) error {
	_va := make([]any, len(opts))
	for _i := range opts {
		_va[_i] = opts[_i]
	}
	var _ca []any
	_ca = append(_ca, ctx, namespace, name)
	_ca = append(_ca, _va...)
	ret := _m.Called(_ca...)

	if len(ret) == 0 {
		panic("no return value specified for DeleteStatefulSet")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, ...client.DeleteOption) error); ok {
		r0 = rf(ctx, namespace, name, opts...)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// Exec provides a mock function with given fields: ctx, namespace, name, containerName, cmd
func (_m *ClientSet) Exec(ctx context.Context, namespace string, name string, containerName string, cmd []string) (io.Reader, io.Reader, error) {
	ret := _m.Called(ctx, namespace, name, containerName, cmd)

	if len(ret) == 0 {
		panic("no return value specified for Exec")
	}

	var r0 io.Reader
	var r1 io.Reader
	var r2 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, string, []string) (io.Reader, io.Reader, error)); ok {
		return rf(ctx, namespace, name, containerName, cmd)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string, string, []string) io.Reader); ok {
		r0 = rf(ctx, namespace, name, containerName, cmd)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(io.Reader)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string, string, []string) io.Reader); ok {
		r1 = rf(ctx, namespace, name, containerName, cmd)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(io.Reader)
		}
	}

	if rf, ok := ret.Get(2).(func(context.Context, string, string, string, []string) error); ok {
		r2 = rf(ctx, namespace, name, containerName, cmd)
	} else {
		r2 = ret.Error(2)
	}

	return r0, r1, r2
}

// GetCertificate provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetCertificate(ctx context.Context, namespace string, name string) (*v1.Certificate, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetCertificate")
	}

	var r0 *v1.Certificate
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1.Certificate, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1.Certificate); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1.Certificate)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetClusterRole provides a mock function with given fields: ctx, name
func (_m *ClientSet) GetClusterRole(ctx context.Context, name string) (*rbacv1.ClusterRole, error) {
	ret := _m.Called(ctx, name)

	if len(ret) == 0 {
		panic("no return value specified for GetClusterRole")
	}

	var r0 *rbacv1.ClusterRole
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*rbacv1.ClusterRole, error)); ok {
		return rf(ctx, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *rbacv1.ClusterRole); ok {
		r0 = rf(ctx, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*rbacv1.ClusterRole)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetClusterRoleBinding provides a mock function with given fields: ctx, name
func (_m *ClientSet) GetClusterRoleBinding(ctx context.Context, name string) (*rbacv1.ClusterRoleBinding, error) {
	ret := _m.Called(ctx, name)

	if len(ret) == 0 {
		panic("no return value specified for GetClusterRoleBinding")
	}

	var r0 *rbacv1.ClusterRoleBinding
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*rbacv1.ClusterRoleBinding, error)); ok {
		return rf(ctx, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *rbacv1.ClusterRoleBinding); ok {
		r0 = rf(ctx, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*rbacv1.ClusterRoleBinding)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetConfigMap provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetConfigMap(ctx context.Context, namespace string, name string) (*corev1.ConfigMap, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetConfigMap")
	}

	var r0 *corev1.ConfigMap
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*corev1.ConfigMap, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *corev1.ConfigMap); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.ConfigMap)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetCronJob provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetCronJob(ctx context.Context, namespace string, name string) (*batchv1.CronJob, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetCronJob")
	}

	var r0 *batchv1.CronJob
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*batchv1.CronJob, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *batchv1.CronJob); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*batchv1.CronJob)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetDeployment provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetDeployment(ctx context.Context, namespace string, name string) (*appsv1.Deployment, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetDeployment")
	}

	var r0 *appsv1.Deployment
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*appsv1.Deployment, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *appsv1.Deployment); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*appsv1.Deployment)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetDeploymentPods provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetDeploymentPods(ctx context.Context, namespace string, name string) (*corev1.PodList, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetDeploymentPods")
	}

	var r0 *corev1.PodList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*corev1.PodList, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *corev1.PodList); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.PodList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetCluster provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetCluster(ctx context.Context, namespace string, name string) (*v1alpha1.Cluster, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetCluster")
	}

	var r0 *v1alpha1.Cluster
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1alpha1.Cluster, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1alpha1.Cluster); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1alpha1.Cluster)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetJob provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetJob(ctx context.Context, namespace string, name string) (*batchv1.Job, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetJob")
	}

	var r0 *batchv1.Job
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*batchv1.Job, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *batchv1.Job); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*batchv1.Job)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetNamespace provides a mock function with given fields: ctx, namespace
func (_m *ClientSet) GetNamespace(ctx context.Context, namespace string) (*corev1.Namespace, error) {
	ret := _m.Called(ctx, namespace)

	if len(ret) == 0 {
		panic("no return value specified for GetNamespace")
	}

	var r0 *corev1.Namespace
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.Namespace, error)); ok {
		return rf(ctx, namespace)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.Namespace); ok {
		r0 = rf(ctx, namespace)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.Namespace)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, namespace)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetNode provides a mock function with given fields: ctx, name
func (_m *ClientSet) GetNode(ctx context.Context, name string) (*corev1.Node, error) {
	ret := _m.Called(ctx, name)

	if len(ret) == 0 {
		panic("no return value specified for GetNode")
	}

	var r0 *corev1.Node
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.Node, error)); ok {
		return rf(ctx, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.Node); ok {
		r0 = rf(ctx, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.Node)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetPVC provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetPVC(ctx context.Context, namespace string, name string) (*corev1.PersistentVolumeClaim, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetPVC")
	}

	var r0 *corev1.PersistentVolumeClaim
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*corev1.PersistentVolumeClaim, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *corev1.PersistentVolumeClaim); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.PersistentVolumeClaim)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetPod provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetPod(ctx context.Context, namespace string, name string) (*corev1.Pod, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetPod")
	}

	var r0 *corev1.Pod
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*corev1.Pod, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *corev1.Pod); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.Pod)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetPodDisruptionBudget provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetPodDisruptionBudget(ctx context.Context, namespace string, name string) (*policyv1.PodDisruptionBudget, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetPodDisruptionBudget")
	}

	var r0 *policyv1.PodDisruptionBudget
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*policyv1.PodDisruptionBudget, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *policyv1.PodDisruptionBudget); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*policyv1.PodDisruptionBudget)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetFailover provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetFailover(ctx context.Context, namespace string, name string) (*v1alpha1.Failover, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetFailover")
	}

	var r0 *v1alpha1.Failover
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1alpha1.Failover, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1alpha1.Failover); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1alpha1.Failover)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetSentinel provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetSentinel(ctx context.Context, namespace string, name string) (*v1alpha1.Sentinel, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetSentinel")
	}

	var r0 *v1alpha1.Sentinel
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1alpha1.Sentinel, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1alpha1.Sentinel); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1alpha1.Sentinel)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetUser provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetUser(ctx context.Context, namespace string, name string) (*v1alpha1.User, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetUser")
	}

	var r0 *v1alpha1.User
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1alpha1.User, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1alpha1.User); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1alpha1.User)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetRole provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetRole(ctx context.Context, namespace string, name string) (*rbacv1.Role, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetRole")
	}

	var r0 *rbacv1.Role
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*rbacv1.Role, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *rbacv1.Role); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*rbacv1.Role)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetRoleBinding provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetRoleBinding(ctx context.Context, namespace string, name string) (*rbacv1.RoleBinding, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetRoleBinding")
	}

	var r0 *rbacv1.RoleBinding
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*rbacv1.RoleBinding, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *rbacv1.RoleBinding); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*rbacv1.RoleBinding)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetSecret provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetSecret(ctx context.Context, namespace string, name string) (*corev1.Secret, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetSecret")
	}

	var r0 *corev1.Secret
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*corev1.Secret, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *corev1.Secret); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.Secret)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetService provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetService(ctx context.Context, namespace string, name string) (*corev1.Service, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetService")
	}

	var r0 *corev1.Service
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*corev1.Service, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *corev1.Service); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.Service)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetServiceAccount provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetServiceAccount(ctx context.Context, namespace string, name string) (*corev1.ServiceAccount, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetServiceAccount")
	}

	var r0 *corev1.ServiceAccount
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*corev1.ServiceAccount, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *corev1.ServiceAccount); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.ServiceAccount)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetServiceByLabels provides a mock function with given fields: ctx, namespace, labelsMap
func (_m *ClientSet) GetServiceByLabels(ctx context.Context, namespace string, labelsMap map[string]string) (*corev1.ServiceList, error) {
	ret := _m.Called(ctx, namespace, labelsMap)

	if len(ret) == 0 {
		panic("no return value specified for GetServiceByLabels")
	}

	var r0 *corev1.ServiceList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) (*corev1.ServiceList, error)); ok {
		return rf(ctx, namespace, labelsMap)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) *corev1.ServiceList); ok {
		r0 = rf(ctx, namespace, labelsMap)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.ServiceList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, map[string]string) error); ok {
		r1 = rf(ctx, namespace, labelsMap)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetServiceMonitor provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetServiceMonitor(ctx context.Context, namespace string, name string) (*monitoringv1.ServiceMonitor, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetServiceMonitor")
	}

	var r0 *monitoringv1.ServiceMonitor
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*monitoringv1.ServiceMonitor, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *monitoringv1.ServiceMonitor); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*monitoringv1.ServiceMonitor)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetStatefulSet provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetStatefulSet(ctx context.Context, namespace string, name string) (*appsv1.StatefulSet, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetStatefulSet")
	}

	var r0 *appsv1.StatefulSet
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*appsv1.StatefulSet, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *appsv1.StatefulSet); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*appsv1.StatefulSet)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetStatefulSetPods provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) GetStatefulSetPods(ctx context.Context, namespace string, name string) (*corev1.PodList, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for GetStatefulSetPods")
	}

	var r0 *corev1.PodList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*corev1.PodList, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *corev1.PodList); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.PodList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetStatefulSetPodsByLabels provides a mock function with given fields: ctx, namespace, labels
func (_m *ClientSet) GetStatefulSetPodsByLabels(ctx context.Context, namespace string, labels map[string]string) (*corev1.PodList, error) {
	ret := _m.Called(ctx, namespace, labels)

	if len(ret) == 0 {
		panic("no return value specified for GetStatefulSetPodsByLabels")
	}

	var r0 *corev1.PodList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) (*corev1.PodList, error)); ok {
		return rf(ctx, namespace, labels)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) *corev1.PodList); ok {
		r0 = rf(ctx, namespace, labels)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.PodList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, map[string]string) error); ok {
		r1 = rf(ctx, namespace, labels)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListConfigMaps provides a mock function with given fields: ctx, namespace
func (_m *ClientSet) ListConfigMaps(ctx context.Context, namespace string) (*corev1.ConfigMapList, error) {
	ret := _m.Called(ctx, namespace)

	if len(ret) == 0 {
		panic("no return value specified for ListConfigMaps")
	}

	var r0 *corev1.ConfigMapList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.ConfigMapList, error)); ok {
		return rf(ctx, namespace)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.ConfigMapList); ok {
		r0 = rf(ctx, namespace)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.ConfigMapList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, namespace)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListCronJobs provides a mock function with given fields: ctx, namespace, cl
func (_m *ClientSet) ListCronJobs(ctx context.Context, namespace string, cl client.ListOptions) (*batchv1.CronJobList, error) {
	ret := _m.Called(ctx, namespace, cl)

	if len(ret) == 0 {
		panic("no return value specified for ListCronJobs")
	}

	var r0 *batchv1.CronJobList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) (*batchv1.CronJobList, error)); ok {
		return rf(ctx, namespace, cl)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) *batchv1.CronJobList); ok {
		r0 = rf(ctx, namespace, cl)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*batchv1.CronJobList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, client.ListOptions) error); ok {
		r1 = rf(ctx, namespace, cl)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListDeployments provides a mock function with given fields: ctx, namespace
func (_m *ClientSet) ListDeployments(ctx context.Context, namespace string) (*appsv1.DeploymentList, error) {
	ret := _m.Called(ctx, namespace)

	if len(ret) == 0 {
		panic("no return value specified for ListDeployments")
	}

	var r0 *appsv1.DeploymentList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*appsv1.DeploymentList, error)); ok {
		return rf(ctx, namespace)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *appsv1.DeploymentList); ok {
		r0 = rf(ctx, namespace)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*appsv1.DeploymentList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, namespace)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListJobs provides a mock function with given fields: ctx, namespace, cl
func (_m *ClientSet) ListJobs(ctx context.Context, namespace string, cl client.ListOptions) (*batchv1.JobList, error) {
	ret := _m.Called(ctx, namespace, cl)

	if len(ret) == 0 {
		panic("no return value specified for ListJobs")
	}

	var r0 *batchv1.JobList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) (*batchv1.JobList, error)); ok {
		return rf(ctx, namespace, cl)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) *batchv1.JobList); ok {
		r0 = rf(ctx, namespace, cl)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*batchv1.JobList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, client.ListOptions) error); ok {
		r1 = rf(ctx, namespace, cl)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListJobsByLabel provides a mock function with given fields: ctx, namespace, label_map
func (_m *ClientSet) ListJobsByLabel(ctx context.Context, namespace string, label_map map[string]string) (*batchv1.JobList, error) {
	ret := _m.Called(ctx, namespace, label_map)

	if len(ret) == 0 {
		panic("no return value specified for ListJobsByLabel")
	}

	var r0 *batchv1.JobList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) (*batchv1.JobList, error)); ok {
		return rf(ctx, namespace, label_map)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) *batchv1.JobList); ok {
		r0 = rf(ctx, namespace, label_map)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*batchv1.JobList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, map[string]string) error); ok {
		r1 = rf(ctx, namespace, label_map)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListNodesByLabels provides a mock function with given fields: ctx, label_map
func (_m *ClientSet) ListNodesByLabels(ctx context.Context, label_map map[string]string) (*corev1.NodeList, error) {
	ret := _m.Called(ctx, label_map)

	if len(ret) == 0 {
		panic("no return value specified for ListNodesByLabels")
	}

	var r0 *corev1.NodeList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, map[string]string) (*corev1.NodeList, error)); ok {
		return rf(ctx, label_map)
	}
	if rf, ok := ret.Get(0).(func(context.Context, map[string]string) *corev1.NodeList); ok {
		r0 = rf(ctx, label_map)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.NodeList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, map[string]string) error); ok {
		r1 = rf(ctx, label_map)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListPodByLabels provides a mock function with given fields: ctx, namespace, label_map
func (_m *ClientSet) ListPodByLabels(ctx context.Context, namespace string, label_map map[string]string) (*corev1.PodList, error) {
	ret := _m.Called(ctx, namespace, label_map)

	if len(ret) == 0 {
		panic("no return value specified for ListPodByLabels")
	}

	var r0 *corev1.PodList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) (*corev1.PodList, error)); ok {
		return rf(ctx, namespace, label_map)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) *corev1.PodList); ok {
		r0 = rf(ctx, namespace, label_map)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.PodList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, map[string]string) error); ok {
		r1 = rf(ctx, namespace, label_map)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListPods provides a mock function with given fields: ctx, namespace
func (_m *ClientSet) ListPods(ctx context.Context, namespace string) (*corev1.PodList, error) {
	ret := _m.Called(ctx, namespace)

	if len(ret) == 0 {
		panic("no return value specified for ListPods")
	}

	var r0 *corev1.PodList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.PodList, error)); ok {
		return rf(ctx, namespace)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.PodList); ok {
		r0 = rf(ctx, namespace)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.PodList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, namespace)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListPvcByLabel provides a mock function with given fields: ctx, namespace, label_map
func (_m *ClientSet) ListPvcByLabel(ctx context.Context, namespace string, label_map map[string]string) (*corev1.PersistentVolumeClaimList, error) {
	ret := _m.Called(ctx, namespace, label_map)

	if len(ret) == 0 {
		panic("no return value specified for ListPvcByLabel")
	}

	var r0 *corev1.PersistentVolumeClaimList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) (*corev1.PersistentVolumeClaimList, error)); ok {
		return rf(ctx, namespace, label_map)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) *corev1.PersistentVolumeClaimList); ok {
		r0 = rf(ctx, namespace, label_map)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.PersistentVolumeClaimList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, map[string]string) error); ok {
		r1 = rf(ctx, namespace, label_map)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListFailovers provides a mock function with given fields: ctx, namespace, opts
func (_m *ClientSet) ListFailovers(ctx context.Context, namespace string, opts client.ListOptions) (*v1alpha1.FailoverList, error) {
	ret := _m.Called(ctx, namespace, opts)

	if len(ret) == 0 {
		panic("no return value specified for ListFailovers")
	}

	var r0 *v1alpha1.FailoverList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) (*v1alpha1.FailoverList, error)); ok {
		return rf(ctx, namespace, opts)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) *v1alpha1.FailoverList); ok {
		r0 = rf(ctx, namespace, opts)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1alpha1.FailoverList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, client.ListOptions) error); ok {
		r1 = rf(ctx, namespace, opts)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListSentinels provides a mock function with given fields: ctx, namespace, opts
func (_m *ClientSet) ListSentinels(ctx context.Context, namespace string, opts client.ListOptions) (*v1alpha1.SentinelList, error) {
	ret := _m.Called(ctx, namespace, opts)

	if len(ret) == 0 {
		panic("no return value specified for ListSentinels")
	}

	var r0 *v1alpha1.SentinelList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) (*v1alpha1.SentinelList, error)); ok {
		return rf(ctx, namespace, opts)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) *v1alpha1.SentinelList); ok {
		r0 = rf(ctx, namespace, opts)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1alpha1.SentinelList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, client.ListOptions) error); ok {
		r1 = rf(ctx, namespace, opts)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListUsers provides a mock function with given fields: ctx, namespace, opts
func (_m *ClientSet) ListUsers(ctx context.Context, namespace string, opts client.ListOptions) (*v1alpha1.UserList, error) {
	ret := _m.Called(ctx, namespace, opts)

	if len(ret) == 0 {
		panic("no return value specified for ListUsers")
	}

	var r0 *v1alpha1.UserList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) (*v1alpha1.UserList, error)); ok {
		return rf(ctx, namespace, opts)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, client.ListOptions) *v1alpha1.UserList); ok {
		r0 = rf(ctx, namespace, opts)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1alpha1.UserList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, client.ListOptions) error); ok {
		r1 = rf(ctx, namespace, opts)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListSecret provides a mock function with given fields: ctx, namespace
func (_m *ClientSet) ListSecret(ctx context.Context, namespace string) (*corev1.SecretList, error) {
	ret := _m.Called(ctx, namespace)

	if len(ret) == 0 {
		panic("no return value specified for ListSecret")
	}

	var r0 *corev1.SecretList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.SecretList, error)); ok {
		return rf(ctx, namespace)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.SecretList); ok {
		r0 = rf(ctx, namespace)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.SecretList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, namespace)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListServices provides a mock function with given fields: ctx, namespace
func (_m *ClientSet) ListServices(ctx context.Context, namespace string) (*corev1.ServiceList, error) {
	ret := _m.Called(ctx, namespace)

	if len(ret) == 0 {
		panic("no return value specified for ListServices")
	}

	var r0 *corev1.ServiceList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.ServiceList, error)); ok {
		return rf(ctx, namespace)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.ServiceList); ok {
		r0 = rf(ctx, namespace)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*corev1.ServiceList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, namespace)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListStatefulSetByLabels provides a mock function with given fields: ctx, namespace, labels
func (_m *ClientSet) ListStatefulSetByLabels(ctx context.Context, namespace string, labels map[string]string) (*appsv1.StatefulSetList, error) {
	ret := _m.Called(ctx, namespace, labels)

	if len(ret) == 0 {
		panic("no return value specified for ListStatefulSetByLabels")
	}

	var r0 *appsv1.StatefulSetList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) (*appsv1.StatefulSetList, error)); ok {
		return rf(ctx, namespace, labels)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) *appsv1.StatefulSetList); ok {
		r0 = rf(ctx, namespace, labels)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*appsv1.StatefulSetList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, map[string]string) error); ok {
		r1 = rf(ctx, namespace, labels)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListStatefulSets provides a mock function with given fields: ctx, namespace
func (_m *ClientSet) ListStatefulSets(ctx context.Context, namespace string) (*appsv1.StatefulSetList, error) {
	ret := _m.Called(ctx, namespace)

	if len(ret) == 0 {
		panic("no return value specified for ListStatefulSets")
	}

	var r0 *appsv1.StatefulSetList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*appsv1.StatefulSetList, error)); ok {
		return rf(ctx, namespace)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *appsv1.StatefulSetList); ok {
		r0 = rf(ctx, namespace)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*appsv1.StatefulSetList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
		r1 = rf(ctx, namespace)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// PatchPodLabel provides a mock function with given fields: ctx, pod, labelkey, labelValue
func (_m *ClientSet) PatchPodLabel(ctx context.Context, pod *corev1.Pod, labelkey string, labelValue string) error {
	ret := _m.Called(ctx, pod, labelkey, labelValue)

	if len(ret) == 0 {
		panic("no return value specified for PatchPodLabel")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *corev1.Pod, string, string) error); ok {
		r0 = rf(ctx, pod, labelkey, labelValue)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// RestartDeployment provides a mock function with given fields: ctx, namespace, name
func (_m *ClientSet) RestartDeployment(ctx context.Context, namespace string, name string) (*appsv1.Deployment, error) {
	ret := _m.Called(ctx, namespace, name)

	if len(ret) == 0 {
		panic("no return value specified for RestartDeployment")
	}

	var r0 *appsv1.Deployment
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*appsv1.Deployment, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *appsv1.Deployment); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*appsv1.Deployment)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// UpdateClusterRole provides a mock function with given fields: ctx, role
func (_m *ClientSet) UpdateClusterRole(ctx context.Context, role *rbacv1.ClusterRole) error {
	ret := _m.Called(ctx, role)

	if len(ret) == 0 {
		panic("no return value specified for UpdateClusterRole")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *rbacv1.ClusterRole) error); ok {
		r0 = rf(ctx, role)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateClusterRoleBinding provides a mock function with given fields: ctx, role
func (_m *ClientSet) UpdateClusterRoleBinding(ctx context.Context, role *rbacv1.ClusterRoleBinding) error {
	ret := _m.Called(ctx, role)

	if len(ret) == 0 {
		panic("no return value specified for UpdateClusterRoleBinding")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *rbacv1.ClusterRoleBinding) error); ok {
		r0 = rf(ctx, role)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateConfigMap provides a mock function with given fields: ctx, namespace, configMap
func (_m *ClientSet) UpdateConfigMap(ctx context.Context, namespace string, configMap *corev1.ConfigMap) error {
	ret := _m.Called(ctx, namespace, configMap)

	if len(ret) == 0 {
		panic("no return value specified for UpdateConfigMap")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.ConfigMap) error); ok {
		r0 = rf(ctx, namespace, configMap)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateCronJob provides a mock function with given fields: ctx, namespace, job
func (_m *ClientSet) UpdateCronJob(ctx context.Context, namespace string, job *batchv1.CronJob) error {
	ret := _m.Called(ctx, namespace, job)

	if len(ret) == 0 {
		panic("no return value specified for UpdateCronJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *batchv1.CronJob) error); ok {
		r0 = rf(ctx, namespace, job)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateDeployment provides a mock function with given fields: ctx, namespace, deployment
func (_m *ClientSet) UpdateDeployment(ctx context.Context, namespace string, deployment *appsv1.Deployment) error {
	ret := _m.Called(ctx, namespace, deployment)

	if len(ret) == 0 {
		panic("no return value specified for UpdateDeployment")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *appsv1.Deployment) error); ok {
		r0 = rf(ctx, namespace, deployment)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateCluster provides a mock function with given fields: ctx, inst
func (_m *ClientSet) UpdateCluster(ctx context.Context, inst *v1alpha1.Cluster) error {
	ret := _m.Called(ctx, inst)

	if len(ret) == 0 {
		panic("no return value specified for UpdateCluster")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.Cluster) error); ok {
		r0 = rf(ctx, inst)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateClusterStatus provides a mock function with given fields: ctx, inst
func (_m *ClientSet) UpdateClusterStatus(ctx context.Context, inst *v1alpha1.Cluster) error {
	ret := _m.Called(ctx, inst)

	if len(ret) == 0 {
		panic("no return value specified for UpdateClusterStatus")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.Cluster) error); ok {
		r0 = rf(ctx, inst)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateIfConfigMapChanged provides a mock function with given fields: ctx, newConfigmap
func (_m *ClientSet) UpdateIfConfigMapChanged(ctx context.Context, newConfigmap *corev1.ConfigMap) error {
	ret := _m.Called(ctx, newConfigmap)

	if len(ret) == 0 {
		panic("no return value specified for UpdateIfConfigMapChanged")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *corev1.ConfigMap) error); ok {
		r0 = rf(ctx, newConfigmap)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateIfSelectorChangedService provides a mock function with given fields: ctx, namespace, service
func (_m *ClientSet) UpdateIfSelectorChangedService(ctx context.Context, namespace string, service *corev1.Service) error {
	ret := _m.Called(ctx, namespace, service)

	if len(ret) == 0 {
		panic("no return value specified for UpdateIfSelectorChangedService")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateJob provides a mock function with given fields: ctx, namespace, job
func (_m *ClientSet) UpdateJob(ctx context.Context, namespace string, job *batchv1.Job) error {
	ret := _m.Called(ctx, namespace, job)

	if len(ret) == 0 {
		panic("no return value specified for UpdateJob")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *batchv1.Job) error); ok {
		r0 = rf(ctx, namespace, job)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdatePod provides a mock function with given fields: ctx, namespace, pod
func (_m *ClientSet) UpdatePod(ctx context.Context, namespace string, pod *corev1.Pod) error {
	ret := _m.Called(ctx, namespace, pod)

	if len(ret) == 0 {
		panic("no return value specified for UpdatePod")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Pod) error); ok {
		r0 = rf(ctx, namespace, pod)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdatePodDisruptionBudget provides a mock function with given fields: ctx, namespace, podDisruptionBudget
func (_m *ClientSet) UpdatePodDisruptionBudget(ctx context.Context, namespace string, podDisruptionBudget *policyv1.PodDisruptionBudget) error {
	ret := _m.Called(ctx, namespace, podDisruptionBudget)

	if len(ret) == 0 {
		panic("no return value specified for UpdatePodDisruptionBudget")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *policyv1.PodDisruptionBudget) error); ok {
		r0 = rf(ctx, namespace, podDisruptionBudget)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateFailover provides a mock function with given fields: ctx, inst
func (_m *ClientSet) UpdateFailover(ctx context.Context, inst *v1alpha1.Failover) error {
	ret := _m.Called(ctx, inst)

	if len(ret) == 0 {
		panic("no return value specified for UpdateFailover")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.Failover) error); ok {
		r0 = rf(ctx, inst)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateFailoverStatus provides a mock function with given fields: ctx, inst
func (_m *ClientSet) UpdateFailoverStatus(ctx context.Context, inst *v1alpha1.Failover) error {
	ret := _m.Called(ctx, inst)

	if len(ret) == 0 {
		panic("no return value specified for UpdateFailoverStatus")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.Failover) error); ok {
		r0 = rf(ctx, inst)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateSentinel provides a mock function with given fields: ctx, sen
func (_m *ClientSet) UpdateSentinel(ctx context.Context, sen *v1alpha1.Sentinel) error {
	ret := _m.Called(ctx, sen)

	if len(ret) == 0 {
		panic("no return value specified for UpdateSentinel")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.Sentinel) error); ok {
		r0 = rf(ctx, sen)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateSentinelStatus provides a mock function with given fields: ctx, inst
func (_m *ClientSet) UpdateSentinelStatus(ctx context.Context, inst *v1alpha1.Sentinel) error {
	ret := _m.Called(ctx, inst)

	if len(ret) == 0 {
		panic("no return value specified for UpdateSentinelStatus")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.Sentinel) error); ok {
		r0 = rf(ctx, inst)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateUser provides a mock function with given fields: ctx, ru
func (_m *ClientSet) UpdateUser(ctx context.Context, ru *v1alpha1.User) error {
	ret := _m.Called(ctx, ru)

	if len(ret) == 0 {
		panic("no return value specified for UpdateUser")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1alpha1.User) error); ok {
		r0 = rf(ctx, ru)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateRole provides a mock function with given fields: ctx, namespace, role
func (_m *ClientSet) UpdateRole(ctx context.Context, namespace string, role *rbacv1.Role) error {
	ret := _m.Called(ctx, namespace, role)

	if len(ret) == 0 {
		panic("no return value specified for UpdateRole")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *rbacv1.Role) error); ok {
		r0 = rf(ctx, namespace, role)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateSecret provides a mock function with given fields: ctx, namespace, secret
func (_m *ClientSet) UpdateSecret(ctx context.Context, namespace string, secret *corev1.Secret) error {
	ret := _m.Called(ctx, namespace, secret)

	if len(ret) == 0 {
		panic("no return value specified for UpdateSecret")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Secret) error); ok {
		r0 = rf(ctx, namespace, secret)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateService provides a mock function with given fields: ctx, namespace, service
func (_m *ClientSet) UpdateService(ctx context.Context, namespace string, service *corev1.Service) error {
	ret := _m.Called(ctx, namespace, service)

	if len(ret) == 0 {
		panic("no return value specified for UpdateService")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *corev1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateServiceMonitor provides a mock function with given fields: ctx, namespace, sm
func (_m *ClientSet) UpdateServiceMonitor(ctx context.Context, namespace string, sm *monitoringv1.ServiceMonitor) error {
	ret := _m.Called(ctx, namespace, sm)

	if len(ret) == 0 {
		panic("no return value specified for UpdateServiceMonitor")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *monitoringv1.ServiceMonitor) error); ok {
		r0 = rf(ctx, namespace, sm)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateStatefulSet provides a mock function with given fields: ctx, namespace, statefulSet
func (_m *ClientSet) UpdateStatefulSet(ctx context.Context, namespace string, statefulSet *appsv1.StatefulSet) error {
	ret := _m.Called(ctx, namespace, statefulSet)

	if len(ret) == 0 {
		panic("no return value specified for UpdateStatefulSet")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *appsv1.StatefulSet) error); ok {
		r0 = rf(ctx, namespace, statefulSet)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// NewClientSet creates a new instance of ClientSet. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewClientSet(t interface {
	mock.TestingT
	Cleanup(func())
}) *ClientSet {
	mock := &ClientSet{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}
