...
1
16
17 package rest
18
19 import (
20 resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
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/resource"
27 podschedulingcontextsstore "k8s.io/kubernetes/pkg/registry/resource/podschedulingcontext/storage"
28 resourceclaimstore "k8s.io/kubernetes/pkg/registry/resource/resourceclaim/storage"
29 resourceclaimparametersstore "k8s.io/kubernetes/pkg/registry/resource/resourceclaimparameters/storage"
30 resourceclaimtemplatestore "k8s.io/kubernetes/pkg/registry/resource/resourceclaimtemplate/storage"
31 resourceclassstore "k8s.io/kubernetes/pkg/registry/resource/resourceclass/storage"
32 resourceclassparametersstore "k8s.io/kubernetes/pkg/registry/resource/resourceclassparameters/storage"
33 resourceslicestore "k8s.io/kubernetes/pkg/registry/resource/resourceslice/storage"
34 )
35
36 type RESTStorageProvider struct{}
37
38 func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) {
39 apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(resource.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs)
40
41
42
43 if storageMap, err := p.v1alpha2Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
44 return genericapiserver.APIGroupInfo{}, err
45 } else if len(storageMap) > 0 {
46 apiGroupInfo.VersionedResourcesStorageMap[resourcev1alpha2.SchemeGroupVersion.Version] = storageMap
47 }
48
49 return apiGroupInfo, nil
50 }
51
52 func (p RESTStorageProvider) v1alpha2Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
53 storage := map[string]rest.Storage{}
54
55 if resource := "resourceclasses"; apiResourceConfigSource.ResourceEnabled(resourcev1alpha2.SchemeGroupVersion.WithResource(resource)) {
56 resourceClassStorage, err := resourceclassstore.NewREST(restOptionsGetter)
57 if err != nil {
58 return nil, err
59 }
60 storage[resource] = resourceClassStorage
61 }
62
63 if resource := "resourceclaims"; apiResourceConfigSource.ResourceEnabled(resourcev1alpha2.SchemeGroupVersion.WithResource(resource)) {
64 resourceClaimStorage, resourceClaimStatusStorage, err := resourceclaimstore.NewREST(restOptionsGetter)
65 if err != nil {
66 return nil, err
67 }
68 storage[resource] = resourceClaimStorage
69 storage[resource+"/status"] = resourceClaimStatusStorage
70 }
71
72 if resource := "resourceclaimtemplates"; apiResourceConfigSource.ResourceEnabled(resourcev1alpha2.SchemeGroupVersion.WithResource(resource)) {
73 resourceClaimTemplateStorage, err := resourceclaimtemplatestore.NewREST(restOptionsGetter)
74 if err != nil {
75 return nil, err
76 }
77 storage[resource] = resourceClaimTemplateStorage
78 }
79
80 if resource := "podschedulingcontexts"; apiResourceConfigSource.ResourceEnabled(resourcev1alpha2.SchemeGroupVersion.WithResource(resource)) {
81 podSchedulingStorage, podSchedulingStatusStorage, err := podschedulingcontextsstore.NewREST(restOptionsGetter)
82 if err != nil {
83 return nil, err
84 }
85 storage[resource] = podSchedulingStorage
86 storage[resource+"/status"] = podSchedulingStatusStorage
87 }
88
89 if resource := "resourceclaimparameters"; apiResourceConfigSource.ResourceEnabled(resourcev1alpha2.SchemeGroupVersion.WithResource(resource)) {
90 resourceClaimParametersStorage, err := resourceclaimparametersstore.NewREST(restOptionsGetter)
91 if err != nil {
92 return nil, err
93 }
94 storage[resource] = resourceClaimParametersStorage
95 }
96
97 if resource := "resourceclassparameters"; apiResourceConfigSource.ResourceEnabled(resourcev1alpha2.SchemeGroupVersion.WithResource(resource)) {
98 resourceClassParametersStorage, err := resourceclassparametersstore.NewREST(restOptionsGetter)
99 if err != nil {
100 return nil, err
101 }
102 storage[resource] = resourceClassParametersStorage
103 }
104
105 if resource := "resourceslices"; apiResourceConfigSource.ResourceEnabled(resourcev1alpha2.SchemeGroupVersion.WithResource(resource)) {
106 resourceSliceStorage, err := resourceslicestore.NewREST(restOptionsGetter)
107 if err != nil {
108 return nil, err
109 }
110 storage[resource] = resourceSliceStorage
111 }
112
113 return storage, nil
114 }
115
116 func (p RESTStorageProvider) GroupName() string {
117 return resource.GroupName
118 }
119
View as plain text