...
1
16
17 package rest
18
19 import (
20 "time"
21
22 eventsapiv1 "k8s.io/api/events/v1"
23 "k8s.io/apiserver/pkg/registry/generic"
24 "k8s.io/apiserver/pkg/registry/rest"
25 genericapiserver "k8s.io/apiserver/pkg/server"
26 serverstorage "k8s.io/apiserver/pkg/server/storage"
27 "k8s.io/kubernetes/pkg/api/legacyscheme"
28 "k8s.io/kubernetes/pkg/apis/events"
29 eventstore "k8s.io/kubernetes/pkg/registry/core/event/storage"
30 )
31
32 type RESTStorageProvider struct {
33 TTL time.Duration
34 }
35
36 func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) {
37 apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(events.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs)
38
39
40
41 if storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
42 return genericapiserver.APIGroupInfo{}, err
43 } else if len(storageMap) > 0 {
44 apiGroupInfo.VersionedResourcesStorageMap[eventsapiv1.SchemeGroupVersion.Version] = storageMap
45 }
46
47 return apiGroupInfo, nil
48 }
49
50 func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
51 storage := map[string]rest.Storage{}
52
53
54 if resource := "events"; apiResourceConfigSource.ResourceEnabled(eventsapiv1.SchemeGroupVersion.WithResource(resource)) {
55 eventsStorage, err := eventstore.NewREST(restOptionsGetter, uint64(p.TTL.Seconds()))
56 if err != nil {
57 return storage, err
58 }
59 storage[resource] = eventsStorage
60 }
61
62 return storage, nil
63 }
64
65 func (p RESTStorageProvider) GroupName() string {
66 return events.GroupName
67 }
68
View as plain text