mirror of https://github.com/grafana/grafana
K8s: Add generic support for status (#92378)
parent
39fda067cf
commit
85ef26a85d
@ -0,0 +1,57 @@ |
||||
package generic |
||||
|
||||
import ( |
||||
"context" |
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
||||
"k8s.io/apimachinery/pkg/runtime" |
||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" |
||||
"k8s.io/apiserver/pkg/registry/rest" |
||||
"sigs.k8s.io/structured-merge-diff/v4/fieldpath" |
||||
) |
||||
|
||||
// NewStatusREST makes a RESTStorage for status that has more limited options.
|
||||
// It is based on the original REST so that we can share the same underlying store
|
||||
func NewStatusREST(store *genericregistry.Store, strategy rest.UpdateResetFieldsStrategy) *StatusREST { |
||||
statusStore := *store |
||||
statusStore.CreateStrategy = nil |
||||
statusStore.DeleteStrategy = nil |
||||
statusStore.UpdateStrategy = strategy |
||||
statusStore.ResetFieldsStrategy = strategy |
||||
return &StatusREST{store: &statusStore} |
||||
} |
||||
|
||||
// StatusREST implements the REST endpoint for changing the status of an DataPlaneService.
|
||||
type StatusREST struct { |
||||
store *genericregistry.Store |
||||
} |
||||
|
||||
var _ = rest.Patcher(&StatusREST{}) |
||||
|
||||
// New creates a new DataPlaneService object.
|
||||
func (r *StatusREST) New() runtime.Object { |
||||
return r.store.NewFunc() |
||||
} |
||||
|
||||
// Destroy cleans up resources on shutdown.
|
||||
func (r *StatusREST) Destroy() { |
||||
// Given that underlying store is shared with REST,
|
||||
// we don't destroy it here explicitly.
|
||||
} |
||||
|
||||
// Get retrieves the object from the storage. It is required to support Patch.
|
||||
func (r *StatusREST) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error) { |
||||
return r.store.Get(ctx, name, options) |
||||
} |
||||
|
||||
// Update alters the status subset of an object.
|
||||
func (r *StatusREST) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool, options *metav1.UpdateOptions) (runtime.Object, bool, error) { |
||||
// We are explicitly setting forceAllowCreate to false in the call to the underlying storage because
|
||||
// subresources should never allow create on update.
|
||||
return r.store.Update(ctx, name, objInfo, createValidation, updateValidation, false, options) |
||||
} |
||||
|
||||
// GetResetFields implements rest.ResetFieldsStrategy
|
||||
func (r *StatusREST) GetResetFields() map[fieldpath.APIVersion]*fieldpath.Set { |
||||
return r.store.GetResetFields() |
||||
} |
Loading…
Reference in new issue