...
1
16
17 package rest
18
19 import (
20 batchapiv1 "k8s.io/api/batch/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/batch"
27 cronjobstore "k8s.io/kubernetes/pkg/registry/batch/cronjob/storage"
28 jobstore "k8s.io/kubernetes/pkg/registry/batch/job/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(batch.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs)
35
36
37
38 if storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
39 return genericapiserver.APIGroupInfo{}, err
40 } else if len(storageMap) > 0 {
41 apiGroupInfo.VersionedResourcesStorageMap[batchapiv1.SchemeGroupVersion.Version] = storageMap
42 }
43
44 return apiGroupInfo, nil
45 }
46
47 func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
48 storage := map[string]rest.Storage{}
49
50
51 if resource := "jobs"; apiResourceConfigSource.ResourceEnabled(batchapiv1.SchemeGroupVersion.WithResource(resource)) {
52 jobsStorage, jobsStatusStorage, err := jobstore.NewREST(restOptionsGetter)
53 if err != nil {
54 return storage, err
55 }
56 storage[resource] = jobsStorage
57 storage[resource+"/status"] = jobsStatusStorage
58 }
59
60
61 if resource := "cronjobs"; apiResourceConfigSource.ResourceEnabled(batchapiv1.SchemeGroupVersion.WithResource(resource)) {
62 cronJobsStorage, cronJobsStatusStorage, err := cronjobstore.NewREST(restOptionsGetter)
63 if err != nil {
64 return storage, err
65 }
66 storage[resource] = cronJobsStorage
67 storage[resource+"/status"] = cronJobsStatusStorage
68 }
69 return storage, nil
70 }
71
72 func (p RESTStorageProvider) GroupName() string {
73 return batch.GroupName
74 }
75
View as plain text