Expose object tracker for fake clientsets

Not every object kind can be registered via tracker .Add() called as
part of SimpleClientset initialization. This is because .Add() relies
on UnsafeGuessKindToResource to convert object kinds into resource
type names, which is broken for some resources. An example of an
affected kind is NetworkAttachmentDefinitions CRD that uses
network-attachment-definitions as its resource type name. When
UnsafeGuessKindToResource is called for this kind, it returns
networkattachmentdefinitions (without dashes).

As per the comment inside .Add, kinds affected by
UnsafeGuessKindToResource deficiencies should instead register objects
using tracker .Create() method.  Problem is, current SimpleClientset
struct definition doesn't expose the object tracker in any way, which
makes it impossible to properly register these kinds at all.

To address the issue, this change modifies the definition of
SimpleClientset struct to expose the object tracker used via Tracker()
method.
This commit is contained in:
Ihar Hrachyshka 2018-11-14 15:22:48 -08:00 committed by Ihar Hrachyshka
parent 66329fcea9
commit d68cd8a0c7
16 changed files with 96 additions and 16 deletions

View File

@ -77,7 +77,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -99,12 +99,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// Admissionregistration retrieves the AdmissionregistrationClient // Admissionregistration retrieves the AdmissionregistrationClient

View File

@ -41,7 +41,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -63,12 +63,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// CrV1 retrieves the CrV1Client // CrV1 retrieves the CrV1Client

View File

@ -41,7 +41,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -63,12 +63,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// ApiextensionsV1beta1 retrieves the ApiextensionsV1beta1Client // ApiextensionsV1beta1 retrieves the ApiextensionsV1beta1Client

View File

@ -41,7 +41,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -63,12 +63,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// Apiextensions retrieves the ApiextensionsClient // Apiextensions retrieves the ApiextensionsClient

View File

@ -111,7 +111,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -133,12 +133,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// AdmissionregistrationV1beta1 retrieves the AdmissionregistrationV1beta1Client // AdmissionregistrationV1beta1 retrieves the AdmissionregistrationV1beta1Client

View File

@ -41,7 +41,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -63,12 +63,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// ExampleV1 retrieves the ExampleV1Client // ExampleV1 retrieves the ExampleV1Client

View File

@ -43,7 +43,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -65,12 +65,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// Example retrieves the ExampleClient // Example retrieves the ExampleClient

View File

@ -43,7 +43,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -65,12 +65,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// ExampleV1 retrieves the ExampleV1Client // ExampleV1 retrieves the ExampleV1Client

View File

@ -43,7 +43,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -65,12 +65,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// ExampleV1 retrieves the ExampleV1Client // ExampleV1 retrieves the ExampleV1Client

View File

@ -121,7 +121,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -143,11 +143,16 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
` `
var checkImpl = ` var checkImpl = `

View File

@ -43,7 +43,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -65,12 +65,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// ApiregistrationV1beta1 retrieves the ApiregistrationV1beta1Client // ApiregistrationV1beta1 retrieves the ApiregistrationV1beta1Client

View File

@ -41,7 +41,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -63,12 +63,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// Apiregistration retrieves the ApiregistrationClient // Apiregistration retrieves the ApiregistrationClient

View File

@ -43,7 +43,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -65,12 +65,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// MetricsV1alpha1 retrieves the MetricsV1alpha1Client // MetricsV1alpha1 retrieves the MetricsV1alpha1Client

View File

@ -41,7 +41,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -63,12 +63,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// NodeV1alpha1 retrieves the NodeV1alpha1Client // NodeV1alpha1 retrieves the NodeV1alpha1Client

View File

@ -43,7 +43,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -65,12 +65,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// WardleV1alpha1 retrieves the WardleV1alpha1Client // WardleV1alpha1 retrieves the WardleV1alpha1Client

View File

@ -41,7 +41,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
} }
} }
cs := &Clientset{} cs := &Clientset{tracker: o}
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
@ -63,12 +63,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset struct { type Clientset struct {
testing.Fake testing.Fake
discovery *fakediscovery.FakeDiscovery discovery *fakediscovery.FakeDiscovery
tracker testing.ObjectTracker
} }
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.discovery return c.discovery
} }
func (c *Clientset) Tracker() testing.ObjectTracker {
return c.tracker
}
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// SamplecontrollerV1alpha1 retrieves the SamplecontrollerV1alpha1Client // SamplecontrollerV1alpha1 retrieves the SamplecontrollerV1alpha1Client