mirror of https://github.com/k3s-io/k3s
162 lines
5.1 KiB
Go
162 lines
5.1 KiB
Go
/*
|
|
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"
|
|
"time"
|
|
|
|
v1 "github.com/k3s-io/k3s/pkg/apis/k3s.cattle.io/v1"
|
|
"github.com/rancher/wrangler/pkg/apply"
|
|
"github.com/rancher/wrangler/pkg/condition"
|
|
"github.com/rancher/wrangler/pkg/generic"
|
|
"github.com/rancher/wrangler/pkg/kv"
|
|
"k8s.io/apimachinery/pkg/api/equality"
|
|
"k8s.io/apimachinery/pkg/api/errors"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
)
|
|
|
|
// ETCDSnapshotFileController interface for managing ETCDSnapshotFile resources.
|
|
type ETCDSnapshotFileController interface {
|
|
generic.NonNamespacedControllerInterface[*v1.ETCDSnapshotFile, *v1.ETCDSnapshotFileList]
|
|
}
|
|
|
|
// ETCDSnapshotFileClient interface for managing ETCDSnapshotFile resources in Kubernetes.
|
|
type ETCDSnapshotFileClient interface {
|
|
generic.NonNamespacedClientInterface[*v1.ETCDSnapshotFile, *v1.ETCDSnapshotFileList]
|
|
}
|
|
|
|
// ETCDSnapshotFileCache interface for retrieving ETCDSnapshotFile resources in memory.
|
|
type ETCDSnapshotFileCache interface {
|
|
generic.NonNamespacedCacheInterface[*v1.ETCDSnapshotFile]
|
|
}
|
|
|
|
type ETCDSnapshotFileStatusHandler func(obj *v1.ETCDSnapshotFile, status v1.ETCDSnapshotStatus) (v1.ETCDSnapshotStatus, error)
|
|
|
|
type ETCDSnapshotFileGeneratingHandler func(obj *v1.ETCDSnapshotFile, status v1.ETCDSnapshotStatus) ([]runtime.Object, v1.ETCDSnapshotStatus, error)
|
|
|
|
func RegisterETCDSnapshotFileStatusHandler(ctx context.Context, controller ETCDSnapshotFileController, condition condition.Cond, name string, handler ETCDSnapshotFileStatusHandler) {
|
|
statusHandler := &eTCDSnapshotFileStatusHandler{
|
|
client: controller,
|
|
condition: condition,
|
|
handler: handler,
|
|
}
|
|
controller.AddGenericHandler(ctx, name, generic.FromObjectHandlerToHandler(statusHandler.sync))
|
|
}
|
|
|
|
func RegisterETCDSnapshotFileGeneratingHandler(ctx context.Context, controller ETCDSnapshotFileController, apply apply.Apply,
|
|
condition condition.Cond, name string, handler ETCDSnapshotFileGeneratingHandler, opts *generic.GeneratingHandlerOptions) {
|
|
statusHandler := &eTCDSnapshotFileGeneratingHandler{
|
|
ETCDSnapshotFileGeneratingHandler: handler,
|
|
apply: apply,
|
|
name: name,
|
|
gvk: controller.GroupVersionKind(),
|
|
}
|
|
if opts != nil {
|
|
statusHandler.opts = *opts
|
|
}
|
|
controller.OnChange(ctx, name, statusHandler.Remove)
|
|
RegisterETCDSnapshotFileStatusHandler(ctx, controller, condition, name, statusHandler.Handle)
|
|
}
|
|
|
|
type eTCDSnapshotFileStatusHandler struct {
|
|
client ETCDSnapshotFileClient
|
|
condition condition.Cond
|
|
handler ETCDSnapshotFileStatusHandler
|
|
}
|
|
|
|
func (a *eTCDSnapshotFileStatusHandler) sync(key string, obj *v1.ETCDSnapshotFile) (*v1.ETCDSnapshotFile, error) {
|
|
if obj == nil {
|
|
return obj, nil
|
|
}
|
|
|
|
origStatus := obj.Status.DeepCopy()
|
|
obj = obj.DeepCopy()
|
|
newStatus, err := a.handler(obj, obj.Status)
|
|
if err != nil {
|
|
// Revert to old status on error
|
|
newStatus = *origStatus.DeepCopy()
|
|
}
|
|
|
|
if a.condition != "" {
|
|
if errors.IsConflict(err) {
|
|
a.condition.SetError(&newStatus, "", nil)
|
|
} else {
|
|
a.condition.SetError(&newStatus, "", err)
|
|
}
|
|
}
|
|
if !equality.Semantic.DeepEqual(origStatus, &newStatus) {
|
|
if a.condition != "" {
|
|
// Since status has changed, update the lastUpdatedTime
|
|
a.condition.LastUpdated(&newStatus, time.Now().UTC().Format(time.RFC3339))
|
|
}
|
|
|
|
var newErr error
|
|
obj.Status = newStatus
|
|
newObj, newErr := a.client.UpdateStatus(obj)
|
|
if err == nil {
|
|
err = newErr
|
|
}
|
|
if newErr == nil {
|
|
obj = newObj
|
|
}
|
|
}
|
|
return obj, err
|
|
}
|
|
|
|
type eTCDSnapshotFileGeneratingHandler struct {
|
|
ETCDSnapshotFileGeneratingHandler
|
|
apply apply.Apply
|
|
opts generic.GeneratingHandlerOptions
|
|
gvk schema.GroupVersionKind
|
|
name string
|
|
}
|
|
|
|
func (a *eTCDSnapshotFileGeneratingHandler) Remove(key string, obj *v1.ETCDSnapshotFile) (*v1.ETCDSnapshotFile, error) {
|
|
if obj != nil {
|
|
return obj, nil
|
|
}
|
|
|
|
obj = &v1.ETCDSnapshotFile{}
|
|
obj.Namespace, obj.Name = kv.RSplit(key, "/")
|
|
obj.SetGroupVersionKind(a.gvk)
|
|
|
|
return nil, generic.ConfigureApplyForObject(a.apply, obj, &a.opts).
|
|
WithOwner(obj).
|
|
WithSetID(a.name).
|
|
ApplyObjects()
|
|
}
|
|
|
|
func (a *eTCDSnapshotFileGeneratingHandler) Handle(obj *v1.ETCDSnapshotFile, status v1.ETCDSnapshotStatus) (v1.ETCDSnapshotStatus, error) {
|
|
if !obj.DeletionTimestamp.IsZero() {
|
|
return status, nil
|
|
}
|
|
|
|
objs, newStatus, err := a.ETCDSnapshotFileGeneratingHandler(obj, status)
|
|
if err != nil {
|
|
return newStatus, err
|
|
}
|
|
|
|
return newStatus, generic.ConfigureApplyForObject(a.apply, obj, &a.opts).
|
|
WithOwner(obj).
|
|
WithSetID(a.name).
|
|
ApplyObjects(objs...)
|
|
}
|