// NewREST returns a registry which will store ThirdPartyResource in the given helper func NewREST(optsGetter generic.RESTOptionsGetter) *REST { resource := extensions.Resource("thirdpartyresources") opts, err := optsGetter.GetRESTOptions(resource) if err != nil { panic(err) // TODO: Propagate error up } // We explicitly do NOT do any decoration here yet. // TODO determine why we do not want to cache here opts.Decorator = generic.UndecoratedStorage // TODO use watchCacheSize=-1 to signal UndecoratedStorage store := &genericregistry.Store{ NewFunc: func() runtime.Object { return &extensions.ThirdPartyResource{} }, NewListFunc: func() runtime.Object { return &extensions.ThirdPartyResourceList{} }, ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*extensions.ThirdPartyResource).Name, nil }, PredicateFunc: thirdpartyresource.Matcher, QualifiedResource: resource, CreateStrategy: thirdpartyresource.Strategy, UpdateStrategy: thirdpartyresource.Strategy, DeleteStrategy: thirdpartyresource.Strategy, } options := &generic.StoreOptions{RESTOptions: opts, AttrFunc: thirdpartyresource.GetAttrs} // Pass in opts to use UndecoratedStorage if err := store.CompleteWithOptions(options); err != nil { panic(err) // TODO: Propagate error up } return &REST{store} }
// NewREST returns a RESTStorage object that will work against events. func NewREST(optsGetter generic.RESTOptionsGetter, ttl uint64) *REST { resource := api.Resource("events") opts, err := optsGetter.GetRESTOptions(resource) if err != nil { panic(err) // TODO: Propagate error up } // We explicitly do NOT do any decoration here - switching on Cacher // for events will lead to too high memory consumption. opts.Decorator = generic.UndecoratedStorage // TODO use watchCacheSize=-1 to signal UndecoratedStorage store := &genericregistry.Store{ NewFunc: func() runtime.Object { return &api.Event{} }, NewListFunc: func() runtime.Object { return &api.EventList{} }, ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*api.Event).Name, nil }, PredicateFunc: event.MatchEvent, TTLFunc: func(runtime.Object, uint64, bool) (uint64, error) { return ttl, nil }, QualifiedResource: resource, CreateStrategy: event.Strategy, UpdateStrategy: event.Strategy, DeleteStrategy: event.Strategy, } options := &generic.StoreOptions{RESTOptions: opts, AttrFunc: event.GetAttrs} // Pass in opts to use UndecoratedStorage if err := store.CompleteWithOptions(options); err != nil { panic(err) // TODO: Propagate error up } return &REST{store} }
// NewREST returns a registry which will store ThirdPartyResourceData in the given helper func NewREST(optsGetter generic.RESTOptionsGetter, group, kind string) *REST { resource := extensions.Resource("thirdpartyresourcedatas") opts, err := optsGetter.GetRESTOptions(resource) if err != nil { panic(err) // TODO: Propagate error up } // We explicitly do NOT do any decoration here yet. opts.Decorator = generic.UndecoratedStorage // TODO use watchCacheSize=-1 to signal UndecoratedStorage opts.ResourcePrefix = "/ThirdPartyResourceData/" + group + "/" + strings.ToLower(kind) + "s" store := &genericregistry.Store{ NewFunc: func() runtime.Object { return &extensions.ThirdPartyResourceData{} }, NewListFunc: func() runtime.Object { return &extensions.ThirdPartyResourceDataList{} }, ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*extensions.ThirdPartyResourceData).Name, nil }, PredicateFunc: thirdpartyresourcedata.Matcher, QualifiedResource: resource, CreateStrategy: thirdpartyresourcedata.Strategy, UpdateStrategy: thirdpartyresourcedata.Strategy, DeleteStrategy: thirdpartyresourcedata.Strategy, } options := &generic.StoreOptions{RESTOptions: opts, AttrFunc: thirdpartyresourcedata.GetAttrs} // Pass in opts to use UndecoratedStorage and custom ResourcePrefix if err := store.CompleteWithOptions(options); err != nil { panic(err) // TODO: Propagate error up } return &REST{ Store: store, kind: kind, } }