// Get retrieves the StorageClass from the index for a given name. func (s *storageClassLister) Get(name string) (*storage.StorageClass, error) { key := &storage.StorageClass{ObjectMeta: api.ObjectMeta{Name: name}} obj, exists, err := s.indexer.Get(key) if err != nil { return nil, err } if !exists { return nil, errors.NewNotFound(storage.Resource("storageclass"), name) } return obj.(*storage.StorageClass), nil }
func (p StorageRESTStorageProvider) v1beta1Storage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter RESTOptionsGetter) map[string]rest.Storage { version := storageapiv1beta1.SchemeGroupVersion storage := map[string]rest.Storage{} if apiResourceConfigSource.ResourceEnabled(version.WithResource("storageclasses")) { storageClassStorage := storageclassetcd.NewREST(restOptionsGetter(storageapi.Resource("storageclasses"))) storage["storageclasses"] = storageClassStorage } return storage }
// NewREST returns a RESTStorage object that will work against persistent volumes. func NewREST(opts generic.RESTOptions) *REST { prefix := "/" + opts.ResourcePrefix newListFunc := func() runtime.Object { return &storageapi.StorageClassList{} } storageInterface, dFunc := opts.Decorator( opts.StorageConfig, cachesize.GetWatchCacheSizeByResource(cachesize.StorageClasses), &storageapi.StorageClass{}, prefix, storageclass.Strategy, newListFunc, storageclass.GetAttrs, storage.NoTriggerPublisher, ) store := &genericregistry.Store{ NewFunc: func() runtime.Object { return &storageapi.StorageClass{} }, NewListFunc: newListFunc, KeyRootFunc: func(ctx api.Context) string { return prefix }, KeyFunc: func(ctx api.Context, name string) (string, error) { return genericregistry.NoNamespaceKeyFunc(ctx, prefix, name) }, ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*storageapi.StorageClass).Name, nil }, PredicateFunc: storageclass.MatchStorageClasses, QualifiedResource: storageapi.Resource("storageclasses"), EnableGarbageCollection: opts.EnableGarbageCollection, DeleteCollectionWorkers: opts.DeleteCollectionWorkers, CreateStrategy: storageclass.Strategy, UpdateStrategy: storageclass.Strategy, DeleteStrategy: storageclass.Strategy, ReturnDeletedObject: true, Storage: storageInterface, DestroyFunc: dFunc, } return &REST{store} }
// NewREST returns a RESTStorage object that will work against persistent volumes. func NewREST(optsGetter generic.RESTOptionsGetter) *REST { store := &genericregistry.Store{ NewFunc: func() runtime.Object { return &storageapi.StorageClass{} }, NewListFunc: func() runtime.Object { return &storageapi.StorageClassList{} }, ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*storageapi.StorageClass).Name, nil }, PredicateFunc: storageclass.MatchStorageClasses, QualifiedResource: storageapi.Resource("storageclasses"), CreateStrategy: storageclass.Strategy, UpdateStrategy: storageclass.Strategy, DeleteStrategy: storageclass.Strategy, ReturnDeletedObject: true, } options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: storageclass.GetAttrs} if err := store.CompleteWithOptions(options); err != nil { panic(err) // TODO: Propagate error up } return &REST{store} }