...
1
16
17 package rest
18
19 import (
20 policyapiv1 "k8s.io/api/policy/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/policy"
27 poddisruptionbudgetstore "k8s.io/kubernetes/pkg/registry/policy/poddisruptionbudget/storage"
28 )
29
30 type RESTStorageProvider struct{}
31
32 func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) {
33 apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(policy.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs)
34
35
36
37 if storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
38 return genericapiserver.APIGroupInfo{}, err
39 } else if len(storageMap) > 0 {
40 apiGroupInfo.VersionedResourcesStorageMap[policyapiv1.SchemeGroupVersion.Version] = storageMap
41 }
42
43 return apiGroupInfo, nil
44 }
45
46 func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
47 storage := map[string]rest.Storage{}
48
49 if resource := "poddisruptionbudgets"; apiResourceConfigSource.ResourceEnabled(policyapiv1.SchemeGroupVersion.WithResource(resource)) {
50 poddisruptionbudgetStorage, poddisruptionbudgetStatusStorage, err := poddisruptionbudgetstore.NewREST(restOptionsGetter)
51 if err != nil {
52 return storage, err
53 }
54 storage[resource] = poddisruptionbudgetStorage
55 storage[resource+"/status"] = poddisruptionbudgetStatusStorage
56 }
57
58 return storage, nil
59 }
60
61 func (p RESTStorageProvider) GroupName() string {
62 return policy.GroupName
63 }
64
View as plain text