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