mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 05:57:25 +00:00
check pod name with that in binding object
This commit is contained in:
parent
34cab8f80a
commit
5ed1b8fa29
@ -148,11 +148,18 @@ func (r *BindingREST) New() runtime.Object {
|
|||||||
return &api.Binding{}
|
return &api.Binding{}
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ = rest.Creater(&BindingREST{})
|
var _ = rest.NamedCreater(&BindingREST{})
|
||||||
|
|
||||||
// Create ensures a pod is bound to a specific host.
|
// Create ensures a pod is bound to a specific host.
|
||||||
func (r *BindingREST) Create(ctx context.Context, obj runtime.Object, createValidation rest.ValidateObjectFunc, options *metav1.CreateOptions) (out runtime.Object, err error) {
|
func (r *BindingREST) Create(ctx context.Context, name string, obj runtime.Object, createValidation rest.ValidateObjectFunc, options *metav1.CreateOptions) (out runtime.Object, err error) {
|
||||||
binding := obj.(*api.Binding)
|
binding, ok := obj.(*api.Binding)
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.NewBadRequest(fmt.Sprintf("not a Binding object: %#v", obj))
|
||||||
|
}
|
||||||
|
|
||||||
|
if name != binding.Name {
|
||||||
|
return nil, errors.NewBadRequest("name in URL does not match name in Binding object")
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: move me to a binding strategy
|
// TODO: move me to a binding strategy
|
||||||
if errs := validation.ValidatePodBinding(binding); len(errs) != 0 {
|
if errs := validation.ValidatePodBinding(binding); len(errs) != 0 {
|
||||||
|
@ -587,7 +587,7 @@ func TestEtcdCreate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Suddenly, a wild scheduler appears:
|
// Suddenly, a wild scheduler appears:
|
||||||
_, err = bindingStorage.Create(ctx, &api.Binding{
|
_, err = bindingStorage.Create(ctx, "foo", &api.Binding{
|
||||||
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
||||||
Target: api.ObjectReference{Name: "machine"},
|
Target: api.ObjectReference{Name: "machine"},
|
||||||
}, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
}, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
||||||
@ -613,7 +613,7 @@ func TestEtcdCreateBindingNoPod(t *testing.T) {
|
|||||||
// - Create (apiserver)
|
// - Create (apiserver)
|
||||||
// - Schedule (scheduler)
|
// - Schedule (scheduler)
|
||||||
// - Delete (apiserver)
|
// - Delete (apiserver)
|
||||||
_, err := bindingStorage.Create(ctx, &api.Binding{
|
_, err := bindingStorage.Create(ctx, "foo", &api.Binding{
|
||||||
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
||||||
Target: api.ObjectReference{Name: "machine"},
|
Target: api.ObjectReference{Name: "machine"},
|
||||||
}, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
}, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
||||||
@ -657,7 +657,7 @@ func TestEtcdCreateWithContainersNotFound(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Suddenly, a wild scheduler appears:
|
// Suddenly, a wild scheduler appears:
|
||||||
_, err = bindingStorage.Create(ctx, &api.Binding{
|
_, err = bindingStorage.Create(ctx, "foo", &api.Binding{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
@ -700,12 +700,12 @@ func TestEtcdCreateWithConflict(t *testing.T) {
|
|||||||
},
|
},
|
||||||
Target: api.ObjectReference{Name: "machine"},
|
Target: api.ObjectReference{Name: "machine"},
|
||||||
}
|
}
|
||||||
_, err = bindingStorage.Create(ctx, &binding, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
_, err = bindingStorage.Create(ctx, binding.Name, &binding, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = bindingStorage.Create(ctx, &binding, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
_, err = bindingStorage.Create(ctx, binding.Name, &binding, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
||||||
if err == nil || !errors.IsConflict(err) {
|
if err == nil || !errors.IsConflict(err) {
|
||||||
t.Fatalf("expected resource conflict error, not: %v", err)
|
t.Fatalf("expected resource conflict error, not: %v", err)
|
||||||
}
|
}
|
||||||
@ -722,7 +722,7 @@ func TestEtcdCreateWithExistingContainers(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Suddenly, a wild scheduler appears:
|
// Suddenly, a wild scheduler appears:
|
||||||
_, err = bindingStorage.Create(ctx, &api.Binding{
|
_, err = bindingStorage.Create(ctx, "foo", &api.Binding{
|
||||||
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
||||||
Target: api.ObjectReference{Name: "machine"},
|
Target: api.ObjectReference{Name: "machine"},
|
||||||
}, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
}, rest.ValidateAllObjectFunc, &metav1.CreateOptions{})
|
||||||
@ -741,6 +741,7 @@ func TestEtcdCreateBinding(t *testing.T) {
|
|||||||
|
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
binding api.Binding
|
binding api.Binding
|
||||||
|
badNameInURL bool
|
||||||
errOK func(error) bool
|
errOK func(error) bool
|
||||||
}{
|
}{
|
||||||
"noName": {
|
"noName": {
|
||||||
@ -750,6 +751,14 @@ func TestEtcdCreateBinding(t *testing.T) {
|
|||||||
},
|
},
|
||||||
errOK: func(err error) bool { return err != nil },
|
errOK: func(err error) bool { return err != nil },
|
||||||
},
|
},
|
||||||
|
"badNameInURL": {
|
||||||
|
binding: api.Binding{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
||||||
|
Target: api.ObjectReference{},
|
||||||
|
},
|
||||||
|
badNameInURL: true,
|
||||||
|
errOK: func(err error) bool { return err != nil },
|
||||||
|
},
|
||||||
"badKind": {
|
"badKind": {
|
||||||
binding: api.Binding{
|
binding: api.Binding{
|
||||||
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"},
|
||||||
@ -778,7 +787,11 @@ func TestEtcdCreateBinding(t *testing.T) {
|
|||||||
if _, err := storage.Create(ctx, validNewPod(), rest.ValidateAllObjectFunc, &metav1.CreateOptions{}); err != nil {
|
if _, err := storage.Create(ctx, validNewPod(), rest.ValidateAllObjectFunc, &metav1.CreateOptions{}); err != nil {
|
||||||
t.Fatalf("%s: unexpected error: %v", k, err)
|
t.Fatalf("%s: unexpected error: %v", k, err)
|
||||||
}
|
}
|
||||||
if _, err := bindingStorage.Create(ctx, &test.binding, rest.ValidateAllObjectFunc, &metav1.CreateOptions{}); !test.errOK(err) {
|
name := test.binding.Name
|
||||||
|
if test.badNameInURL {
|
||||||
|
name += "badNameInURL"
|
||||||
|
}
|
||||||
|
if _, err := bindingStorage.Create(ctx, name, &test.binding, rest.ValidateAllObjectFunc, &metav1.CreateOptions{}); !test.errOK(err) {
|
||||||
t.Errorf("%s: unexpected error: %v", k, err)
|
t.Errorf("%s: unexpected error: %v", k, err)
|
||||||
} else if err == nil {
|
} else if err == nil {
|
||||||
// If bind succeeded, verify Host field in pod's Spec.
|
// If bind succeeded, verify Host field in pod's Spec.
|
||||||
|
Loading…
Reference in New Issue
Block a user