diff --git a/pkg/api/validation/schema_test.go b/pkg/api/validation/schema_test.go index 8caf0ef098d..760974221b3 100644 --- a/pkg/api/validation/schema_test.go +++ b/pkg/api/validation/schema_test.go @@ -27,8 +27,9 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/testapi" apitesting "k8s.io/kubernetes/pkg/api/testing" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/apimachinery/registered" - "k8s.io/kubernetes/pkg/apis/extensions" + "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" "k8s.io/kubernetes/pkg/runtime" k8syaml "k8s.io/kubernetes/pkg/util/yaml" @@ -171,18 +172,18 @@ func TestValidateDifferentApiVersions(t *testing.T) { t.Fatalf("Failed to load: %v", err) } - pod := &api.Pod{} + pod := &v1.Pod{} pod.APIVersion = "v1" pod.Kind = "Pod" - deployment := &extensions.Deployment{} + deployment := &v1beta1.Deployment{} deployment.APIVersion = "extensions/v1beta1" deployment.Kind = "Deployment" - list := &api.List{} + list := &v1.List{} list.APIVersion = "v1" list.Kind = "List" - list.Items = []runtime.Object{pod, deployment} + list.Items = []runtime.RawExtension{{Object: pod}, {Object: deployment}} bytes, err := json.Marshal(list) if err != nil { t.Error(err) @@ -295,7 +296,7 @@ func TestTypeAny(t *testing.T) { t.Errorf("could not read file: %s, err: %v", test, err) } // Verify that pod has at least one label (labels are type "any") - var pod api.Pod + var pod v1.Pod err = yaml.Unmarshal(podBytes, &pod) if err != nil { t.Errorf("error in unmarshalling pod: %v", err) diff --git a/pkg/apiserver/apiserver_test.go b/pkg/apiserver/apiserver_test.go index b658cf84ed8..d271a97d12b 100644 --- a/pkg/apiserver/apiserver_test.go +++ b/pkg/apiserver/apiserver_test.go @@ -133,7 +133,7 @@ func addGrouplessTypes() { } api.Scheme.AddKnownTypes(grouplessGroupVersion, &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &ListOptions{}, &metav1.ExportOptions{}, - &api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{}) + &v1.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{}) api.Scheme.AddKnownTypes(grouplessInternalGroupVersion, &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &api.ListOptions{}, &metav1.ExportOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{}) @@ -151,7 +151,7 @@ func addTestTypes() { } api.Scheme.AddKnownTypes(testGroupVersion, &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &ListOptions{}, &metav1.ExportOptions{}, - &api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{}, + &v1.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{}, &SimpleXGSubresource{}) api.Scheme.AddKnownTypes(testGroupVersion, &v1.Pod{}) api.Scheme.AddKnownTypes(testInternalGroupVersion, diff --git a/pkg/kubectl/cmd/taint_test.go b/pkg/kubectl/cmd/taint_test.go index 53f8c4c329e..0bec96db87b 100644 --- a/pkg/kubectl/cmd/taint_test.go +++ b/pkg/kubectl/cmd/taint_test.go @@ -26,11 +26,13 @@ import ( "time" "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" "k8s.io/kubernetes/pkg/client/restclient/fake" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/runtime" + "k8s.io/kubernetes/pkg/util/strategicpatch" ) func generateNodeAndTaintedNode(oldTaints []api.Taint, newTaints []api.Taint) (*api.Node, *api.Node) { @@ -263,7 +265,33 @@ func TestTaint(t *testing.T) { switch { case m.isFor("GET", "/nodes/node-name"): return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, oldNode)}, nil - case m.isFor("PATCH", "/nodes/node-name"), m.isFor("PUT", "/nodes/node-name"): + case m.isFor("PATCH", "/nodes/node-name"): + tainted = true + data, err := ioutil.ReadAll(req.Body) + if err != nil { + t.Fatalf("%s: unexpected error: %v", test.description, err) + } + defer req.Body.Close() + + // apply the patch + oldJSON, err := runtime.Encode(codec, oldNode) + if err != nil { + t.Fatalf("%s: unexpected error: %v", test.description, err) + } + appliedPatch, err := strategicpatch.StrategicMergePatch(oldJSON, data, &v1.Node{}) + if err != nil { + t.Fatalf("%s: unexpected error: %v", test.description, err) + } + + // decode the patch + if err := runtime.DecodeInto(codec, appliedPatch, new_node); err != nil { + t.Fatalf("%s: unexpected error: %v", test.description, err) + } + if !AnnotationsHaveEqualTaints(expectNewNode.Annotations, new_node.Annotations) { + t.Fatalf("%s: expected:\n%v\nsaw:\n%v\n", test.description, expectNewNode.Annotations, new_node.Annotations) + } + return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, new_node)}, nil + case m.isFor("PUT", "/nodes/node-name"): tainted = true data, err := ioutil.ReadAll(req.Body) if err != nil {