...
1
16
17 package storage
18
19 import (
20 "context"
21
22 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23 "k8s.io/apimachinery/pkg/runtime"
24 "k8s.io/apiserver/pkg/authorization/authorizer"
25 "k8s.io/apiserver/pkg/registry/generic"
26 genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
27 "k8s.io/apiserver/pkg/registry/rest"
28 "k8s.io/kubernetes/pkg/apis/admissionregistration"
29 "k8s.io/kubernetes/pkg/printers"
30 printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
31 printerstorage "k8s.io/kubernetes/pkg/printers/storage"
32 "k8s.io/kubernetes/pkg/registry/admissionregistration/resolver"
33 "k8s.io/kubernetes/pkg/registry/admissionregistration/validatingadmissionpolicybinding"
34 )
35
36
37 type REST struct {
38 *genericregistry.Store
39 }
40
41 var groupResource = admissionregistration.Resource("validatingadmissionpolicybindings")
42
43
44 func NewREST(optsGetter generic.RESTOptionsGetter, authorizer authorizer.Authorizer, policyGetter PolicyGetter, resourceResolver resolver.ResourceResolver) (*REST, error) {
45 r := &REST{}
46 strategy := validatingadmissionpolicybinding.NewStrategy(authorizer, policyGetter, resourceResolver)
47 store := &genericregistry.Store{
48 NewFunc: func() runtime.Object { return &admissionregistration.ValidatingAdmissionPolicyBinding{} },
49 NewListFunc: func() runtime.Object { return &admissionregistration.ValidatingAdmissionPolicyBindingList{} },
50 ObjectNameFunc: func(obj runtime.Object) (string, error) {
51 return obj.(*admissionregistration.ValidatingAdmissionPolicyBinding).Name, nil
52 },
53 DefaultQualifiedResource: groupResource,
54 SingularQualifiedResource: admissionregistration.Resource("validatingadmissionpolicybinding"),
55
56 CreateStrategy: strategy,
57 UpdateStrategy: strategy,
58 DeleteStrategy: strategy,
59
60 TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
61 }
62 options := &generic.StoreOptions{RESTOptions: optsGetter}
63 if err := store.CompleteWithOptions(options); err != nil {
64 return nil, err
65 }
66 r.Store = store
67 return r, nil
68 }
69
70
71 var _ rest.CategoriesProvider = &REST{}
72
73
74 func (r *REST) Categories() []string {
75 return []string{"api-extensions"}
76 }
77
78 type PolicyGetter interface {
79
80
81 GetValidatingAdmissionPolicy(ctx context.Context, name string) (*admissionregistration.ValidatingAdmissionPolicy, error)
82 }
83
84 type DefaultPolicyGetter struct {
85 Getter rest.Getter
86 }
87
88 func (g *DefaultPolicyGetter) GetValidatingAdmissionPolicy(ctx context.Context, name string) (*admissionregistration.ValidatingAdmissionPolicy, error) {
89 p, err := g.Getter.Get(ctx, name, &metav1.GetOptions{})
90 if err != nil {
91 return nil, err
92 }
93 return p.(*admissionregistration.ValidatingAdmissionPolicy), err
94 }
95
View as plain text