...
1
16
17 package rest
18
19 import (
20 appsapiv1 "k8s.io/api/apps/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/apps"
27 controllerrevisionsstore "k8s.io/kubernetes/pkg/registry/apps/controllerrevision/storage"
28 daemonsetstore "k8s.io/kubernetes/pkg/registry/apps/daemonset/storage"
29 deploymentstore "k8s.io/kubernetes/pkg/registry/apps/deployment/storage"
30 replicasetstore "k8s.io/kubernetes/pkg/registry/apps/replicaset/storage"
31 statefulsetstore "k8s.io/kubernetes/pkg/registry/apps/statefulset/storage"
32 )
33
34
35 type StorageProvider struct{}
36
37
38 func (p StorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) {
39 apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apps.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs)
40
41
42
43 if storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
44 return genericapiserver.APIGroupInfo{}, err
45 } else if len(storageMap) > 0 {
46 apiGroupInfo.VersionedResourcesStorageMap[appsapiv1.SchemeGroupVersion.Version] = storageMap
47 }
48
49 return apiGroupInfo, nil
50 }
51
52 func (p StorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
53 storage := map[string]rest.Storage{}
54
55
56 if resource := "deployments"; apiResourceConfigSource.ResourceEnabled(appsapiv1.SchemeGroupVersion.WithResource(resource)) {
57 deploymentStorage, err := deploymentstore.NewStorage(restOptionsGetter)
58 if err != nil {
59 return storage, err
60 }
61 storage[resource] = deploymentStorage.Deployment
62 storage[resource+"/status"] = deploymentStorage.Status
63 storage[resource+"/scale"] = deploymentStorage.Scale
64 }
65
66
67 if resource := "statefulsets"; apiResourceConfigSource.ResourceEnabled(appsapiv1.SchemeGroupVersion.WithResource(resource)) {
68 statefulSetStorage, err := statefulsetstore.NewStorage(restOptionsGetter)
69 if err != nil {
70 return storage, err
71 }
72 storage[resource] = statefulSetStorage.StatefulSet
73 storage[resource+"/status"] = statefulSetStorage.Status
74 storage[resource+"/scale"] = statefulSetStorage.Scale
75 }
76
77
78 if resource := "daemonsets"; apiResourceConfigSource.ResourceEnabled(appsapiv1.SchemeGroupVersion.WithResource(resource)) {
79 daemonSetStorage, daemonSetStatusStorage, err := daemonsetstore.NewREST(restOptionsGetter)
80 if err != nil {
81 return storage, err
82 }
83 storage[resource] = daemonSetStorage
84 storage[resource+"/status"] = daemonSetStatusStorage
85 }
86
87
88 if resource := "replicasets"; apiResourceConfigSource.ResourceEnabled(appsapiv1.SchemeGroupVersion.WithResource(resource)) {
89 replicaSetStorage, err := replicasetstore.NewStorage(restOptionsGetter)
90 if err != nil {
91 return storage, err
92 }
93 storage[resource] = replicaSetStorage.ReplicaSet
94 storage[resource+"/status"] = replicaSetStorage.Status
95 storage[resource+"/scale"] = replicaSetStorage.Scale
96 }
97
98
99 if resource := "controllerrevisions"; apiResourceConfigSource.ResourceEnabled(appsapiv1.SchemeGroupVersion.WithResource(resource)) {
100 historyStorage, err := controllerrevisionsstore.NewREST(restOptionsGetter)
101 if err != nil {
102 return storage, err
103 }
104 storage[resource] = historyStorage
105 }
106
107 return storage, nil
108 }
109
110
111 func (p StorageProvider) GroupName() string {
112 return apps.GroupName
113 }
114
View as plain text