pkg/utils/k8s/fake.go (82 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License 2.0;
// you may not use this file except in compliance with the Elastic License 2.0.
package k8s
import (
"context"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
)
// NewFakeClient creates a new fake Kubernetes client.
func NewFakeClient(initObjs ...client.Object) Client {
return fake.NewClientBuilder().
WithObjects(initObjs...).
WithStatusSubresource(initObjs...).
WithScheme(clientgoscheme.Scheme).
Build()
}
var (
_ Client = failingClient{}
_ client.StatusWriter = failingSubClient{}
)
type failingSubClient struct {
err error
}
func (fc failingSubClient) Create(_ context.Context, _ client.Object, _ client.Object, _ ...client.SubResourceCreateOption) error {
return fc.err
}
func (fc failingSubClient) Get(_ context.Context, _ client.Object, _ client.Object, _ ...client.SubResourceGetOption) error {
return fc.err
}
func (fc failingSubClient) Update(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error {
return fc.err
}
func (fc failingSubClient) Patch(_ context.Context, _ client.Object, _ client.Patch, _ ...client.SubResourcePatchOption) error {
return fc.err
}
func (fc failingSubClient) GroupVersionKindFor(_ runtime.Object) (schema.GroupVersionKind, error) {
return schema.GroupVersionKind{}, fc.err
}
func (fc failingSubClient) IsObjectNamespaced(_ runtime.Object) (bool, error) {
return false, fc.err
}
type failingClient struct {
failingSubClient
err error
}
// NewFailingClient returns a client that always returns the provided error when called.
func NewFailingClient(err error) Client {
return failingClient{err: err}
}
func (fc failingClient) Get(_ context.Context, _ client.ObjectKey, _ client.Object, _ ...client.GetOption) error {
return fc.err
}
func (fc failingClient) List(_ context.Context, _ client.ObjectList, _ ...client.ListOption) error {
return fc.err
}
func (fc failingClient) Create(_ context.Context, _ client.Object, _ ...client.CreateOption) error {
return fc.err
}
func (fc failingClient) Delete(_ context.Context, _ client.Object, _ ...client.DeleteOption) error {
return fc.err
}
func (fc failingClient) Update(_ context.Context, _ client.Object, _ ...client.UpdateOption) error {
return fc.err
}
func (fc failingClient) Patch(_ context.Context, _ client.Object, _ client.Patch, _ ...client.PatchOption) error {
return fc.err
}
func (fc failingClient) DeleteAllOf(_ context.Context, _ client.Object, _ ...client.DeleteAllOfOption) error {
return fc.err
}
func (fc failingClient) Status() client.StatusWriter {
return fc.failingSubClient
}
func (fc failingClient) SubResource(_ string) client.SubResourceClient {
return fc.failingSubClient
}
func (fc failingClient) Scheme() *runtime.Scheme {
return Scheme()
}
func (fc failingClient) RESTMapper() meta.RESTMapper {
return nil
}