mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-05 07:27:21 +00:00
Merge pull request #19840 from madhusudancs/replicaset-deployment
Auto commit by PR queue bot
This commit is contained in:
@@ -183,43 +183,53 @@ type ScaleREST struct {
|
||||
registry *deployment.Registry
|
||||
}
|
||||
|
||||
// ScaleREST implements Patcher
|
||||
var _ = rest.Patcher(&ScaleREST{})
|
||||
// TODO(madhusudancs): Fix this when Scale group issues are resolved (see issue #18528).
|
||||
|
||||
// New creates a new Scale object
|
||||
func (r *ScaleREST) New() runtime.Object {
|
||||
return &extensions.Scale{}
|
||||
}
|
||||
// // ScaleREST implements Patcher
|
||||
// var _ = rest.Patcher(&ScaleREST{})
|
||||
|
||||
func (r *ScaleREST) Get(ctx api.Context, name string) (runtime.Object, error) {
|
||||
deployment, err := (*r.registry).GetDeployment(ctx, name)
|
||||
if err != nil {
|
||||
return nil, errors.NewNotFound(extensions.Resource("deployments/scale"), name)
|
||||
}
|
||||
return extensions.ScaleFromDeployment(deployment), nil
|
||||
}
|
||||
// // New creates a new Scale object
|
||||
// func (r *ScaleREST) New() runtime.Object {
|
||||
// return &extensions.Scale{}
|
||||
// }
|
||||
|
||||
func (r *ScaleREST) Update(ctx api.Context, obj runtime.Object) (runtime.Object, bool, error) {
|
||||
if obj == nil {
|
||||
return nil, false, errors.NewBadRequest(fmt.Sprintf("nil update passed to Scale"))
|
||||
}
|
||||
scale, ok := obj.(*extensions.Scale)
|
||||
if !ok {
|
||||
return nil, false, errors.NewBadRequest(fmt.Sprintf("wrong object passed to Scale update: %v", obj))
|
||||
}
|
||||
// func (r *ScaleREST) Get(ctx api.Context, name string) (runtime.Object, error) {
|
||||
// deployment, err := (*r.registry).GetDeployment(ctx, name)
|
||||
// if err != nil {
|
||||
// return nil, errors.NewNotFound(extensions.Resource("deployments/scale"), name)
|
||||
// }
|
||||
// scale, err := extensions.ScaleFromDeployment(deployment)
|
||||
// if err != nil {
|
||||
// return nil, errors.NewBadRequest(fmt.Sprintf("%v", err))
|
||||
// }
|
||||
// return scale, nil
|
||||
// }
|
||||
|
||||
if errs := extvalidation.ValidateScale(scale); len(errs) > 0 {
|
||||
return nil, false, errors.NewInvalid(extensions.Kind("Scale"), scale.Name, errs)
|
||||
}
|
||||
// func (r *ScaleREST) Update(ctx api.Context, obj runtime.Object) (runtime.Object, bool, error) {
|
||||
// if obj == nil {
|
||||
// return nil, false, errors.NewBadRequest(fmt.Sprintf("nil update passed to Scale"))
|
||||
// }
|
||||
// scale, ok := obj.(*extensions.Scale)
|
||||
// if !ok {
|
||||
// return nil, false, errors.NewBadRequest(fmt.Sprintf("wrong object passed to Scale update: %v", obj))
|
||||
// }
|
||||
|
||||
deployment, err := (*r.registry).GetDeployment(ctx, scale.Name)
|
||||
if err != nil {
|
||||
return nil, false, errors.NewNotFound(extensions.Resource("deployments/scale"), scale.Name)
|
||||
}
|
||||
deployment.Spec.Replicas = scale.Spec.Replicas
|
||||
deployment, err = (*r.registry).UpdateDeployment(ctx, deployment)
|
||||
if err != nil {
|
||||
return nil, false, errors.NewConflict(extensions.Resource("deployments/scale"), scale.Name, err)
|
||||
}
|
||||
return extensions.ScaleFromDeployment(deployment), false, nil
|
||||
}
|
||||
// if errs := extvalidation.ValidateScale(scale); len(errs) > 0 {
|
||||
// return nil, false, errors.NewInvalid(extensions.Kind("Scale"), scale.Name, errs)
|
||||
// }
|
||||
|
||||
// deployment, err := (*r.registry).GetDeployment(ctx, scale.Name)
|
||||
// if err != nil {
|
||||
// return nil, false, errors.NewNotFound(extensions.Resource("deployments/scale"), scale.Name)
|
||||
// }
|
||||
// deployment.Spec.Replicas = scale.Spec.Replicas
|
||||
// deployment, err = (*r.registry).UpdateDeployment(ctx, deployment)
|
||||
// if err != nil {
|
||||
// return nil, false, errors.NewConflict(extensions.Resource("deployments/scale"), scale.Name, err)
|
||||
// }
|
||||
// newScale, err := extensions.ScaleFromDeployment(deployment)
|
||||
// if err != nil {
|
||||
// return nil, false, errors.NewBadRequest(fmt.Sprintf("%v", err))
|
||||
// }
|
||||
// return newScale, false, nil
|
||||
// }
|
||||
|
||||
@@ -23,6 +23,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/errors"
|
||||
etcderrors "k8s.io/kubernetes/pkg/api/errors/etcd"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
"k8s.io/kubernetes/pkg/fields"
|
||||
"k8s.io/kubernetes/pkg/labels"
|
||||
@@ -31,7 +32,6 @@ import (
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||
etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing"
|
||||
"k8s.io/kubernetes/pkg/util"
|
||||
)
|
||||
|
||||
func newStorage(t *testing.T) (*DeploymentStorage, *etcdtesting.EtcdTestServer) {
|
||||
@@ -50,7 +50,7 @@ func validNewDeployment() *extensions.Deployment {
|
||||
Namespace: namespace,
|
||||
},
|
||||
Spec: extensions.DeploymentSpec{
|
||||
Selector: map[string]string{"a": "b"},
|
||||
Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"a": "b"}},
|
||||
Template: api.PodTemplateSpec{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Labels: map[string]string{"a": "b"},
|
||||
@@ -89,7 +89,7 @@ func TestCreate(t *testing.T) {
|
||||
// invalid (invalid selector)
|
||||
&extensions.Deployment{
|
||||
Spec: extensions.DeploymentSpec{
|
||||
Selector: map[string]string{},
|
||||
Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{}},
|
||||
Template: validDeployment.Spec.Template,
|
||||
},
|
||||
},
|
||||
@@ -127,7 +127,7 @@ func TestUpdate(t *testing.T) {
|
||||
},
|
||||
func(obj runtime.Object) runtime.Object {
|
||||
object := obj.(*extensions.Deployment)
|
||||
object.Spec.Selector = map[string]string{}
|
||||
object.Spec.Selector = &unversioned.LabelSelector{MatchLabels: map[string]string{}}
|
||||
return object
|
||||
},
|
||||
)
|
||||
@@ -179,71 +179,73 @@ func TestWatch(t *testing.T) {
|
||||
)
|
||||
}
|
||||
|
||||
func validNewScale() *extensions.Scale {
|
||||
return &extensions.Scale{
|
||||
ObjectMeta: api.ObjectMeta{Name: name, Namespace: namespace},
|
||||
Spec: extensions.ScaleSpec{
|
||||
Replicas: validDeployment.Spec.Replicas,
|
||||
},
|
||||
Status: extensions.ScaleStatus{
|
||||
Replicas: validDeployment.Status.Replicas,
|
||||
Selector: validDeployment.Spec.Template.Labels,
|
||||
},
|
||||
}
|
||||
}
|
||||
// TODO(madhusudancs): Fix this when Scale group issues are resolved (see issue #18528).
|
||||
|
||||
var validScale = *validNewScale()
|
||||
// func validNewScale() *extensions.Scale {
|
||||
// return &extensions.Scale{
|
||||
// ObjectMeta: api.ObjectMeta{Name: name, Namespace: namespace},
|
||||
// Spec: extensions.ScaleSpec{
|
||||
// Replicas: validDeployment.Spec.Replicas,
|
||||
// },
|
||||
// Status: extensions.ScaleStatus{
|
||||
// Replicas: validDeployment.Status.Replicas,
|
||||
// Selector: validDeployment.Spec.Template.Labels,
|
||||
// },
|
||||
// }
|
||||
// }
|
||||
|
||||
func TestScaleGet(t *testing.T) {
|
||||
storage, server := newStorage(t)
|
||||
defer server.Terminate(t)
|
||||
// var validScale = *validNewScale()
|
||||
|
||||
ctx := api.WithNamespace(api.NewContext(), namespace)
|
||||
key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name)
|
||||
if err := storage.Deployment.Storage.Set(ctx, key, &validDeployment, nil, 0); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
// func TestScaleGet(t *testing.T) {
|
||||
// storage, server := newStorage(t)
|
||||
// defer server.Terminate(t)
|
||||
|
||||
expect := &validScale
|
||||
obj, err := storage.Scale.Get(ctx, name)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
scale := obj.(*extensions.Scale)
|
||||
if e, a := expect, scale; !api.Semantic.DeepDerivative(e, a) {
|
||||
t.Errorf("unexpected scale: %s", util.ObjectDiff(e, a))
|
||||
}
|
||||
}
|
||||
// ctx := api.WithNamespace(api.NewContext(), namespace)
|
||||
// key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name)
|
||||
// if err := storage.Deployment.Storage.Set(ctx, key, &validDeployment, nil, 0); err != nil {
|
||||
// t.Fatalf("unexpected error: %v", err)
|
||||
// }
|
||||
|
||||
func TestScaleUpdate(t *testing.T) {
|
||||
storage, server := newStorage(t)
|
||||
defer server.Terminate(t)
|
||||
// expect := &validScale
|
||||
// obj, err := storage.Scale.Get(ctx, name)
|
||||
// if err != nil {
|
||||
// t.Fatalf("unexpected error: %v", err)
|
||||
// }
|
||||
// scale := obj.(*extensions.Scale)
|
||||
// if e, a := expect, scale; !api.Semantic.DeepDerivative(e, a) {
|
||||
// t.Errorf("unexpected scale: %s", util.ObjectDiff(e, a))
|
||||
// }
|
||||
// }
|
||||
|
||||
ctx := api.WithNamespace(api.NewContext(), namespace)
|
||||
key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name)
|
||||
if err := storage.Deployment.Storage.Set(ctx, key, &validDeployment, nil, 0); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
replicas := 12
|
||||
update := extensions.Scale{
|
||||
ObjectMeta: api.ObjectMeta{Name: name, Namespace: namespace},
|
||||
Spec: extensions.ScaleSpec{
|
||||
Replicas: replicas,
|
||||
},
|
||||
}
|
||||
// func TestScaleUpdate(t *testing.T) {
|
||||
// storage, server := newStorage(t)
|
||||
// defer server.Terminate(t)
|
||||
|
||||
if _, _, err := storage.Scale.Update(ctx, &update); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
obj, err := storage.Deployment.Get(ctx, name)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
deployment := obj.(*extensions.Deployment)
|
||||
if deployment.Spec.Replicas != replicas {
|
||||
t.Errorf("wrong replicas count expected: %d got: %d", replicas, deployment.Spec.Replicas)
|
||||
}
|
||||
}
|
||||
// ctx := api.WithNamespace(api.NewContext(), namespace)
|
||||
// key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name)
|
||||
// if err := storage.Deployment.Storage.Set(ctx, key, &validDeployment, nil, 0); err != nil {
|
||||
// t.Fatalf("unexpected error: %v", err)
|
||||
// }
|
||||
// replicas := 12
|
||||
// update := extensions.Scale{
|
||||
// ObjectMeta: api.ObjectMeta{Name: name, Namespace: namespace},
|
||||
// Spec: extensions.ScaleSpec{
|
||||
// Replicas: replicas,
|
||||
// },
|
||||
// }
|
||||
|
||||
// if _, _, err := storage.Scale.Update(ctx, &update); err != nil {
|
||||
// t.Fatalf("unexpected error: %v", err)
|
||||
// }
|
||||
// obj, err := storage.Deployment.Get(ctx, name)
|
||||
// if err != nil {
|
||||
// t.Fatalf("unexpected error: %v", err)
|
||||
// }
|
||||
// deployment := obj.(*extensions.Deployment)
|
||||
// if deployment.Spec.Replicas != replicas {
|
||||
// t.Errorf("wrong replicas count expected: %d got: %d", replicas, deployment.Spec.Replicas)
|
||||
// }
|
||||
// }
|
||||
|
||||
func TestStatusUpdate(t *testing.T) {
|
||||
storage, server := newStorage(t)
|
||||
|
||||
Reference in New Issue
Block a user