...
1
16
17 package rest
18
19 import (
20 autoscalingapiv1 "k8s.io/api/autoscaling/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/autoscaling"
27 autoscalingapiv2 "k8s.io/kubernetes/pkg/apis/autoscaling/v2"
28 horizontalpodautoscalerstore "k8s.io/kubernetes/pkg/registry/autoscaling/horizontalpodautoscaler/storage"
29 )
30
31 type RESTStorageProvider struct{}
32
33 func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) {
34 apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(autoscaling.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs)
35
36
37
38 if storageMap, err := p.v2Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
39 return genericapiserver.APIGroupInfo{}, err
40 } else if len(storageMap) > 0 {
41 apiGroupInfo.VersionedResourcesStorageMap[autoscalingapiv2.SchemeGroupVersion.Version] = storageMap
42 }
43
44 if storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
45 return genericapiserver.APIGroupInfo{}, err
46 } else if len(storageMap) > 0 {
47 apiGroupInfo.VersionedResourcesStorageMap[autoscalingapiv1.SchemeGroupVersion.Version] = storageMap
48 }
49
50 return apiGroupInfo, nil
51 }
52
53 func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
54 storage := map[string]rest.Storage{}
55
56
57 if resource := "horizontalpodautoscalers"; apiResourceConfigSource.ResourceEnabled(autoscalingapiv1.SchemeGroupVersion.WithResource(resource)) {
58 hpaStorage, hpaStatusStorage, err := horizontalpodautoscalerstore.NewREST(restOptionsGetter)
59 if err != nil {
60 return storage, err
61 }
62 storage[resource] = hpaStorage
63 storage[resource+"/status"] = hpaStatusStorage
64 }
65
66 return storage, nil
67 }
68
69 func (p RESTStorageProvider) v2Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
70 storage := map[string]rest.Storage{}
71
72
73 if resource := "horizontalpodautoscalers"; apiResourceConfigSource.ResourceEnabled(autoscalingapiv2.SchemeGroupVersion.WithResource(resource)) {
74 hpaStorage, hpaStatusStorage, err := horizontalpodautoscalerstore.NewREST(restOptionsGetter)
75 if err != nil {
76 return storage, err
77 }
78 storage[resource] = hpaStorage
79 storage[resource+"/status"] = hpaStatusStorage
80 }
81
82 return storage, nil
83 }
84
85 func (p RESTStorageProvider) GroupName() string {
86 return autoscaling.GroupName
87 }
88
View as plain text