mirror of
https://github.com/mariadb-operator/mariadb-operator.git
synced 2025-08-15 21:02:38 +00:00
Discovery tests
This commit is contained in:
@ -147,9 +147,9 @@ var rootCmd = &cobra.Command{
|
||||
galeraRecorder := mgr.GetEventRecorderFor("galera")
|
||||
replRecorder := mgr.GetEventRecorderFor("replication")
|
||||
|
||||
discoveryClient, err := discovery.NewDiscoveryClient()
|
||||
discovery, err := discovery.NewDiscovery()
|
||||
if err != nil {
|
||||
setupLog.Error(err, "Error getting discovery client")
|
||||
setupLog.Error(err, "Error getting discovery")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
@ -229,11 +229,11 @@ var rootCmd = &cobra.Command{
|
||||
Scheme: scheme,
|
||||
Recorder: mgr.GetEventRecorderFor("mariadb"),
|
||||
|
||||
Environment: env,
|
||||
Builder: builder,
|
||||
RefResolver: refResolver,
|
||||
ConditionReady: conditionReady,
|
||||
DiscoveryClient: discoveryClient,
|
||||
Environment: env,
|
||||
Builder: builder,
|
||||
RefResolver: refResolver,
|
||||
ConditionReady: conditionReady,
|
||||
Discovery: discovery,
|
||||
|
||||
ConfigMapReconciler: configMapReconciler,
|
||||
SecretReconciler: secretReconciler,
|
||||
@ -258,10 +258,10 @@ var rootCmd = &cobra.Command{
|
||||
Recorder: mgr.GetEventRecorderFor("maxscale"),
|
||||
RefResolver: refResolver,
|
||||
|
||||
Builder: builder,
|
||||
ConditionReady: conditionReady,
|
||||
Environment: env,
|
||||
DiscoveryClient: discoveryClient,
|
||||
Builder: builder,
|
||||
ConditionReady: conditionReady,
|
||||
Environment: env,
|
||||
Discovery: discovery,
|
||||
|
||||
SecretReconciler: secretReconciler,
|
||||
RBACReconciler: rbacReconciler,
|
||||
|
@ -158,9 +158,9 @@ var rootCmd = &cobra.Command{
|
||||
galeraRecorder := mgr.GetEventRecorderFor("galera")
|
||||
replRecorder := mgr.GetEventRecorderFor("replication")
|
||||
|
||||
discoveryClient, err := discovery.NewDiscoveryClient()
|
||||
discovery, err := discovery.NewDiscovery()
|
||||
if err != nil {
|
||||
setupLog.Error(err, "Error getting discovery client")
|
||||
setupLog.Error(err, "Error getting discovery")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
@ -240,11 +240,11 @@ var rootCmd = &cobra.Command{
|
||||
Scheme: scheme,
|
||||
Recorder: mgr.GetEventRecorderFor("mariadb"),
|
||||
|
||||
Environment: env,
|
||||
Builder: builder,
|
||||
RefResolver: refResolver,
|
||||
ConditionReady: conditionReady,
|
||||
DiscoveryClient: discoveryClient,
|
||||
Environment: env,
|
||||
Builder: builder,
|
||||
RefResolver: refResolver,
|
||||
ConditionReady: conditionReady,
|
||||
Discovery: discovery,
|
||||
|
||||
ConfigMapReconciler: configMapReconciler,
|
||||
SecretReconciler: secretReconciler,
|
||||
@ -268,11 +268,11 @@ var rootCmd = &cobra.Command{
|
||||
Scheme: scheme,
|
||||
Recorder: mgr.GetEventRecorderFor("maxscale"),
|
||||
|
||||
Builder: builder,
|
||||
ConditionReady: conditionReady,
|
||||
Environment: env,
|
||||
RefResolver: refResolver,
|
||||
DiscoveryClient: discoveryClient,
|
||||
Builder: builder,
|
||||
ConditionReady: conditionReady,
|
||||
Environment: env,
|
||||
RefResolver: refResolver,
|
||||
Discovery: discovery,
|
||||
|
||||
SecretReconciler: secretReconciler,
|
||||
RBACReconciler: rbacReconciler,
|
||||
|
@ -49,11 +49,11 @@ type MariaDBReconciler struct {
|
||||
Scheme *runtime.Scheme
|
||||
Recorder record.EventRecorder
|
||||
|
||||
Builder *builder.Builder
|
||||
RefResolver *refresolver.RefResolver
|
||||
ConditionReady *condition.Ready
|
||||
Environment *environment.OperatorEnv
|
||||
DiscoveryClient *discovery.DiscoveryClient
|
||||
Builder *builder.Builder
|
||||
RefResolver *refresolver.RefResolver
|
||||
ConditionReady *condition.Ready
|
||||
Environment *environment.OperatorEnv
|
||||
Discovery *discovery.Discovery
|
||||
|
||||
ConfigMapReconciler *configmap.ConfigMapReconciler
|
||||
SecretReconciler *secret.SecretReconciler
|
||||
|
@ -32,7 +32,7 @@ func (r *MariaDBReconciler) reconcileMetrics(ctx context.Context, mariadb *maria
|
||||
return ctrl.Result{}, nil
|
||||
}
|
||||
|
||||
exist, err := r.DiscoveryClient.ServiceMonitorExist()
|
||||
exist, err := r.Discovery.ServiceMonitorExist()
|
||||
if err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
|
@ -49,11 +49,11 @@ type MaxScaleReconciler struct {
|
||||
Scheme *runtime.Scheme
|
||||
Recorder record.EventRecorder
|
||||
|
||||
Builder *builder.Builder
|
||||
ConditionReady *condition.Ready
|
||||
Environment *environment.OperatorEnv
|
||||
RefResolver *refresolver.RefResolver
|
||||
DiscoveryClient *discovery.DiscoveryClient
|
||||
Builder *builder.Builder
|
||||
ConditionReady *condition.Ready
|
||||
Environment *environment.OperatorEnv
|
||||
RefResolver *refresolver.RefResolver
|
||||
Discovery *discovery.Discovery
|
||||
|
||||
SecretReconciler *secret.SecretReconciler
|
||||
RBACReconciler *rbac.RBACReconciler
|
||||
|
@ -21,7 +21,7 @@ func (r *MaxScaleReconciler) reconcileMetrics(ctx context.Context, req *requestM
|
||||
return ctrl.Result{}, nil
|
||||
}
|
||||
|
||||
exist, err := r.DiscoveryClient.ServiceMonitorExist()
|
||||
exist, err := r.Discovery.ServiceMonitorExist()
|
||||
if err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ var _ = BeforeSuite(func() {
|
||||
|
||||
env, err := environment.GetOperatorEnv(testCtx)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
discoveryClient, err := discovery.NewDiscoveryClient()
|
||||
discovery, err := discovery.NewDiscovery()
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
builder := builder.NewBuilder(scheme, env)
|
||||
@ -190,11 +190,11 @@ var _ = BeforeSuite(func() {
|
||||
Scheme: scheme,
|
||||
Recorder: k8sManager.GetEventRecorderFor("mariadb"),
|
||||
|
||||
Environment: env,
|
||||
Builder: builder,
|
||||
RefResolver: refResolver,
|
||||
ConditionReady: conditionReady,
|
||||
DiscoveryClient: discoveryClient,
|
||||
Environment: env,
|
||||
Builder: builder,
|
||||
RefResolver: refResolver,
|
||||
ConditionReady: conditionReady,
|
||||
Discovery: discovery,
|
||||
|
||||
ConfigMapReconciler: configMapReconciler,
|
||||
SecretReconciler: secretReconciler,
|
||||
@ -217,11 +217,11 @@ var _ = BeforeSuite(func() {
|
||||
Scheme: scheme,
|
||||
Recorder: k8sManager.GetEventRecorderFor("maxscale"),
|
||||
|
||||
Builder: builder,
|
||||
ConditionReady: conditionReady,
|
||||
Environment: env,
|
||||
RefResolver: refResolver,
|
||||
DiscoveryClient: discoveryClient,
|
||||
Builder: builder,
|
||||
ConditionReady: conditionReady,
|
||||
Environment: env,
|
||||
RefResolver: refResolver,
|
||||
Discovery: discovery,
|
||||
|
||||
SecretReconciler: secretReconciler,
|
||||
RBACReconciler: rbacReconciler,
|
||||
|
1
go.mod
1
go.mod
@ -32,6 +32,7 @@ require (
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
|
||||
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
|
||||
github.com/evanphx/json-patch/v5 v5.8.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
github.com/go-logr/zapr v1.3.0 // indirect
|
||||
|
@ -1,39 +1,50 @@
|
||||
package discovery
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/client-go/discovery"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
)
|
||||
|
||||
type DiscoveryClient struct {
|
||||
discovery.DiscoveryClient
|
||||
type Discovery struct {
|
||||
client discovery.DiscoveryInterface
|
||||
}
|
||||
|
||||
func NewDiscoveryClient() (*DiscoveryClient, error) {
|
||||
func NewDiscovery() (*Discovery, error) {
|
||||
config, err := ctrl.GetConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
discoveryClient, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
client, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &DiscoveryClient{
|
||||
DiscoveryClient: *discoveryClient,
|
||||
return &Discovery{
|
||||
client: client,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *DiscoveryClient) ServiceMonitorExist() (bool, error) {
|
||||
func NewDiscoveryWithClient(client discovery.DiscoveryInterface) (*Discovery, error) {
|
||||
if client == nil {
|
||||
return nil, errors.New("client should not be nil")
|
||||
}
|
||||
return &Discovery{
|
||||
client: client,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Discovery) ServiceMonitorExist() (bool, error) {
|
||||
return c.resourceExist("monitoring.coreos.com/v1", "servicemonitors")
|
||||
}
|
||||
|
||||
func (c *DiscoveryClient) SecurityContextConstrainstsExist() (bool, error) {
|
||||
func (c *Discovery) SecurityContextConstrainstsExist() (bool, error) {
|
||||
return c.resourceExist("security.openshift.io/v1", "securitycontextconstraints")
|
||||
}
|
||||
|
||||
func (c *DiscoveryClient) resourceExist(groupVersion, kind string) (bool, error) {
|
||||
apiResourceList, err := c.DiscoveryClient.ServerResourcesForGroupVersion(groupVersion)
|
||||
func (c *Discovery) resourceExist(groupVersion, kind string) (bool, error) {
|
||||
apiResourceList, err := c.client.ServerResourcesForGroupVersion(groupVersion)
|
||||
if err != nil {
|
||||
if apierrors.IsNotFound(err) {
|
||||
return false, nil
|
||||
|
66
pkg/discovery/discovery_test.go
Normal file
66
pkg/discovery/discovery_test.go
Normal file
@ -0,0 +1,66 @@
|
||||
package discovery
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
fakeDiscovery "k8s.io/client-go/discovery/fake"
|
||||
fakeClient "k8s.io/client-go/kubernetes/fake"
|
||||
)
|
||||
|
||||
func TestDiscoveryServiceMonitors(t *testing.T) {
|
||||
testDiscovery(t, "ServiceMonitors", "monitoring.coreos.com/v1", "servicemonitors", func(d *Discovery) (bool, error) {
|
||||
return d.ServiceMonitorExist()
|
||||
})
|
||||
}
|
||||
|
||||
func TestDiscoverySecurityContextConstraints(t *testing.T) {
|
||||
testDiscovery(t, "SecurityContextConstraints", "security.openshift.io/v1", "securitycontextconstraints", func(d *Discovery) (bool, error) {
|
||||
return d.SecurityContextConstrainstsExist()
|
||||
})
|
||||
}
|
||||
|
||||
func testDiscovery(t *testing.T, name, group, kind string, discoveryFn func(d *Discovery) (bool, error)) {
|
||||
resources := []*metav1.APIResourceList{
|
||||
{
|
||||
GroupVersion: group,
|
||||
APIResources: []metav1.APIResource{
|
||||
{
|
||||
Name: kind,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
discovery, err := newFakeDiscovery(resources)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
exists, err := discoveryFn(discovery)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
if !exists {
|
||||
t.Errorf("expected to have discovered '%s'", name)
|
||||
}
|
||||
|
||||
discovery, err = newFakeDiscovery(nil)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
exists, err = discoveryFn(discovery)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
if exists {
|
||||
t.Errorf("expected to not have discovered '%s'", name)
|
||||
}
|
||||
}
|
||||
|
||||
func newFakeDiscovery(resources []*metav1.APIResourceList) (*Discovery, error) {
|
||||
client := fakeClient.NewSimpleClientset()
|
||||
fakeDiscovery := client.Discovery().(*fakeDiscovery.FakeDiscovery)
|
||||
fakeDiscovery.Resources = resources
|
||||
return NewDiscoveryWithClient(fakeDiscovery)
|
||||
}
|
Reference in New Issue
Block a user