...
1
16
17 package storage
18
19 import (
20 "fmt"
21
22 "k8s.io/apimachinery/pkg/fields"
23 "k8s.io/apimachinery/pkg/labels"
24 "k8s.io/apimachinery/pkg/runtime"
25 "k8s.io/apiserver/pkg/registry/generic"
26 genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
27 "k8s.io/apiserver/pkg/registry/rest"
28 api "k8s.io/kubernetes/pkg/apis/certificates"
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/certificates/clustertrustbundle"
33 )
34
35
36 type REST struct {
37 *genericregistry.Store
38 }
39
40 var _ rest.StandardStorage = &REST{}
41 var _ rest.TableConvertor = &REST{}
42 var _ genericregistry.GenericStore = &REST{}
43
44
45 func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, error) {
46 store := &genericregistry.Store{
47 NewFunc: func() runtime.Object { return &api.ClusterTrustBundle{} },
48 NewListFunc: func() runtime.Object { return &api.ClusterTrustBundleList{} },
49 DefaultQualifiedResource: api.Resource("clustertrustbundles"),
50 SingularQualifiedResource: api.Resource("clustertrustbundle"),
51
52 CreateStrategy: clustertrustbundle.Strategy,
53 UpdateStrategy: clustertrustbundle.Strategy,
54 DeleteStrategy: clustertrustbundle.Strategy,
55
56 TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
57 }
58 options := &generic.StoreOptions{
59 RESTOptions: optsGetter,
60 AttrFunc: getAttrs,
61 }
62 if err := store.CompleteWithOptions(options); err != nil {
63 return nil, err
64 }
65 return &REST{store}, nil
66 }
67
68 func getAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
69 bundle, ok := obj.(*api.ClusterTrustBundle)
70 if !ok {
71 return nil, nil, fmt.Errorf("not a clustertrustbundle")
72 }
73
74 selectableFields := generic.MergeFieldsSets(generic.ObjectMetaFieldsSet(&bundle.ObjectMeta, false), fields.Set{
75 "spec.signerName": bundle.Spec.SignerName,
76 })
77
78 return labels.Set(bundle.Labels), selectableFields, nil
79 }
80
View as plain text