...
1
16
17 package rest
18
19 import (
20 networkingapiv1 "k8s.io/api/networking/v1"
21 networkingapiv1alpha1 "k8s.io/api/networking/v1alpha1"
22 "k8s.io/apiserver/pkg/registry/generic"
23 "k8s.io/apiserver/pkg/registry/rest"
24 genericapiserver "k8s.io/apiserver/pkg/server"
25 serverstorage "k8s.io/apiserver/pkg/server/storage"
26 "k8s.io/kubernetes/pkg/api/legacyscheme"
27 "k8s.io/kubernetes/pkg/apis/networking"
28 ingressstore "k8s.io/kubernetes/pkg/registry/networking/ingress/storage"
29 ingressclassstore "k8s.io/kubernetes/pkg/registry/networking/ingressclass/storage"
30 ipaddressstore "k8s.io/kubernetes/pkg/registry/networking/ipaddress/storage"
31 networkpolicystore "k8s.io/kubernetes/pkg/registry/networking/networkpolicy/storage"
32 servicecidrstore "k8s.io/kubernetes/pkg/registry/networking/servicecidr/storage"
33 )
34
35 type RESTStorageProvider struct{}
36
37 func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) {
38 apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(networking.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs)
39
40
41
42 if storageMap, err := p.v1alpha1Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
43 return genericapiserver.APIGroupInfo{}, err
44 } else if len(storageMap) > 0 {
45 apiGroupInfo.VersionedResourcesStorageMap[networkingapiv1alpha1.SchemeGroupVersion.Version] = storageMap
46 }
47
48 if storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
49 return genericapiserver.APIGroupInfo{}, err
50 } else if len(storageMap) > 0 {
51 apiGroupInfo.VersionedResourcesStorageMap[networkingapiv1.SchemeGroupVersion.Version] = storageMap
52 }
53
54 return apiGroupInfo, nil
55 }
56
57 func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
58 storage := map[string]rest.Storage{}
59
60
61 if resource := "networkpolicies"; apiResourceConfigSource.ResourceEnabled(networkingapiv1.SchemeGroupVersion.WithResource(resource)) {
62 networkPolicyStorage, err := networkpolicystore.NewREST(restOptionsGetter)
63 if err != nil {
64 return storage, err
65 }
66 storage[resource] = networkPolicyStorage
67 }
68
69
70 if resource := "ingresses"; apiResourceConfigSource.ResourceEnabled(networkingapiv1.SchemeGroupVersion.WithResource(resource)) {
71 ingressStorage, ingressStatusStorage, err := ingressstore.NewREST(restOptionsGetter)
72 if err != nil {
73 return storage, err
74 }
75 storage[resource] = ingressStorage
76 storage[resource+"/status"] = ingressStatusStorage
77 }
78
79
80 if resource := "ingressclasses"; apiResourceConfigSource.ResourceEnabled(networkingapiv1.SchemeGroupVersion.WithResource(resource)) {
81 ingressClassStorage, err := ingressclassstore.NewREST(restOptionsGetter)
82 if err != nil {
83 return storage, err
84 }
85 storage[resource] = ingressClassStorage
86 }
87
88 return storage, nil
89 }
90
91 func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
92 storage := map[string]rest.Storage{}
93
94
95 if resource := "ipaddresses"; apiResourceConfigSource.ResourceEnabled(networkingapiv1alpha1.SchemeGroupVersion.WithResource(resource)) {
96 ipAddressStorage, err := ipaddressstore.NewREST(restOptionsGetter)
97 if err != nil {
98 return storage, err
99 }
100 storage[resource] = ipAddressStorage
101 }
102
103
104 if resource := "servicecidrs"; apiResourceConfigSource.ResourceEnabled(networkingapiv1alpha1.SchemeGroupVersion.WithResource(resource)) {
105 serviceCIDRStorage, serviceCIDRStatusStorage, err := servicecidrstore.NewREST(restOptionsGetter)
106 if err != nil {
107 return storage, err
108 }
109 storage[resource] = serviceCIDRStorage
110 storage[resource+"/status"] = serviceCIDRStatusStorage
111 }
112
113 return storage, nil
114 }
115
116 func (p RESTStorageProvider) GroupName() string {
117 return networking.GroupName
118 }
119
View as plain text