mirror of https://github.com/k3s-io/k3s
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
243 lines
7.7 KiB
243 lines
7.7 KiB
/*
|
|
Copyright The Kubernetes Authors.
|
|
|
|
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.
|
|
*/
|
|
|
|
// Code generated by main. DO NOT EDIT.
|
|
|
|
package v1
|
|
|
|
import (
|
|
"context"
|
|
|
|
v1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1"
|
|
clientset "github.com/rancher/k3s/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1"
|
|
informers "github.com/rancher/k3s/pkg/generated/informers/externalversions/k3s.cattle.io/v1"
|
|
listers "github.com/rancher/k3s/pkg/generated/listers/k3s.cattle.io/v1"
|
|
"github.com/rancher/wrangler/pkg/generic"
|
|
"k8s.io/apimachinery/pkg/api/equality"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/labels"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
"k8s.io/apimachinery/pkg/types"
|
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
|
"k8s.io/apimachinery/pkg/watch"
|
|
"k8s.io/client-go/tools/cache"
|
|
)
|
|
|
|
type AddonHandler func(string, *v1.Addon) (*v1.Addon, error)
|
|
|
|
type AddonController interface {
|
|
AddonClient
|
|
|
|
OnChange(ctx context.Context, name string, sync AddonHandler)
|
|
OnRemove(ctx context.Context, name string, sync AddonHandler)
|
|
Enqueue(namespace, name string)
|
|
|
|
Cache() AddonCache
|
|
|
|
Informer() cache.SharedIndexInformer
|
|
GroupVersionKind() schema.GroupVersionKind
|
|
|
|
AddGenericHandler(ctx context.Context, name string, handler generic.Handler)
|
|
AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler)
|
|
Updater() generic.Updater
|
|
}
|
|
|
|
type AddonClient interface {
|
|
Create(*v1.Addon) (*v1.Addon, error)
|
|
Update(*v1.Addon) (*v1.Addon, error)
|
|
UpdateStatus(*v1.Addon) (*v1.Addon, error)
|
|
Delete(namespace, name string, options *metav1.DeleteOptions) error
|
|
Get(namespace, name string, options metav1.GetOptions) (*v1.Addon, error)
|
|
List(namespace string, opts metav1.ListOptions) (*v1.AddonList, error)
|
|
Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error)
|
|
Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Addon, err error)
|
|
}
|
|
|
|
type AddonCache interface {
|
|
Get(namespace, name string) (*v1.Addon, error)
|
|
List(namespace string, selector labels.Selector) ([]*v1.Addon, error)
|
|
|
|
AddIndexer(indexName string, indexer AddonIndexer)
|
|
GetByIndex(indexName, key string) ([]*v1.Addon, error)
|
|
}
|
|
|
|
type AddonIndexer func(obj *v1.Addon) ([]string, error)
|
|
|
|
type addonController struct {
|
|
controllerManager *generic.ControllerManager
|
|
clientGetter clientset.AddonsGetter
|
|
informer informers.AddonInformer
|
|
gvk schema.GroupVersionKind
|
|
}
|
|
|
|
func NewAddonController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.AddonsGetter, informer informers.AddonInformer) AddonController {
|
|
return &addonController{
|
|
controllerManager: controllerManager,
|
|
clientGetter: clientGetter,
|
|
informer: informer,
|
|
gvk: gvk,
|
|
}
|
|
}
|
|
|
|
func FromAddonHandlerToHandler(sync AddonHandler) generic.Handler {
|
|
return func(key string, obj runtime.Object) (ret runtime.Object, err error) {
|
|
var v *v1.Addon
|
|
if obj == nil {
|
|
v, err = sync(key, nil)
|
|
} else {
|
|
v, err = sync(key, obj.(*v1.Addon))
|
|
}
|
|
if v == nil {
|
|
return nil, err
|
|
}
|
|
return v, err
|
|
}
|
|
}
|
|
|
|
func (c *addonController) Updater() generic.Updater {
|
|
return func(obj runtime.Object) (runtime.Object, error) {
|
|
newObj, err := c.Update(obj.(*v1.Addon))
|
|
if newObj == nil {
|
|
return nil, err
|
|
}
|
|
return newObj, err
|
|
}
|
|
}
|
|
|
|
func UpdateAddonOnChange(updater generic.Updater, handler AddonHandler) AddonHandler {
|
|
return func(key string, obj *v1.Addon) (*v1.Addon, error) {
|
|
if obj == nil {
|
|
return handler(key, nil)
|
|
}
|
|
|
|
copyObj := obj.DeepCopy()
|
|
newObj, err := handler(key, copyObj)
|
|
if newObj != nil {
|
|
copyObj = newObj
|
|
}
|
|
if obj.ResourceVersion == copyObj.ResourceVersion && !equality.Semantic.DeepEqual(obj, copyObj) {
|
|
newObj, err := updater(copyObj)
|
|
if newObj != nil && err == nil {
|
|
copyObj = newObj.(*v1.Addon)
|
|
}
|
|
}
|
|
|
|
return copyObj, err
|
|
}
|
|
}
|
|
|
|
func (c *addonController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) {
|
|
c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler)
|
|
}
|
|
|
|
func (c *addonController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) {
|
|
removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler)
|
|
c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler)
|
|
}
|
|
|
|
func (c *addonController) OnChange(ctx context.Context, name string, sync AddonHandler) {
|
|
c.AddGenericHandler(ctx, name, FromAddonHandlerToHandler(sync))
|
|
}
|
|
|
|
func (c *addonController) OnRemove(ctx context.Context, name string, sync AddonHandler) {
|
|
removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromAddonHandlerToHandler(sync))
|
|
c.AddGenericHandler(ctx, name, removeHandler)
|
|
}
|
|
|
|
func (c *addonController) Enqueue(namespace, name string) {
|
|
c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name)
|
|
}
|
|
|
|
func (c *addonController) Informer() cache.SharedIndexInformer {
|
|
return c.informer.Informer()
|
|
}
|
|
|
|
func (c *addonController) GroupVersionKind() schema.GroupVersionKind {
|
|
return c.gvk
|
|
}
|
|
|
|
func (c *addonController) Cache() AddonCache {
|
|
return &addonCache{
|
|
lister: c.informer.Lister(),
|
|
indexer: c.informer.Informer().GetIndexer(),
|
|
}
|
|
}
|
|
|
|
func (c *addonController) Create(obj *v1.Addon) (*v1.Addon, error) {
|
|
return c.clientGetter.Addons(obj.Namespace).Create(obj)
|
|
}
|
|
|
|
func (c *addonController) Update(obj *v1.Addon) (*v1.Addon, error) {
|
|
return c.clientGetter.Addons(obj.Namespace).Update(obj)
|
|
}
|
|
|
|
func (c *addonController) UpdateStatus(obj *v1.Addon) (*v1.Addon, error) {
|
|
return c.clientGetter.Addons(obj.Namespace).UpdateStatus(obj)
|
|
}
|
|
|
|
func (c *addonController) Delete(namespace, name string, options *metav1.DeleteOptions) error {
|
|
return c.clientGetter.Addons(namespace).Delete(name, options)
|
|
}
|
|
|
|
func (c *addonController) Get(namespace, name string, options metav1.GetOptions) (*v1.Addon, error) {
|
|
return c.clientGetter.Addons(namespace).Get(name, options)
|
|
}
|
|
|
|
func (c *addonController) List(namespace string, opts metav1.ListOptions) (*v1.AddonList, error) {
|
|
return c.clientGetter.Addons(namespace).List(opts)
|
|
}
|
|
|
|
func (c *addonController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) {
|
|
return c.clientGetter.Addons(namespace).Watch(opts)
|
|
}
|
|
|
|
func (c *addonController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Addon, err error) {
|
|
return c.clientGetter.Addons(namespace).Patch(name, pt, data, subresources...)
|
|
}
|
|
|
|
type addonCache struct {
|
|
lister listers.AddonLister
|
|
indexer cache.Indexer
|
|
}
|
|
|
|
func (c *addonCache) Get(namespace, name string) (*v1.Addon, error) {
|
|
return c.lister.Addons(namespace).Get(name)
|
|
}
|
|
|
|
func (c *addonCache) List(namespace string, selector labels.Selector) ([]*v1.Addon, error) {
|
|
return c.lister.Addons(namespace).List(selector)
|
|
}
|
|
|
|
func (c *addonCache) AddIndexer(indexName string, indexer AddonIndexer) {
|
|
utilruntime.Must(c.indexer.AddIndexers(map[string]cache.IndexFunc{
|
|
indexName: func(obj interface{}) (strings []string, e error) {
|
|
return indexer(obj.(*v1.Addon))
|
|
},
|
|
}))
|
|
}
|
|
|
|
func (c *addonCache) GetByIndex(indexName, key string) (result []*v1.Addon, err error) {
|
|
objs, err := c.indexer.ByIndex(indexName, key)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, obj := range objs {
|
|
result = append(result, obj.(*v1.Addon))
|
|
}
|
|
return result, nil
|
|
}
|