From 98496fa511eb40778cb83e54f490a10d274b5a4d Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Mon, 14 May 2018 17:02:48 -0700 Subject: [PATCH] POSTing rollback returns deploymentstatus --- pkg/registry/apps/deployment/storage/storage.go | 15 +++++++++++++++ .../extensions/rest/storage_extensions.go | 13 ++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/pkg/registry/apps/deployment/storage/storage.go b/pkg/registry/apps/deployment/storage/storage.go index c8b469ec45d..24a143f4b31 100644 --- a/pkg/registry/apps/deployment/storage/storage.go +++ b/pkg/registry/apps/deployment/storage/storage.go @@ -21,6 +21,7 @@ import ( "fmt" "net/http" + externalappsv1beta1 "k8s.io/api/apps/v1beta1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -137,6 +138,20 @@ type RollbackREST struct { store *genericregistry.Store } +// ProducesMIMETypes returns a list of the MIME types the specified HTTP verb (GET, POST, DELETE, +// PATCH) can respond with. +func (r *RollbackREST) ProducesMIMETypes(verb string) []string { + return nil +} + +// ProducesObject returns an object the specified HTTP verb respond with. It will overwrite storage object if +// it is not nil. Only the type of the return object matters, the value will be ignored. +func (r *RollbackREST) ProducesObject(verb string) interface{} { + return externalappsv1beta1.DeploymentStatus{} +} + +var _ = rest.StorageMetadata(&RollbackREST{}) + // New creates a rollback func (r *RollbackREST) New() runtime.Object { return &extensions.DeploymentRollback{} diff --git a/pkg/registry/extensions/rest/storage_extensions.go b/pkg/registry/extensions/rest/storage_extensions.go index 2b21e502f07..0d7e7ebb299 100644 --- a/pkg/registry/extensions/rest/storage_extensions.go +++ b/pkg/registry/extensions/rest/storage_extensions.go @@ -47,6 +47,17 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag return apiGroupInfo, true } +type RollbackREST struct { + *deploymentstore.RollbackREST +} + +// override RollbackREST.ProducesObject +func (r *RollbackREST) ProducesObject(verb string) interface{} { + return extensionsapiv1beta1.DeploymentStatus{} +} + +var _ = rest.StorageMetadata(&RollbackREST{}) + func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) map[string]rest.Storage { storage := map[string]rest.Storage{} @@ -65,7 +76,7 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorag deploymentStorage := deploymentstore.NewStorage(restOptionsGetter) storage["deployments"] = deploymentStorage.Deployment.WithCategories(nil) storage["deployments/status"] = deploymentStorage.Status - storage["deployments/rollback"] = deploymentStorage.Rollback + storage["deployments/rollback"] = &RollbackREST{deploymentStorage.Rollback} storage["deployments/scale"] = deploymentStorage.Scale // ingresses ingressStorage, ingressStatusStorage := ingressstore.NewREST(restOptionsGetter)