diff --git a/pkg/apis/ome/v1beta1/accelerator_class.go b/pkg/apis/ome/v1beta1/accelerator_class.go index fc0bfcd82..cc0b13127 100644 --- a/pkg/apis/ome/v1beta1/accelerator_class.go +++ b/pkg/apis/ome/v1beta1/accelerator_class.go @@ -7,15 +7,16 @@ import ( ) // AcceleratorClass defines a class of accelerators with similar capabilities +// +genclient +// +genclient:nonNamespaced // +kubebuilder:object:root=true -// +kubebuilder:resource:scope=Cluster +// +kubebuilder:resource:scope="Cluster" // +kubebuilder:subresource:status // +k8s:openapi-gen=true // +kubebuilder:printcolumn:name="Vendor",type=string,JSONPath=`.spec.vendor` // +kubebuilder:printcolumn:name="Family",type=string,JSONPath=`.spec.family` // +kubebuilder:printcolumn:name="Memory",type=string,JSONPath=`.spec.capabilities.memoryGB` // +kubebuilder:printcolumn:name="Nodes",type=integer,JSONPath=`.status.availableNodes` - type AcceleratorClass struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` diff --git a/pkg/client/clientset/versioned/typed/ome/v1beta1/acceleratorclass.go b/pkg/client/clientset/versioned/typed/ome/v1beta1/acceleratorclass.go new file mode 100644 index 000000000..4d711ca81 --- /dev/null +++ b/pkg/client/clientset/versioned/typed/ome/v1beta1/acceleratorclass.go @@ -0,0 +1,54 @@ +// Code generated by client-gen. DO NOT EDIT. + +package v1beta1 + +import ( + context "context" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + gentype "k8s.io/client-go/gentype" + omev1beta1 "sigs.k8s.io/ome/pkg/apis/ome/v1beta1" + scheme "sigs.k8s.io/ome/pkg/client/clientset/versioned/scheme" +) + +// AcceleratorClassesGetter has a method to return a AcceleratorClassInterface. +// A group's client should implement this interface. +type AcceleratorClassesGetter interface { + AcceleratorClasses() AcceleratorClassInterface +} + +// AcceleratorClassInterface has methods to work with AcceleratorClass resources. +type AcceleratorClassInterface interface { + Create(ctx context.Context, acceleratorClass *omev1beta1.AcceleratorClass, opts v1.CreateOptions) (*omev1beta1.AcceleratorClass, error) + Update(ctx context.Context, acceleratorClass *omev1beta1.AcceleratorClass, opts v1.UpdateOptions) (*omev1beta1.AcceleratorClass, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). + UpdateStatus(ctx context.Context, acceleratorClass *omev1beta1.AcceleratorClass, opts v1.UpdateOptions) (*omev1beta1.AcceleratorClass, error) + Delete(ctx context.Context, name string, opts v1.DeleteOptions) error + DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error + Get(ctx context.Context, name string, opts v1.GetOptions) (*omev1beta1.AcceleratorClass, error) + List(ctx context.Context, opts v1.ListOptions) (*omev1beta1.AcceleratorClassList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *omev1beta1.AcceleratorClass, err error) + AcceleratorClassExpansion +} + +// acceleratorClasses implements AcceleratorClassInterface +type acceleratorClasses struct { + *gentype.ClientWithList[*omev1beta1.AcceleratorClass, *omev1beta1.AcceleratorClassList] +} + +// newAcceleratorClasses returns a AcceleratorClasses +func newAcceleratorClasses(c *OmeV1beta1Client) *acceleratorClasses { + return &acceleratorClasses{ + gentype.NewClientWithList[*omev1beta1.AcceleratorClass, *omev1beta1.AcceleratorClassList]( + "acceleratorclasses", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *omev1beta1.AcceleratorClass { return &omev1beta1.AcceleratorClass{} }, + func() *omev1beta1.AcceleratorClassList { return &omev1beta1.AcceleratorClassList{} }, + ), + } +} diff --git a/pkg/client/clientset/versioned/typed/ome/v1beta1/fake/fake_acceleratorclass.go b/pkg/client/clientset/versioned/typed/ome/v1beta1/fake/fake_acceleratorclass.go new file mode 100644 index 000000000..235178426 --- /dev/null +++ b/pkg/client/clientset/versioned/typed/ome/v1beta1/fake/fake_acceleratorclass.go @@ -0,0 +1,36 @@ +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + gentype "k8s.io/client-go/gentype" + v1beta1 "sigs.k8s.io/ome/pkg/apis/ome/v1beta1" + omev1beta1 "sigs.k8s.io/ome/pkg/client/clientset/versioned/typed/ome/v1beta1" +) + +// fakeAcceleratorClasses implements AcceleratorClassInterface +type fakeAcceleratorClasses struct { + *gentype.FakeClientWithList[*v1beta1.AcceleratorClass, *v1beta1.AcceleratorClassList] + Fake *FakeOmeV1beta1 +} + +func newFakeAcceleratorClasses(fake *FakeOmeV1beta1) omev1beta1.AcceleratorClassInterface { + return &fakeAcceleratorClasses{ + gentype.NewFakeClientWithList[*v1beta1.AcceleratorClass, *v1beta1.AcceleratorClassList]( + fake.Fake, + "", + v1beta1.SchemeGroupVersion.WithResource("acceleratorclasses"), + v1beta1.SchemeGroupVersion.WithKind("AcceleratorClass"), + func() *v1beta1.AcceleratorClass { return &v1beta1.AcceleratorClass{} }, + func() *v1beta1.AcceleratorClassList { return &v1beta1.AcceleratorClassList{} }, + func(dst, src *v1beta1.AcceleratorClassList) { dst.ListMeta = src.ListMeta }, + func(list *v1beta1.AcceleratorClassList) []*v1beta1.AcceleratorClass { + return gentype.ToPointerSlice(list.Items) + }, + func(list *v1beta1.AcceleratorClassList, items []*v1beta1.AcceleratorClass) { + list.Items = gentype.FromPointerSlice(items) + }, + ), + fake, + } +} diff --git a/pkg/client/clientset/versioned/typed/ome/v1beta1/fake/fake_ome_client.go b/pkg/client/clientset/versioned/typed/ome/v1beta1/fake/fake_ome_client.go index 0806631f0..8d8e60ec0 100644 --- a/pkg/client/clientset/versioned/typed/ome/v1beta1/fake/fake_ome_client.go +++ b/pkg/client/clientset/versioned/typed/ome/v1beta1/fake/fake_ome_client.go @@ -12,6 +12,10 @@ type FakeOmeV1beta1 struct { *testing.Fake } +func (c *FakeOmeV1beta1) AcceleratorClasses() v1beta1.AcceleratorClassInterface { + return newFakeAcceleratorClasses(c) +} + func (c *FakeOmeV1beta1) BaseModels(namespace string) v1beta1.BaseModelInterface { return newFakeBaseModels(c, namespace) } diff --git a/pkg/client/clientset/versioned/typed/ome/v1beta1/generated_expansion.go b/pkg/client/clientset/versioned/typed/ome/v1beta1/generated_expansion.go index 8d6fa0468..2c179d0d2 100644 --- a/pkg/client/clientset/versioned/typed/ome/v1beta1/generated_expansion.go +++ b/pkg/client/clientset/versioned/typed/ome/v1beta1/generated_expansion.go @@ -2,6 +2,8 @@ package v1beta1 +type AcceleratorClassExpansion interface{} + type BaseModelExpansion interface{} type BenchmarkJobExpansion interface{} diff --git a/pkg/client/clientset/versioned/typed/ome/v1beta1/ome_client.go b/pkg/client/clientset/versioned/typed/ome/v1beta1/ome_client.go index b26bb2ec0..ce7140b48 100644 --- a/pkg/client/clientset/versioned/typed/ome/v1beta1/ome_client.go +++ b/pkg/client/clientset/versioned/typed/ome/v1beta1/ome_client.go @@ -12,6 +12,7 @@ import ( type OmeV1beta1Interface interface { RESTClient() rest.Interface + AcceleratorClassesGetter BaseModelsGetter BenchmarkJobsGetter ClusterBaseModelsGetter @@ -26,6 +27,10 @@ type OmeV1beta1Client struct { restClient rest.Interface } +func (c *OmeV1beta1Client) AcceleratorClasses() AcceleratorClassInterface { + return newAcceleratorClasses(c) +} + func (c *OmeV1beta1Client) BaseModels(namespace string) BaseModelInterface { return newBaseModels(c, namespace) } diff --git a/pkg/client/informers/externalversions/generic.go b/pkg/client/informers/externalversions/generic.go index 16ad9c4ee..4b23f9934 100644 --- a/pkg/client/informers/externalversions/generic.go +++ b/pkg/client/informers/externalversions/generic.go @@ -37,6 +37,8 @@ func (f *genericInformer) Lister() cache.GenericLister { func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) { switch resource { // Group=ome.io, Version=v1beta1 + case v1beta1.SchemeGroupVersion.WithResource("acceleratorclasses"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Ome().V1beta1().AcceleratorClasses().Informer()}, nil case v1beta1.SchemeGroupVersion.WithResource("basemodels"): return &genericInformer{resource: resource.GroupResource(), informer: f.Ome().V1beta1().BaseModels().Informer()}, nil case v1beta1.SchemeGroupVersion.WithResource("benchmarkjobs"): diff --git a/pkg/client/informers/externalversions/ome/v1beta1/acceleratorclass.go b/pkg/client/informers/externalversions/ome/v1beta1/acceleratorclass.go new file mode 100644 index 000000000..ff3667653 --- /dev/null +++ b/pkg/client/informers/externalversions/ome/v1beta1/acceleratorclass.go @@ -0,0 +1,85 @@ +// Code generated by informer-gen. DO NOT EDIT. + +package v1beta1 + +import ( + context "context" + time "time" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" + apisomev1beta1 "sigs.k8s.io/ome/pkg/apis/ome/v1beta1" + versioned "sigs.k8s.io/ome/pkg/client/clientset/versioned" + internalinterfaces "sigs.k8s.io/ome/pkg/client/informers/externalversions/internalinterfaces" + omev1beta1 "sigs.k8s.io/ome/pkg/client/listers/ome/v1beta1" +) + +// AcceleratorClassInformer provides access to a shared informer and lister for +// AcceleratorClasses. +type AcceleratorClassInformer interface { + Informer() cache.SharedIndexInformer + Lister() omev1beta1.AcceleratorClassLister +} + +type acceleratorClassInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc +} + +// NewAcceleratorClassInformer constructs a new informer for AcceleratorClass type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewAcceleratorClassInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredAcceleratorClassInformer(client, resyncPeriod, indexers, nil) +} + +// NewFilteredAcceleratorClassInformer constructs a new informer for AcceleratorClass type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredAcceleratorClassInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.OmeV1beta1().AcceleratorClasses().List(context.Background(), options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.OmeV1beta1().AcceleratorClasses().Watch(context.Background(), options) + }, + ListWithContextFunc: func(ctx context.Context, options v1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.OmeV1beta1().AcceleratorClasses().List(ctx, options) + }, + WatchFuncWithContext: func(ctx context.Context, options v1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.OmeV1beta1().AcceleratorClasses().Watch(ctx, options) + }, + }, + &apisomev1beta1.AcceleratorClass{}, + resyncPeriod, + indexers, + ) +} + +func (f *acceleratorClassInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredAcceleratorClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *acceleratorClassInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&apisomev1beta1.AcceleratorClass{}, f.defaultInformer) +} + +func (f *acceleratorClassInformer) Lister() omev1beta1.AcceleratorClassLister { + return omev1beta1.NewAcceleratorClassLister(f.Informer().GetIndexer()) +} diff --git a/pkg/client/informers/externalversions/ome/v1beta1/interface.go b/pkg/client/informers/externalversions/ome/v1beta1/interface.go index 15dd32943..824bf37d0 100644 --- a/pkg/client/informers/externalversions/ome/v1beta1/interface.go +++ b/pkg/client/informers/externalversions/ome/v1beta1/interface.go @@ -8,6 +8,8 @@ import ( // Interface provides access to all the informers in this group version. type Interface interface { + // AcceleratorClasses returns a AcceleratorClassInformer. + AcceleratorClasses() AcceleratorClassInformer // BaseModels returns a BaseModelInformer. BaseModels() BaseModelInformer // BenchmarkJobs returns a BenchmarkJobInformer. @@ -35,6 +37,11 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} } +// AcceleratorClasses returns a AcceleratorClassInformer. +func (v *version) AcceleratorClasses() AcceleratorClassInformer { + return &acceleratorClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions} +} + // BaseModels returns a BaseModelInformer. func (v *version) BaseModels() BaseModelInformer { return &baseModelInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} diff --git a/pkg/client/listers/ome/v1beta1/acceleratorclass.go b/pkg/client/listers/ome/v1beta1/acceleratorclass.go new file mode 100644 index 000000000..c4298a423 --- /dev/null +++ b/pkg/client/listers/ome/v1beta1/acceleratorclass.go @@ -0,0 +1,32 @@ +// Code generated by lister-gen. DO NOT EDIT. + +package v1beta1 + +import ( + labels "k8s.io/apimachinery/pkg/labels" + listers "k8s.io/client-go/listers" + cache "k8s.io/client-go/tools/cache" + omev1beta1 "sigs.k8s.io/ome/pkg/apis/ome/v1beta1" +) + +// AcceleratorClassLister helps list AcceleratorClasses. +// All objects returned here must be treated as read-only. +type AcceleratorClassLister interface { + // List lists all AcceleratorClasses in the indexer. + // Objects returned here must be treated as read-only. + List(selector labels.Selector) (ret []*omev1beta1.AcceleratorClass, err error) + // Get retrieves the AcceleratorClass from the index for a given name. + // Objects returned here must be treated as read-only. + Get(name string) (*omev1beta1.AcceleratorClass, error) + AcceleratorClassListerExpansion +} + +// acceleratorClassLister implements the AcceleratorClassLister interface. +type acceleratorClassLister struct { + listers.ResourceIndexer[*omev1beta1.AcceleratorClass] +} + +// NewAcceleratorClassLister returns a new AcceleratorClassLister. +func NewAcceleratorClassLister(indexer cache.Indexer) AcceleratorClassLister { + return &acceleratorClassLister{listers.New[*omev1beta1.AcceleratorClass](indexer, omev1beta1.Resource("acceleratorclass"))} +} diff --git a/pkg/client/listers/ome/v1beta1/expansion_generated.go b/pkg/client/listers/ome/v1beta1/expansion_generated.go index aad679527..6bec07c71 100644 --- a/pkg/client/listers/ome/v1beta1/expansion_generated.go +++ b/pkg/client/listers/ome/v1beta1/expansion_generated.go @@ -2,6 +2,10 @@ package v1beta1 +// AcceleratorClassListerExpansion allows custom methods to be added to +// AcceleratorClassLister. +type AcceleratorClassListerExpansion interface{} + // BaseModelListerExpansion allows custom methods to be added to // BaseModelLister. type BaseModelListerExpansion interface{} diff --git a/pkg/openapi/openapi_generated.go b/pkg/openapi/openapi_generated.go index faab973a6..e45d1566f 100644 --- a/pkg/openapi/openapi_generated.go +++ b/pkg/openapi/openapi_generated.go @@ -167,7 +167,8 @@ func schema_pkg_apis_ome_v1beta1_AcceleratorClass(ref common.ReferenceCallback) return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, + Description: "AcceleratorClass defines a class of accelerators with similar capabilities", + Type: []string{"object"}, Properties: map[string]spec.Schema{ "kind": { SchemaProps: spec.SchemaProps{ diff --git a/pkg/openapi/swagger.json b/pkg/openapi/swagger.json index a551ba574..5a3d9d0ce 100644 --- a/pkg/openapi/swagger.json +++ b/pkg/openapi/swagger.json @@ -47,6 +47,7 @@ } }, "v1beta1.AcceleratorClass": { + "description": "AcceleratorClass defines a class of accelerators with similar capabilities", "type": "object", "properties": { "apiVersion": {