mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-26 04:36:00 +00:00
Propagate error from NewREST
This commit is contained in:
@@ -40,14 +40,17 @@ type ContainerStorage struct {
|
||||
Scale *ScaleREST
|
||||
}
|
||||
|
||||
func NewStorage(optsGetter generic.RESTOptionsGetter) ContainerStorage {
|
||||
func NewStorage(optsGetter generic.RESTOptionsGetter) (ContainerStorage, error) {
|
||||
// scale does not set status, only updates spec so we ignore the status
|
||||
controllerREST, _ := controllerstore.NewREST(optsGetter)
|
||||
controllerREST, _, err := controllerstore.NewREST(optsGetter)
|
||||
if err != nil {
|
||||
return ContainerStorage{}, err
|
||||
}
|
||||
|
||||
return ContainerStorage{
|
||||
ReplicationController: &RcREST{},
|
||||
Scale: &ScaleREST{store: controllerREST.Store},
|
||||
}
|
||||
}, nil
|
||||
}
|
||||
|
||||
type ScaleREST struct {
|
||||
|
@@ -42,7 +42,11 @@ func newStorage(t *testing.T) (*ScaleREST, *etcd3testing.EtcdTestServer, storage
|
||||
d()
|
||||
server.Terminate(t)
|
||||
}
|
||||
return NewStorage(restOptions).Scale, server, s, destroyFunc
|
||||
storage, err := NewStorage(restOptions)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error from REST storage: %v", err)
|
||||
}
|
||||
return storage.Scale, server, s, destroyFunc
|
||||
}
|
||||
|
||||
var validPodTemplate = api.PodTemplate{
|
||||
|
@@ -35,39 +35,52 @@ import (
|
||||
|
||||
type RESTStorageProvider struct{}
|
||||
|
||||
func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) {
|
||||
func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool, error) {
|
||||
apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(extensions.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs)
|
||||
// If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities.
|
||||
// TODO refactor the plumbing to provide the information in the APIGroupInfo
|
||||
|
||||
if apiResourceConfigSource.VersionEnabled(extensionsapiv1beta1.SchemeGroupVersion) {
|
||||
apiGroupInfo.VersionedResourcesStorageMap[extensionsapiv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter)
|
||||
if storageMap, err := p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter); err != nil {
|
||||
return genericapiserver.APIGroupInfo{}, false, err
|
||||
} else {
|
||||
apiGroupInfo.VersionedResourcesStorageMap[extensionsapiv1beta1.SchemeGroupVersion.Version] = storageMap
|
||||
}
|
||||
}
|
||||
|
||||
return apiGroupInfo, true
|
||||
return apiGroupInfo, true, nil
|
||||
}
|
||||
|
||||
func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) map[string]rest.Storage {
|
||||
func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) {
|
||||
storage := map[string]rest.Storage{}
|
||||
|
||||
// This is a dummy replication controller for scale subresource purposes.
|
||||
// TODO: figure out how to enable this only if needed as a part of scale subresource GA.
|
||||
if apiResourceConfigSource.ResourceEnabled(extensionsapiv1beta1.SchemeGroupVersion.WithResource("replicationcontrollers")) {
|
||||
controllerStorage := expcontrollerstore.NewStorage(restOptionsGetter)
|
||||
controllerStorage, err := expcontrollerstore.NewStorage(restOptionsGetter)
|
||||
if err != nil {
|
||||
return storage, err
|
||||
}
|
||||
storage["replicationcontrollers"] = controllerStorage.ReplicationController
|
||||
storage["replicationcontrollers/scale"] = controllerStorage.Scale
|
||||
}
|
||||
|
||||
// daemonsets
|
||||
if apiResourceConfigSource.ResourceEnabled(extensionsapiv1beta1.SchemeGroupVersion.WithResource("daemonsets")) {
|
||||
daemonSetStorage, daemonSetStatusStorage := daemonstore.NewREST(restOptionsGetter)
|
||||
daemonSetStorage, daemonSetStatusStorage, err := daemonstore.NewREST(restOptionsGetter)
|
||||
if err != nil {
|
||||
return storage, err
|
||||
}
|
||||
storage["daemonsets"] = daemonSetStorage.WithCategories(nil)
|
||||
storage["daemonsets/status"] = daemonSetStatusStorage
|
||||
}
|
||||
|
||||
//deployments
|
||||
if apiResourceConfigSource.ResourceEnabled(extensionsapiv1beta1.SchemeGroupVersion.WithResource("deployments")) {
|
||||
deploymentStorage := deploymentstore.NewStorage(restOptionsGetter)
|
||||
deploymentStorage, err := deploymentstore.NewStorage(restOptionsGetter)
|
||||
if err != nil {
|
||||
return storage, err
|
||||
}
|
||||
storage["deployments"] = deploymentStorage.Deployment.WithCategories(nil)
|
||||
storage["deployments/status"] = deploymentStorage.Status
|
||||
storage["deployments/rollback"] = deploymentStorage.Rollback
|
||||
@@ -75,20 +88,29 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorag
|
||||
}
|
||||
// ingresses
|
||||
if apiResourceConfigSource.ResourceEnabled(extensionsapiv1beta1.SchemeGroupVersion.WithResource("ingresses")) {
|
||||
ingressStorage, ingressStatusStorage := ingressstore.NewREST(restOptionsGetter)
|
||||
ingressStorage, ingressStatusStorage, err := ingressstore.NewREST(restOptionsGetter)
|
||||
if err != nil {
|
||||
return storage, err
|
||||
}
|
||||
storage["ingresses"] = ingressStorage
|
||||
storage["ingresses/status"] = ingressStatusStorage
|
||||
}
|
||||
|
||||
// podsecuritypolicy
|
||||
if apiResourceConfigSource.ResourceEnabled(extensionsapiv1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies")) {
|
||||
podSecurityPolicyStorage := pspstore.NewREST(restOptionsGetter)
|
||||
podSecurityPolicyStorage, err := pspstore.NewREST(restOptionsGetter)
|
||||
if err != nil {
|
||||
return storage, err
|
||||
}
|
||||
storage["podSecurityPolicies"] = podSecurityPolicyStorage
|
||||
}
|
||||
|
||||
// replicasets
|
||||
if apiResourceConfigSource.ResourceEnabled(extensionsapiv1beta1.SchemeGroupVersion.WithResource("replicasets")) {
|
||||
replicaSetStorage := replicasetstore.NewStorage(restOptionsGetter)
|
||||
replicaSetStorage, err := replicasetstore.NewStorage(restOptionsGetter)
|
||||
if err != nil {
|
||||
return storage, err
|
||||
}
|
||||
storage["replicasets"] = replicaSetStorage.ReplicaSet.WithCategories(nil)
|
||||
storage["replicasets/status"] = replicaSetStorage.Status
|
||||
storage["replicasets/scale"] = replicaSetStorage.Scale
|
||||
@@ -96,11 +118,14 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorag
|
||||
|
||||
// networkpolicies
|
||||
if apiResourceConfigSource.ResourceEnabled(extensionsapiv1beta1.SchemeGroupVersion.WithResource("networkpolicies")) {
|
||||
networkExtensionsStorage := networkpolicystore.NewREST(restOptionsGetter)
|
||||
networkExtensionsStorage, err := networkpolicystore.NewREST(restOptionsGetter)
|
||||
if err != nil {
|
||||
return storage, err
|
||||
}
|
||||
storage["networkpolicies"] = networkExtensionsStorage
|
||||
}
|
||||
|
||||
return storage
|
||||
return storage, nil
|
||||
}
|
||||
|
||||
func (p RESTStorageProvider) GroupName() string {
|
||||
|
Reference in New Issue
Block a user