// NewREST returns a registry which will store CertificateSigningRequest in the given helper func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *ApprovalREST) { store := &genericregistry.Store{ NewFunc: func() runtime.Object { return &certificates.CertificateSigningRequest{} }, NewListFunc: func() runtime.Object { return &certificates.CertificateSigningRequestList{} }, ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*certificates.CertificateSigningRequest).Name, nil }, PredicateFunc: csrregistry.Matcher, QualifiedResource: certificates.Resource("certificatesigningrequests"), CreateStrategy: csrregistry.Strategy, UpdateStrategy: csrregistry.Strategy, DeleteStrategy: csrregistry.Strategy, } options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: csrregistry.GetAttrs} if err := store.CompleteWithOptions(options); err != nil { panic(err) // TODO: Propagate error up } // Subresources use the same store and creation strategy, which only // allows empty subs. Updates to an existing subresource are handled by // dedicated strategies. statusStore := *store statusStore.UpdateStrategy = csrregistry.StatusStrategy approvalStore := *store approvalStore.UpdateStrategy = csrregistry.ApprovalStrategy return &REST{store}, &StatusREST{store: &statusStore}, &ApprovalREST{store: &approvalStore} }
// Get retrieves the CertificateSigningRequest from the index for a given name. func (s *certificateSigningRequestLister) Get(name string) (*certificates.CertificateSigningRequest, error) { key := &certificates.CertificateSigningRequest{ObjectMeta: api.ObjectMeta{Name: name}} obj, exists, err := s.indexer.Get(key) if err != nil { return nil, err } if !exists { return nil, errors.NewNotFound(certificates.Resource("certificatesigningrequest"), name) } return obj.(*certificates.CertificateSigningRequest), nil }
// NewREST returns a registry which will store CertificateSigningRequest in the given helper func NewREST(opts generic.RESTOptions) (*REST, *StatusREST, *ApprovalREST) { prefix := "/" + opts.ResourcePrefix newListFunc := func() runtime.Object { return &certificates.CertificateSigningRequestList{} } storageInterface, dFunc := opts.Decorator( opts.StorageConfig, cachesize.GetWatchCacheSizeByResource(cachesize.CertificateSigningRequests), &certificates.CertificateSigningRequest{}, prefix, csrregistry.Strategy, newListFunc, storage.NoTriggerPublisher, ) store := ®istry.Store{ NewFunc: func() runtime.Object { return &certificates.CertificateSigningRequest{} }, NewListFunc: newListFunc, KeyRootFunc: func(ctx api.Context) string { return prefix }, KeyFunc: func(ctx api.Context, id string) (string, error) { return registry.NoNamespaceKeyFunc(ctx, prefix, id) }, ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*certificates.CertificateSigningRequest).Name, nil }, PredicateFunc: func(label labels.Selector, field fields.Selector) storage.SelectionPredicate { return csrregistry.Matcher(label, field) }, QualifiedResource: certificates.Resource("certificatesigningrequests"), EnableGarbageCollection: opts.EnableGarbageCollection, DeleteCollectionWorkers: opts.DeleteCollectionWorkers, CreateStrategy: csrregistry.Strategy, UpdateStrategy: csrregistry.Strategy, DeleteStrategy: csrregistry.Strategy, Storage: storageInterface, DestroyFunc: dFunc, } // Subresources use the same store and creation strategy, which only // allows empty subs. Updates to an existing subresource are handled by // dedicated strategies. statusStore := *store statusStore.UpdateStrategy = csrregistry.StatusStrategy approvalStore := *store approvalStore.UpdateStrategy = csrregistry.ApprovalStrategy return &REST{store}, &StatusREST{store: &statusStore}, &ApprovalREST{store: &approvalStore} }
// getCertificateResources returns the resources for certificates API func (m *Master) getCertificateResources(c *Config) map[string]rest.Storage { restOptions := func(resource string) generic.RESTOptions { return m.GetRESTOptionsOrDie(c, certificates.Resource(resource)) } // TODO update when we support more than one version of this group version := certificatesapiv1alpha1.SchemeGroupVersion storage := map[string]rest.Storage{} csrStorage, csrStatusStorage, csrApprovalStorage := certificateetcd.NewREST(restOptions("certificatesigningrequests")) if c.APIResourceConfigSource.ResourceEnabled(version.WithResource("certificatesigningrequests")) { storage["certificatesigningrequests"] = csrStorage storage["certificatesigningrequests/status"] = csrStatusStorage storage["certificatesigningrequests/approval"] = csrApprovalStorage } return storage }
func buildCertificateResources(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { apiGroupInfo := NewDefaultAPIGroupInfo(certificates.GroupName) storageForVersion := func(version unversioned.GroupVersion) map[string]rest.Storage { storage := map[string]rest.Storage{} if apiResourceConfigSource.ResourceEnabled(version.WithResource("certificatesigningrequests")) { csrStorage, csrStatusStorage, csrApprovalStorage := certificateetcd.NewREST(restOptionsGetter(certificates.Resource("certificatesigningrequests"))) storage["certificatesigningrequests"] = csrStorage storage["certificatesigningrequests/status"] = csrStatusStorage storage["certificatesigningrequests/approval"] = csrApprovalStorage } return storage } if apiResourceConfigSource.AnyResourcesForVersionEnabled(certificatesapiv1alpha1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[certificatesapiv1alpha1.SchemeGroupVersion.Version] = storageForVersion(certificatesapiv1alpha1.SchemeGroupVersion) apiGroupInfo.GroupMeta.GroupVersion = certificatesapiv1alpha1.SchemeGroupVersion } return apiGroupInfo, true }
func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter genericapiserver.RESTOptionsGetter) map[string]rest.Storage { version := certificatesapiv1alpha1.SchemeGroupVersion storage := map[string]rest.Storage{} if apiResourceConfigSource.ResourceEnabled(version.WithResource("certificatesigningrequests")) { csrStorage, csrStatusStorage, csrApprovalStorage := certificateetcd.NewREST(restOptionsGetter(certificates.Resource("certificatesigningrequests"))) storage["certificatesigningrequests"] = csrStorage storage["certificatesigningrequests/status"] = csrStatusStorage storage["certificatesigningrequests/approval"] = csrApprovalStorage } return storage }