From 1ec66725807f869e7f57c92a348898138d4f4455 Mon Sep 17 00:00:00 2001 From: soggiest Date: Tue, 27 Nov 2018 14:31:32 -0800 Subject: [PATCH 01/31] Added similar functionality for init containers as standard containers in PodPreset admission controller --- plugin/pkg/admission/podpreset/admission.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugin/pkg/admission/podpreset/admission.go b/plugin/pkg/admission/podpreset/admission.go index e86f4511c4..40b8e3f513 100644 --- a/plugin/pkg/admission/podpreset/admission.go +++ b/plugin/pkg/admission/podpreset/admission.go @@ -184,6 +184,12 @@ func safeToApplyPodPresetsOnPod(pod *api.Pod, podPresets []*settingsv1alpha1.Pod errs = append(errs, err) } } + for _, iCtr := range pod.Spec.InitContainers { + if err := safeToApplyPodPresetsOnContainer(&iCtr, podPresets); err != nil { + errs = append(errs, err) + } + } + return utilerrors.NewAggregate(errs) } @@ -381,6 +387,10 @@ func applyPodPresetsOnPod(pod *api.Pod, podPresets []*settingsv1alpha1.PodPreset applyPodPresetsOnContainer(&ctr, podPresets) pod.Spec.Containers[i] = ctr } + for i, iCtr := range pod.Spec.InitContainers { + applyPodPresetsOnContainer(&iCtr, podPresets) + pod.Spec.InitContainers[i] = iCtr + } // add annotation if pod.ObjectMeta.Annotations == nil { From d80bbb9d57ae9d08d5c3ee5fd627496b8fcc77f1 Mon Sep 17 00:00:00 2001 From: soggiest Date: Wed, 28 Nov 2018 15:09:37 -0800 Subject: [PATCH 02/31] PodPreset: Added tests to verify initcontainers modified as expected --- test/e2e/servicecatalog/podpreset.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/e2e/servicecatalog/podpreset.go b/test/e2e/servicecatalog/podpreset.go index 260c1790a2..e16d5ce966 100644 --- a/test/e2e/servicecatalog/podpreset.go +++ b/test/e2e/servicecatalog/podpreset.go @@ -99,6 +99,13 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { Image: imageutils.GetE2EImage(imageutils.Nginx), }, }, + InitContainers: []v1.Container{ + { + Name: "init1", + Image: imageutils.GetE2EImage(imageutils.BusyBox), + Command: []string{"/bin/true"}, + }, + }, }, } @@ -153,6 +160,9 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { if !reflect.DeepEqual(pip.Spec.Env, pod.Spec.Containers[0].Env) { framework.Failf("env of pod container does not match the env of the pip: expected %#v, got: %#v", pip.Spec.Env, pod.Spec.Containers[0].Env) } + if !reflect.DeepEqual(pip.Spec.Env, pod.Spec.InitContainers[0].Env) { + framework.Failf("env of pod init container does not match the env of the pip: expected %#v, got: %#v", pip.Spec.Env, pod.Spec.InitContainers[0].Env) + } }) It("should not modify the pod on conflict", func() { @@ -208,6 +218,14 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: "value"}}, }, }, + InitContainers: []v1.Container{ + { + Name: "init1", + Image: imageutils.GetE2EImage(imageutils.BusyBox), + Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: " value"}}, + Command: []string{"/bin/true"}, + }, + }, }, } @@ -262,6 +280,10 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { if !reflect.DeepEqual(originalPod.Spec.Containers[0].Env, pod.Spec.Containers[0].Env) { framework.Failf("env of pod container does not match the env of the original pod: expected %#v, got: %#v", originalPod.Spec.Containers[0].Env, pod.Spec.Containers[0].Env) } + if !reflect.DeepEqual(originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) { + framework.Failf("env of pod init container does not match the env of the original pod: expected %#v, g ot: %#v", originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) + } + }) }) From c7c119752c1e72ffed03964a6874f96d27493183 Mon Sep 17 00:00:00 2001 From: soggiest Date: Tue, 4 Dec 2018 10:55:46 -0800 Subject: [PATCH 03/31] Removed erroneous spaces in PodPreset E2E tests --- test/e2e/servicecatalog/podpreset.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/servicecatalog/podpreset.go b/test/e2e/servicecatalog/podpreset.go index e16d5ce966..bc38448408 100644 --- a/test/e2e/servicecatalog/podpreset.go +++ b/test/e2e/servicecatalog/podpreset.go @@ -222,7 +222,7 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { { Name: "init1", Image: imageutils.GetE2EImage(imageutils.BusyBox), - Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: " value"}}, + Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: "value"}}, Command: []string{"/bin/true"}, }, }, @@ -281,7 +281,7 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { framework.Failf("env of pod container does not match the env of the original pod: expected %#v, got: %#v", originalPod.Spec.Containers[0].Env, pod.Spec.Containers[0].Env) } if !reflect.DeepEqual(originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) { - framework.Failf("env of pod init container does not match the env of the original pod: expected %#v, g ot: %#v", originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) + framework.Failf("env of pod init container does not match the env of the original pod: expected %#v, got: %#v", originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) } }) From 19a5528a65bf59bed6289703e1811640b53b2087 Mon Sep 17 00:00:00 2001 From: Justin SB Date: Thu, 3 Jan 2019 12:21:19 -0500 Subject: [PATCH 04/31] Remove executable permission from testdata --- .../testdata/testcase-apply-edit-last-applied-list-fail/0.request | 0 .../testcase-apply-edit-last-applied-list-fail/0.response | 0 .../testdata/testcase-apply-edit-last-applied-list-fail/1.request | 0 .../testcase-apply-edit-last-applied-list-fail/1.response | 0 .../testdata/testcase-apply-edit-last-applied-list-fail/2.edited | 0 .../testcase-apply-edit-last-applied-list-fail/2.original | 0 .../testdata/testcase-apply-edit-last-applied-list-fail/4.request | 0 .../testcase-apply-edit-last-applied-list-fail/4.response | 0 .../testdata/testcase-apply-edit-last-applied-list-fail/5.request | 0 .../testcase-apply-edit-last-applied-list-fail/5.response | 0 .../testdata/testcase-apply-edit-last-applied-list-fail/test.yaml | 0 .../edit/testdata/testcase-apply-edit-last-applied-list/0.request | 0 .../testdata/testcase-apply-edit-last-applied-list/0.response | 0 .../edit/testdata/testcase-apply-edit-last-applied-list/1.request | 0 .../testdata/testcase-apply-edit-last-applied-list/1.response | 0 .../edit/testdata/testcase-apply-edit-last-applied-list/2.edited | 0 .../testdata/testcase-apply-edit-last-applied-list/2.original | 0 .../edit/testdata/testcase-apply-edit-last-applied-list/3.request | 0 .../testdata/testcase-apply-edit-last-applied-list/3.response | 0 .../edit/testdata/testcase-apply-edit-last-applied-list/4.request | 0 .../testdata/testcase-apply-edit-last-applied-list/4.response | 0 .../edit/testdata/testcase-apply-edit-last-applied-list/test.yaml | 0 .../testcase-apply-edit-last-applied-syntax-error/0.request | 0 .../testcase-apply-edit-last-applied-syntax-error/0.response | 0 .../testcase-apply-edit-last-applied-syntax-error/1.edited | 0 .../testcase-apply-edit-last-applied-syntax-error/1.original | 0 .../testcase-apply-edit-last-applied-syntax-error/2.edited | 0 .../testcase-apply-edit-last-applied-syntax-error/2.original | 0 .../testcase-apply-edit-last-applied-syntax-error/3.request | 0 .../testcase-apply-edit-last-applied-syntax-error/3.response | 0 .../testcase-apply-edit-last-applied-syntax-error/test.yaml | 0 .../cmd/edit/testdata/testcase-apply-edit-last-applied/0.request | 0 .../cmd/edit/testdata/testcase-apply-edit-last-applied/0.response | 0 .../cmd/edit/testdata/testcase-apply-edit-last-applied/1.edited | 0 .../cmd/edit/testdata/testcase-apply-edit-last-applied/1.original | 0 .../cmd/edit/testdata/testcase-apply-edit-last-applied/2.request | 0 .../cmd/edit/testdata/testcase-apply-edit-last-applied/2.response | 0 .../cmd/edit/testdata/testcase-apply-edit-last-applied/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/0.edited | 0 .../cmd/edit/testdata/testcase-create-list-error/0.original | 0 .../cmd/edit/testdata/testcase-create-list-error/1.request | 0 .../cmd/edit/testdata/testcase-create-list-error/1.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/2.edited | 0 .../cmd/edit/testdata/testcase-create-list-error/2.original | 0 .../cmd/edit/testdata/testcase-create-list-error/3.request | 0 .../cmd/edit/testdata/testcase-create-list-error/3.response | 0 .../cmd/edit/testdata/testcase-create-list-error/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/0.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/0.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/1.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/1.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/2.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/2.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/3.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/3.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-create-list/test.yaml | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/0.request | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/1.edited | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/1.original | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/2.request | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/2.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/3.edited | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/3.original | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/4.request | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/4.response | 0 .../cmd/edit/testdata/testcase-edit-error-reedit/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/test.yaml | 0 .../cmd/edit/testdata/testcase-edit-output-patch/0.request | 0 .../cmd/edit/testdata/testcase-edit-output-patch/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/1.edited | 0 .../cmd/edit/testdata/testcase-edit-output-patch/1.original | 0 .../cmd/edit/testdata/testcase-edit-output-patch/2.request | 0 .../cmd/edit/testdata/testcase-edit-output-patch/2.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/1.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/1.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/1.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/1.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/10.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/10.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/2.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/2.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/3.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/3.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/4.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/4.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/5.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/5.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/6.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/6.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/7.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/7.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/8.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/8.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/9.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/9.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/1.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/1.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/2.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/2.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/3.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/3.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/4.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/4.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list-record/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/1.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/1.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/2.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/2.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/3.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/3.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/4.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/4.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-list/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-missing-service/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-missing-service/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-missing-service/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-no-op/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-no-op/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-no-op/1.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-no-op/1.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-no-op/test.yaml | 0 .../cmd/edit/testdata/testcase-not-update-annotation/0.request | 0 .../cmd/edit/testdata/testcase-not-update-annotation/0.response | 0 .../cmd/edit/testdata/testcase-not-update-annotation/1.edited | 0 .../cmd/edit/testdata/testcase-not-update-annotation/1.original | 0 .../cmd/edit/testdata/testcase-not-update-annotation/2.request | 0 .../cmd/edit/testdata/testcase-not-update-annotation/2.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/1.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/1.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/2.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/2.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/3.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/3.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/1.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/1.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/2.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/2.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/3.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/3.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/4.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/4.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/5.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/5.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/6.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/6.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-single-service/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-single-service/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-single-service/1.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-single-service/1.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-single-service/2.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-single-service/2.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-single-service/test.yaml | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/0.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/1.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/1.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/2.edited | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/2.original | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/3.request | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/3.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/test.yaml | 0 .../testdata/testcase-unknown-field-known-group-kind/0.request | 0 .../testdata/testcase-unknown-field-known-group-kind/0.response | 0 .../testdata/testcase-unknown-field-known-group-kind/1.edited | 0 .../testdata/testcase-unknown-field-known-group-kind/1.original | 0 .../testdata/testcase-unknown-field-known-group-kind/2.request | 0 .../testdata/testcase-unknown-field-known-group-kind/2.response | 0 .../testdata/testcase-unknown-field-known-group-kind/test.yaml | 0 .../testdata/testcase-unknown-version-known-group-kind/0.request | 0 .../testdata/testcase-unknown-version-known-group-kind/0.response | 0 .../testdata/testcase-unknown-version-known-group-kind/1.edited | 0 .../testdata/testcase-unknown-version-known-group-kind/1.original | 0 .../testdata/testcase-unknown-version-known-group-kind/2.request | 0 .../testdata/testcase-unknown-version-known-group-kind/2.response | 0 .../testdata/testcase-unknown-version-known-group-kind/test.yaml | 0 .../cmd/edit/testdata/testcase-update-annotation/0.request | 0 .../cmd/edit/testdata/testcase-update-annotation/0.response | 0 pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/1.edited | 0 .../cmd/edit/testdata/testcase-update-annotation/1.original | 0 .../cmd/edit/testdata/testcase-update-annotation/2.request | 0 .../cmd/edit/testdata/testcase-update-annotation/2.response | 0 .../pkg/server/options/testdata/apiserver-loopback-client__/cert | 0 .../pkg/server/options/testdata/apiserver-loopback-client__/key | 0 .../options/testdata/apiserver-loopback-client__/localhost__/cert | 0 .../options/testdata/apiserver-loopback-client__/localhost__/key | 0 .../options/testdata/localhost__/apiserver-loopback-client__/cert | 0 .../options/testdata/localhost__/apiserver-loopback-client__/key | 0 .../k8s.io/apiserver/pkg/server/options/testdata/localhost__/cert | 0 .../k8s.io/apiserver/pkg/server/options/testdata/localhost__/key | 0 .../server/options/testdata/localhost__10.0.0.1,127.0.0.1/cert | 0 .../pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/key | 0 .../localhost__10.0.0.1,127.0.0.1/test.com__10.0.0.1/cert | 0 .../testdata/localhost__10.0.0.1,127.0.0.1/test.com__10.0.0.1/key | 0 .../pkg/server/options/testdata/localhost__127.0.0.1/cert | 0 .../pkg/server/options/testdata/localhost__127.0.0.1/key | 0 .../server/options/testdata/localhost__127.0.0.1/localhost__/cert | 0 .../server/options/testdata/localhost__127.0.0.1/localhost__/key | 0 .../server/options/testdata/localhost__127.0.0.1/test.com__/cert | 0 .../server/options/testdata/localhost__127.0.0.1/test.com__/key | 0 .../testdata/localhost__127.0.0.1/test.com_star.test.com_/cert | 0 .../testdata/localhost__127.0.0.1/test.com_star.test.com_/key | 0 .../pkg/server/options/testdata/localhost_test.com_127.0.0.1/cert | 0 .../pkg/server/options/testdata/localhost_test.com_127.0.0.1/key | 0 .../k8s.io/apiserver/pkg/server/options/testdata/test.com__/cert | 0 .../k8s.io/apiserver/pkg/server/options/testdata/test.com__/key | 0 .../pkg/server/options/testdata/test.com__/localhost__/cert | 0 .../pkg/server/options/testdata/test.com__/localhost__/key | 0 test/conformance/testdata/conformance.txt | 0 227 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/1.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/1.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/4.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/4.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/5.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/5.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/1.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/1.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/3.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/3.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/4.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/4.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/3.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/3.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/0.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/0.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/1.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/1.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/3.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/3.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/0.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/0.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/1.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/1.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/3.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/3.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-create-list/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/3.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/3.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/4.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/4.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/1.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/1.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/10.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/10.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/3.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/3.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/4.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/4.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/5.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/5.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/6.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/6.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/7.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/7.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/8.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/8.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/9.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/9.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-errors/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/1.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/1.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/3.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/3.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/4.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/4.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list-record/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/1.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/1.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/3.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/3.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/4.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/4.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-list/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-missing-service/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-missing-service/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-missing-service/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-no-op/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-no-op/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-no-op/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-no-op/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-no-op/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/3.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/3.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/1.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/1.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/3.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/3.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/4.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/4.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/5.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/5.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/6.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/6.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-single-service/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-single-service/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-single-service/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-single-service/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-single-service/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-single-service/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-single-service/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/2.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/2.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/3.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/3.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/2.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/test.yaml mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/0.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/0.response mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/1.edited mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/1.original mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/2.request mode change 100755 => 100644 pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/2.response mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/localhost__/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/localhost__/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/apiserver-loopback-client__/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/apiserver-loopback-client__/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/test.com__10.0.0.1/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/test.com__10.0.0.1/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/localhost__/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/localhost__/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com__/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com__/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com_star.test.com_/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com_star.test.com_/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost_test.com_127.0.0.1/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost_test.com_127.0.0.1/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/key mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/localhost__/cert mode change 100755 => 100644 staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/localhost__/key mode change 100755 => 100644 test/conformance/testdata/conformance.txt diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/1.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/1.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/1.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/1.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/4.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/4.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/4.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/4.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/5.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/5.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/5.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/5.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list-fail/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/1.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/1.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/1.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/1.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/3.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/3.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/3.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/3.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/4.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/4.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/4.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/4.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-list/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/3.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/3.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/3.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/3.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied-syntax-error/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-apply-edit-last-applied/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/0.edited b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/0.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/0.original b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/0.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/1.request b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/1.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/1.response b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/1.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/3.request b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/3.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/3.response b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/3.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-create-list-error/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/0.edited b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/0.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/0.original b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/0.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/1.request b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/1.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/1.response b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/1.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/3.request b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/3.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/3.response b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/3.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-create-list/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-create-list/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/3.edited b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/3.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/3.original b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/3.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/4.request b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/4.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/4.response b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/4.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-edit-error-reedit/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-edit-from-empty/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-edit-output-patch/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-immutable-name/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/1.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/1.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/1.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/1.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/10.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/10.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/10.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/10.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/3.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/3.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/3.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/3.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/4.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/4.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/4.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/4.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/5.edited b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/5.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/5.original b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/5.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/6.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/6.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/6.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/6.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/7.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/7.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/7.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/7.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/8.edited b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/8.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/8.original b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/8.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/9.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/9.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/9.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/9.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-list-errors/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/1.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/1.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/1.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/1.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/3.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/3.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/3.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/3.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/4.request b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/4.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/4.response b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/4.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list-record/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-list-record/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-list/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-list/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/1.request b/pkg/kubectl/cmd/edit/testdata/testcase-list/1.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/1.response b/pkg/kubectl/cmd/edit/testdata/testcase-list/1.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-list/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-list/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/3.request b/pkg/kubectl/cmd/edit/testdata/testcase-list/3.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/3.response b/pkg/kubectl/cmd/edit/testdata/testcase-list/3.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/4.request b/pkg/kubectl/cmd/edit/testdata/testcase-list/4.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/4.response b/pkg/kubectl/cmd/edit/testdata/testcase-list/4.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-list/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-list/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-missing-service/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-missing-service/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-missing-service/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-missing-service/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-missing-service/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-missing-service/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-no-op/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-no-op/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-no-op/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-no-op/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-no-op/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-no-op/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-no-op/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-no-op/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-no-op/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-no-op/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-not-update-annotation/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/3.edited b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/3.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/3.original b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/3.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-repeat-error/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/1.request b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/1.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/1.response b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/1.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/3.edited b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/3.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/3.original b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/3.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/4.request b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/4.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/4.response b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/4.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/5.request b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/5.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/5.response b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/5.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/6.request b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/6.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/6.response b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/6.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-schemaless-list/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-single-service/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-single-service/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-single-service/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-single-service/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-single-service/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-single-service/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-single-service/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-single-service/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-single-service/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-single-service/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-single-service/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-single-service/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-single-service/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-single-service/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/2.edited b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/2.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/2.original b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/2.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/3.request b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/3.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/3.response b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/3.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-syntax-error/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-field-known-group-kind/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/2.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/test.yaml b/pkg/kubectl/cmd/edit/testdata/testcase-unknown-version-known-group-kind/test.yaml old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/0.request b/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/0.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/0.response b/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/0.response old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/1.edited b/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/1.edited old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/1.original b/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/1.original old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/2.request b/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/2.request old mode 100755 new mode 100644 diff --git a/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/2.response b/pkg/kubectl/cmd/edit/testdata/testcase-update-annotation/2.response old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/localhost__/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/localhost__/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/localhost__/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/apiserver-loopback-client__/localhost__/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/apiserver-loopback-client__/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/apiserver-loopback-client__/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/apiserver-loopback-client__/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/apiserver-loopback-client__/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/test.com__10.0.0.1/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/test.com__10.0.0.1/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/test.com__10.0.0.1/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__10.0.0.1,127.0.0.1/test.com__10.0.0.1/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/localhost__/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/localhost__/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/localhost__/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/localhost__/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com__/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com__/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com__/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com__/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com_star.test.com_/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com_star.test.com_/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com_star.test.com_/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost__127.0.0.1/test.com_star.test.com_/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost_test.com_127.0.0.1/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost_test.com_127.0.0.1/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost_test.com_127.0.0.1/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/localhost_test.com_127.0.0.1/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/key old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/localhost__/cert b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/localhost__/cert old mode 100755 new mode 100644 diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/localhost__/key b/staging/src/k8s.io/apiserver/pkg/server/options/testdata/test.com__/localhost__/key old mode 100755 new mode 100644 diff --git a/test/conformance/testdata/conformance.txt b/test/conformance/testdata/conformance.txt old mode 100755 new mode 100644 From a2078bd4afb2ceadd8a335783bc0422c0bcbb03d Mon Sep 17 00:00:00 2001 From: globervinodhn Date: Tue, 29 Jan 2019 15:41:27 +0530 Subject: [PATCH 05/31] Promote empty-key ConfigMap e2e to Conformance --- test/conformance/testdata/conformance.txt | 1 + test/e2e/common/configmap.go | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/test/conformance/testdata/conformance.txt b/test/conformance/testdata/conformance.txt index 6962c09d29..4ab5a3a932 100755 --- a/test/conformance/testdata/conformance.txt +++ b/test/conformance/testdata/conformance.txt @@ -36,6 +36,7 @@ test/e2e/auth/service_accounts.go: "should mount an API token into pods" test/e2e/auth/service_accounts.go: "should allow opting out of API token automount" test/e2e/common/configmap.go: "should be consumable via environment variable" test/e2e/common/configmap.go: "should be consumable via the environment" +test/e2e/common/configmap.go: "should fail to create ConfigMap with empty key" test/e2e/common/configmap_volume.go: "should be consumable from pods in volume" test/e2e/common/configmap_volume.go: "should be consumable from pods in volume with defaultMode set" test/e2e/common/configmap_volume.go: "should be consumable from pods in volume as non-root" diff --git a/test/e2e/common/configmap.go b/test/e2e/common/configmap.go index c6479f32d9..5f4dd5f062 100644 --- a/test/e2e/common/configmap.go +++ b/test/e2e/common/configmap.go @@ -19,13 +19,14 @@ package common import ( "fmt" - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/kubernetes/test/e2e/framework" imageutils "k8s.io/kubernetes/test/utils/image" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" ) var _ = Describe("[sig-node] ConfigMap", func() { @@ -124,7 +125,12 @@ var _ = Describe("[sig-node] ConfigMap", func() { }) }) - It("should fail to create configMap in volume due to empty configmap key", func() { + /* + Release : v1.14 + Testname: ConfigMap, with empty-key + Description: Attempt to create a ConfigMap with an empty key. The creation MUST fail. + */ + framework.ConformanceIt("should fail to create ConfigMap with empty key", func() { configMap, err := newConfigMapWithEmptyKey(f) Expect(err).To(HaveOccurred(), "created configMap %q with empty key in namespace %q", configMap.Name, f.Namespace.Name) }) From 226843fe28c440aa0bba20915fca488d7689cda2 Mon Sep 17 00:00:00 2001 From: Dmitry Rozhkov Date: Wed, 9 Jan 2019 15:58:03 +0200 Subject: [PATCH 06/31] kubeadm: move duplicated code into enforceRequirements() and to a new function getK8sVersionFromUserInput(). Also drop applyPlanFlags.ignorePreflightErrorsSet field which is not a command line option. --- cmd/kubeadm/app/cmd/upgrade/apply.go | 43 +------ cmd/kubeadm/app/cmd/upgrade/apply_test.go | 24 ---- cmd/kubeadm/app/cmd/upgrade/common.go | 44 +++++++- cmd/kubeadm/app/cmd/upgrade/common_test.go | 123 +++++++++++++++++++++ cmd/kubeadm/app/cmd/upgrade/plan.go | 23 +--- cmd/kubeadm/app/cmd/upgrade/upgrade.go | 3 - 6 files changed, 168 insertions(+), 92 deletions(-) diff --git a/cmd/kubeadm/app/cmd/upgrade/apply.go b/cmd/kubeadm/app/cmd/upgrade/apply.go index c139a3e1c1..5e7f0288fc 100644 --- a/cmd/kubeadm/app/cmd/upgrade/apply.go +++ b/cmd/kubeadm/app/cmd/upgrade/apply.go @@ -27,7 +27,6 @@ import ( clientset "k8s.io/client-go/kubernetes" "k8s.io/klog" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" "k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" "k8s.io/kubernetes/cmd/kubeadm/app/constants" @@ -76,39 +75,7 @@ func NewCmdApply(apf *applyPlanFlags) *cobra.Command { DisableFlagsInUseLine: true, Short: "Upgrade your Kubernetes cluster to the specified version.", Run: func(cmd *cobra.Command, args []string) { - var userVersion string - var err error - flags.ignorePreflightErrorsSet, err = validation.ValidateIgnorePreflightErrors(flags.ignorePreflightErrors) - kubeadmutil.CheckErr(err) - - // Ensure the user is root - klog.V(1).Infof("running preflight checks") - err = runPreflightChecks(flags.ignorePreflightErrorsSet) - kubeadmutil.CheckErr(err) - - // If the version is specified in config file, pick up that value. - if flags.cfgPath != "" { - // Note that cfg isn't preserved here, it's just an one-off to populate userVersion based on --config - cfg, err := configutil.LoadInitConfigurationFromFile(flags.cfgPath) - kubeadmutil.CheckErr(err) - - if cfg.KubernetesVersion != "" { - userVersion = cfg.KubernetesVersion - } - } - - // If the new version is already specified in config file, version arg is optional. - if userVersion == "" { - err = cmdutil.ValidateExactArgNumber(args, []string{"version"}) - kubeadmutil.CheckErr(err) - } - - // If option was specified in both args and config file, args will overwrite the config file. - if len(args) == 1 { - userVersion = args[0] - } - - err = assertVersionStringIsEmpty(userVersion) + userVersion, err := getK8sVersionFromUserInput(flags.applyPlanFlags, args, true) kubeadmutil.CheckErr(err) err = runApply(flags, userVersion) @@ -227,14 +194,6 @@ func runApply(flags *applyFlags, userVersion string) error { return nil } -func assertVersionStringIsEmpty(version string) error { - if len(version) == 0 { - return errors.New("version string can't be empty") - } - - return nil -} - // EnforceVersionPolicies makes sure that the version the user specified is valid to upgrade to // There are both fatal and skippable (with --force) errors func EnforceVersionPolicies(newK8sVersionStr string, newK8sVersion *version.Version, flags *applyFlags, versionGetter upgrade.VersionGetter) error { diff --git a/cmd/kubeadm/app/cmd/upgrade/apply_test.go b/cmd/kubeadm/app/cmd/upgrade/apply_test.go index 36b0cb168f..5df2204252 100644 --- a/cmd/kubeadm/app/cmd/upgrade/apply_test.go +++ b/cmd/kubeadm/app/cmd/upgrade/apply_test.go @@ -25,30 +25,6 @@ import ( "k8s.io/kubernetes/cmd/kubeadm/app/constants" ) -func TestAssertVersionStringIsEmpty(t *testing.T) { - var tcases = []struct { - name string - version string - expectedErr bool - }{ - { - name: "Version string is not empty", - version: "some string", - }, - { - name: "Version string is empty", - expectedErr: true, - }, - } - for _, tt := range tcases { - t.Run(tt.name, func(t *testing.T) { - if assertVersionStringIsEmpty(tt.version) == nil && tt.expectedErr { - t.Errorf("No error triggered for string '%s'", tt.version) - } - }) - } -} - func TestSessionIsInteractive(t *testing.T) { var tcases = []struct { name string diff --git a/cmd/kubeadm/app/cmd/upgrade/common.go b/cmd/kubeadm/app/cmd/upgrade/common.go index 0b99a4b854..923ac8c857 100644 --- a/cmd/kubeadm/app/cmd/upgrade/common.go +++ b/cmd/kubeadm/app/cmd/upgrade/common.go @@ -31,7 +31,10 @@ import ( "k8s.io/apimachinery/pkg/util/sets" fakediscovery "k8s.io/client-go/discovery/fake" clientset "k8s.io/client-go/kubernetes" + "k8s.io/klog" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" + cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" "k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/kubernetes/cmd/kubeadm/app/features" "k8s.io/kubernetes/cmd/kubeadm/app/phases/upgrade" @@ -42,8 +45,47 @@ import ( kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" ) +func getK8sVersionFromUserInput(flags *applyPlanFlags, args []string, versionIsMandatory bool) (string, error) { + var userVersion string + + // If the version is specified in config file, pick up that value. + if flags.cfgPath != "" { + // Note that cfg isn't preserved here, it's just an one-off to populate userVersion based on --config + cfg, err := configutil.LoadInitConfigurationFromFile(flags.cfgPath) + if err != nil { + return "", err + } + + userVersion = cfg.KubernetesVersion + } + + // the version arg is mandatory unless version is specified in the config file + if versionIsMandatory && userVersion == "" { + if err := cmdutil.ValidateExactArgNumber(args, []string{"version"}); err != nil { + return "", err + } + } + + // If option was specified in both args and config file, args will overwrite the config file. + if len(args) == 1 { + userVersion = args[0] + } + + return userVersion, nil +} + // enforceRequirements verifies that it's okay to upgrade and then returns the variables needed for the rest of the procedure func enforceRequirements(flags *applyPlanFlags, dryRun bool, newK8sVersion string) (clientset.Interface, upgrade.VersionGetter, *kubeadmapi.InitConfiguration, error) { + ignorePreflightErrorsSet, err := validation.ValidateIgnorePreflightErrors(flags.ignorePreflightErrors) + if err != nil { + return nil, nil, nil, err + } + + // Ensure the user is root + klog.V(1).Info("running preflight checks") + if err := runPreflightChecks(ignorePreflightErrorsSet); err != nil { + return nil, nil, nil, err + } client, err := getClient(flags.kubeConfigPath, dryRun) if err != nil { @@ -56,7 +98,7 @@ func enforceRequirements(flags *applyPlanFlags, dryRun bool, newK8sVersion strin } // Run healthchecks against the cluster - if err := upgrade.CheckClusterHealth(client, flags.ignorePreflightErrorsSet); err != nil { + if err := upgrade.CheckClusterHealth(client, ignorePreflightErrorsSet); err != nil { return nil, nil, nil, errors.Wrap(err, "[upgrade/health] FATAL") } diff --git a/cmd/kubeadm/app/cmd/upgrade/common_test.go b/cmd/kubeadm/app/cmd/upgrade/common_test.go index a82e5d9bec..f2c228ba28 100644 --- a/cmd/kubeadm/app/cmd/upgrade/common_test.go +++ b/cmd/kubeadm/app/cmd/upgrade/common_test.go @@ -18,11 +18,134 @@ package upgrade import ( "bytes" + "fmt" + "io/ioutil" + "os" "testing" + "time" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" ) +const ( + validConfig = `apiVersion: kubeadm.k8s.io/v1beta1 +kind: ClusterConfiguration +kubernetesVersion: 1.13.0 +` +) + +func TestGetK8sVersionFromUserInput(t *testing.T) { + var tcases = []struct { + name string + isVersionMandatory bool + clusterConfig string + args []string + expectedErr bool + expectedVersion string + }{ + { + name: "No config and version as an argument", + isVersionMandatory: true, + args: []string{"v1.13.1"}, + expectedVersion: "v1.13.1", + }, + { + name: "Neither config nor version specified", + isVersionMandatory: true, + expectedErr: true, + }, + { + name: "No config and empty version as an argument", + isVersionMandatory: true, + args: []string{""}, + expectedErr: true, + }, + { + name: "Valid config, but no version specified", + isVersionMandatory: true, + clusterConfig: validConfig, + expectedVersion: "v1.13.0", + }, + { + name: "Valid config and different version specified", + isVersionMandatory: true, + clusterConfig: validConfig, + args: []string{"v1.13.1"}, + expectedVersion: "v1.13.1", + }, + { + name: "Version is optional", + }, + } + for tnum, tt := range tcases { + t.Run(tt.name, func(t *testing.T) { + flags := &applyPlanFlags{} + if len(tt.clusterConfig) > 0 { + tmpfile := fmt.Sprintf("/tmp/kubeadm-upgrade-common-test-%d-%d.yaml", tnum, time.Now().Unix()) + if err := ioutil.WriteFile(tmpfile, []byte(tt.clusterConfig), 0666); err != nil { + t.Fatalf("Failed to create test config file: %+v", err) + } + defer os.Remove(tmpfile) + + flags.cfgPath = tmpfile + } + + userVersion, err := getK8sVersionFromUserInput(flags, tt.args, tt.isVersionMandatory) + + if err == nil && tt.expectedErr { + t.Error("Expected error, but got success") + } + if err != nil && !tt.expectedErr { + t.Errorf("Unexpected error: %+v", err) + } + if userVersion != tt.expectedVersion { + t.Errorf("Expected '%s', but got '%s'", tt.expectedVersion, userVersion) + } + }) + } +} + +func TestEnforceRequirements(t *testing.T) { + tcases := []struct { + name string + newK8sVersion string + dryRun bool + flags applyPlanFlags + expectedErr bool + }{ + { + name: "Fail pre-flight check", + expectedErr: true, + }, + { + name: "Bogus preflight check disabled when also 'all' is specified", + flags: applyPlanFlags{ + ignorePreflightErrors: []string{"bogusvalue", "all"}, + }, + expectedErr: true, + }, + { + name: "Fail to create client", + flags: applyPlanFlags{ + ignorePreflightErrors: []string{"all"}, + }, + expectedErr: true, + }, + } + for _, tt := range tcases { + t.Run(tt.name, func(t *testing.T) { + _, _, _, err := enforceRequirements(&tt.flags, tt.dryRun, tt.newK8sVersion) + + if err == nil && tt.expectedErr { + t.Error("Expected error, but got success") + } + if err != nil && !tt.expectedErr { + t.Errorf("Unexpected error: %+v", err) + } + }) + } +} + func TestPrintConfiguration(t *testing.T) { var tests = []struct { name string diff --git a/cmd/kubeadm/app/cmd/upgrade/plan.go b/cmd/kubeadm/app/cmd/upgrade/plan.go index b507665dda..7aa98b51bc 100644 --- a/cmd/kubeadm/app/cmd/upgrade/plan.go +++ b/cmd/kubeadm/app/cmd/upgrade/plan.go @@ -29,10 +29,8 @@ import ( "k8s.io/apimachinery/pkg/util/version" "k8s.io/klog" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" "k8s.io/kubernetes/cmd/kubeadm/app/phases/upgrade" kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" - configutil "k8s.io/kubernetes/cmd/kubeadm/app/util/config" etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd" ) @@ -50,27 +48,8 @@ func NewCmdPlan(apf *applyPlanFlags) *cobra.Command { Use: "plan [version] [flags]", Short: "Check which versions are available to upgrade to and validate whether your current cluster is upgradeable. To skip the internet check, pass in the optional [version] parameter.", Run: func(_ *cobra.Command, args []string) { - var userVersion string - var err error - flags.ignorePreflightErrorsSet, err = validation.ValidateIgnorePreflightErrors(flags.ignorePreflightErrors) + userVersion, err := getK8sVersionFromUserInput(flags.applyPlanFlags, args, false) kubeadmutil.CheckErr(err) - // Ensure the user is root - err = runPreflightChecks(flags.ignorePreflightErrorsSet) - kubeadmutil.CheckErr(err) - - // If the version is specified in config file, pick up that value. - if flags.cfgPath != "" { - cfg, err := configutil.LoadInitConfigurationFromFile(flags.cfgPath) - kubeadmutil.CheckErr(err) - - if cfg.KubernetesVersion != "" { - userVersion = cfg.KubernetesVersion - } - } - // If option was specified in both args and config file, args will overwrite the config file. - if len(args) == 1 { - userVersion = args[0] - } err = runPlan(flags, userVersion) kubeadmutil.CheckErr(err) diff --git a/cmd/kubeadm/app/cmd/upgrade/upgrade.go b/cmd/kubeadm/app/cmd/upgrade/upgrade.go index e4740f5c37..092427defe 100644 --- a/cmd/kubeadm/app/cmd/upgrade/upgrade.go +++ b/cmd/kubeadm/app/cmd/upgrade/upgrade.go @@ -23,7 +23,6 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "k8s.io/apimachinery/pkg/util/sets" "k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" @@ -39,7 +38,6 @@ type applyPlanFlags struct { allowRCUpgrades bool printConfig bool ignorePreflightErrors []string - ignorePreflightErrorsSet sets.String out io.Writer } @@ -52,7 +50,6 @@ func NewCmdUpgrade(out io.Writer) *cobra.Command { allowExperimentalUpgrades: false, allowRCUpgrades: false, printConfig: false, - ignorePreflightErrorsSet: sets.NewString(), out: out, } From 08e406b3f1c0a562c2ccc6b02b760cc949716d46 Mon Sep 17 00:00:00 2001 From: Zihong Zheng Date: Mon, 25 Feb 2019 11:58:20 -0800 Subject: [PATCH 07/31] [e2e] Add acceptableFailureRatio to service latencies test --- test/e2e/network/service_latency.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/test/e2e/network/service_latency.go b/test/e2e/network/service_latency.go index 81034321e1..291c26462a 100644 --- a/test/e2e/network/service_latency.go +++ b/test/e2e/network/service_latency.go @@ -71,6 +71,9 @@ var _ = SIGDescribe("Service endpoints latency", func() { totalTrials = 200 parallelTrials = 15 minSampleSize = 100 + + // Acceptable failure ratio for getting service latencies. + acceptableFailureRatio = .05 ) // Turn off rate limiting--it interferes with our measurements. @@ -79,7 +82,7 @@ var _ = SIGDescribe("Service endpoints latency", func() { defer func() { f.ClientSet.CoreV1().RESTClient().(*restclient.RESTClient).Throttle = oldThrottle }() failing := sets.NewString() - d, err := runServiceLatencies(f, parallelTrials, totalTrials) + d, err := runServiceLatencies(f, parallelTrials, totalTrials, acceptableFailureRatio) if err != nil { failing.Insert(fmt.Sprintf("Not all RC/pod/service trials succeeded: %v", err)) } @@ -123,7 +126,7 @@ var _ = SIGDescribe("Service endpoints latency", func() { }) }) -func runServiceLatencies(f *framework.Framework, inParallel, total int) (output []time.Duration, err error) { +func runServiceLatencies(f *framework.Framework, inParallel, total int, acceptableFailureRatio float32) (output []time.Duration, err error) { cfg := testutils.RCConfig{ Client: f.ClientSet, InternalClient: f.InternalClientset, @@ -180,7 +183,11 @@ func runServiceLatencies(f *framework.Framework, inParallel, total int) (output } } if errCount != 0 { - return output, fmt.Errorf("got %v errors", errCount) + framework.Logf("Got %d errors out of %d tries", errCount, total) + errRatio := float32(errCount) / float32(total) + if errRatio > acceptableFailureRatio { + return output, fmt.Errorf("error ratio %g is higher than the acceptable ratio %g", errRatio, acceptableFailureRatio) + } } return output, nil } From 98edbf41bc6d4e1d6961ca7b52a74107fb7cd4f8 Mon Sep 17 00:00:00 2001 From: Michael Taufen Date: Mon, 25 Feb 2019 13:53:11 -0800 Subject: [PATCH 08/31] upload Windows startup scripts to GCS for CI --- build/root/BUILD.root | 2 ++ cluster/gce/BUILD | 1 + cluster/gce/windows/BUILD | 35 +++++++++++++++++++ .../gce/windows/README-GCE-Windows-kube-up.md | 7 ++++ cluster/gce/windows/common.psm1 | 6 ++++ cluster/gce/windows/configure.ps1 | 6 ++++ cluster/gce/windows/k8s-node-setup.psm1 | 6 ++++ cluster/gce/windows/testonly/install-ssh.psm1 | 6 ++++ .../gce/windows/testonly/user-profile.psm1 | 6 ++++ 9 files changed, 75 insertions(+) create mode 100644 cluster/gce/windows/BUILD diff --git a/build/root/BUILD.root b/build/root/BUILD.root index 66778a602b..9fefdf382e 100644 --- a/build/root/BUILD.root +++ b/build/root/BUILD.root @@ -38,6 +38,7 @@ gcs_upload( ":_binary-artifacts-and-hashes", "//build/release-tars:release-tars-and-hashes", "//cluster/gce/gci:gcs-release-artifacts-and-hashes", + "//cluster/gce/windows:gcs-release-artifacts-and-hashes", ], tags = ["manual"], # Use for_platforms to format the upload path based on the configured @@ -53,6 +54,7 @@ gcs_upload( upload_paths = select(for_platforms(for_all = { "//build/release-tars:release-tars-and-hashes": "", "//cluster/gce/gci:gcs-release-artifacts-and-hashes": "extra/gce", + "//cluster/gce/windows:gcs-release-artifacts-and-hashes": "extra/gce/windows", "//:_binary-artifacts-and-hashes": "bin/{OS}/{ARCH}", })), ) diff --git a/cluster/gce/BUILD b/cluster/gce/BUILD index f61070528f..1996bdbd19 100644 --- a/cluster/gce/BUILD +++ b/cluster/gce/BUILD @@ -17,6 +17,7 @@ filegroup( "//cluster/gce/addons:all-srcs", "//cluster/gce/gci:all-srcs", "//cluster/gce/manifests:all-srcs", + "//cluster/gce/windows:all-srcs", ], tags = ["automanaged"], ) diff --git a/cluster/gce/windows/BUILD b/cluster/gce/windows/BUILD new file mode 100644 index 0000000000..158aef837d --- /dev/null +++ b/cluster/gce/windows/BUILD @@ -0,0 +1,35 @@ +load("@io_k8s_repo_infra//defs:build.bzl", "release_filegroup") + +# Having the Windows code from the GCE cluster deploy hosted with the release is +# useful for GKE. This list should match the list in k8s.io/release/lib/releaselib.sh. + +# IMPORTANT PLEASE NOTE: +# Any time the file structure in the `windows` directory changes, `windows/BUILD` +# and `k8s.io/release/lib/releaselib.sh` must be manually updated with the changes. +# We HIGHLY recommend not changing the file structure, because consumers of +# Kubernetes releases depend on the release structure remaining stable. +release_filegroup( + name = "gcs-release-artifacts", + srcs = [ + "common.psm1", + "configure.ps1", + "k8s-node-setup.psm1", + "testonly/install-ssh.psm1", + "testonly/user-profile.psm1", + ], + visibility = ["//visibility:public"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster/gce/windows/README-GCE-Windows-kube-up.md b/cluster/gce/windows/README-GCE-Windows-kube-up.md index a32642c1e1..819581bcd6 100644 --- a/cluster/gce/windows/README-GCE-Windows-kube-up.md +++ b/cluster/gce/windows/README-GCE-Windows-kube-up.md @@ -1,5 +1,11 @@ # Starting a Windows Kubernetes cluster on GCE using kube-up +## IMPORTANT PLEASE NOTE! +Any time the file structure in the `windows` directory changes, `windows/BUILD` +and `k8s.io/release/lib/releaselib.sh` must be manually updated with the changes. +We HIGHLY recommend not changing the file structure, because consumers of +Kubernetes releases depend on the release structure remaining stable. + ## Bring up the cluster Prerequisites: a Google Cloud Platform project. @@ -185,3 +191,4 @@ These steps are based on user@kubernetes-minion-windows-group-mk0p:C:\\etc\\kubernetes\\logs \ kubetest-logs/ ``` + diff --git a/cluster/gce/windows/common.psm1 b/cluster/gce/windows/common.psm1 index f345ac2d3a..28cef98d63 100644 --- a/cluster/gce/windows/common.psm1 +++ b/cluster/gce/windows/common.psm1 @@ -18,6 +18,12 @@ and scripts for configuring Windows nodes. #> +# IMPORTANT PLEASE NOTE: +# Any time the file structure in the `windows` directory changes, `windows/BUILD` +# and `k8s.io/release/lib/releaselib.sh` must be manually updated with the changes. +# We HIGHLY recommend not changing the file structure, because consumers of +# Kubernetes releases depend on the release structure remaining stable. + # Disable progress bar to increase download speed. $ProgressPreference = 'SilentlyContinue' diff --git a/cluster/gce/windows/configure.ps1 b/cluster/gce/windows/configure.ps1 index e550360174..53b778745e 100644 --- a/cluster/gce/windows/configure.ps1 +++ b/cluster/gce/windows/configure.ps1 @@ -17,6 +17,12 @@ Top-level script that runs on Windows nodes to join them to the K8s cluster. #> +# IMPORTANT PLEASE NOTE: +# Any time the file structure in the `windows` directory changes, `windows/BUILD` +# and `k8s.io/release/lib/releaselib.sh` must be manually updated with the changes. +# We HIGHLY recommend not changing the file structure, because consumers of +# Kubernetes releases depend on the release structure remaining stable. + $ErrorActionPreference = 'Stop' # Turn on tracing to debug diff --git a/cluster/gce/windows/k8s-node-setup.psm1 b/cluster/gce/windows/k8s-node-setup.psm1 index 01fe4d0072..99af7fe05a 100644 --- a/cluster/gce/windows/k8s-node-setup.psm1 +++ b/cluster/gce/windows/k8s-node-setup.psm1 @@ -36,6 +36,12 @@ # Execute functions manually or run configure.ps1. #> +# IMPORTANT PLEASE NOTE: +# Any time the file structure in the `windows` directory changes, `windows/BUILD` +# and `k8s.io/release/lib/releaselib.sh` must be manually updated with the changes. +# We HIGHLY recommend not changing the file structure, because consumers of +# Kubernetes releases depend on the release structure remaining stable. + # TODO: update scripts for these style guidelines: # - Remove {} around variable references unless actually needed for clarity. # - Always use single-quoted strings unless actually interpolating variables diff --git a/cluster/gce/windows/testonly/install-ssh.psm1 b/cluster/gce/windows/testonly/install-ssh.psm1 index 312b0be18f..066bb6f007 100644 --- a/cluster/gce/windows/testonly/install-ssh.psm1 +++ b/cluster/gce/windows/testonly/install-ssh.psm1 @@ -22,6 +22,12 @@ clusters. DO NOT USE THIS MODULE FOR PRODUCTION. #> +# IMPORTANT PLEASE NOTE: +# Any time the file structure in the `windows` directory changes, `windows/BUILD` +# and `k8s.io/release/lib/releaselib.sh` must be manually updated with the changes. +# We HIGHLY recommend not changing the file structure, because consumers of +# Kubernetes releases depend on the release structure remaining stable. + Import-Module -Force C:\common.psm1 $OPENSSH_ROOT = 'C:\Program Files\OpenSSH' diff --git a/cluster/gce/windows/testonly/user-profile.psm1 b/cluster/gce/windows/testonly/user-profile.psm1 index 62abd57811..9f89f2e440 100644 --- a/cluster/gce/windows/testonly/user-profile.psm1 +++ b/cluster/gce/windows/testonly/user-profile.psm1 @@ -19,6 +19,12 @@ powershellposse.com #> +# IMPORTANT PLEASE NOTE: +# Any time the file structure in the `windows` directory changes, `windows/BUILD` +# and `k8s.io/release/lib/releaselib.sh` must be manually updated with the changes. +# We HIGHLY recommend not changing the file structure, because consumers of +# Kubernetes releases depend on the release structure remaining stable. + #Function to create the new local user first function New-LocalUser From b9fb656546c464eacbbeb726094d68271d8bba02 Mon Sep 17 00:00:00 2001 From: Moshe Levi Date: Tue, 26 Feb 2019 04:06:25 +0200 Subject: [PATCH 09/31] Move start kubescheduler to it own function Currently the kubescheduler starts in the start_kubeproxy This change move it to ir own function start_kubescheduler Change-Id: Iff93114d4becabe4b6b937c5077821e092abffd3 Signed-off-by: Moshe Levi --- hack/local-up-cluster.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hack/local-up-cluster.sh b/hack/local-up-cluster.sh index 5b23f6ac68..215a717f77 100755 --- a/hack/local-up-cluster.sh +++ b/hack/local-up-cluster.sh @@ -909,6 +909,9 @@ EOF --config=/tmp/kube-proxy.yaml \ --master="https://${API_HOST}:${API_SECURE_PORT}" >"${PROXY_LOG}" 2>&1 & PROXY_PID=$! +} + +function start_kubescheduler { SCHEDULER_LOG=${LOG_DIR}/kube-scheduler.log ${CONTROLPLANE_SUDO} "${GO_OUT}/hyperkube" scheduler \ @@ -1103,6 +1106,7 @@ if [[ "${START_MODE}" != "kubeletonly" ]]; then start_cloud_controller_manager fi start_kubeproxy + start_kubescheduler start_kubedns if [[ "${ENABLE_NODELOCAL_DNS:-}" == "true" ]]; then start_nodelocaldns From 3b504c10c2d55548d88e8b82786e7f35e82be25c Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Tue, 26 Feb 2019 14:09:34 +0100 Subject: [PATCH 10/31] openapi: remove postprocessing for old paths, deprecated in 1.9 --- cmd/kube-apiserver/app/BUILD | 1 - cmd/kube-apiserver/app/server.go | 346 ------------------------------- 2 files changed, 347 deletions(-) diff --git a/cmd/kube-apiserver/app/BUILD b/cmd/kube-apiserver/app/BUILD index a982cd82d7..7830ca5d08 100644 --- a/cmd/kube-apiserver/app/BUILD +++ b/cmd/kube-apiserver/app/BUILD @@ -76,7 +76,6 @@ go_library( "//vendor/github.com/go-openapi/spec:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/k8s.io/klog:go_default_library", - "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library", ], ) diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index 3dff4f9070..26ba8903e3 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -60,7 +60,6 @@ import ( "k8s.io/klog" aggregatorapiserver "k8s.io/kube-aggregator/pkg/apiserver" aggregatorscheme "k8s.io/kube-aggregator/pkg/apiserver/scheme" - openapi "k8s.io/kube-openapi/pkg/common" "k8s.io/kubernetes/cmd/kube-apiserver/app/options" "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/capabilities" @@ -404,7 +403,6 @@ func buildGenericConfig( } genericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(generatedopenapi.GetOpenAPIDefinitions, openapinamer.NewDefinitionNamer(legacyscheme.Scheme, extensionsapiserver.Scheme, aggregatorscheme.Scheme)) - genericConfig.OpenAPIConfig.PostProcessSpec = postProcessOpenAPISpecForBackwardCompatibility genericConfig.OpenAPIConfig.Info.Title = "Kubernetes" genericConfig.LongRunningFunc = filters.BasicLongRunningRequestCheck( sets.NewString("watch", "proxy"), @@ -656,347 +654,3 @@ func readCAorNil(file string) ([]byte, error) { } return ioutil.ReadFile(file) } - -// PostProcessSpec adds removed definitions for backward compatibility -func postProcessOpenAPISpecForBackwardCompatibility(s *spec.Swagger) (*spec.Swagger, error) { - compatibilityMap := map[string]string{ - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SelfSubjectAccessReview": "io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview", - "io.k8s.kubernetes.pkg.api.v1.GitRepoVolumeSource": "io.k8s.api.core.v1.GitRepoVolumeSource", - "io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.ValidatingWebhookConfigurationList": "io.k8s.api.admissionregistration.v1alpha1.ValidatingWebhookConfigurationList", - "io.k8s.kubernetes.pkg.api.v1.EndpointPort": "io.k8s.api.core.v1.EndpointPort", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.SupplementalGroupsStrategyOptions": "io.k8s.api.extensions.v1beta1.SupplementalGroupsStrategyOptions", - "io.k8s.kubernetes.pkg.api.v1.PodStatus": "io.k8s.api.core.v1.PodStatus", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleBindingList": "io.k8s.api.rbac.v1beta1.RoleBindingList", - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetSpec": "io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec", - "io.k8s.kubernetes.pkg.api.v1.HTTPGetAction": "io.k8s.api.core.v1.HTTPGetAction", - "io.k8s.kubernetes.pkg.apis.authorization.v1.ResourceAttributes": "io.k8s.api.authorization.v1.ResourceAttributes", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeList": "io.k8s.api.core.v1.PersistentVolumeList", - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobSpec": "io.k8s.api.batch.v2alpha1.CronJobSpec", - "io.k8s.kubernetes.pkg.api.v1.CephFSVolumeSource": "io.k8s.api.core.v1.CephFSVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.Affinity": "io.k8s.api.core.v1.Affinity", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.PolicyRule": "io.k8s.api.rbac.v1beta1.PolicyRule", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetSpec": "io.k8s.api.extensions.v1beta1.DaemonSetSpec", - "io.k8s.kubernetes.pkg.api.v1.ProjectedVolumeSource": "io.k8s.api.core.v1.ProjectedVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.TCPSocketAction": "io.k8s.api.core.v1.TCPSocketAction", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSet": "io.k8s.api.extensions.v1beta1.DaemonSet", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressList": "io.k8s.api.extensions.v1beta1.IngressList", - "io.k8s.kubernetes.pkg.api.v1.PodSpec": "io.k8s.api.core.v1.PodSpec", - "io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReview": "io.k8s.api.authentication.v1.TokenReview", - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReview": "io.k8s.api.authorization.v1beta1.SubjectAccessReview", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleBinding": "io.k8s.api.rbac.v1alpha1.ClusterRoleBinding", - "io.k8s.kubernetes.pkg.api.v1.Node": "io.k8s.api.core.v1.Node", - "io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.ServiceReference": "io.k8s.api.admissionregistration.v1alpha1.ServiceReference", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentStatus": "io.k8s.api.extensions.v1beta1.DeploymentStatus", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleRef": "io.k8s.api.rbac.v1beta1.RoleRef", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.Scale": "io.k8s.api.apps.v1beta1.Scale", - "io.k8s.kubernetes.pkg.api.v1.PhotonPersistentDiskVolumeSource": "io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.PreferredSchedulingTerm": "io.k8s.api.core.v1.PreferredSchedulingTerm", - "io.k8s.kubernetes.pkg.apis.batch.v1.JobSpec": "io.k8s.api.batch.v1.JobSpec", - "io.k8s.kubernetes.pkg.api.v1.EventSource": "io.k8s.api.core.v1.EventSource", - "io.k8s.kubernetes.pkg.api.v1.Container": "io.k8s.api.core.v1.Container", - "io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.AdmissionHookClientConfig": "io.k8s.api.admissionregistration.v1alpha1.AdmissionHookClientConfig", - "io.k8s.kubernetes.pkg.api.v1.ResourceQuota": "io.k8s.api.core.v1.ResourceQuota", - "io.k8s.kubernetes.pkg.api.v1.SecretList": "io.k8s.api.core.v1.SecretList", - "io.k8s.kubernetes.pkg.api.v1.NodeSystemInfo": "io.k8s.api.core.v1.NodeSystemInfo", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.PolicyRule": "io.k8s.api.rbac.v1alpha1.PolicyRule", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetSpec": "io.k8s.api.extensions.v1beta1.ReplicaSetSpec", - "io.k8s.kubernetes.pkg.api.v1.NodeStatus": "io.k8s.api.core.v1.NodeStatus", - "io.k8s.kubernetes.pkg.api.v1.ResourceQuotaList": "io.k8s.api.core.v1.ResourceQuotaList", - "io.k8s.kubernetes.pkg.api.v1.HostPathVolumeSource": "io.k8s.api.core.v1.HostPathVolumeSource", - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequest": "io.k8s.api.certificates.v1beta1.CertificateSigningRequest", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressRule": "io.k8s.api.extensions.v1beta1.IngressRule", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyPeer": "io.k8s.api.extensions.v1beta1.NetworkPolicyPeer", - "io.k8s.kubernetes.pkg.apis.storage.v1.StorageClass": "io.k8s.api.storage.v1.StorageClass", - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyPeer": "io.k8s.api.networking.v1.NetworkPolicyPeer", - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyIngressRule": "io.k8s.api.networking.v1.NetworkPolicyIngressRule", - "io.k8s.kubernetes.pkg.api.v1.StorageOSPersistentVolumeSource": "io.k8s.api.core.v1.StorageOSPersistentVolumeSource", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyIngressRule": "io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule", - "io.k8s.kubernetes.pkg.api.v1.PodAffinity": "io.k8s.api.core.v1.PodAffinity", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollbackConfig": "io.k8s.api.extensions.v1beta1.RollbackConfig", - "io.k8s.kubernetes.pkg.api.v1.PodList": "io.k8s.api.core.v1.PodList", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ScaleStatus": "io.k8s.api.extensions.v1beta1.ScaleStatus", - "io.k8s.kubernetes.pkg.api.v1.ComponentCondition": "io.k8s.api.core.v1.ComponentCondition", - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestList": "io.k8s.api.certificates.v1beta1.CertificateSigningRequestList", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleBindingList": "io.k8s.api.rbac.v1alpha1.ClusterRoleBindingList", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscalerCondition": "io.k8s.api.autoscaling.v2alpha1.HorizontalPodAutoscalerCondition", - "io.k8s.kubernetes.pkg.api.v1.ServiceList": "io.k8s.api.core.v1.ServiceList", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicy": "io.k8s.api.extensions.v1beta1.PodSecurityPolicy", - "io.k8s.kubernetes.pkg.apis.batch.v1.JobCondition": "io.k8s.api.batch.v1.JobCondition", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentStatus": "io.k8s.api.apps.v1beta1.DeploymentStatus", - "io.k8s.kubernetes.pkg.api.v1.Volume": "io.k8s.api.core.v1.Volume", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleBindingList": "io.k8s.api.rbac.v1alpha1.RoleBindingList", - "io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.Rule": "io.k8s.api.admissionregistration.v1alpha1.Rule", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicy": "io.k8s.api.extensions.v1beta1.NetworkPolicy", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleList": "io.k8s.api.rbac.v1alpha1.ClusterRoleList", - "io.k8s.kubernetes.pkg.api.v1.ObjectFieldSelector": "io.k8s.api.core.v1.ObjectFieldSelector", - "io.k8s.kubernetes.pkg.api.v1.EventList": "io.k8s.api.core.v1.EventList", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.MetricStatus": "io.k8s.api.autoscaling.v2alpha1.MetricStatus", - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyPort": "io.k8s.api.networking.v1.NetworkPolicyPort", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleList": "io.k8s.api.rbac.v1beta1.RoleList", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleList": "io.k8s.api.rbac.v1alpha1.RoleList", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentStrategy": "io.k8s.api.apps.v1beta1.DeploymentStrategy", - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.CrossVersionObjectReference": "io.k8s.api.autoscaling.v1.CrossVersionObjectReference", - "io.k8s.kubernetes.pkg.api.v1.ConfigMapProjection": "io.k8s.api.core.v1.ConfigMapProjection", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.CrossVersionObjectReference": "io.k8s.api.autoscaling.v2alpha1.CrossVersionObjectReference", - "io.k8s.kubernetes.pkg.api.v1.LoadBalancerStatus": "io.k8s.api.core.v1.LoadBalancerStatus", - "io.k8s.kubernetes.pkg.api.v1.ISCSIVolumeSource": "io.k8s.api.core.v1.ISCSIVolumeSource", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevisionList": "io.k8s.api.apps.v1beta1.ControllerRevisionList", - "io.k8s.kubernetes.pkg.api.v1.EndpointSubset": "io.k8s.api.core.v1.EndpointSubset", - "io.k8s.kubernetes.pkg.api.v1.SELinuxOptions": "io.k8s.api.core.v1.SELinuxOptions", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimVolumeSource": "io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.MetricSpec": "io.k8s.api.autoscaling.v2alpha1.MetricSpec", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetList": "io.k8s.api.apps.v1beta1.StatefulSetList", - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.ResourceAttributes": "io.k8s.api.authorization.v1beta1.ResourceAttributes", - "io.k8s.kubernetes.pkg.api.v1.Capabilities": "io.k8s.api.core.v1.Capabilities", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Deployment": "io.k8s.api.extensions.v1beta1.Deployment", - "io.k8s.kubernetes.pkg.api.v1.Binding": "io.k8s.api.core.v1.Binding", - "io.k8s.kubernetes.pkg.api.v1.ReplicationControllerList": "io.k8s.api.core.v1.ReplicationControllerList", - "io.k8s.kubernetes.pkg.apis.authorization.v1.SelfSubjectAccessReview": "io.k8s.api.authorization.v1.SelfSubjectAccessReview", - "io.k8s.kubernetes.pkg.apis.authentication.v1beta1.UserInfo": "io.k8s.api.authentication.v1beta1.UserInfo", - "io.k8s.kubernetes.pkg.api.v1.HostAlias": "io.k8s.api.core.v1.HostAlias", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetUpdateStrategy": "io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressSpec": "io.k8s.api.extensions.v1beta1.IngressSpec", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentCondition": "io.k8s.api.extensions.v1beta1.DeploymentCondition", - "io.k8s.kubernetes.pkg.api.v1.GCEPersistentDiskVolumeSource": "io.k8s.api.core.v1.GCEPersistentDiskVolumeSource", - "io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.Webhook": "io.k8s.api.admissionregistration.v1alpha1.Webhook", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Scale": "io.k8s.api.extensions.v1beta1.Scale", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscalerStatus": "io.k8s.api.autoscaling.v2alpha1.HorizontalPodAutoscalerStatus", - "io.k8s.kubernetes.pkg.api.v1.FlexVolumeSource": "io.k8s.api.core.v1.FlexVolumeSource", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollingUpdateDeployment": "io.k8s.api.extensions.v1beta1.RollingUpdateDeployment", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.ObjectMetricStatus": "io.k8s.api.autoscaling.v2alpha1.ObjectMetricStatus", - "io.k8s.kubernetes.pkg.api.v1.Event": "io.k8s.api.core.v1.Event", - "io.k8s.kubernetes.pkg.api.v1.ResourceQuotaSpec": "io.k8s.api.core.v1.ResourceQuotaSpec", - "io.k8s.kubernetes.pkg.api.v1.Handler": "io.k8s.api.core.v1.Handler", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressBackend": "io.k8s.api.extensions.v1beta1.IngressBackend", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.Role": "io.k8s.api.rbac.v1alpha1.Role", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.ObjectMetricSource": "io.k8s.api.autoscaling.v2alpha1.ObjectMetricSource", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.ResourceMetricStatus": "io.k8s.api.autoscaling.v2alpha1.ResourceMetricStatus", - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerSpec": "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec", - "io.k8s.kubernetes.pkg.api.v1.Lifecycle": "io.k8s.api.core.v1.Lifecycle", - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestStatus": "io.k8s.api.certificates.v1beta1.CertificateSigningRequestStatus", - "io.k8s.kubernetes.pkg.api.v1.ContainerStateRunning": "io.k8s.api.core.v1.ContainerStateRunning", - "io.k8s.kubernetes.pkg.api.v1.ServiceAccountList": "io.k8s.api.core.v1.ServiceAccountList", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HostPortRange": "io.k8s.api.extensions.v1beta1.HostPortRange", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevision": "io.k8s.api.apps.v1beta1.ControllerRevision", - "io.k8s.kubernetes.pkg.api.v1.ReplicationControllerSpec": "io.k8s.api.core.v1.ReplicationControllerSpec", - "io.k8s.kubernetes.pkg.api.v1.ContainerStateTerminated": "io.k8s.api.core.v1.ContainerStateTerminated", - "io.k8s.kubernetes.pkg.api.v1.ReplicationControllerStatus": "io.k8s.api.core.v1.ReplicationControllerStatus", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetList": "io.k8s.api.extensions.v1beta1.DaemonSetList", - "io.k8s.kubernetes.pkg.apis.authorization.v1.SelfSubjectAccessReviewSpec": "io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec", - "io.k8s.kubernetes.pkg.api.v1.ComponentStatusList": "io.k8s.api.core.v1.ComponentStatusList", - "io.k8s.kubernetes.pkg.api.v1.ContainerStateWaiting": "io.k8s.api.core.v1.ContainerStateWaiting", - "io.k8s.kubernetes.pkg.api.v1.VolumeMount": "io.k8s.api.core.v1.VolumeMount", - "io.k8s.kubernetes.pkg.api.v1.Secret": "io.k8s.api.core.v1.Secret", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleList": "io.k8s.api.rbac.v1beta1.ClusterRoleList", - "io.k8s.kubernetes.pkg.api.v1.ConfigMapList": "io.k8s.api.core.v1.ConfigMapList", - "io.k8s.kubernetes.pkg.apis.storage.v1beta1.StorageClassList": "io.k8s.api.storage.v1beta1.StorageClassList", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HTTPIngressPath": "io.k8s.api.extensions.v1beta1.HTTPIngressPath", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRole": "io.k8s.api.rbac.v1alpha1.ClusterRole", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.ResourceMetricSource": "io.k8s.api.autoscaling.v2alpha1.ResourceMetricSource", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentRollback": "io.k8s.api.extensions.v1beta1.DeploymentRollback", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimSpec": "io.k8s.api.core.v1.PersistentVolumeClaimSpec", - "io.k8s.kubernetes.pkg.api.v1.ReplicationController": "io.k8s.api.core.v1.ReplicationController", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetSpec": "io.k8s.api.apps.v1beta1.StatefulSetSpec", - "io.k8s.kubernetes.pkg.api.v1.SecurityContext": "io.k8s.api.core.v1.SecurityContext", - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicySpec": "io.k8s.api.networking.v1.NetworkPolicySpec", - "io.k8s.kubernetes.pkg.api.v1.LocalObjectReference": "io.k8s.api.core.v1.LocalObjectReference", - "io.k8s.kubernetes.pkg.api.v1.RBDVolumeSource": "io.k8s.api.core.v1.RBDVolumeSource", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicySpec": "io.k8s.api.extensions.v1beta1.NetworkPolicySpec", - "io.k8s.kubernetes.pkg.api.v1.KeyToPath": "io.k8s.api.core.v1.KeyToPath", - "io.k8s.kubernetes.pkg.api.v1.WeightedPodAffinityTerm": "io.k8s.api.core.v1.WeightedPodAffinityTerm", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.PodsMetricStatus": "io.k8s.api.autoscaling.v2alpha1.PodsMetricStatus", - "io.k8s.kubernetes.pkg.api.v1.NodeAddress": "io.k8s.api.core.v1.NodeAddress", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Ingress": "io.k8s.api.extensions.v1beta1.Ingress", - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudget": "io.k8s.api.policy.v1beta1.PodDisruptionBudget", - "io.k8s.kubernetes.pkg.api.v1.ServicePort": "io.k8s.api.core.v1.ServicePort", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IDRange": "io.k8s.api.extensions.v1beta1.IDRange", - "io.k8s.kubernetes.pkg.api.v1.SecretEnvSource": "io.k8s.api.core.v1.SecretEnvSource", - "io.k8s.kubernetes.pkg.api.v1.NodeSelector": "io.k8s.api.core.v1.NodeSelector", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimStatus": "io.k8s.api.core.v1.PersistentVolumeClaimStatus", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentSpec": "io.k8s.api.apps.v1beta1.DeploymentSpec", - "io.k8s.kubernetes.pkg.apis.authorization.v1.NonResourceAttributes": "io.k8s.api.authorization.v1.NonResourceAttributes", - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.ScaleStatus": "io.k8s.api.autoscaling.v1.ScaleStatus", - "io.k8s.kubernetes.pkg.api.v1.PodCondition": "io.k8s.api.core.v1.PodCondition", - "io.k8s.kubernetes.pkg.api.v1.PodTemplateSpec": "io.k8s.api.core.v1.PodTemplateSpec", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSet": "io.k8s.api.apps.v1beta1.StatefulSet", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyPort": "io.k8s.api.extensions.v1beta1.NetworkPolicyPort", - "io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReview": "io.k8s.api.authentication.v1beta1.TokenReview", - "io.k8s.kubernetes.pkg.api.v1.LimitRangeSpec": "io.k8s.api.core.v1.LimitRangeSpec", - "io.k8s.kubernetes.pkg.api.v1.FlockerVolumeSource": "io.k8s.api.core.v1.FlockerVolumeSource", - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.Eviction": "io.k8s.api.policy.v1beta1.Eviction", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimList": "io.k8s.api.core.v1.PersistentVolumeClaimList", - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestCondition": "io.k8s.api.certificates.v1beta1.CertificateSigningRequestCondition", - "io.k8s.kubernetes.pkg.api.v1.DownwardAPIVolumeFile": "io.k8s.api.core.v1.DownwardAPIVolumeFile", - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.LocalSubjectAccessReview": "io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.ScaleStatus": "io.k8s.api.apps.v1beta1.ScaleStatus", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HTTPIngressRuleValue": "io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue", - "io.k8s.kubernetes.pkg.apis.batch.v1.Job": "io.k8s.api.batch.v1.Job", - "io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.ValidatingWebhookConfiguration": "io.k8s.api.admissionregistration.v1alpha1.ValidatingWebhookConfiguration", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleBinding": "io.k8s.api.rbac.v1beta1.RoleBinding", - "io.k8s.kubernetes.pkg.api.v1.FCVolumeSource": "io.k8s.api.core.v1.FCVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.EndpointAddress": "io.k8s.api.core.v1.EndpointAddress", - "io.k8s.kubernetes.pkg.api.v1.ContainerPort": "io.k8s.api.core.v1.ContainerPort", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleBinding": "io.k8s.api.rbac.v1beta1.ClusterRoleBinding", - "io.k8s.kubernetes.pkg.api.v1.GlusterfsVolumeSource": "io.k8s.api.core.v1.GlusterfsVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.ResourceRequirements": "io.k8s.api.core.v1.ResourceRequirements", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollingUpdateDeployment": "io.k8s.api.apps.v1beta1.RollingUpdateDeployment", - "io.k8s.kubernetes.pkg.api.v1.NamespaceStatus": "io.k8s.api.core.v1.NamespaceStatus", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RunAsUserStrategyOptions": "io.k8s.api.extensions.v1beta1.RunAsUserStrategyOptions", - "io.k8s.kubernetes.pkg.api.v1.Namespace": "io.k8s.api.core.v1.Namespace", - "io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReviewSpec": "io.k8s.api.authorization.v1.SubjectAccessReviewSpec", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscaler": "io.k8s.api.autoscaling.v2alpha1.HorizontalPodAutoscaler", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetCondition": "io.k8s.api.extensions.v1beta1.ReplicaSetCondition", - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerStatus": "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus", - "io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReviewStatus": "io.k8s.api.authentication.v1.TokenReviewStatus", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolume": "io.k8s.api.core.v1.PersistentVolume", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.FSGroupStrategyOptions": "io.k8s.api.extensions.v1beta1.FSGroupStrategyOptions", - "io.k8s.kubernetes.pkg.api.v1.PodSecurityContext": "io.k8s.api.core.v1.PodSecurityContext", - "io.k8s.kubernetes.pkg.api.v1.PodTemplate": "io.k8s.api.core.v1.PodTemplate", - "io.k8s.kubernetes.pkg.apis.authorization.v1.LocalSubjectAccessReview": "io.k8s.api.authorization.v1.LocalSubjectAccessReview", - "io.k8s.kubernetes.pkg.api.v1.StorageOSVolumeSource": "io.k8s.api.core.v1.StorageOSVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.NodeSelectorTerm": "io.k8s.api.core.v1.NodeSelectorTerm", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.Role": "io.k8s.api.rbac.v1beta1.Role", - "io.k8s.kubernetes.pkg.api.v1.ContainerStatus": "io.k8s.api.core.v1.ContainerStatus", - "io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReviewStatus": "io.k8s.api.authorization.v1.SubjectAccessReviewStatus", - "io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReviewSpec": "io.k8s.api.authentication.v1.TokenReviewSpec", - "io.k8s.kubernetes.pkg.api.v1.ConfigMap": "io.k8s.api.core.v1.ConfigMap", - "io.k8s.kubernetes.pkg.api.v1.ServiceStatus": "io.k8s.api.core.v1.ServiceStatus", - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SelfSubjectAccessReviewSpec": "io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec", - "io.k8s.kubernetes.pkg.api.v1.CinderVolumeSource": "io.k8s.api.core.v1.CinderVolumeSource", - "io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPresetSpec": "io.k8s.api.settings.v1alpha1.PodPresetSpec", - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.NonResourceAttributes": "io.k8s.api.authorization.v1beta1.NonResourceAttributes", - "io.k8s.kubernetes.pkg.api.v1.ContainerImage": "io.k8s.api.core.v1.ContainerImage", - "io.k8s.kubernetes.pkg.api.v1.ReplicationControllerCondition": "io.k8s.api.core.v1.ReplicationControllerCondition", - "io.k8s.kubernetes.pkg.api.v1.EmptyDirVolumeSource": "io.k8s.api.core.v1.EmptyDirVolumeSource", - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerList": "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList", - "io.k8s.kubernetes.pkg.apis.batch.v1.JobList": "io.k8s.api.batch.v1.JobList", - "io.k8s.kubernetes.pkg.api.v1.NFSVolumeSource": "io.k8s.api.core.v1.NFSVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.Pod": "io.k8s.api.core.v1.Pod", - "io.k8s.kubernetes.pkg.api.v1.ObjectReference": "io.k8s.api.core.v1.ObjectReference", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.Deployment": "io.k8s.api.apps.v1beta1.Deployment", - "io.k8s.kubernetes.pkg.apis.storage.v1.StorageClassList": "io.k8s.api.storage.v1.StorageClassList", - "io.k8s.kubernetes.pkg.api.v1.AttachedVolume": "io.k8s.api.core.v1.AttachedVolume", - "io.k8s.kubernetes.pkg.api.v1.AWSElasticBlockStoreVolumeSource": "io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource", - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobList": "io.k8s.api.batch.v2alpha1.CronJobList", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentSpec": "io.k8s.api.extensions.v1beta1.DeploymentSpec", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicyList": "io.k8s.api.extensions.v1beta1.PodSecurityPolicyList", - "io.k8s.kubernetes.pkg.api.v1.PodAffinityTerm": "io.k8s.api.core.v1.PodAffinityTerm", - "io.k8s.kubernetes.pkg.api.v1.HTTPHeader": "io.k8s.api.core.v1.HTTPHeader", - "io.k8s.kubernetes.pkg.api.v1.ConfigMapKeySelector": "io.k8s.api.core.v1.ConfigMapKeySelector", - "io.k8s.kubernetes.pkg.api.v1.SecretKeySelector": "io.k8s.api.core.v1.SecretKeySelector", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentList": "io.k8s.api.extensions.v1beta1.DeploymentList", - "io.k8s.kubernetes.pkg.apis.authentication.v1.UserInfo": "io.k8s.api.authentication.v1.UserInfo", - "io.k8s.kubernetes.pkg.api.v1.LoadBalancerIngress": "io.k8s.api.core.v1.LoadBalancerIngress", - "io.k8s.kubernetes.pkg.api.v1.DaemonEndpoint": "io.k8s.api.core.v1.DaemonEndpoint", - "io.k8s.kubernetes.pkg.api.v1.NodeSelectorRequirement": "io.k8s.api.core.v1.NodeSelectorRequirement", - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobStatus": "io.k8s.api.batch.v2alpha1.CronJobStatus", - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.Scale": "io.k8s.api.autoscaling.v1.Scale", - "io.k8s.kubernetes.pkg.api.v1.ScaleIOVolumeSource": "io.k8s.api.core.v1.ScaleIOVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.PodAntiAffinity": "io.k8s.api.core.v1.PodAntiAffinity", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicySpec": "io.k8s.api.extensions.v1beta1.PodSecurityPolicySpec", - "io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPresetList": "io.k8s.api.settings.v1alpha1.PodPresetList", - "io.k8s.kubernetes.pkg.api.v1.NodeAffinity": "io.k8s.api.core.v1.NodeAffinity", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentCondition": "io.k8s.api.apps.v1beta1.DeploymentCondition", - "io.k8s.kubernetes.pkg.api.v1.NodeSpec": "io.k8s.api.core.v1.NodeSpec", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetStatus": "io.k8s.api.apps.v1beta1.StatefulSetStatus", - "io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.RuleWithOperations": "io.k8s.api.admissionregistration.v1alpha1.RuleWithOperations", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressStatus": "io.k8s.api.extensions.v1beta1.IngressStatus", - "io.k8s.kubernetes.pkg.api.v1.LimitRangeList": "io.k8s.api.core.v1.LimitRangeList", - "io.k8s.kubernetes.pkg.api.v1.AzureDiskVolumeSource": "io.k8s.api.core.v1.AzureDiskVolumeSource", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetStatus": "io.k8s.api.extensions.v1beta1.ReplicaSetStatus", - "io.k8s.kubernetes.pkg.api.v1.ComponentStatus": "io.k8s.api.core.v1.ComponentStatus", - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscaler": "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler", - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicy": "io.k8s.api.networking.v1.NetworkPolicy", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollbackConfig": "io.k8s.api.apps.v1beta1.RollbackConfig", - "io.k8s.kubernetes.pkg.api.v1.NodeCondition": "io.k8s.api.core.v1.NodeCondition", - "io.k8s.kubernetes.pkg.api.v1.DownwardAPIProjection": "io.k8s.api.core.v1.DownwardAPIProjection", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.SELinuxStrategyOptions": "io.k8s.api.extensions.v1beta1.SELinuxStrategyOptions", - "io.k8s.kubernetes.pkg.api.v1.NamespaceSpec": "io.k8s.api.core.v1.NamespaceSpec", - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestSpec": "io.k8s.api.certificates.v1beta1.CertificateSigningRequestSpec", - "io.k8s.kubernetes.pkg.api.v1.ServiceSpec": "io.k8s.api.core.v1.ServiceSpec", - "io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReview": "io.k8s.api.authorization.v1.SubjectAccessReview", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentList": "io.k8s.api.apps.v1beta1.DeploymentList", - "io.k8s.kubernetes.pkg.api.v1.Toleration": "io.k8s.api.core.v1.Toleration", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyList": "io.k8s.api.extensions.v1beta1.NetworkPolicyList", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.PodsMetricSource": "io.k8s.api.autoscaling.v2alpha1.PodsMetricSource", - "io.k8s.kubernetes.pkg.api.v1.EnvFromSource": "io.k8s.api.core.v1.EnvFromSource", - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.ScaleSpec": "io.k8s.api.autoscaling.v1.ScaleSpec", - "io.k8s.kubernetes.pkg.api.v1.PodTemplateList": "io.k8s.api.core.v1.PodTemplateList", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscalerSpec": "io.k8s.api.autoscaling.v2alpha1.HorizontalPodAutoscalerSpec", - "io.k8s.kubernetes.pkg.api.v1.SecretProjection": "io.k8s.api.core.v1.SecretProjection", - "io.k8s.kubernetes.pkg.api.v1.ResourceFieldSelector": "io.k8s.api.core.v1.ResourceFieldSelector", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeSpec": "io.k8s.api.core.v1.PersistentVolumeSpec", - "io.k8s.kubernetes.pkg.api.v1.ConfigMapVolumeSource": "io.k8s.api.core.v1.ConfigMapVolumeSource", - "io.k8s.kubernetes.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscalerList": "io.k8s.api.autoscaling.v2alpha1.HorizontalPodAutoscalerList", - "io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReviewStatus": "io.k8s.api.authentication.v1beta1.TokenReviewStatus", - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyList": "io.k8s.api.networking.v1.NetworkPolicyList", - "io.k8s.kubernetes.pkg.api.v1.Endpoints": "io.k8s.api.core.v1.Endpoints", - "io.k8s.kubernetes.pkg.api.v1.LimitRangeItem": "io.k8s.api.core.v1.LimitRangeItem", - "io.k8s.kubernetes.pkg.api.v1.ServiceAccount": "io.k8s.api.core.v1.ServiceAccount", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ScaleSpec": "io.k8s.api.extensions.v1beta1.ScaleSpec", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressTLS": "io.k8s.api.extensions.v1beta1.IngressTLS", - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJob": "io.k8s.api.batch.v2alpha1.CronJob", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.Subject": "io.k8s.api.rbac.v1alpha1.Subject", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetStatus": "io.k8s.api.extensions.v1beta1.DaemonSetStatus", - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetList": "io.k8s.api.policy.v1beta1.PodDisruptionBudgetList", - "io.k8s.kubernetes.pkg.api.v1.VsphereVirtualDiskVolumeSource": "io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleRef": "io.k8s.api.rbac.v1alpha1.RoleRef", - "io.k8s.kubernetes.pkg.api.v1.PortworxVolumeSource": "io.k8s.api.core.v1.PortworxVolumeSource", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetList": "io.k8s.api.extensions.v1beta1.ReplicaSetList", - "io.k8s.kubernetes.pkg.api.v1.VolumeProjection": "io.k8s.api.core.v1.VolumeProjection", - "io.k8s.kubernetes.pkg.apis.storage.v1beta1.StorageClass": "io.k8s.api.storage.v1beta1.StorageClass", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSet": "io.k8s.api.extensions.v1beta1.ReplicaSet", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentRollback": "io.k8s.api.apps.v1beta1.DeploymentRollback", - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleBinding": "io.k8s.api.rbac.v1alpha1.RoleBinding", - "io.k8s.kubernetes.pkg.api.v1.AzureFileVolumeSource": "io.k8s.api.core.v1.AzureFileVolumeSource", - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetStatus": "io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus", - "io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReviewSpec": "io.k8s.api.authentication.v1beta1.TokenReviewSpec", - "io.k8s.kubernetes.pkg.api.v1.EndpointsList": "io.k8s.api.core.v1.EndpointsList", - "io.k8s.kubernetes.pkg.api.v1.ConfigMapEnvSource": "io.k8s.api.core.v1.ConfigMapEnvSource", - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.JobTemplateSpec": "io.k8s.api.batch.v2alpha1.JobTemplateSpec", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetUpdateStrategy": "io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy", - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReviewSpec": "io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec", - "io.k8s.kubernetes.pkg.api.v1.LocalVolumeSource": "io.k8s.api.core.v1.LocalVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.ContainerState": "io.k8s.api.core.v1.ContainerState", - "io.k8s.kubernetes.pkg.api.v1.Service": "io.k8s.api.core.v1.Service", - "io.k8s.kubernetes.pkg.api.v1.ExecAction": "io.k8s.api.core.v1.ExecAction", - "io.k8s.kubernetes.pkg.api.v1.Taint": "io.k8s.api.core.v1.Taint", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.Subject": "io.k8s.api.rbac.v1beta1.Subject", - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReviewStatus": "io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleBindingList": "io.k8s.api.rbac.v1beta1.ClusterRoleBindingList", - "io.k8s.kubernetes.pkg.api.v1.DownwardAPIVolumeSource": "io.k8s.api.core.v1.DownwardAPIVolumeSource", - "io.k8s.kubernetes.pkg.apis.batch.v1.JobStatus": "io.k8s.api.batch.v1.JobStatus", - "io.k8s.kubernetes.pkg.api.v1.ResourceQuotaStatus": "io.k8s.api.core.v1.ResourceQuotaStatus", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeStatus": "io.k8s.api.core.v1.PersistentVolumeStatus", - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaim": "io.k8s.api.core.v1.PersistentVolumeClaim", - "io.k8s.kubernetes.pkg.api.v1.NodeDaemonEndpoints": "io.k8s.api.core.v1.NodeDaemonEndpoints", - "io.k8s.kubernetes.pkg.api.v1.EnvVar": "io.k8s.api.core.v1.EnvVar", - "io.k8s.kubernetes.pkg.api.v1.SecretVolumeSource": "io.k8s.api.core.v1.SecretVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.EnvVarSource": "io.k8s.api.core.v1.EnvVarSource", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollingUpdateStatefulSetStrategy": "io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy", - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRole": "io.k8s.api.rbac.v1beta1.ClusterRole", - "io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.Initializer": "io.k8s.api.admissionregistration.v1alpha1.Initializer", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentStrategy": "io.k8s.api.extensions.v1beta1.DeploymentStrategy", - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.ScaleSpec": "io.k8s.api.apps.v1beta1.ScaleSpec", - "io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPreset": "io.k8s.api.settings.v1alpha1.PodPreset", - "io.k8s.kubernetes.pkg.api.v1.Probe": "io.k8s.api.core.v1.Probe", - "io.k8s.kubernetes.pkg.api.v1.NamespaceList": "io.k8s.api.core.v1.NamespaceList", - "io.k8s.kubernetes.pkg.api.v1.QuobyteVolumeSource": "io.k8s.api.core.v1.QuobyteVolumeSource", - "io.k8s.kubernetes.pkg.api.v1.NodeList": "io.k8s.api.core.v1.NodeList", - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollingUpdateDaemonSet": "io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet", - "io.k8s.kubernetes.pkg.api.v1.LimitRange": "io.k8s.api.core.v1.LimitRange", - } - - for k, v := range compatibilityMap { - if _, found := s.Definitions[v]; !found { - continue - } - s.Definitions[k] = spec.Schema{ - SchemaProps: spec.SchemaProps{ - Ref: spec.MustCreateRef("#/definitions/" + openapi.EscapeJsonPointer(v)), - Description: fmt.Sprintf("Deprecated. Please use %s instead.", v), - }, - } - } - return s, nil -} From 1f2a4013bf9f0058cc903296c85ae6c64d243fd0 Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Tue, 26 Feb 2019 14:16:29 +0100 Subject: [PATCH 11/31] Update openapi spec --- api/openapi-spec/swagger.json | 1212 --------------------------------- 1 file changed, 1212 deletions(-) diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 36fc01a161..4ff5124aa0 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -17832,1218 +17832,6 @@ } }, "type": "object" - }, - "io.k8s.kubernetes.pkg.api.v1.AWSElasticBlockStoreVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Affinity": { - "$ref": "#/definitions/io.k8s.api.core.v1.Affinity", - "description": "Deprecated. Please use io.k8s.api.core.v1.Affinity instead." - }, - "io.k8s.kubernetes.pkg.api.v1.AttachedVolume": { - "$ref": "#/definitions/io.k8s.api.core.v1.AttachedVolume", - "description": "Deprecated. Please use io.k8s.api.core.v1.AttachedVolume instead." - }, - "io.k8s.kubernetes.pkg.api.v1.AzureDiskVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.AzureDiskVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.AzureFileVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.AzureFileVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Binding": { - "$ref": "#/definitions/io.k8s.api.core.v1.Binding", - "description": "Deprecated. Please use io.k8s.api.core.v1.Binding instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Capabilities": { - "$ref": "#/definitions/io.k8s.api.core.v1.Capabilities", - "description": "Deprecated. Please use io.k8s.api.core.v1.Capabilities instead." - }, - "io.k8s.kubernetes.pkg.api.v1.CephFSVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.CephFSVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.CephFSVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.CinderVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.CinderVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.CinderVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ComponentCondition": { - "$ref": "#/definitions/io.k8s.api.core.v1.ComponentCondition", - "description": "Deprecated. Please use io.k8s.api.core.v1.ComponentCondition instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ComponentStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.ComponentStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.ComponentStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ComponentStatusList": { - "$ref": "#/definitions/io.k8s.api.core.v1.ComponentStatusList", - "description": "Deprecated. Please use io.k8s.api.core.v1.ComponentStatusList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ConfigMap": { - "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap", - "description": "Deprecated. Please use io.k8s.api.core.v1.ConfigMap instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ConfigMapEnvSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.ConfigMapEnvSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ConfigMapKeySelector": { - "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector", - "description": "Deprecated. Please use io.k8s.api.core.v1.ConfigMapKeySelector instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ConfigMapList": { - "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapList", - "description": "Deprecated. Please use io.k8s.api.core.v1.ConfigMapList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ConfigMapProjection": { - "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapProjection", - "description": "Deprecated. Please use io.k8s.api.core.v1.ConfigMapProjection instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ConfigMapVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.ConfigMapVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Container": { - "$ref": "#/definitions/io.k8s.api.core.v1.Container", - "description": "Deprecated. Please use io.k8s.api.core.v1.Container instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ContainerImage": { - "$ref": "#/definitions/io.k8s.api.core.v1.ContainerImage", - "description": "Deprecated. Please use io.k8s.api.core.v1.ContainerImage instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ContainerPort": { - "$ref": "#/definitions/io.k8s.api.core.v1.ContainerPort", - "description": "Deprecated. Please use io.k8s.api.core.v1.ContainerPort instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ContainerState": { - "$ref": "#/definitions/io.k8s.api.core.v1.ContainerState", - "description": "Deprecated. Please use io.k8s.api.core.v1.ContainerState instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ContainerStateRunning": { - "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateRunning", - "description": "Deprecated. Please use io.k8s.api.core.v1.ContainerStateRunning instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ContainerStateTerminated": { - "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateTerminated", - "description": "Deprecated. Please use io.k8s.api.core.v1.ContainerStateTerminated instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ContainerStateWaiting": { - "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateWaiting", - "description": "Deprecated. Please use io.k8s.api.core.v1.ContainerStateWaiting instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ContainerStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.ContainerStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.DaemonEndpoint": { - "$ref": "#/definitions/io.k8s.api.core.v1.DaemonEndpoint", - "description": "Deprecated. Please use io.k8s.api.core.v1.DaemonEndpoint instead." - }, - "io.k8s.kubernetes.pkg.api.v1.DownwardAPIProjection": { - "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIProjection", - "description": "Deprecated. Please use io.k8s.api.core.v1.DownwardAPIProjection instead." - }, - "io.k8s.kubernetes.pkg.api.v1.DownwardAPIVolumeFile": { - "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile", - "description": "Deprecated. Please use io.k8s.api.core.v1.DownwardAPIVolumeFile instead." - }, - "io.k8s.kubernetes.pkg.api.v1.DownwardAPIVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.DownwardAPIVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EmptyDirVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.EmptyDirVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EndpointAddress": { - "$ref": "#/definitions/io.k8s.api.core.v1.EndpointAddress", - "description": "Deprecated. Please use io.k8s.api.core.v1.EndpointAddress instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EndpointPort": { - "$ref": "#/definitions/io.k8s.api.core.v1.EndpointPort", - "description": "Deprecated. Please use io.k8s.api.core.v1.EndpointPort instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EndpointSubset": { - "$ref": "#/definitions/io.k8s.api.core.v1.EndpointSubset", - "description": "Deprecated. Please use io.k8s.api.core.v1.EndpointSubset instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Endpoints": { - "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints", - "description": "Deprecated. Please use io.k8s.api.core.v1.Endpoints instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EndpointsList": { - "$ref": "#/definitions/io.k8s.api.core.v1.EndpointsList", - "description": "Deprecated. Please use io.k8s.api.core.v1.EndpointsList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EnvFromSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.EnvFromSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.EnvFromSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EnvVar": { - "$ref": "#/definitions/io.k8s.api.core.v1.EnvVar", - "description": "Deprecated. Please use io.k8s.api.core.v1.EnvVar instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EnvVarSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.EnvVarSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.EnvVarSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Event": { - "$ref": "#/definitions/io.k8s.api.core.v1.Event", - "description": "Deprecated. Please use io.k8s.api.core.v1.Event instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EventList": { - "$ref": "#/definitions/io.k8s.api.core.v1.EventList", - "description": "Deprecated. Please use io.k8s.api.core.v1.EventList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.EventSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.EventSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.EventSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ExecAction": { - "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction", - "description": "Deprecated. Please use io.k8s.api.core.v1.ExecAction instead." - }, - "io.k8s.kubernetes.pkg.api.v1.FCVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.FCVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.FCVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.FlexVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.FlexVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.FlexVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.FlockerVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.FlockerVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.FlockerVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.GCEPersistentDiskVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.GCEPersistentDiskVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.GitRepoVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.GitRepoVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.GlusterfsVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.GlusterfsVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.HTTPGetAction": { - "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction", - "description": "Deprecated. Please use io.k8s.api.core.v1.HTTPGetAction instead." - }, - "io.k8s.kubernetes.pkg.api.v1.HTTPHeader": { - "$ref": "#/definitions/io.k8s.api.core.v1.HTTPHeader", - "description": "Deprecated. Please use io.k8s.api.core.v1.HTTPHeader instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Handler": { - "$ref": "#/definitions/io.k8s.api.core.v1.Handler", - "description": "Deprecated. Please use io.k8s.api.core.v1.Handler instead." - }, - "io.k8s.kubernetes.pkg.api.v1.HostAlias": { - "$ref": "#/definitions/io.k8s.api.core.v1.HostAlias", - "description": "Deprecated. Please use io.k8s.api.core.v1.HostAlias instead." - }, - "io.k8s.kubernetes.pkg.api.v1.HostPathVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.HostPathVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.HostPathVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ISCSIVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.ISCSIVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.KeyToPath": { - "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath", - "description": "Deprecated. Please use io.k8s.api.core.v1.KeyToPath instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Lifecycle": { - "$ref": "#/definitions/io.k8s.api.core.v1.Lifecycle", - "description": "Deprecated. Please use io.k8s.api.core.v1.Lifecycle instead." - }, - "io.k8s.kubernetes.pkg.api.v1.LimitRange": { - "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange", - "description": "Deprecated. Please use io.k8s.api.core.v1.LimitRange instead." - }, - "io.k8s.kubernetes.pkg.api.v1.LimitRangeItem": { - "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeItem", - "description": "Deprecated. Please use io.k8s.api.core.v1.LimitRangeItem instead." - }, - "io.k8s.kubernetes.pkg.api.v1.LimitRangeList": { - "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeList", - "description": "Deprecated. Please use io.k8s.api.core.v1.LimitRangeList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.LimitRangeSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.LimitRangeSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.LoadBalancerIngress": { - "$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerIngress", - "description": "Deprecated. Please use io.k8s.api.core.v1.LoadBalancerIngress instead." - }, - "io.k8s.kubernetes.pkg.api.v1.LoadBalancerStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.LoadBalancerStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.LocalObjectReference": { - "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference", - "description": "Deprecated. Please use io.k8s.api.core.v1.LocalObjectReference instead." - }, - "io.k8s.kubernetes.pkg.api.v1.LocalVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.LocalVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.LocalVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NFSVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.NFSVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.NFSVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Namespace": { - "$ref": "#/definitions/io.k8s.api.core.v1.Namespace", - "description": "Deprecated. Please use io.k8s.api.core.v1.Namespace instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NamespaceList": { - "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceList", - "description": "Deprecated. Please use io.k8s.api.core.v1.NamespaceList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NamespaceSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.NamespaceSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NamespaceStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.NamespaceStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Node": { - "$ref": "#/definitions/io.k8s.api.core.v1.Node", - "description": "Deprecated. Please use io.k8s.api.core.v1.Node instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeAddress": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeAddress", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeAddress instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeAffinity": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeAffinity", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeAffinity instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeCondition": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeCondition", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeCondition instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeDaemonEndpoints": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeDaemonEndpoints instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeList": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeList", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeSelector": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelector", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeSelector instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeSelectorRequirement": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeSelectorRequirement instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeSelectorTerm": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeSelectorTerm instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.NodeSystemInfo": { - "$ref": "#/definitions/io.k8s.api.core.v1.NodeSystemInfo", - "description": "Deprecated. Please use io.k8s.api.core.v1.NodeSystemInfo instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ObjectFieldSelector": { - "$ref": "#/definitions/io.k8s.api.core.v1.ObjectFieldSelector", - "description": "Deprecated. Please use io.k8s.api.core.v1.ObjectFieldSelector instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ObjectReference": { - "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference", - "description": "Deprecated. Please use io.k8s.api.core.v1.ObjectReference instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolume": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolume instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaim": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaim instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimList": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaimList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaimSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaimStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeList": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeList", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PersistentVolumeStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PhotonPersistentDiskVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Pod": { - "$ref": "#/definitions/io.k8s.api.core.v1.Pod", - "description": "Deprecated. Please use io.k8s.api.core.v1.Pod instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodAffinity": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinity", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodAffinity instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodAffinityTerm": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodAffinityTerm instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodAntiAffinity": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodAntiAffinity", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodAntiAffinity instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodCondition": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodCondition", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodCondition instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodList": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodList", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodSecurityContext": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodSecurityContext", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodSecurityContext instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodTemplate": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodTemplate instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodTemplateList": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateList", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodTemplateList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PodTemplateSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.PodTemplateSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PortworxVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.PortworxVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.PortworxVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.PreferredSchedulingTerm": { - "$ref": "#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm", - "description": "Deprecated. Please use io.k8s.api.core.v1.PreferredSchedulingTerm instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Probe": { - "$ref": "#/definitions/io.k8s.api.core.v1.Probe", - "description": "Deprecated. Please use io.k8s.api.core.v1.Probe instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ProjectedVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.ProjectedVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.QuobyteVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.QuobyteVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.RBDVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.RBDVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.RBDVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ReplicationController": { - "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController", - "description": "Deprecated. Please use io.k8s.api.core.v1.ReplicationController instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ReplicationControllerCondition": { - "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerCondition", - "description": "Deprecated. Please use io.k8s.api.core.v1.ReplicationControllerCondition instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ReplicationControllerList": { - "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerList", - "description": "Deprecated. Please use io.k8s.api.core.v1.ReplicationControllerList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ReplicationControllerSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.ReplicationControllerSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ReplicationControllerStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.ReplicationControllerStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ResourceFieldSelector": { - "$ref": "#/definitions/io.k8s.api.core.v1.ResourceFieldSelector", - "description": "Deprecated. Please use io.k8s.api.core.v1.ResourceFieldSelector instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ResourceQuota": { - "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota", - "description": "Deprecated. Please use io.k8s.api.core.v1.ResourceQuota instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ResourceQuotaList": { - "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaList", - "description": "Deprecated. Please use io.k8s.api.core.v1.ResourceQuotaList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ResourceQuotaSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.ResourceQuotaSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ResourceQuotaStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.ResourceQuotaStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ResourceRequirements": { - "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements", - "description": "Deprecated. Please use io.k8s.api.core.v1.ResourceRequirements instead." - }, - "io.k8s.kubernetes.pkg.api.v1.SELinuxOptions": { - "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions", - "description": "Deprecated. Please use io.k8s.api.core.v1.SELinuxOptions instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ScaleIOVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.ScaleIOVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Secret": { - "$ref": "#/definitions/io.k8s.api.core.v1.Secret", - "description": "Deprecated. Please use io.k8s.api.core.v1.Secret instead." - }, - "io.k8s.kubernetes.pkg.api.v1.SecretEnvSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.SecretEnvSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.SecretEnvSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.SecretKeySelector": { - "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector", - "description": "Deprecated. Please use io.k8s.api.core.v1.SecretKeySelector instead." - }, - "io.k8s.kubernetes.pkg.api.v1.SecretList": { - "$ref": "#/definitions/io.k8s.api.core.v1.SecretList", - "description": "Deprecated. Please use io.k8s.api.core.v1.SecretList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.SecretProjection": { - "$ref": "#/definitions/io.k8s.api.core.v1.SecretProjection", - "description": "Deprecated. Please use io.k8s.api.core.v1.SecretProjection instead." - }, - "io.k8s.kubernetes.pkg.api.v1.SecretVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.SecretVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.SecretVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.SecurityContext": { - "$ref": "#/definitions/io.k8s.api.core.v1.SecurityContext", - "description": "Deprecated. Please use io.k8s.api.core.v1.SecurityContext instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Service": { - "$ref": "#/definitions/io.k8s.api.core.v1.Service", - "description": "Deprecated. Please use io.k8s.api.core.v1.Service instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ServiceAccount": { - "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount", - "description": "Deprecated. Please use io.k8s.api.core.v1.ServiceAccount instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ServiceAccountList": { - "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccountList", - "description": "Deprecated. Please use io.k8s.api.core.v1.ServiceAccountList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ServiceList": { - "$ref": "#/definitions/io.k8s.api.core.v1.ServiceList", - "description": "Deprecated. Please use io.k8s.api.core.v1.ServiceList instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ServicePort": { - "$ref": "#/definitions/io.k8s.api.core.v1.ServicePort", - "description": "Deprecated. Please use io.k8s.api.core.v1.ServicePort instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ServiceSpec": { - "$ref": "#/definitions/io.k8s.api.core.v1.ServiceSpec", - "description": "Deprecated. Please use io.k8s.api.core.v1.ServiceSpec instead." - }, - "io.k8s.kubernetes.pkg.api.v1.ServiceStatus": { - "$ref": "#/definitions/io.k8s.api.core.v1.ServiceStatus", - "description": "Deprecated. Please use io.k8s.api.core.v1.ServiceStatus instead." - }, - "io.k8s.kubernetes.pkg.api.v1.StorageOSPersistentVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.StorageOSPersistentVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.StorageOSPersistentVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.StorageOSVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.StorageOSVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.TCPSocketAction": { - "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction", - "description": "Deprecated. Please use io.k8s.api.core.v1.TCPSocketAction instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Taint": { - "$ref": "#/definitions/io.k8s.api.core.v1.Taint", - "description": "Deprecated. Please use io.k8s.api.core.v1.Taint instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Toleration": { - "$ref": "#/definitions/io.k8s.api.core.v1.Toleration", - "description": "Deprecated. Please use io.k8s.api.core.v1.Toleration instead." - }, - "io.k8s.kubernetes.pkg.api.v1.Volume": { - "$ref": "#/definitions/io.k8s.api.core.v1.Volume", - "description": "Deprecated. Please use io.k8s.api.core.v1.Volume instead." - }, - "io.k8s.kubernetes.pkg.api.v1.VolumeMount": { - "$ref": "#/definitions/io.k8s.api.core.v1.VolumeMount", - "description": "Deprecated. Please use io.k8s.api.core.v1.VolumeMount instead." - }, - "io.k8s.kubernetes.pkg.api.v1.VolumeProjection": { - "$ref": "#/definitions/io.k8s.api.core.v1.VolumeProjection", - "description": "Deprecated. Please use io.k8s.api.core.v1.VolumeProjection instead." - }, - "io.k8s.kubernetes.pkg.api.v1.VsphereVirtualDiskVolumeSource": { - "$ref": "#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource", - "description": "Deprecated. Please use io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource instead." - }, - "io.k8s.kubernetes.pkg.api.v1.WeightedPodAffinityTerm": { - "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm", - "description": "Deprecated. Please use io.k8s.api.core.v1.WeightedPodAffinityTerm instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevision": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.ControllerRevision instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevisionList": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ControllerRevisionList", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.ControllerRevisionList instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.Deployment": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.Deployment", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.Deployment instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentCondition": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentCondition", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentCondition instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentList": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentList", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentList instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentRollback": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentRollback", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentRollback instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentSpec": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentSpec", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentStatus": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentStatus", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentStrategy": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentStrategy", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentStrategy instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollbackConfig": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollbackConfig", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.RollbackConfig instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollingUpdateDeployment": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateDeployment", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.RollingUpdateDeployment instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollingUpdateStatefulSetStrategy": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.Scale": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.Scale", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.Scale instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.ScaleSpec": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ScaleSpec", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.ScaleSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.ScaleStatus": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ScaleStatus", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.ScaleStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSet": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSet", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSet instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetList": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetList", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSetList instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetSpec": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetSpec", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSetSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetStatus": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetStatus", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSetStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetUpdateStrategy": { - "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy", - "description": "Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy instead." - }, - "io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReview": { - "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReview", - "description": "Deprecated. Please use io.k8s.api.authentication.v1.TokenReview instead." - }, - "io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReviewSpec": { - "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReviewSpec", - "description": "Deprecated. Please use io.k8s.api.authentication.v1.TokenReviewSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReviewStatus": { - "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReviewStatus", - "description": "Deprecated. Please use io.k8s.api.authentication.v1.TokenReviewStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.authentication.v1.UserInfo": { - "$ref": "#/definitions/io.k8s.api.authentication.v1.UserInfo", - "description": "Deprecated. Please use io.k8s.api.authentication.v1.UserInfo instead." - }, - "io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReview": { - "$ref": "#/definitions/io.k8s.api.authentication.v1beta1.TokenReview", - "description": "Deprecated. Please use io.k8s.api.authentication.v1beta1.TokenReview instead." - }, - "io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReviewSpec": { - "$ref": "#/definitions/io.k8s.api.authentication.v1beta1.TokenReviewSpec", - "description": "Deprecated. Please use io.k8s.api.authentication.v1beta1.TokenReviewSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReviewStatus": { - "$ref": "#/definitions/io.k8s.api.authentication.v1beta1.TokenReviewStatus", - "description": "Deprecated. Please use io.k8s.api.authentication.v1beta1.TokenReviewStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.authentication.v1beta1.UserInfo": { - "$ref": "#/definitions/io.k8s.api.authentication.v1beta1.UserInfo", - "description": "Deprecated. Please use io.k8s.api.authentication.v1beta1.UserInfo instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1.LocalSubjectAccessReview": { - "$ref": "#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview", - "description": "Deprecated. Please use io.k8s.api.authorization.v1.LocalSubjectAccessReview instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1.NonResourceAttributes": { - "$ref": "#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes", - "description": "Deprecated. Please use io.k8s.api.authorization.v1.NonResourceAttributes instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1.ResourceAttributes": { - "$ref": "#/definitions/io.k8s.api.authorization.v1.ResourceAttributes", - "description": "Deprecated. Please use io.k8s.api.authorization.v1.ResourceAttributes instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1.SelfSubjectAccessReview": { - "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview", - "description": "Deprecated. Please use io.k8s.api.authorization.v1.SelfSubjectAccessReview instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1.SelfSubjectAccessReviewSpec": { - "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec", - "description": "Deprecated. Please use io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReview": { - "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview", - "description": "Deprecated. Please use io.k8s.api.authorization.v1.SubjectAccessReview instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReviewSpec": { - "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec", - "description": "Deprecated. Please use io.k8s.api.authorization.v1.SubjectAccessReviewSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReviewStatus": { - "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus", - "description": "Deprecated. Please use io.k8s.api.authorization.v1.SubjectAccessReviewStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.LocalSubjectAccessReview": { - "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview", - "description": "Deprecated. Please use io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.NonResourceAttributes": { - "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.NonResourceAttributes", - "description": "Deprecated. Please use io.k8s.api.authorization.v1beta1.NonResourceAttributes instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.ResourceAttributes": { - "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.ResourceAttributes", - "description": "Deprecated. Please use io.k8s.api.authorization.v1beta1.ResourceAttributes instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SelfSubjectAccessReview": { - "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview", - "description": "Deprecated. Please use io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SelfSubjectAccessReviewSpec": { - "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec", - "description": "Deprecated. Please use io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReview": { - "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReview", - "description": "Deprecated. Please use io.k8s.api.authorization.v1beta1.SubjectAccessReview instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReviewSpec": { - "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec", - "description": "Deprecated. Please use io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReviewStatus": { - "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus", - "description": "Deprecated. Please use io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.CrossVersionObjectReference": { - "$ref": "#/definitions/io.k8s.api.autoscaling.v1.CrossVersionObjectReference", - "description": "Deprecated. Please use io.k8s.api.autoscaling.v1.CrossVersionObjectReference instead." - }, - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscaler": { - "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler", - "description": "Deprecated. Please use io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler instead." - }, - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerList": { - "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList", - "description": "Deprecated. Please use io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList instead." - }, - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerSpec": { - "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec", - "description": "Deprecated. Please use io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerStatus": { - "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus", - "description": "Deprecated. Please use io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.Scale": { - "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale", - "description": "Deprecated. Please use io.k8s.api.autoscaling.v1.Scale instead." - }, - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.ScaleSpec": { - "$ref": "#/definitions/io.k8s.api.autoscaling.v1.ScaleSpec", - "description": "Deprecated. Please use io.k8s.api.autoscaling.v1.ScaleSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.autoscaling.v1.ScaleStatus": { - "$ref": "#/definitions/io.k8s.api.autoscaling.v1.ScaleStatus", - "description": "Deprecated. Please use io.k8s.api.autoscaling.v1.ScaleStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v1.Job": { - "$ref": "#/definitions/io.k8s.api.batch.v1.Job", - "description": "Deprecated. Please use io.k8s.api.batch.v1.Job instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v1.JobCondition": { - "$ref": "#/definitions/io.k8s.api.batch.v1.JobCondition", - "description": "Deprecated. Please use io.k8s.api.batch.v1.JobCondition instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v1.JobList": { - "$ref": "#/definitions/io.k8s.api.batch.v1.JobList", - "description": "Deprecated. Please use io.k8s.api.batch.v1.JobList instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v1.JobSpec": { - "$ref": "#/definitions/io.k8s.api.batch.v1.JobSpec", - "description": "Deprecated. Please use io.k8s.api.batch.v1.JobSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v1.JobStatus": { - "$ref": "#/definitions/io.k8s.api.batch.v1.JobStatus", - "description": "Deprecated. Please use io.k8s.api.batch.v1.JobStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJob": { - "$ref": "#/definitions/io.k8s.api.batch.v2alpha1.CronJob", - "description": "Deprecated. Please use io.k8s.api.batch.v2alpha1.CronJob instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobList": { - "$ref": "#/definitions/io.k8s.api.batch.v2alpha1.CronJobList", - "description": "Deprecated. Please use io.k8s.api.batch.v2alpha1.CronJobList instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobSpec": { - "$ref": "#/definitions/io.k8s.api.batch.v2alpha1.CronJobSpec", - "description": "Deprecated. Please use io.k8s.api.batch.v2alpha1.CronJobSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobStatus": { - "$ref": "#/definitions/io.k8s.api.batch.v2alpha1.CronJobStatus", - "description": "Deprecated. Please use io.k8s.api.batch.v2alpha1.CronJobStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.batch.v2alpha1.JobTemplateSpec": { - "$ref": "#/definitions/io.k8s.api.batch.v2alpha1.JobTemplateSpec", - "description": "Deprecated. Please use io.k8s.api.batch.v2alpha1.JobTemplateSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequest": { - "$ref": "#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest", - "description": "Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequest instead." - }, - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestCondition": { - "$ref": "#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestCondition", - "description": "Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequestCondition instead." - }, - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestList": { - "$ref": "#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestList", - "description": "Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequestList instead." - }, - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestSpec": { - "$ref": "#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestSpec", - "description": "Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequestSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestStatus": { - "$ref": "#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestStatus", - "description": "Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequestStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSet": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSet instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetList": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetList", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSetList instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetSpec": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetSpec", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSetSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetStatus": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetStatus", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSetStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetUpdateStrategy": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Deployment": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.Deployment", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.Deployment instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentCondition": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DeploymentCondition", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentCondition instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentList": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DeploymentList", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentList instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentRollback": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DeploymentRollback", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentRollback instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentSpec": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DeploymentSpec", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentStatus": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DeploymentStatus", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentStrategy": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.DeploymentStrategy", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentStrategy instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.FSGroupStrategyOptions": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.FSGroupStrategyOptions", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.FSGroupStrategyOptions instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HTTPIngressPath": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.HTTPIngressPath", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.HTTPIngressPath instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HTTPIngressRuleValue": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HostPortRange": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.HostPortRange", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.HostPortRange instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IDRange": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.IDRange", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.IDRange instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Ingress": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.Ingress", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.Ingress instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressBackend": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.IngressBackend", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressBackend instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressList": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.IngressList", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressList instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressRule": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.IngressRule", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressRule instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressSpec": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.IngressSpec", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressStatus": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.IngressStatus", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressTLS": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.IngressTLS", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressTLS instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicy": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicy instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyIngressRule": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyList": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyList", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicyList instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyPeer": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyPeer", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicyPeer instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyPort": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyPort", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicyPort instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicySpec": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicySpec", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicySpec instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicy": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.PodSecurityPolicy instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicyList": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicyList", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.PodSecurityPolicyList instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicySpec": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicySpec", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.PodSecurityPolicySpec instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSet": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSet instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetCondition": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetCondition", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSetCondition instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetList": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetList", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSetList instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetSpec": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetSpec", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSetSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetStatus": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetStatus", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSetStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollbackConfig": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.RollbackConfig", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.RollbackConfig instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollingUpdateDaemonSet": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollingUpdateDeployment": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.RollingUpdateDeployment", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.RollingUpdateDeployment instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RunAsUserStrategyOptions": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.RunAsUserStrategyOptions", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.RunAsUserStrategyOptions instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.SELinuxStrategyOptions": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.SELinuxStrategyOptions", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.SELinuxStrategyOptions instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Scale": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.Scale", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.Scale instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ScaleSpec": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.ScaleSpec", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.ScaleSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ScaleStatus": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.ScaleStatus", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.ScaleStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.extensions.v1beta1.SupplementalGroupsStrategyOptions": { - "$ref": "#/definitions/io.k8s.api.extensions.v1beta1.SupplementalGroupsStrategyOptions", - "description": "Deprecated. Please use io.k8s.api.extensions.v1beta1.SupplementalGroupsStrategyOptions instead." - }, - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicy": { - "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy", - "description": "Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicy instead." - }, - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyIngressRule": { - "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyIngressRule", - "description": "Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicyIngressRule instead." - }, - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyList": { - "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyList", - "description": "Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicyList instead." - }, - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyPeer": { - "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyPeer", - "description": "Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicyPeer instead." - }, - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyPort": { - "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort", - "description": "Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicyPort instead." - }, - "io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicySpec": { - "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicySpec", - "description": "Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicySpec instead." - }, - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.Eviction": { - "$ref": "#/definitions/io.k8s.api.policy.v1beta1.Eviction", - "description": "Deprecated. Please use io.k8s.api.policy.v1beta1.Eviction instead." - }, - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudget": { - "$ref": "#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget", - "description": "Deprecated. Please use io.k8s.api.policy.v1beta1.PodDisruptionBudget instead." - }, - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetList": { - "$ref": "#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetList", - "description": "Deprecated. Please use io.k8s.api.policy.v1beta1.PodDisruptionBudgetList instead." - }, - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetSpec": { - "$ref": "#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec", - "description": "Deprecated. Please use io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetStatus": { - "$ref": "#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus", - "description": "Deprecated. Please use io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRole": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.ClusterRole instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleBinding": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.ClusterRoleBinding instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleBindingList": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBindingList", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.ClusterRoleBindingList instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleList": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleList", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.ClusterRoleList instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.PolicyRule": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.PolicyRule", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.PolicyRule instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.Role": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.Role", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.Role instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleBinding": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.RoleBinding instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleBindingList": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.RoleBindingList", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.RoleBindingList instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleList": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.RoleList", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.RoleList instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleRef": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.RoleRef", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.RoleRef instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.Subject": { - "$ref": "#/definitions/io.k8s.api.rbac.v1alpha1.Subject", - "description": "Deprecated. Please use io.k8s.api.rbac.v1alpha1.Subject instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRole": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.ClusterRole instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleBinding": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.ClusterRoleBinding instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleBindingList": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBindingList", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.ClusterRoleBindingList instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleList": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleList", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.ClusterRoleList instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.PolicyRule": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.PolicyRule", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.PolicyRule instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.Role": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.Role", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.Role instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleBinding": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.RoleBinding instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleBindingList": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.RoleBindingList", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.RoleBindingList instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleList": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.RoleList", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.RoleList instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleRef": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.RoleRef", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.RoleRef instead." - }, - "io.k8s.kubernetes.pkg.apis.rbac.v1beta1.Subject": { - "$ref": "#/definitions/io.k8s.api.rbac.v1beta1.Subject", - "description": "Deprecated. Please use io.k8s.api.rbac.v1beta1.Subject instead." - }, - "io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPreset": { - "$ref": "#/definitions/io.k8s.api.settings.v1alpha1.PodPreset", - "description": "Deprecated. Please use io.k8s.api.settings.v1alpha1.PodPreset instead." - }, - "io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPresetList": { - "$ref": "#/definitions/io.k8s.api.settings.v1alpha1.PodPresetList", - "description": "Deprecated. Please use io.k8s.api.settings.v1alpha1.PodPresetList instead." - }, - "io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPresetSpec": { - "$ref": "#/definitions/io.k8s.api.settings.v1alpha1.PodPresetSpec", - "description": "Deprecated. Please use io.k8s.api.settings.v1alpha1.PodPresetSpec instead." - }, - "io.k8s.kubernetes.pkg.apis.storage.v1.StorageClass": { - "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass", - "description": "Deprecated. Please use io.k8s.api.storage.v1.StorageClass instead." - }, - "io.k8s.kubernetes.pkg.apis.storage.v1.StorageClassList": { - "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClassList", - "description": "Deprecated. Please use io.k8s.api.storage.v1.StorageClassList instead." - }, - "io.k8s.kubernetes.pkg.apis.storage.v1beta1.StorageClass": { - "$ref": "#/definitions/io.k8s.api.storage.v1beta1.StorageClass", - "description": "Deprecated. Please use io.k8s.api.storage.v1beta1.StorageClass instead." - }, - "io.k8s.kubernetes.pkg.apis.storage.v1beta1.StorageClassList": { - "$ref": "#/definitions/io.k8s.api.storage.v1beta1.StorageClassList", - "description": "Deprecated. Please use io.k8s.api.storage.v1beta1.StorageClassList instead." } }, "info": { From 23478f104f6ea26f752f1aae71301b637d2935a5 Mon Sep 17 00:00:00 2001 From: Deep Debroy Date: Tue, 5 Feb 2019 15:30:52 -0800 Subject: [PATCH 12/31] PV Controller changes to support provisioning in CSI Migration scenarios Signed-off-by: Deep Debroy --- pkg/controller/volume/persistentvolume/BUILD | 1 + .../volume/persistentvolume/framework_test.go | 19 ++++++++++- .../volume/persistentvolume/provision_test.go | 11 +++++++ .../volume/persistentvolume/pv_controller.go | 32 +++++++++++++++++-- .../persistentvolume/pv_controller_base.go | 7 ++-- 5 files changed, 62 insertions(+), 8 deletions(-) diff --git a/pkg/controller/volume/persistentvolume/BUILD b/pkg/controller/volume/persistentvolume/BUILD index 6f46984a64..e5cec16efd 100644 --- a/pkg/controller/volume/persistentvolume/BUILD +++ b/pkg/controller/volume/persistentvolume/BUILD @@ -61,6 +61,7 @@ go_library( "//staging/src/k8s.io/cloud-provider:go_default_library", "//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library", "//staging/src/k8s.io/csi-api/pkg/client/clientset/versioned:go_default_library", + "//staging/src/k8s.io/csi-translation-lib:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/k8s.io/klog:go_default_library", ], diff --git a/pkg/controller/volume/persistentvolume/framework_test.go b/pkg/controller/volume/persistentvolume/framework_test.go index f2f4ea2624..0092ca229c 100644 --- a/pkg/controller/volume/persistentvolume/framework_test.go +++ b/pkg/controller/volume/persistentvolume/framework_test.go @@ -988,6 +988,22 @@ func wrapTestWithProvisionCalls(expectedProvisionCalls []provisionCall, toWrap t return wrapTestWithPluginCalls(nil, nil, expectedProvisionCalls, toWrap) } +// wrapTestWithCSIMigrationProvisionCalls returns a testCall that: +// - configures controller with a volume plugin that emulates CSI migration +// - calls given testCall +func wrapTestWithCSIMigrationProvisionCalls(toWrap testCall) testCall { + return func(ctrl *PersistentVolumeController, reactor *volumeReactor, test controllerTest) error { + plugin := &mockVolumePlugin{ + isMigratedToCSI: true, + } + ctrl.volumePluginMgr.InitPlugins([]vol.VolumePlugin{plugin}, nil /* prober */, ctrl) + ctrl.csiNameFromIntreeNameHook = func(string) (string, error) { + return "vendor.com/MockCSIPlugin", nil + } + return toWrap(ctrl, reactor, test) + } +} + // wrapTestWithInjectedOperation returns a testCall that: // - starts the controller and lets it run original testCall until // scheduleOperation() call. It blocks the controller there and calls the @@ -1229,6 +1245,7 @@ type mockVolumePlugin struct { deleteCallCounter int recycleCalls []error recycleCallCounter int + isMigratedToCSI bool provisionOptions vol.VolumeOptions } @@ -1259,7 +1276,7 @@ func (plugin *mockVolumePlugin) CanSupport(spec *vol.Spec) bool { } func (plugin *mockVolumePlugin) IsMigratedToCSI() bool { - return false + return plugin.isMigratedToCSI } func (plugin *mockVolumePlugin) RequiresRemount() bool { diff --git a/pkg/controller/volume/persistentvolume/provision_test.go b/pkg/controller/volume/persistentvolume/provision_test.go index 879e72dd50..0ea0f272a7 100644 --- a/pkg/controller/volume/persistentvolume/provision_test.go +++ b/pkg/controller/volume/persistentvolume/provision_test.go @@ -421,6 +421,17 @@ func TestProvisionSync(t *testing.T) { []string{"Warning ProvisioningFailed Mount options"}, noerrors, wrapTestWithProvisionCalls([]provisionCall{}, testSyncClaim), }, + { + // No provisioning due to CSI migration + normal event with external provisioner + "11-21 - external provisioner for CSI migration", + novolumes, + novolumes, + newClaimArray("claim11-21", "uid11-21", "1Gi", "", v1.ClaimPending, &classGold), + claimWithAnnotation(annStorageProvisioner, "vendor.com/MockCSIPlugin", + newClaimArray("claim11-21", "uid11-21", "1Gi", "", v1.ClaimPending, &classGold)), + []string{"Normal ExternalProvisioning"}, + noerrors, wrapTestWithCSIMigrationProvisionCalls(testSyncClaim), + }, } runSyncTests(t, tests, storageClasses, []*v1.Pod{}) } diff --git a/pkg/controller/volume/persistentvolume/pv_controller.go b/pkg/controller/volume/persistentvolume/pv_controller.go index 5a3151b3e6..d52942dd6a 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller.go +++ b/pkg/controller/volume/persistentvolume/pv_controller.go @@ -39,6 +39,7 @@ import ( "k8s.io/client-go/util/workqueue" cloudprovider "k8s.io/cloud-provider" volerr "k8s.io/cloud-provider/volume/errors" + csitranslation "k8s.io/csi-translation-lib" v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" "k8s.io/kubernetes/pkg/controller/volume/events" "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics" @@ -230,6 +231,10 @@ type PersistentVolumeController struct { createProvisionedPVRetryCount int createProvisionedPVInterval time.Duration + + // For testing only: hook to intercept CSI driver name <=> Intree plugin name mapping + // Not used when set to nil + csiNameFromIntreeNameHook func(pluginName string) (string, error) } // syncClaim is the main controller method to decide what to do with a claim. @@ -1346,6 +1351,13 @@ func (ctrl *PersistentVolumeController) provisionClaim(claim *v1.PersistentVolum return nil } +func (ctrl *PersistentVolumeController) getCSINameFromIntreeName(pluginName string) (string, error) { + if ctrl.csiNameFromIntreeNameHook != nil { + return ctrl.csiNameFromIntreeNameHook(pluginName) + } + return csitranslation.GetCSINameFromIntreeName(pluginName) +} + // provisionClaimOperation provisions a volume. This method is running in // standalone goroutine and already has all necessary locks. func (ctrl *PersistentVolumeController) provisionClaimOperation(claim *v1.PersistentVolumeClaim) (string, error) { @@ -1362,12 +1374,26 @@ func (ctrl *PersistentVolumeController) provisionClaimOperation(claim *v1.Persis } var pluginName string + provisionerName := storageClass.Provisioner if plugin != nil { - pluginName = plugin.GetPluginName() + if plugin.IsMigratedToCSI() { + // pluginName is not set here to align with existing behavior + // of not setting pluginName for external provisioners (including CSI) + // Set provisionerName to CSI plugin name for setClaimProvisioner + provisionerName, err = ctrl.getCSINameFromIntreeName(storageClass.Provisioner) + if err != nil { + strerr := fmt.Sprintf("error getting CSI name for In tree plugin %s: %v", storageClass.Provisioner, err) + klog.V(2).Infof("%s", strerr) + ctrl.eventRecorder.Event(claim, v1.EventTypeWarning, events.ProvisioningFailed, strerr) + return "", err + } + } else { + pluginName = plugin.GetPluginName() + } } // Add provisioner annotation so external provisioners know when to start - newClaim, err := ctrl.setClaimProvisioner(claim, storageClass) + newClaim, err := ctrl.setClaimProvisioner(claim, provisionerName) if err != nil { // Save failed, the controller will retry in the next sync klog.V(2).Infof("error saving claim %s: %v", claimToClaimKey(claim), err) @@ -1375,7 +1401,7 @@ func (ctrl *PersistentVolumeController) provisionClaimOperation(claim *v1.Persis } claim = newClaim - if plugin == nil { + if plugin == nil || plugin.IsMigratedToCSI() { // findProvisionablePlugin returned no error nor plugin. // This means that an unknown provisioner is requested. Report an event // and wait for the external provisioner diff --git a/pkg/controller/volume/persistentvolume/pv_controller_base.go b/pkg/controller/volume/persistentvolume/pv_controller_base.go index 51f84d6190..c267578926 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller_base.go +++ b/pkg/controller/volume/persistentvolume/pv_controller_base.go @@ -22,7 +22,6 @@ import ( "time" "k8s.io/api/core/v1" - storage "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -428,8 +427,8 @@ func (ctrl *PersistentVolumeController) resync() { // setClaimProvisioner saves // claim.Annotations[annStorageProvisioner] = class.Provisioner -func (ctrl *PersistentVolumeController) setClaimProvisioner(claim *v1.PersistentVolumeClaim, class *storage.StorageClass) (*v1.PersistentVolumeClaim, error) { - if val, ok := claim.Annotations[annStorageProvisioner]; ok && val == class.Provisioner { +func (ctrl *PersistentVolumeController) setClaimProvisioner(claim *v1.PersistentVolumeClaim, provisionerName string) (*v1.PersistentVolumeClaim, error) { + if val, ok := claim.Annotations[annStorageProvisioner]; ok && val == provisionerName { // annotation is already set, nothing to do return claim, nil } @@ -437,7 +436,7 @@ func (ctrl *PersistentVolumeController) setClaimProvisioner(claim *v1.Persistent // The volume from method args can be pointing to watcher cache. We must not // modify these, therefore create a copy. claimClone := claim.DeepCopy() - metav1.SetMetaDataAnnotation(&claimClone.ObjectMeta, annStorageProvisioner, class.Provisioner) + metav1.SetMetaDataAnnotation(&claimClone.ObjectMeta, annStorageProvisioner, provisionerName) newClaim, err := ctrl.kubeClient.CoreV1().PersistentVolumeClaims(claim.Namespace).Update(claimClone) if err != nil { return newClaim, err From de1e1ad045ce32c1aaea6533fc6726c209a334b4 Mon Sep 17 00:00:00 2001 From: Claudiu Belu Date: Tue, 26 Feb 2019 13:47:45 -0800 Subject: [PATCH 13/31] tests: Adds configurable registry for etcd image The image ``quay.io/coreos/etcd:v3.3.10`` does not have Windows support and Windows Containers cannot be spawned using it. Makes the etcd image's registry configurable, so the tests can be configured to use a registry which has Windows support. --- test/e2e/apimachinery/aggregator.go | 2 +- test/utils/image/manifest.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/test/e2e/apimachinery/aggregator.go b/test/e2e/apimachinery/aggregator.go index 1f1cbca031..b6e92cb021 100644 --- a/test/e2e/apimachinery/aggregator.go +++ b/test/e2e/apimachinery/aggregator.go @@ -180,7 +180,7 @@ func TestSampleAPIServer(f *framework.Framework, image string) { // kubectl create -f deploy.yaml deploymentName := "sample-apiserver-deployment" - etcdImage := "quay.io/coreos/etcd:v3.3.10" + etcdImage := imageutils.GetE2EImage(imageutils.Etcd) podLabels := map[string]string{"app": "sample-apiserver", "apiserver": "true"} replicas := int32(1) zero := int64(0) diff --git a/test/utils/image/manifest.go b/test/utils/image/manifest.go index a4ac5dfcd3..a01912f321 100644 --- a/test/utils/image/manifest.go +++ b/test/utils/image/manifest.go @@ -28,6 +28,7 @@ import ( type RegistryList struct { DockerLibraryRegistry string `yaml:"dockerLibraryRegistry"` E2eRegistry string `yaml:"e2eRegistry"` + EtcdRegistry string `yaml:"etcdRegistry"` GcRegistry string `yaml:"gcRegistry"` PrivateRegistry string `yaml:"privateRegistry"` SampleRegistry string `yaml:"sampleRegistry"` @@ -59,6 +60,7 @@ func initReg() RegistryList { registry := RegistryList{ DockerLibraryRegistry: "docker.io/library", E2eRegistry: "gcr.io/kubernetes-e2e-test-images", + EtcdRegistry: "quay.io/coreos", GcRegistry: "k8s.gcr.io", PrivateRegistry: "gcr.io/k8s-authenticated-test", SampleRegistry: "gcr.io/google-samples", @@ -84,6 +86,7 @@ var ( registry = initReg() dockerLibraryRegistry = registry.DockerLibraryRegistry e2eRegistry = registry.E2eRegistry + etcdRegistry = registry.EtcdRegistry gcRegistry = registry.GcRegistry // PrivateRegistry is an image repository that requires authentication PrivateRegistry = registry.PrivateRegistry @@ -103,6 +106,7 @@ var ( Dnsutils = Config{e2eRegistry, "dnsutils", "1.1"} EchoServer = Config{e2eRegistry, "echoserver", "2.2"} EntrypointTester = Config{e2eRegistry, "entrypoint-tester", "1.0"} + Etcd = Config{etcdRegistry, "etcd", "v3.3.10"} Fakegitserver = Config{e2eRegistry, "fakegitserver", "1.0"} GBFrontend = Config{sampleRegistry, "gb-frontend", "v6"} GBRedisSlave = Config{sampleRegistry, "gb-redisslave", "v3"} From cf171f43eb51ac39214b89ca56e4bda5b71a9803 Mon Sep 17 00:00:00 2001 From: "Johannes M. Scheuermann" Date: Wed, 27 Feb 2019 11:02:03 +0100 Subject: [PATCH 14/31] Add bash dependency to redis e2e image --- test/images/pets/redis-installer/Dockerfile | 4 ++-- test/images/pets/redis-installer/VERSION | 2 +- test/images/pets/redis-installer/install.sh | 2 +- test/images/pets/zookeeper-installer/Dockerfile | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/images/pets/redis-installer/Dockerfile b/test/images/pets/redis-installer/Dockerfile index 0038c6bab1..6e3b681ea2 100644 --- a/test/images/pets/redis-installer/Dockerfile +++ b/test/images/pets/redis-installer/Dockerfile @@ -19,7 +19,7 @@ FROM BASEIMAGE CROSS_BUILD_COPY qemu-QEMUARCH-static /usr/bin/ # TODO: just use standard redis when there is one for 3.2.0. -RUN clean-install wget make gcc libc-dev +RUN clean-install wget make gcc libc-dev bash # See README.md RUN wget -qO /redis-3.2.0.tar.gz http://download.redis.io/releases/redis-3.2.0.tar.gz && \ @@ -37,4 +37,4 @@ ADD on-start.sh / COPY peer-finder / ADD install.sh / RUN chmod -c 755 /install.sh /on-start.sh /peer-finder -Entrypoint ["/install.sh"] +ENTRYPOINT ["/install.sh"] diff --git a/test/images/pets/redis-installer/VERSION b/test/images/pets/redis-installer/VERSION index 5625e59da8..7e32cd5698 100644 --- a/test/images/pets/redis-installer/VERSION +++ b/test/images/pets/redis-installer/VERSION @@ -1 +1 @@ -1.2 +1.3 diff --git a/test/images/pets/redis-installer/install.sh b/test/images/pets/redis-installer/install.sh index 8b22703b8d..e283cc7769 100755 --- a/test/images/pets/redis-installer/install.sh +++ b/test/images/pets/redis-installer/install.sh @@ -1,4 +1,4 @@ -#! /bin/bash +#!/bin/bash # Copyright 2016 The Kubernetes Authors. # diff --git a/test/images/pets/zookeeper-installer/Dockerfile b/test/images/pets/zookeeper-installer/Dockerfile index 579862ee71..e29a8def31 100644 --- a/test/images/pets/zookeeper-installer/Dockerfile +++ b/test/images/pets/zookeeper-installer/Dockerfile @@ -30,4 +30,4 @@ RUN wget -q -O /zookeeper-3.5.0-alpha.tar.gz http://archive.apache.org/dist/zook ADD install.sh / RUN chmod -c 755 /install.sh /on-start.sh /peer-finder -Entrypoint ["/install.sh"] +ENTRYPOINT ["/install.sh"] From c5155f81a009744afb976af23820b6bd898922db Mon Sep 17 00:00:00 2001 From: Masaki Kimura Date: Mon, 25 Feb 2019 23:55:38 +0000 Subject: [PATCH 15/31] Fix resource leaking PDs for volume mode test fixes #74380 --- test/e2e/storage/testsuites/base.go | 14 ++++++--- test/e2e/storage/testsuites/volumemode.go | 38 +++++++---------------- 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/test/e2e/storage/testsuites/base.go b/test/e2e/storage/testsuites/base.go index 85dd8347c6..9cd5dd499b 100644 --- a/test/e2e/storage/testsuites/base.go +++ b/test/e2e/storage/testsuites/base.go @@ -232,14 +232,18 @@ func (r *genericVolumeTestResource) cleanupResource() { case testpatterns.DynamicPV: By("Deleting pvc") // We only delete the PVC so that PV (and disk) can be cleaned up by dynamic provisioner - if r.pv.Spec.PersistentVolumeReclaimPolicy != v1.PersistentVolumeReclaimDelete { + if r.pv != nil && r.pv.Spec.PersistentVolumeReclaimPolicy != v1.PersistentVolumeReclaimDelete { framework.Failf("Test framework does not currently support Dynamically Provisioned Persistent Volume %v specified with reclaim policy that isnt %v", r.pv.Name, v1.PersistentVolumeReclaimDelete) } - err := framework.DeletePersistentVolumeClaim(f.ClientSet, r.pvc.Name, f.Namespace.Name) - framework.ExpectNoError(err, "Failed to delete PVC %v", r.pvc.Name) - err = framework.WaitForPersistentVolumeDeleted(f.ClientSet, r.pv.Name, 5*time.Second, 5*time.Minute) - framework.ExpectNoError(err, "Persistent Volume %v not deleted by dynamic provisioner", r.pv.Name) + if r.pvc != nil { + err := framework.DeletePersistentVolumeClaim(f.ClientSet, r.pvc.Name, f.Namespace.Name) + framework.ExpectNoError(err, "Failed to delete PVC %v", r.pvc.Name) + if r.pv != nil { + err = framework.WaitForPersistentVolumeDeleted(f.ClientSet, r.pv.Name, 5*time.Second, 5*time.Minute) + framework.ExpectNoError(err, "Persistent Volume %v not deleted by dynamic provisioner", r.pv.Name) + } + } default: framework.Failf("Found PVC (%v) or PV (%v) but not running Preprovisioned or Dynamic test pattern", r.pvc, r.pv) } diff --git a/test/e2e/storage/testsuites/volumemode.go b/test/e2e/storage/testsuites/volumemode.go index b90fddb9b4..a9893edf35 100644 --- a/test/e2e/storage/testsuites/volumemode.go +++ b/test/e2e/storage/testsuites/volumemode.go @@ -25,7 +25,6 @@ import ( "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - utilerrors "k8s.io/apimachinery/pkg/util/errors" clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/storage/testpatterns" @@ -67,12 +66,10 @@ func (t *volumeModeTestSuite) defineTests(driver TestDriver, pattern testpattern config *PerTestConfig testCleanup func() - cs clientset.Interface - ns *v1.Namespace - sc *storagev1.StorageClass - pvc *v1.PersistentVolumeClaim - pv *v1.PersistentVolume - volume TestVolume + cs clientset.Interface + ns *v1.Namespace + // genericVolumeTestResource contains pv, pvc, sc, etc., owns cleaning that up + genericVolumeTestResource } var ( dInfo = driver.GetDriverInfo() @@ -104,6 +101,12 @@ func (t *volumeModeTestSuite) defineTests(driver TestDriver, pattern testpattern volumeNodeAffinity *v1.VolumeNodeAffinity ) + l.genericVolumeTestResource = genericVolumeTestResource{ + driver: driver, + config: l.config, + pattern: pattern, + } + // Create volume for pre-provisioned volume tests l.volume = CreateVolume(driver, l.config, pattern.VolType) @@ -144,26 +147,7 @@ func (t *volumeModeTestSuite) defineTests(driver TestDriver, pattern testpattern } cleanup := func() { - if l.pv != nil || l.pvc != nil { - By("Deleting pv and pvc") - errs := framework.PVPVCCleanup(f.ClientSet, f.Namespace.Name, l.pv, l.pvc) - if len(errs) > 0 { - framework.Logf("Failed to delete PV and/or PVC: %v", utilerrors.NewAggregate(errs)) - } - l.pv = nil - l.pvc = nil - } - - if l.sc != nil { - By("Deleting sc") - deleteStorageClass(f.ClientSet, l.sc.Name) - l.sc = nil - } - - if l.volume != nil { - l.volume.DeleteVolume() - l.volume = nil - } + l.cleanupResource() if l.testCleanup != nil { l.testCleanup() From 62c32fd04425966d960763abe4df8cfabfe19339 Mon Sep 17 00:00:00 2001 From: David Eads Date: Mon, 25 Feb 2019 14:06:06 -0500 Subject: [PATCH 16/31] CRD server wait for CRDs to sync before reporting healthy --- .../apiextensions-apiserver/pkg/apiserver/apiserver.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go index 291dbd74e4..1ba74a1933 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go @@ -37,6 +37,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/version" "k8s.io/apiserver/pkg/endpoints/discovery" genericregistry "k8s.io/apiserver/pkg/registry/generic" @@ -209,6 +210,14 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) go finalizingController.Run(5, context.StopCh) return nil }) + // we don't want to report healthy until we can handle all CRDs that have already been registered. Waiting for the informer + // to sync makes sure that the lister will be valid before we begin. There may still be races for CRDs added after startup, + // but we won't go healthy until we can handle the ones already present. + s.GenericAPIServer.AddPostStartHookOrDie("crd-informer-synced", func(context genericapiserver.PostStartHookContext) error { + return wait.PollImmediateUntil(100*time.Millisecond, func() (bool, error) { + return s.Informers.Apiextensions().InternalVersion().CustomResourceDefinitions().Informer().HasSynced(), nil + }, context.StopCh) + }) return s, nil } From 471679f8d288f4151d113b365244eba56ae5a1e4 Mon Sep 17 00:00:00 2001 From: wangqingcan Date: Thu, 28 Feb 2019 07:23:27 +0800 Subject: [PATCH 17/31] fix the flake in scheduling_queue_test --- pkg/scheduler/internal/queue/BUILD | 1 + .../internal/queue/scheduling_queue_test.go | 22 +++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/pkg/scheduler/internal/queue/BUILD b/pkg/scheduler/internal/queue/BUILD index ea7b66fe3f..6a6adbffe1 100644 --- a/pkg/scheduler/internal/queue/BUILD +++ b/pkg/scheduler/internal/queue/BUILD @@ -29,6 +29,7 @@ go_test( "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", ], ) diff --git a/pkg/scheduler/internal/queue/scheduling_queue_test.go b/pkg/scheduler/internal/queue/scheduling_queue_test.go index 9f7599c86f..0fcd5610b7 100644 --- a/pkg/scheduler/internal/queue/scheduling_queue_test.go +++ b/pkg/scheduler/internal/queue/scheduling_queue_test.go @@ -26,6 +26,7 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/clock" podutil "k8s.io/kubernetes/pkg/api/v1/pod" "k8s.io/kubernetes/pkg/scheduler/util" ) @@ -98,7 +99,7 @@ var highPriorityPod, highPriNominatedPod, medPriorityPod, unschedulablePod = v1. func addOrUpdateUnschedulablePod(p *PriorityQueue, pod *v1.Pod) { p.lock.Lock() defer p.lock.Unlock() - p.unschedulableQ.addOrUpdate(newPodInfoNoTimestamp(pod)) + p.unschedulableQ.addOrUpdate(p.newPodInfo(pod)) } func getUnschedulablePod(p *PriorityQueue, pod *v1.Pod) *v1.Pod { @@ -983,8 +984,8 @@ func TestHighProirotyFlushUnschedulableQLeftover(t *testing.T) { Message: "fake scheduling failure", }) - q.unschedulableQ.addOrUpdate(newPodInfoNoTimestamp(&highPod)) - q.unschedulableQ.addOrUpdate(newPodInfoNoTimestamp(&midPod)) + addOrUpdateUnschedulablePod(q, &highPod) + addOrUpdateUnschedulablePod(q, &midPod) q.unschedulableQ.podInfoMap[util.GetPodFullName(&highPod)].timestamp = time.Now().Add(-1 * unschedulableQTimeInterval) q.unschedulableQ.podInfoMap[util.GetPodFullName(&midPod)].timestamp = time.Now().Add(-1 * unschedulableQTimeInterval) @@ -1020,13 +1021,14 @@ func TestPodTimestamp(t *testing.T) { }, } + var timestamp = time.Now() pInfo1 := &podInfo{ pod: pod1, - timestamp: util.RealClock{}.Now(), + timestamp: timestamp, } pInfo2 := &podInfo{ pod: pod2, - timestamp: util.RealClock{}.Now().Add(1 * time.Second), + timestamp: timestamp.Add(time.Second), } var queue *PriorityQueue @@ -1071,8 +1073,14 @@ func TestPodTimestamp(t *testing.T) { queue.MoveAllToActiveQueue() } } + backoffPod := func(pInfo *podInfo) operation { + return func() { + queue.backoffPod(pInfo.pod) + } + } flushBackoffQ := func() operation { return func() { + queue.clock.(*clock.FakeClock).Step(2 * time.Second) queue.flushBackoffQCompleted() } } @@ -1105,7 +1113,7 @@ func TestPodTimestamp(t *testing.T) { { name: "add one pod to BackoffQ and move it to activeQ", operations: []operation{ - addPodActiveQ(pInfo2), addPodBackoffQ(pInfo1), flushBackoffQ(), moveAllToActiveQ(), + addPodActiveQ(pInfo2), addPodBackoffQ(pInfo1), backoffPod(pInfo1), flushBackoffQ(), moveAllToActiveQ(), }, expected: []*podInfo{pInfo1, pInfo2}, }, @@ -1113,7 +1121,7 @@ func TestPodTimestamp(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - queue = NewPriorityQueue(nil) + queue = NewPriorityQueueWithClock(nil, clock.NewFakeClock(timestamp)) var podInfoList []*podInfo for _, op := range test.operations { From 3f8eda37ce6345c35223b5c163e82d8a8c0ab51c Mon Sep 17 00:00:00 2001 From: Lu Fengqi Date: Tue, 26 Feb 2019 17:52:03 +0800 Subject: [PATCH 18/31] cri_stats_provider: overload nil as 0 for exited containers stats Always report 0 cpu/memory usage for exited containers to make metrics-server work as expect. Signed-off-by: Lu Fengqi --- pkg/kubelet/stats/cri_stats_provider.go | 15 ++++++ pkg/kubelet/stats/cri_stats_provider_test.go | 56 +++++++++++++++++--- pkg/kubelet/stats/helper.go | 4 ++ 3 files changed, 67 insertions(+), 8 deletions(-) diff --git a/pkg/kubelet/stats/cri_stats_provider.go b/pkg/kubelet/stats/cri_stats_provider.go index c2657d9b6a..3e08609db4 100644 --- a/pkg/kubelet/stats/cri_stats_provider.go +++ b/pkg/kubelet/stats/cri_stats_provider.go @@ -455,12 +455,19 @@ func (p *criStatsProvider) makeContainerStats( if usageNanoCores != nil { result.CPU.UsageNanoCores = usageNanoCores } + } else { + result.CPU.Time = metav1.NewTime(time.Unix(0, time.Now().UnixNano())) + result.CPU.UsageCoreNanoSeconds = Uint64Ptr(0) + result.CPU.UsageNanoCores = Uint64Ptr(0) } if stats.Memory != nil { result.Memory.Time = metav1.NewTime(time.Unix(0, stats.Memory.Timestamp)) if stats.Memory.WorkingSetBytes != nil { result.Memory.WorkingSetBytes = &stats.Memory.WorkingSetBytes.Value } + } else { + result.Memory.Time = metav1.NewTime(time.Unix(0, time.Now().UnixNano())) + result.Memory.WorkingSetBytes = Uint64Ptr(0) } if stats.WritableLayer != nil { result.Rootfs.Time = metav1.NewTime(time.Unix(0, stats.WritableLayer.Timestamp)) @@ -516,13 +523,21 @@ func (p *criStatsProvider) makeContainerCPUAndMemoryStats( if usageNanoCores != nil { result.CPU.UsageNanoCores = usageNanoCores } + } else { + result.CPU.Time = metav1.NewTime(time.Unix(0, time.Now().UnixNano())) + result.CPU.UsageCoreNanoSeconds = Uint64Ptr(0) + result.CPU.UsageNanoCores = Uint64Ptr(0) } if stats.Memory != nil { result.Memory.Time = metav1.NewTime(time.Unix(0, stats.Memory.Timestamp)) if stats.Memory.WorkingSetBytes != nil { result.Memory.WorkingSetBytes = &stats.Memory.WorkingSetBytes.Value } + } else { + result.Memory.Time = metav1.NewTime(time.Unix(0, time.Now().UnixNano())) + result.Memory.WorkingSetBytes = Uint64Ptr(0) } + return result } diff --git a/pkg/kubelet/stats/cri_stats_provider_test.go b/pkg/kubelet/stats/cri_stats_provider_test.go index f420f37905..2c4de8e93f 100644 --- a/pkg/kubelet/stats/cri_stats_provider_test.go +++ b/pkg/kubelet/stats/cri_stats_provider_test.go @@ -57,12 +57,15 @@ const ( seedContainer2 = 5000 seedSandbox2 = 6000 seedContainer3 = 7000 + seedSandbox3 = 8000 + seedContainer5 = 9000 ) const ( pName0 = "pod0" pName1 = "pod1" pName2 = "pod2" + pName3 = "pod3" ) const ( @@ -70,6 +73,7 @@ const ( cName1 = "container1-name" cName2 = "container2-name" cName3 = "container3-name" + cName5 = "container5-name" ) func TestCRIListPodStats(t *testing.T) { @@ -101,6 +105,11 @@ func TestCRIListPodStats(t *testing.T) { container4 = makeFakeContainer(sandbox2, cName3, 1, false) containerStats4 = makeFakeContainerStats(container4, imageFsMountpoint) containerLogStats4 = makeFakeLogStats(4000) + + sandbox3 = makeFakePodSandbox("sandbox3-name", "sandbox3-uid", "sandbox3-ns") + container5 = makeFakeContainer(sandbox3, cName5, 0, true) + containerStats5 = makeFakeContainerStats(container5, imageFsMountpoint) + containerLogStats5 = makeFakeLogStats(5000) ) var ( @@ -140,13 +149,13 @@ func TestCRIListPodStats(t *testing.T) { On("GetDirFsInfo", imageFsMountpoint).Return(imageFsInfo, nil). On("GetDirFsInfo", unknownMountpoint).Return(cadvisorapiv2.FsInfo{}, cadvisorfs.ErrNoSuchDevice) fakeRuntimeService.SetFakeSandboxes([]*critest.FakePodSandbox{ - sandbox0, sandbox1, sandbox2, + sandbox0, sandbox1, sandbox2, sandbox3, }) fakeRuntimeService.SetFakeContainers([]*critest.FakeContainer{ - container0, container1, container2, container3, container4, + container0, container1, container2, container3, container4, container5, }) fakeRuntimeService.SetFakeContainerStats([]*runtimeapi.ContainerStats{ - containerStats0, containerStats1, containerStats2, containerStats3, containerStats4, + containerStats0, containerStats1, containerStats2, containerStats3, containerStats4, containerStats5, }) ephemeralVolumes := makeFakeVolumeStats([]string{"ephVolume1, ephVolumes2"}) @@ -161,6 +170,7 @@ func TestCRIListPodStats(t *testing.T) { kuberuntime.BuildContainerLogsDirectory(types.UID("sandbox0-uid"), cName1): containerLogStats1, kuberuntime.BuildContainerLogsDirectory(types.UID("sandbox1-uid"), cName2): containerLogStats2, kuberuntime.BuildContainerLogsDirectory(types.UID("sandbox2-uid"), cName3): containerLogStats4, + kuberuntime.BuildContainerLogsDirectory(types.UID("sandbox3-uid"), cName5): containerLogStats5, } fakeLogStatsProvider := NewFakeLogMetricsService(fakeLogStats) @@ -177,7 +187,7 @@ func TestCRIListPodStats(t *testing.T) { stats, err := provider.ListPodStats() assert := assert.New(t) assert.NoError(err) - assert.Equal(3, len(stats)) + assert.Equal(4, len(stats)) podStatsMap := make(map[statsapi.PodReference]statsapi.PodStats) for _, s := range stats { @@ -239,6 +249,19 @@ func TestCRIListPodStats(t *testing.T) { checkCRINetworkStats(assert, p2.Network, infos[sandbox2.PodSandboxStatus.Id].Stats[0].Network) checkCRIPodCPUAndMemoryStats(assert, p2, infos[sandbox2Cgroup].Stats[0]) + p3 := podStatsMap[statsapi.PodReference{Name: "sandbox3-name", UID: "sandbox3-uid", Namespace: "sandbox3-ns"}] + assert.Equal(sandbox3.CreatedAt, p3.StartTime.UnixNano()) + assert.Equal(1, len(p3.Containers)) + + c5 := p3.Containers[0] + assert.Equal(cName5, c5.Name) + assert.Equal(container5.CreatedAt, c5.StartTime.UnixNano()) + assert.NotNil(c5.CPU.Time) + assert.Zero(*c5.CPU.UsageCoreNanoSeconds) + assert.Zero(*c5.CPU.UsageNanoCores) + assert.NotNil(c5.Memory.Time) + assert.Zero(*c5.Memory.WorkingSetBytes) + mockCadvisor.AssertExpectations(t) } @@ -266,6 +289,10 @@ func TestCRIListPodCPUAndMemoryStats(t *testing.T) { containerStats3 = makeFakeContainerStats(container3, imageFsMountpoint) container4 = makeFakeContainer(sandbox2, cName3, 1, false) containerStats4 = makeFakeContainerStats(container4, imageFsMountpoint) + + sandbox3 = makeFakePodSandbox("sandbox3-name", "sandbox3-uid", "sandbox3-ns") + container5 = makeFakeContainer(sandbox3, cName5, 0, true) + containerStats5 = makeFakeContainerStats(container5, imageFsMountpoint) ) var ( @@ -301,13 +328,13 @@ func TestCRIListPodCPUAndMemoryStats(t *testing.T) { mockCadvisor. On("ContainerInfoV2", "/", options).Return(infos, nil) fakeRuntimeService.SetFakeSandboxes([]*critest.FakePodSandbox{ - sandbox0, sandbox1, sandbox2, + sandbox0, sandbox1, sandbox2, sandbox3, }) fakeRuntimeService.SetFakeContainers([]*critest.FakeContainer{ - container0, container1, container2, container3, container4, + container0, container1, container2, container3, container4, container5, }) fakeRuntimeService.SetFakeContainerStats([]*runtimeapi.ContainerStats{ - containerStats0, containerStats1, containerStats2, containerStats3, containerStats4, + containerStats0, containerStats1, containerStats2, containerStats3, containerStats4, containerStats5, }) ephemeralVolumes := makeFakeVolumeStats([]string{"ephVolume1, ephVolumes2"}) @@ -330,7 +357,7 @@ func TestCRIListPodCPUAndMemoryStats(t *testing.T) { stats, err := provider.ListPodCPUAndMemoryStats() assert := assert.New(t) assert.NoError(err) - assert.Equal(3, len(stats)) + assert.Equal(4, len(stats)) podStatsMap := make(map[statsapi.PodReference]statsapi.PodStats) for _, s := range stats { @@ -399,6 +426,19 @@ func TestCRIListPodCPUAndMemoryStats(t *testing.T) { assert.Nil(c2.Accelerators) assert.Nil(c2.UserDefinedMetrics) + p3 := podStatsMap[statsapi.PodReference{Name: "sandbox3-name", UID: "sandbox3-uid", Namespace: "sandbox3-ns"}] + assert.Equal(sandbox3.CreatedAt, p3.StartTime.UnixNano()) + assert.Equal(1, len(p3.Containers)) + + c5 := p3.Containers[0] + assert.Equal(cName5, c5.Name) + assert.Equal(container5.CreatedAt, c5.StartTime.UnixNano()) + assert.NotNil(c5.CPU.Time) + assert.Zero(*c5.CPU.UsageCoreNanoSeconds) + assert.Zero(*c5.CPU.UsageNanoCores) + assert.NotNil(c5.Memory.Time) + assert.Zero(*c5.Memory.WorkingSetBytes) + mockCadvisor.AssertExpectations(t) } diff --git a/pkg/kubelet/stats/helper.go b/pkg/kubelet/stats/helper.go index 54f3093e55..a26790a5ec 100644 --- a/pkg/kubelet/stats/helper.go +++ b/pkg/kubelet/stats/helper.go @@ -326,3 +326,7 @@ func getUint64Value(value *uint64) uint64 { return *value } + +func Uint64Ptr(i uint64) *uint64 { + return &i +} From 1bfd3838e29b2d4aa3475382e6a6a4b31c99fa16 Mon Sep 17 00:00:00 2001 From: Yecheng Fu Date: Thu, 28 Feb 2019 17:18:58 +0800 Subject: [PATCH 19/31] Add new e2e test for local PV "Pods sharing a single local PV [Serial]" --- test/e2e/storage/persistent_volumes-local.go | 63 ++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/test/e2e/storage/persistent_volumes-local.go b/test/e2e/storage/persistent_volumes-local.go index 6093c71a0d..17f0cc1054 100644 --- a/test/e2e/storage/persistent_volumes-local.go +++ b/test/e2e/storage/persistent_volumes-local.go @@ -613,6 +613,69 @@ var _ = utils.SIGDescribe("PersistentVolumes-local ", func() { Expect(err).ToNot(HaveOccurred()) }) }) + + Context("Pods sharing a single local PV [Serial]", func() { + var ( + pv *v1.PersistentVolume + ) + + BeforeEach(func() { + localVolume := &localTestVolume{ + node: config.node0, + hostDir: "/tmp", + localVolumeType: DirectoryLocalVolumeType, + } + pvConfig := makeLocalPVConfig(config, localVolume) + var err error + pv, err = framework.CreatePV(config.client, framework.MakePersistentVolume(pvConfig)) + framework.ExpectNoError(err) + }) + + AfterEach(func() { + if pv == nil { + return + } + By(fmt.Sprintf("Clean PV %s", pv.Name)) + err := config.client.CoreV1().PersistentVolumes().Delete(pv.Name, &metav1.DeleteOptions{}) + framework.ExpectNoError(err) + }) + + It("all pods should be running", func() { + var ( + pvc *v1.PersistentVolumeClaim + pods = map[string]*v1.Pod{} + count = 50 + err error + ) + pvc = framework.MakePersistentVolumeClaim(makeLocalPVCConfig(config, DirectoryLocalVolumeType), config.ns) + By(fmt.Sprintf("Create a PVC %s", pvc.Name)) + pvc, err = framework.CreatePVC(config.client, config.ns, pvc) + framework.ExpectNoError(err) + By(fmt.Sprintf("Create %d pods to use this PVC", count)) + for i := 0; i < count; i++ { + pod := framework.MakeSecPod(config.ns, []*v1.PersistentVolumeClaim{pvc}, false, "", false, false, selinuxLabel, nil) + pod, err := config.client.CoreV1().Pods(config.ns).Create(pod) + Expect(err).NotTo(HaveOccurred()) + pods[pod.Name] = pod + } + By("Wait for all pods are running") + err = wait.PollImmediate(time.Second, 5*time.Minute, func() (done bool, err error) { + podsList, err := config.client.CoreV1().Pods(config.ns).List(metav1.ListOptions{}) + if err != nil { + return false, err + } + runningPods := 0 + for _, pod := range podsList.Items { + switch pod.Status.Phase { + case v1.PodRunning: + runningPods++ + } + } + return runningPods == count, nil + }) + Expect(err).ToNot(HaveOccurred()) + }) + }) }) func deletePodAndPVCs(config *localTestConfig, pod *v1.Pod) error { From 32c0af42e663550e427144da834ab58ac1846f77 Mon Sep 17 00:00:00 2001 From: Fabio Bertinatto Date: Thu, 28 Feb 2019 13:04:25 +0100 Subject: [PATCH 20/31] Remove last pieces of mount propagation gate --- pkg/features/kube_features.go | 8 -------- pkg/kubelet/kubelet.go | 4 ---- 2 files changed, 12 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index a98e3fc65f..83db1dda63 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -134,13 +134,6 @@ const ( // 'MemoryPressure', 'PIDPressure' and 'DiskPressure'. TaintNodesByCondition utilfeature.Feature = "TaintNodesByCondition" - // owner: @jsafrane - // GA: v1.12 - // - // Note: This feature gate is unconditionally enabled in v1.13 and will be removed in v1.14. - // Enable mount propagation of volumes. - MountPropagation utilfeature.Feature = "MountPropagation" - // owner: @sjenning // alpha: v1.11 // @@ -443,7 +436,6 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS PodShareProcessNamespace: {Default: true, PreRelease: utilfeature.Beta}, PodPriority: {Default: true, PreRelease: utilfeature.GA}, TaintNodesByCondition: {Default: true, PreRelease: utilfeature.Beta}, - MountPropagation: {Default: true, PreRelease: utilfeature.GA, LockToDefault: true}, // remove in 1.14 QOSReserved: {Default: false, PreRelease: utilfeature.Alpha}, ExpandPersistentVolumes: {Default: true, PreRelease: utilfeature.Beta}, ExpandInUsePersistentVolumes: {Default: false, PreRelease: utilfeature.Alpha}, diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 16d9861868..9b63bcd484 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -779,10 +779,6 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, tokenManager := token.NewManager(kubeDeps.KubeClient) - if !utilfeature.DefaultFeatureGate.Enabled(features.MountPropagation) { - return nil, fmt.Errorf("mount propagation feature gate has been deprecated and will be removed in 1.14") - } - klet.volumePluginMgr, err = NewInitializedVolumePluginMgr(klet, secretManager, configMapManager, tokenManager, kubeDeps.VolumePlugins, kubeDeps.DynamicPluginProber) if err != nil { From bb8f4ac84fc0321bd1286d42b465e9abae80ec99 Mon Sep 17 00:00:00 2001 From: Dmitry Rozhkov Date: Thu, 28 Feb 2019 16:12:34 +0200 Subject: [PATCH 21/31] kubeadm: use Infoln instead of Infof where appropriate --- cmd/kubeadm/app/cmd/phases/init/etcd.go | 2 +- cmd/kubeadm/app/cmd/phases/init/kubelet.go | 4 ++-- cmd/kubeadm/app/cmd/phases/init/uploadcerts.go | 2 +- cmd/kubeadm/app/cmd/phases/init/uploadconfig.go | 6 +++--- .../app/cmd/phases/init/waitcontrolplane.go | 2 +- cmd/kubeadm/app/cmd/phases/join/kubelet.go | 6 +++--- cmd/kubeadm/app/cmd/reset.go | 4 ++-- cmd/kubeadm/app/cmd/upgrade/apply.go | 14 +++++++------- cmd/kubeadm/app/cmd/upgrade/plan.go | 6 +++--- cmd/kubeadm/app/preflight/checks.go | 4 ++-- 10 files changed, 25 insertions(+), 25 deletions(-) diff --git a/cmd/kubeadm/app/cmd/phases/init/etcd.go b/cmd/kubeadm/app/cmd/phases/init/etcd.go index 0142e46f7c..4abc41c2d1 100644 --- a/cmd/kubeadm/app/cmd/phases/init/etcd.go +++ b/cmd/kubeadm/app/cmd/phases/init/etcd.go @@ -97,7 +97,7 @@ func runEtcdPhaseLocal() func(c workflow.RunData) error { return errors.Wrap(err, "error creating local etcd static pod manifest file") } } else { - klog.V(1).Infof("[etcd] External etcd mode. Skipping the creation of a manifest for local etcd") + klog.V(1).Infoln("[etcd] External etcd mode. Skipping the creation of a manifest for local etcd") } return nil } diff --git a/cmd/kubeadm/app/cmd/phases/init/kubelet.go b/cmd/kubeadm/app/cmd/phases/init/kubelet.go index 52de91e343..1aaac8b346 100644 --- a/cmd/kubeadm/app/cmd/phases/init/kubelet.go +++ b/cmd/kubeadm/app/cmd/phases/init/kubelet.go @@ -58,7 +58,7 @@ func runKubeletStart(c workflow.RunData) error { // First off, configure the kubelet. In this short timeframe, kubeadm is trying to stop/restart the kubelet // Try to stop the kubelet service so no race conditions occur when configuring it if !data.DryRun() { - klog.V(1).Infof("Stopping the kubelet") + klog.V(1).Infoln("Stopping the kubelet") kubeletphase.TryStopKubelet() } @@ -76,7 +76,7 @@ func runKubeletStart(c workflow.RunData) error { // Try to start the kubelet service in case it's inactive if !data.DryRun() { - klog.V(1).Infof("Starting the kubelet") + klog.V(1).Infoln("Starting the kubelet") kubeletphase.TryStartKubelet() } diff --git a/cmd/kubeadm/app/cmd/phases/init/uploadcerts.go b/cmd/kubeadm/app/cmd/phases/init/uploadcerts.go index 3c0fb5c4b0..dac07a18ad 100644 --- a/cmd/kubeadm/app/cmd/phases/init/uploadcerts.go +++ b/cmd/kubeadm/app/cmd/phases/init/uploadcerts.go @@ -50,7 +50,7 @@ func runUploadCerts(c workflow.RunData) error { } if !data.UploadCerts() { - klog.V(1).Infof("[upload-certs] Skipping certs upload") + klog.V(1).Infoln("[upload-certs] Skipping certs upload") return nil } client, err := data.Client() diff --git a/cmd/kubeadm/app/cmd/phases/init/uploadconfig.go b/cmd/kubeadm/app/cmd/phases/init/uploadconfig.go index 8d552269db..1691e10139 100644 --- a/cmd/kubeadm/app/cmd/phases/init/uploadconfig.go +++ b/cmd/kubeadm/app/cmd/phases/init/uploadconfig.go @@ -106,7 +106,7 @@ func runUploadKubeadmConfig(c workflow.RunData) error { return err } - klog.V(1).Infof("[upload-config] Uploading the kubeadm ClusterConfiguration to a ConfigMap") + klog.V(1).Infoln("[upload-config] Uploading the kubeadm ClusterConfiguration to a ConfigMap") if err := uploadconfig.UploadConfiguration(cfg, client); err != nil { return errors.Wrap(err, "error uploading the kubeadm ClusterConfiguration") } @@ -120,12 +120,12 @@ func runUploadKubeletConfig(c workflow.RunData) error { return err } - klog.V(1).Infof("[upload-config] Uploading the kubelet component config to a ConfigMap") + klog.V(1).Infoln("[upload-config] Uploading the kubelet component config to a ConfigMap") if err = kubeletphase.CreateConfigMap(cfg.ClusterConfiguration.ComponentConfigs.Kubelet, cfg.KubernetesVersion, client); err != nil { return errors.Wrap(err, "error creating kubelet configuration ConfigMap") } - klog.V(1).Infof("[upload-config] Preserving the CRISocket information for the control-plane node") + klog.V(1).Infoln("[upload-config] Preserving the CRISocket information for the control-plane node") if err := patchnodephase.AnnotateCRISocket(client, cfg.NodeRegistration.Name, cfg.NodeRegistration.CRISocket); err != nil { return errors.Wrap(err, "Error writing Crisocket information for the control-plane node") } diff --git a/cmd/kubeadm/app/cmd/phases/init/waitcontrolplane.go b/cmd/kubeadm/app/cmd/phases/init/waitcontrolplane.go index 544e401a6d..6fd0424573 100644 --- a/cmd/kubeadm/app/cmd/phases/init/waitcontrolplane.go +++ b/cmd/kubeadm/app/cmd/phases/init/waitcontrolplane.go @@ -77,7 +77,7 @@ func runWaitControlPlanePhase(c workflow.RunData) error { } // waiter holds the apiclient.Waiter implementation of choice, responsible for querying the API server in various ways and waiting for conditions to be fulfilled - klog.V(1).Infof("[wait-control-plane] Waiting for the API server to be healthy") + klog.V(1).Infoln("[wait-control-plane] Waiting for the API server to be healthy") client, err := data.Client() if err != nil { diff --git a/cmd/kubeadm/app/cmd/phases/join/kubelet.go b/cmd/kubeadm/app/cmd/phases/join/kubelet.go index c198b96bfe..7d76434398 100644 --- a/cmd/kubeadm/app/cmd/phases/join/kubelet.go +++ b/cmd/kubeadm/app/cmd/phases/join/kubelet.go @@ -126,7 +126,7 @@ func runKubeletStartJoinPhase(c workflow.RunData) error { // Configure the kubelet. In this short timeframe, kubeadm is trying to stop/restart the kubelet // Try to stop the kubelet service so no race conditions occur when configuring it - klog.V(1).Infof("[kubelet-start] Stopping the kubelet") + klog.V(1).Infoln("[kubelet-start] Stopping the kubelet") kubeletphase.TryStopKubelet() // Write the configuration for the kubelet (using the bootstrap token credentials) to disk so the kubelet can start @@ -143,7 +143,7 @@ func runKubeletStartJoinPhase(c workflow.RunData) error { } // Try to start the kubelet service in case it's inactive - klog.V(1).Infof("[kubelet-start] Starting the kubelet") + klog.V(1).Infoln("[kubelet-start] Starting the kubelet") kubeletphase.TryStartKubelet() // Now the kubelet will perform the TLS Bootstrap, transforming /etc/kubernetes/bootstrap-kubelet.conf to /etc/kubernetes/kubelet.conf @@ -161,7 +161,7 @@ func runKubeletStartJoinPhase(c workflow.RunData) error { return err } - klog.V(1).Infof("[kubelet-start] preserving the crisocket information for the node") + klog.V(1).Infoln("[kubelet-start] preserving the crisocket information for the node") if err := patchnodephase.AnnotateCRISocket(client, cfg.NodeRegistration.Name, cfg.NodeRegistration.CRISocket); err != nil { return errors.Wrap(err, "error uploading crisocket") } diff --git a/cmd/kubeadm/app/cmd/reset.go b/cmd/kubeadm/app/cmd/reset.go index cac15ea31e..9173e0dcfe 100644 --- a/cmd/kubeadm/app/cmd/reset.go +++ b/cmd/kubeadm/app/cmd/reset.go @@ -142,7 +142,7 @@ func (r *Reset) Run(out io.Writer, client clientset.Interface, cfg *kubeadmapi.I // Only clear etcd data when using local etcd. etcdManifestPath := filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.ManifestsSubDirName, "etcd.yaml") - klog.V(1).Infof("[reset] checking for etcd config") + klog.V(1).Infoln("[reset] checking for etcd config") etcdDataDir, err := getEtcdDataDir(etcdManifestPath, cfg) if err == nil { dirsToClean = append(dirsToClean, etcdDataDir) @@ -157,7 +157,7 @@ func (r *Reset) Run(out io.Writer, client clientset.Interface, cfg *kubeadmapi.I } // Try to stop the kubelet service - klog.V(1).Infof("[reset] getting init system") + klog.V(1).Infoln("[reset] getting init system") initSystem, err := initsystem.GetInitSystem() if err != nil { klog.Warningln("[reset] the kubelet service could not be stopped by kubeadm. Unable to detect a supported init system!") diff --git a/cmd/kubeadm/app/cmd/upgrade/apply.go b/cmd/kubeadm/app/cmd/upgrade/apply.go index 5e7f0288fc..d49f08395e 100644 --- a/cmd/kubeadm/app/cmd/upgrade/apply.go +++ b/cmd/kubeadm/app/cmd/upgrade/apply.go @@ -114,8 +114,8 @@ func NewCmdApply(apf *applyPlanFlags) *cobra.Command { func runApply(flags *applyFlags, userVersion string) error { // Start with the basics, verify that the cluster is healthy and get the configuration from the cluster (using the ConfigMap) - klog.V(1).Infof("[upgrade/apply] verifying health of cluster") - klog.V(1).Infof("[upgrade/apply] retrieving configuration from cluster") + klog.V(1).Infoln("[upgrade/apply] verifying health of cluster") + klog.V(1).Infoln("[upgrade/apply] retrieving configuration from cluster") client, versionGetter, cfg, err := enforceRequirements(flags.applyPlanFlags, flags.dryRun, userVersion) if err != nil { return err @@ -127,7 +127,7 @@ func runApply(flags *applyFlags, userVersion string) error { } // Validate requested and validate actual version - klog.V(1).Infof("[upgrade/apply] validating requested and actual version") + klog.V(1).Infoln("[upgrade/apply] validating requested and actual version") if err := configutil.NormalizeKubernetesVersion(&cfg.ClusterConfiguration); err != nil { return err } @@ -143,7 +143,7 @@ func runApply(flags *applyFlags, userVersion string) error { } // Enforce the version skew policies - klog.V(1).Infof("[upgrade/version] enforcing version skew policies") + klog.V(1).Infoln("[upgrade/version] enforcing version skew policies") if err := EnforceVersionPolicies(cfg.KubernetesVersion, newK8sVersion, flags, versionGetter); err != nil { return errors.Wrap(err, "[upgrade/version] FATAL") } @@ -159,7 +159,7 @@ func runApply(flags *applyFlags, userVersion string) error { // Use a prepuller implementation based on creating DaemonSets // and block until all DaemonSets are ready; then we know for sure that all control plane images are cached locally - klog.V(1).Infof("[upgrade/apply] creating prepuller") + klog.V(1).Infoln("[upgrade/apply] creating prepuller") prepuller := upgrade.NewDaemonSetPrepuller(client, waiter, &cfg.ClusterConfiguration) componentsToPrepull := constants.ControlPlaneComponents if cfg.Etcd.External == nil && flags.etcdUpgrade { @@ -170,13 +170,13 @@ func runApply(flags *applyFlags, userVersion string) error { } // Now; perform the upgrade procedure - klog.V(1).Infof("[upgrade/apply] performing upgrade") + klog.V(1).Infoln("[upgrade/apply] performing upgrade") if err := PerformControlPlaneUpgrade(flags, client, waiter, cfg); err != nil { return errors.Wrap(err, "[upgrade/apply] FATAL") } // Upgrade RBAC rules and addons. - klog.V(1).Infof("[upgrade/postupgrade] upgrading RBAC rules and addons") + klog.V(1).Infoln("[upgrade/postupgrade] upgrading RBAC rules and addons") if err := upgrade.PerformPostUpgradeTasks(client, cfg, newK8sVersion, flags.dryRun); err != nil { return errors.Wrap(err, "[upgrade/postupgrade] FATAL post-upgrade error") } diff --git a/cmd/kubeadm/app/cmd/upgrade/plan.go b/cmd/kubeadm/app/cmd/upgrade/plan.go index 7aa98b51bc..4323a69cd9 100644 --- a/cmd/kubeadm/app/cmd/upgrade/plan.go +++ b/cmd/kubeadm/app/cmd/upgrade/plan.go @@ -64,8 +64,8 @@ func NewCmdPlan(apf *applyPlanFlags) *cobra.Command { // runPlan takes care of outputting available versions to upgrade to for the user func runPlan(flags *planFlags, userVersion string) error { // Start with the basics, verify that the cluster is healthy, build a client and a versionGetter. Never dry-run when planning. - klog.V(1).Infof("[upgrade/plan] verifying health of cluster") - klog.V(1).Infof("[upgrade/plan] retrieving configuration from cluster") + klog.V(1).Infoln("[upgrade/plan] verifying health of cluster") + klog.V(1).Infoln("[upgrade/plan] retrieving configuration from cluster") client, versionGetter, cfg, err := enforceRequirements(flags.applyPlanFlags, false, userVersion) if err != nil { return err @@ -91,7 +91,7 @@ func runPlan(flags *planFlags, userVersion string) error { } // Compute which upgrade possibilities there are - klog.V(1).Infof("[upgrade/plan] computing upgrade possibilities") + klog.V(1).Infoln("[upgrade/plan] computing upgrade possibilities") availUpgrades, err := upgrade.GetAvailableUpgrades(versionGetter, flags.allowExperimentalUpgrades, flags.allowRCUpgrades, etcdClient, cfg.DNS.Type, client) if err != nil { return errors.Wrap(err, "[upgrade/versions] FATAL") diff --git a/cmd/kubeadm/app/preflight/checks.go b/cmd/kubeadm/app/preflight/checks.go index 1b159b07ed..03aaaa51eb 100644 --- a/cmd/kubeadm/app/preflight/checks.go +++ b/cmd/kubeadm/app/preflight/checks.go @@ -409,7 +409,7 @@ func (HostnameCheck) Name() string { // Check validates if hostname match dns sub domain regex. func (hc HostnameCheck) Check() (warnings, errorList []error) { - klog.V(1).Infof("checking whether the given node name is reachable using net.LookupHost") + klog.V(1).Infoln("checking whether the given node name is reachable using net.LookupHost") errorList = []error{} warnings = []error{} addr, err := net.LookupHost(hc.nodeName) @@ -436,7 +436,7 @@ func (hst HTTPProxyCheck) Name() string { // Check validates http connectivity type, direct or via proxy. func (hst HTTPProxyCheck) Check() (warnings, errorList []error) { - klog.V(1).Infof("validating if the connectivity type is via proxy or direct") + klog.V(1).Infoln("validating if the connectivity type is via proxy or direct") u := (&url.URL{Scheme: hst.Proto, Host: hst.Host}).String() req, err := http.NewRequest("GET", u, nil) From 9820cbce289133518ddf52d072fa5ddbeea4a3ce Mon Sep 17 00:00:00 2001 From: Anago GCB Date: Thu, 28 Feb 2019 14:38:09 +0000 Subject: [PATCH 22/31] Update CHANGELOG-1.13.md for v1.13.4. --- CHANGELOG-1.13.md | 150 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 115 insertions(+), 35 deletions(-) diff --git a/CHANGELOG-1.13.md b/CHANGELOG-1.13.md index 96fa83bcec..0c4079c571 100644 --- a/CHANGELOG-1.13.md +++ b/CHANGELOG-1.13.md @@ -1,30 +1,37 @@ -- [v1.13.3](#v1133) - - [Downloads for v1.13.3](#downloads-for-v1133) +- [v1.13.4](#v1134) + - [Downloads for v1.13.4](#downloads-for-v1134) - [Client Binaries](#client-binaries) - [Server Binaries](#server-binaries) - [Node Binaries](#node-binaries) - - [Changelog since v1.13.2](#changelog-since-v1132) + - [Changelog since v1.13.3](#changelog-since-v1133) - [Other notable changes](#other-notable-changes) -- [v1.13.2](#v1132) - - [Downloads for v1.13.2](#downloads-for-v1132) +- [v1.13.3](#v1133) + - [Downloads for v1.13.3](#downloads-for-v1133) - [Client Binaries](#client-binaries-1) - [Server Binaries](#server-binaries-1) - [Node Binaries](#node-binaries-1) - - [Changelog since v1.13.1](#changelog-since-v1131) + - [Changelog since v1.13.2](#changelog-since-v1132) - [Other notable changes](#other-notable-changes-1) -- [v1.13.1](#v1131) - - [Downloads for v1.13.1](#downloads-for-v1131) +- [v1.13.2](#v1132) + - [Downloads for v1.13.2](#downloads-for-v1132) - [Client Binaries](#client-binaries-2) - [Server Binaries](#server-binaries-2) - [Node Binaries](#node-binaries-2) - - [Changelog since v1.13.0](#changelog-since-v1130) + - [Changelog since v1.13.1](#changelog-since-v1131) - [Other notable changes](#other-notable-changes-2) -- [v1.13.0](#v1130) - - [Downloads for v1.13.0](#downloads-for-v1130) +- [v1.13.1](#v1131) + - [Downloads for v1.13.1](#downloads-for-v1131) - [Client Binaries](#client-binaries-3) - [Server Binaries](#server-binaries-3) - [Node Binaries](#node-binaries-3) + - [Changelog since v1.13.0](#changelog-since-v1130) + - [Other notable changes](#other-notable-changes-3) +- [v1.13.0](#v1130) + - [Downloads for v1.13.0](#downloads-for-v1130) + - [Client Binaries](#client-binaries-4) + - [Server Binaries](#server-binaries-4) + - [Node Binaries](#node-binaries-4) - [Kubernetes 1.13 Release Notes](#kubernetes-113-release-notes) - [Security Content](#security-content) - [Urgent Upgrade Notes](#urgent-upgrade-notes) @@ -73,60 +80,133 @@ - [External Dependencies](#external-dependencies) - [v1.13.0-rc.2](#v1130-rc2) - [Downloads for v1.13.0-rc.2](#downloads-for-v1130-rc2) - - [Client Binaries](#client-binaries-4) - - [Server Binaries](#server-binaries-4) - - [Node Binaries](#node-binaries-4) - - [Changelog since v1.13.0-rc.1](#changelog-since-v1130-rc1) - - [Other notable changes](#other-notable-changes-3) -- [v1.13.0-rc.1](#v1130-rc1) - - [Downloads for v1.13.0-rc.1](#downloads-for-v1130-rc1) - [Client Binaries](#client-binaries-5) - [Server Binaries](#server-binaries-5) - [Node Binaries](#node-binaries-5) - - [Changelog since v1.13.0-beta.2](#changelog-since-v1130-beta2) + - [Changelog since v1.13.0-rc.1](#changelog-since-v1130-rc1) - [Other notable changes](#other-notable-changes-4) -- [v1.13.0-beta.2](#v1130-beta2) - - [Downloads for v1.13.0-beta.2](#downloads-for-v1130-beta2) +- [v1.13.0-rc.1](#v1130-rc1) + - [Downloads for v1.13.0-rc.1](#downloads-for-v1130-rc1) - [Client Binaries](#client-binaries-6) - [Server Binaries](#server-binaries-6) - [Node Binaries](#node-binaries-6) - - [Changelog since v1.13.0-beta.1](#changelog-since-v1130-beta1) + - [Changelog since v1.13.0-beta.2](#changelog-since-v1130-beta2) - [Other notable changes](#other-notable-changes-5) -- [v1.13.0-beta.1](#v1130-beta1) - - [Downloads for v1.13.0-beta.1](#downloads-for-v1130-beta1) +- [v1.13.0-beta.2](#v1130-beta2) + - [Downloads for v1.13.0-beta.2](#downloads-for-v1130-beta2) - [Client Binaries](#client-binaries-7) - [Server Binaries](#server-binaries-7) - [Node Binaries](#node-binaries-7) - - [Changelog since v1.13.0-alpha.3](#changelog-since-v1130-alpha3) - - [Action Required](#action-required) + - [Changelog since v1.13.0-beta.1](#changelog-since-v1130-beta1) - [Other notable changes](#other-notable-changes-6) -- [v1.13.0-alpha.3](#v1130-alpha3) - - [Downloads for v1.13.0-alpha.3](#downloads-for-v1130-alpha3) +- [v1.13.0-beta.1](#v1130-beta1) + - [Downloads for v1.13.0-beta.1](#downloads-for-v1130-beta1) - [Client Binaries](#client-binaries-8) - [Server Binaries](#server-binaries-8) - [Node Binaries](#node-binaries-8) - - [Changelog since v1.13.0-alpha.2](#changelog-since-v1130-alpha2) + - [Changelog since v1.13.0-alpha.3](#changelog-since-v1130-alpha3) + - [Action Required](#action-required) - [Other notable changes](#other-notable-changes-7) -- [v1.13.0-alpha.2](#v1130-alpha2) - - [Downloads for v1.13.0-alpha.2](#downloads-for-v1130-alpha2) +- [v1.13.0-alpha.3](#v1130-alpha3) + - [Downloads for v1.13.0-alpha.3](#downloads-for-v1130-alpha3) - [Client Binaries](#client-binaries-9) - [Server Binaries](#server-binaries-9) - [Node Binaries](#node-binaries-9) - - [Changelog since v1.13.0-alpha.1](#changelog-since-v1130-alpha1) + - [Changelog since v1.13.0-alpha.2](#changelog-since-v1130-alpha2) - [Other notable changes](#other-notable-changes-8) -- [v1.13.0-alpha.1](#v1130-alpha1) - - [Downloads for v1.13.0-alpha.1](#downloads-for-v1130-alpha1) +- [v1.13.0-alpha.2](#v1130-alpha2) + - [Downloads for v1.13.0-alpha.2](#downloads-for-v1130-alpha2) - [Client Binaries](#client-binaries-10) - [Server Binaries](#server-binaries-10) - [Node Binaries](#node-binaries-10) + - [Changelog since v1.13.0-alpha.1](#changelog-since-v1130-alpha1) + - [Other notable changes](#other-notable-changes-9) +- [v1.13.0-alpha.1](#v1130-alpha1) + - [Downloads for v1.13.0-alpha.1](#downloads-for-v1130-alpha1) + - [Client Binaries](#client-binaries-11) + - [Server Binaries](#server-binaries-11) + - [Node Binaries](#node-binaries-11) - [Changelog since v1.12.0](#changelog-since-v1120) - [Action Required](#action-required-1) - - [Other notable changes](#other-notable-changes-9) + - [Other notable changes](#other-notable-changes-10) +# v1.13.4 + +[Documentation](https://docs.k8s.io) + +## Downloads for v1.13.4 + + +filename | sha512 hash +-------- | ----------- +[kubernetes.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes.tar.gz) | `591cd3f4f479744a1d47544902817350321c63f8c37ad771d559e293bcdbc421e89d62663300a6739c667d34e1e24bb080dd73562dc29713381db079ba6e9223` +[kubernetes-src.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-src.tar.gz) | `3f3b5318321b661b028da62798b2cb85ccc7d5bfa90605944bd8a626c86e7e77f54fdb7e340587528f41e240fcf2c35bb6808ada7a2f50a4a3b0c755bc18b28c` + +### Client Binaries + +filename | sha512 hash +-------- | ----------- +[kubernetes-client-darwin-386.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-darwin-386.tar.gz) | `78c604ac5c54beff498fffa398abcd6c91f6d6ee6ec7249b675f10a2fa5866e336a560b85275c408daf8bf250c5d2c8632d2e0a2592d98952fae70ae3586f4aa` +[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-darwin-amd64.tar.gz) | `0678f0305608589b15dbc6a5dca00de99adfb296d881a33fb1745a1393b17a2e9f59becb3978e519465936796dd6692fd2fda63af84b09bca2db5628ebf74503` +[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-linux-386.tar.gz) | `2c311839a0b843c9203d4b7a558f2c0cff3fa97c40ebcd3838cf592b764c9387d31c315e0ff39da32d73b4117e600cedf5177348e07beaa38a3faa98abee6c60` +[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-linux-amd64.tar.gz) | `71f813f0d8461967e9a002a9d8842b3ac40ffcaa59979d84499aff1958b2ac78d7ac75b562cffd5a9d122f0ce758a2c53d5dd788e0412df57756323cc4366a56` +[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-linux-arm.tar.gz) | `20c1779c51692b1bbcddc96dcb1f41868414d9585c53f62aa07ad0ca3ca4cf7a0e2414ee2095fb3a1096bf86bbe74bc8d323c7cd39ad1698a130bb15971c1daa` +[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-linux-arm64.tar.gz) | `58dd72a04f31613572b58095279a91fa9c16e8a8c052b0ec3e3badea60cf8a2a33953e9d5b839d931070c040c6f8cd098abec46f192db7cb2fdea75c4b7de096` +[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-linux-ppc64le.tar.gz) | `1e68cd52396cc554d6446575f5de4656fbe9965a432328fdd9ee317db232f875eda3925bcc2956543085560cbfff7231abc7434f52db446a21882cd0721a6edd` +[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-linux-s390x.tar.gz) | `3fcba2802db6662392b4eaf2465753f88c6b5de2e4e264e2669ad196f6a984dd4ac0a41bf7f11d955e130e543e8a06bb068d654f9c3b1606db380d146a01592e` +[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-windows-386.tar.gz) | `47c50b8a4bf9541096efba51e8034e4a9b796ff69221e5d0f5589bf921c186053c5f1617cd75913d8bbd288d394b0a3f38c7d789b9e45f4b7fb71b98488aa467` +[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-client-windows-amd64.tar.gz) | `0572c7755a5190b2f687645a17d6b75e8544dc8b84c1dd09a396fc8dec0ec56be367098da903db1127eeeb8a60275338895d0e03fc15e3fecc94930a15846810` + +### Server Binaries + +filename | sha512 hash +-------- | ----------- +[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-server-linux-amd64.tar.gz) | `a36eff3dd5769df6af8a39c0b50268c6b324db5b7000fe4f6c9a5c83d87b971cf187abf1a38e9970602cb0c06373cfae35b41cc13ef8063824b5a92e74cf4740` +[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-server-linux-arm.tar.gz) | `9564dc220de5210d8e690a5a84f46a7ca0d43fd6e1f5f68b49754ab6335e4bb9e0faf8490109ff28417233f0f668791acbe9cbc90f62eeb92310e1eda3143313` +[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-server-linux-arm64.tar.gz) | `e9d345633188352caadd9356f3816cd66137721a32b28986bcb516fbd7b9d23dc0dd04223bf177619baf0e0eed6716a801fe51ea24ee6dd97c14f5d0f832f3f9` +[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-server-linux-ppc64le.tar.gz) | `3062e04932d9386aeccf142734a0ebe2aca0614b4c57ddef735d7554e439d60927a1a64cbf53160ba0b7c8d115deec40da04efb109cfe8f7863daa6cdd547ef8` +[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-server-linux-s390x.tar.gz) | `337cfb3894f818ca116630678e9b596f44506ce680670b416ee0edb2adae98be34110cbddd5faed5f7b672fd7771c315b12217e9a3858fc10c995fd8385d2b2d` + +### Node Binaries + +filename | sha512 hash +-------- | ----------- +[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-node-linux-amd64.tar.gz) | `1e5e40bb5650a4aef147d21c31af322d44959aa4d7869cda84ba1e2bdd5c983710c6fe50b19c998fb3376cd86eceb45b65cefdfe3d37218d342fe395c73f2f26` +[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-node-linux-arm.tar.gz) | `c16b0adbf3296e886a0f0ec6ec36d5a18fb8ff62718bf59ac71ceb06985e73c5f33f0e2c9132faed75e54e8c1d5aa68020136c6167a962ee82269b994bd02b86` +[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-node-linux-arm64.tar.gz) | `16cc2c021c0bb09d903ce027a0e8eee5884395ee4e16998969fee29ef87af4e32540e96e6dd90584a6a919b842b9f4e24582406701bc32fc7a770b586cfffd1c` +[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-node-linux-ppc64le.tar.gz) | `0bbe3d990fa2aeccf4445980a4046b987d4b508db7d07e09cd6d2570f67d5a0620c11d2026afc142f2fb8cad82bb73267405c611e36c970c4a5dbe412625dd6b` +[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-node-linux-s390x.tar.gz) | `0bd7e19efcb09eb0136292dee397cf2893068378e584d098c451e759ffc6b52c86e877f4da2ec61e78871b7ac4c8e5515ae5c963f5665c42315036211725cf27` +[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.13.4/kubernetes-node-windows-amd64.tar.gz) | `1909c5b0cc63851f4b9dcbec871ad8e626f974eb86e3488a95eaf1f6736cf15cfd850904f44f2d278f8d6da21ba8251ec6607d61d4786caaf74707ece0cad44a` + +## Changelog since v1.13.3 + +### Other notable changes + +* fix get azure accounts timeout issue when there is no out-bound IP ([#74191](https://github.com/kubernetes/kubernetes/pull/74191), [@andyzhangx](https://github.com/andyzhangx)) +* fix issue: fail to detach azure disk when there is server side error ([#74398](https://github.com/kubernetes/kubernetes/pull/74398), [@andyzhangx](https://github.com/andyzhangx)) +* Fix keymutex issues which may crash in some platforms. ([#74386](https://github.com/kubernetes/kubernetes/pull/74386), [@danielqsj](https://github.com/danielqsj)) +* fix parse devicePath issue on Azure Disk ([#74499](https://github.com/kubernetes/kubernetes/pull/74499), [@andyzhangx](https://github.com/andyzhangx)) +* kubeadm: fixed nil pointer dereference caused by a bug in url parsing ([#74454](https://github.com/kubernetes/kubernetes/pull/74454), [@bart0sh](https://github.com/bart0sh)) +* fix mixed protocol issue for azure load balancer ([#74200](https://github.com/kubernetes/kubernetes/pull/74200), [@andyzhangx](https://github.com/andyzhangx)) +* fix smb remount issue on Windows ([#73661](https://github.com/kubernetes/kubernetes/pull/73661), [@andyzhangx](https://github.com/andyzhangx)) +* remove stale OutOfDisk condition from kubelet side ([#72507](https://github.com/kubernetes/kubernetes/pull/72507), [@dixudx](https://github.com/dixudx)) +* Adds deleting pods created by DaemonSet assigned to not existing nodes. ([#73401](https://github.com/kubernetes/kubernetes/pull/73401), [@krzysztof-jastrzebski](https://github.com/krzysztof-jastrzebski)) +* scheduler: use incremental scheduling cycle in PriorityQueue to put all in-flight unschedulable pods back to active queue if we received move request ([#73309](https://github.com/kubernetes/kubernetes/pull/73309), [@cofyc](https://github.com/cofyc)) +* Add `metrics-port` to kube-proxy cmd flags. ([#72682](https://github.com/kubernetes/kubernetes/pull/72682), [@whypro](https://github.com/whypro)) +* kube-apiserver: a request body of a CREATE/UPDATE/PATCH/DELETE resource operation larger than 100 MB will return a 413 "request entity too large" error. ([#73805](https://github.com/kubernetes/kubernetes/pull/73805), [@caesarxuchao](https://github.com/caesarxuchao)) + * Custom apiservers built with the latest apiserver library will have the 100MB limit on the body of resource requests as well. The limit can be altered via ServerRunOptions.MaxRequestBodyBytes. + * The body size limit does not apply to subresources like pods/proxy that proxy request content to another server. +* The apiserver, including both the kube-apiserver and apiservers built with the generic apiserver library, will now return 413 RequestEntityTooLarge error if a json patch contains more than 10,000 operations. ([#74000](https://github.com/kubernetes/kubernetes/pull/74000), [@caesarxuchao](https://github.com/caesarxuchao)) +* Fix watch to not send the same set of events multiple times causing watcher to go back in time ([#73845](https://github.com/kubernetes/kubernetes/pull/73845), [@wojtek-t](https://github.com/wojtek-t)) +* fixes an error processing watch events when running skewed apiservers ([#73482](https://github.com/kubernetes/kubernetes/pull/73482), [@liggitt](https://github.com/liggitt)) +* MAC Address filter has been fixed in vSphere Cloud Provider, it no longer ignores `00:1c:14` and `00:05:69` prefixes ([#73721](https://github.com/kubernetes/kubernetes/pull/73721), [@frapposelli](https://github.com/frapposelli)) + + + # v1.13.3 [Documentation](https://docs.k8s.io) From 03d0e861171be6b67f5e3bf54b97dac7bb57cfc9 Mon Sep 17 00:00:00 2001 From: John Schnake Date: Thu, 28 Feb 2019 09:04:06 -0600 Subject: [PATCH 23/31] Add support for dryRun option to kube-conformance image A common issue users run into is wanting a list of tests a certain regexp will run, without actually running it. ginkgo supports this with the dryRun flag but it was not exposed via the kube-conformance image. This change will set the flag if the E2E_DRYRUN environment variable is set. Fixes #74727 --- cluster/images/conformance/run_e2e.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cluster/images/conformance/run_e2e.sh b/cluster/images/conformance/run_e2e.sh index ee8597f276..5ba52b39ad 100755 --- a/cluster/images/conformance/run_e2e.sh +++ b/cluster/images/conformance/run_e2e.sh @@ -45,6 +45,10 @@ ginkgo_args=( "--noColor=true" ) +if [[ -n ${E2E_DRYRUN:-} ]]; then + ginkgo_args+=("--dryRun=true") +fi + case ${E2E_PARALLEL} in 'y'|'Y') ginkgo_args+=("--nodes=25") ;; [1-9]|[1-9][0-9]*) ginkgo_args+=("--nodes=${E2E_PARALLEL}") ;; From 1676a49d8c61ed2dc61839070143fd1c383702fc Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 28 Feb 2019 12:40:28 -0500 Subject: [PATCH 24/31] Simplify package skipping test --- .../pkg/util/naming/from_stack_test.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/staging/src/k8s.io/apimachinery/pkg/util/naming/from_stack_test.go b/staging/src/k8s.io/apimachinery/pkg/util/naming/from_stack_test.go index a237082d9a..0eaafae577 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/naming/from_stack_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/naming/from_stack_test.go @@ -16,7 +16,10 @@ limitations under the License. package naming -import "testing" +import ( + "strings" + "testing" +) func TestGetNameFromCallsite(t *testing.T) { tests := []struct { @@ -26,17 +29,17 @@ func TestGetNameFromCallsite(t *testing.T) { }{ { name: "simple", - expected: "k8s.io/apimachinery/pkg/util/naming/from_stack_test.go:50", + expected: "k8s.io/apimachinery/pkg/util/naming/from_stack_test.go:", }, { name: "ignore-package", ignoredPackages: []string{"k8s.io/apimachinery/pkg/util/naming"}, - expected: "testing/testing.go:827", + expected: "testing/testing.go:", }, { name: "ignore-file", ignoredPackages: []string{"k8s.io/apimachinery/pkg/util/naming/from_stack_test.go"}, - expected: "testing/testing.go:827", + expected: "testing/testing.go:", }, { name: "ignore-multiple", @@ -48,8 +51,8 @@ func TestGetNameFromCallsite(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { actual := GetNameFromCallsite(tc.ignoredPackages...) - if tc.expected != actual { - t.Fatalf("expected %q, got %q", tc.expected, actual) + if !strings.HasPrefix(actual, tc.expected) { + t.Fatalf("expected string with prefix %q, got %q", tc.expected, actual) } }) } From 91bc8095e553855ab54828d5aa2426a8f660f92a Mon Sep 17 00:00:00 2001 From: Anago GCB Date: Thu, 28 Feb 2019 20:04:09 +0000 Subject: [PATCH 25/31] Update CHANGELOG-1.11.md for v1.11.8. --- CHANGELOG-1.11.md | 180 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 127 insertions(+), 53 deletions(-) diff --git a/CHANGELOG-1.11.md b/CHANGELOG-1.11.md index 19d7c81216..e95fa1cc4a 100644 --- a/CHANGELOG-1.11.md +++ b/CHANGELOG-1.11.md @@ -1,61 +1,68 @@ -- [v1.11.7](#v1117) - - [Downloads for v1.11.7](#downloads-for-v1117) +- [v1.11.8](#v1118) + - [Downloads for v1.11.8](#downloads-for-v1118) - [Client Binaries](#client-binaries) - [Server Binaries](#server-binaries) - [Node Binaries](#node-binaries) - - [Changelog since v1.11.6](#changelog-since-v1116) + - [Changelog since v1.11.7](#changelog-since-v1117) - [Other notable changes](#other-notable-changes) -- [v1.11.6](#v1116) - - [Downloads for v1.11.6](#downloads-for-v1116) +- [v1.11.7](#v1117) + - [Downloads for v1.11.7](#downloads-for-v1117) - [Client Binaries](#client-binaries-1) - [Server Binaries](#server-binaries-1) - [Node Binaries](#node-binaries-1) - - [Changelog since v1.11.5](#changelog-since-v1115) + - [Changelog since v1.11.6](#changelog-since-v1116) - [Other notable changes](#other-notable-changes-1) -- [v1.11.5](#v1115) - - [Downloads for v1.11.5](#downloads-for-v1115) +- [v1.11.6](#v1116) + - [Downloads for v1.11.6](#downloads-for-v1116) - [Client Binaries](#client-binaries-2) - [Server Binaries](#server-binaries-2) - [Node Binaries](#node-binaries-2) - - [Changelog since v1.11.4](#changelog-since-v1114) + - [Changelog since v1.11.5](#changelog-since-v1115) - [Other notable changes](#other-notable-changes-2) -- [v1.11.4](#v1114) - - [Downloads for v1.11.4](#downloads-for-v1114) +- [v1.11.5](#v1115) + - [Downloads for v1.11.5](#downloads-for-v1115) - [Client Binaries](#client-binaries-3) - [Server Binaries](#server-binaries-3) - [Node Binaries](#node-binaries-3) - - [Changelog since v1.11.3](#changelog-since-v1113) + - [Changelog since v1.11.4](#changelog-since-v1114) - [Other notable changes](#other-notable-changes-3) -- [v1.11.3](#v1113) - - [Downloads for v1.11.3](#downloads-for-v1113) +- [v1.11.4](#v1114) + - [Downloads for v1.11.4](#downloads-for-v1114) - [Client Binaries](#client-binaries-4) - [Server Binaries](#server-binaries-4) - [Node Binaries](#node-binaries-4) - - [Changelog since v1.11.2](#changelog-since-v1112) - - [Action Required](#action-required) + - [Changelog since v1.11.3](#changelog-since-v1113) - [Other notable changes](#other-notable-changes-4) -- [v1.11.2](#v1112) - - [Downloads for v1.11.2](#downloads-for-v1112) +- [v1.11.3](#v1113) + - [Downloads for v1.11.3](#downloads-for-v1113) - [Client Binaries](#client-binaries-5) - [Server Binaries](#server-binaries-5) - [Node Binaries](#node-binaries-5) - - [Changelog since v1.11.1](#changelog-since-v1111) - - [Action Required](#action-required-1) + - [Changelog since v1.11.2](#changelog-since-v1112) + - [Action Required](#action-required) - [Other notable changes](#other-notable-changes-5) -- [v1.11.1](#v1111) - - [Downloads for v1.11.1](#downloads-for-v1111) +- [v1.11.2](#v1112) + - [Downloads for v1.11.2](#downloads-for-v1112) - [Client Binaries](#client-binaries-6) - [Server Binaries](#server-binaries-6) - [Node Binaries](#node-binaries-6) - - [Changelog since v1.11.0](#changelog-since-v1110) - - [Action Required](#action-required-2) + - [Changelog since v1.11.1](#changelog-since-v1111) + - [Action Required](#action-required-1) - [Other notable changes](#other-notable-changes-6) -- [v1.11.0](#v1110) - - [Downloads for v1.11.0](#downloads-for-v1110) +- [v1.11.1](#v1111) + - [Downloads for v1.11.1](#downloads-for-v1111) - [Client Binaries](#client-binaries-7) - [Server Binaries](#server-binaries-7) - [Node Binaries](#node-binaries-7) + - [Changelog since v1.11.0](#changelog-since-v1110) + - [Action Required](#action-required-2) + - [Other notable changes](#other-notable-changes-7) +- [v1.11.0](#v1110) + - [Downloads for v1.11.0](#downloads-for-v1110) + - [Client Binaries](#client-binaries-8) + - [Server Binaries](#server-binaries-8) + - [Node Binaries](#node-binaries-8) - [Kubernetes 1.11 Release Notes](#kubernetes-111-release-notes) - [Urgent Upgrade Notes](#urgent-upgrade-notes) - [(No, really, you MUST do this before you upgrade)](#no-really-you-must-do-this-before-you-upgrade) @@ -78,7 +85,7 @@ - [Graduated to Stable/GA](#graduated-to-stablega) - [Graduated to Beta](#graduated-to-beta) - [New alpha features](#new-alpha-features) - - [Other Notable Changes](#other-notable-changes-7) + - [Other Notable Changes](#other-notable-changes-8) - [SIG API Machinery](#sig-api-machinery-1) - [SIG Apps](#sig-apps) - [SIG Auth](#sig-auth-1) @@ -102,62 +109,129 @@ - [Non-user-facing changes](#non-user-facing-changes) - [v1.11.0-rc.3](#v1110-rc3) - [Downloads for v1.11.0-rc.3](#downloads-for-v1110-rc3) - - [Client Binaries](#client-binaries-8) - - [Server Binaries](#server-binaries-8) - - [Node Binaries](#node-binaries-8) - - [Changelog since v1.11.0-rc.2](#changelog-since-v1110-rc2) - - [Other notable changes](#other-notable-changes-8) -- [v1.11.0-rc.2](#v1110-rc2) - - [Downloads for v1.11.0-rc.2](#downloads-for-v1110-rc2) - [Client Binaries](#client-binaries-9) - [Server Binaries](#server-binaries-9) - [Node Binaries](#node-binaries-9) - - [Changelog since v1.11.0-rc.1](#changelog-since-v1110-rc1) + - [Changelog since v1.11.0-rc.2](#changelog-since-v1110-rc2) - [Other notable changes](#other-notable-changes-9) -- [v1.11.0-rc.1](#v1110-rc1) - - [Downloads for v1.11.0-rc.1](#downloads-for-v1110-rc1) +- [v1.11.0-rc.2](#v1110-rc2) + - [Downloads for v1.11.0-rc.2](#downloads-for-v1110-rc2) - [Client Binaries](#client-binaries-10) - [Server Binaries](#server-binaries-10) - [Node Binaries](#node-binaries-10) - - [Changelog since v1.11.0-beta.2](#changelog-since-v1110-beta2) - - [Action Required](#action-required-3) + - [Changelog since v1.11.0-rc.1](#changelog-since-v1110-rc1) - [Other notable changes](#other-notable-changes-10) -- [v1.11.0-beta.2](#v1110-beta2) - - [Downloads for v1.11.0-beta.2](#downloads-for-v1110-beta2) +- [v1.11.0-rc.1](#v1110-rc1) + - [Downloads for v1.11.0-rc.1](#downloads-for-v1110-rc1) - [Client Binaries](#client-binaries-11) - [Server Binaries](#server-binaries-11) - [Node Binaries](#node-binaries-11) - - [Changelog since v1.11.0-beta.1](#changelog-since-v1110-beta1) - - [Action Required](#action-required-4) + - [Changelog since v1.11.0-beta.2](#changelog-since-v1110-beta2) + - [Action Required](#action-required-3) - [Other notable changes](#other-notable-changes-11) -- [v1.11.0-beta.1](#v1110-beta1) - - [Downloads for v1.11.0-beta.1](#downloads-for-v1110-beta1) +- [v1.11.0-beta.2](#v1110-beta2) + - [Downloads for v1.11.0-beta.2](#downloads-for-v1110-beta2) - [Client Binaries](#client-binaries-12) - [Server Binaries](#server-binaries-12) - [Node Binaries](#node-binaries-12) - - [Changelog since v1.11.0-alpha.2](#changelog-since-v1110-alpha2) - - [Action Required](#action-required-5) + - [Changelog since v1.11.0-beta.1](#changelog-since-v1110-beta1) + - [Action Required](#action-required-4) - [Other notable changes](#other-notable-changes-12) -- [v1.11.0-alpha.2](#v1110-alpha2) - - [Downloads for v1.11.0-alpha.2](#downloads-for-v1110-alpha2) +- [v1.11.0-beta.1](#v1110-beta1) + - [Downloads for v1.11.0-beta.1](#downloads-for-v1110-beta1) - [Client Binaries](#client-binaries-13) - [Server Binaries](#server-binaries-13) - [Node Binaries](#node-binaries-13) - - [Changelog since v1.11.0-alpha.1](#changelog-since-v1110-alpha1) + - [Changelog since v1.11.0-alpha.2](#changelog-since-v1110-alpha2) + - [Action Required](#action-required-5) - [Other notable changes](#other-notable-changes-13) -- [v1.11.0-alpha.1](#v1110-alpha1) - - [Downloads for v1.11.0-alpha.1](#downloads-for-v1110-alpha1) +- [v1.11.0-alpha.2](#v1110-alpha2) + - [Downloads for v1.11.0-alpha.2](#downloads-for-v1110-alpha2) - [Client Binaries](#client-binaries-14) - [Server Binaries](#server-binaries-14) - [Node Binaries](#node-binaries-14) + - [Changelog since v1.11.0-alpha.1](#changelog-since-v1110-alpha1) + - [Other notable changes](#other-notable-changes-14) +- [v1.11.0-alpha.1](#v1110-alpha1) + - [Downloads for v1.11.0-alpha.1](#downloads-for-v1110-alpha1) + - [Client Binaries](#client-binaries-15) + - [Server Binaries](#server-binaries-15) + - [Node Binaries](#node-binaries-15) - [Changelog since v1.10.0](#changelog-since-v1100) - [Action Required](#action-required-6) - - [Other notable changes](#other-notable-changes-14) + - [Other notable changes](#other-notable-changes-15) +# v1.11.8 + +[Documentation](https://docs.k8s.io) + +## Downloads for v1.11.8 + + +filename | sha512 hash +-------- | ----------- +[kubernetes.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes.tar.gz) | `65ef9150911023033efd486148d6827a9531ef29e2bd5ec0d6269b1e1d5bd1e0497a31a1675c39f54695ba4b526b4619ebf6525b4aab07e10d368ca21c6aeeff` +[kubernetes-src.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-src.tar.gz) | `bea4877aa38da12a3bf99200b02c51a9db8f4f0e58e1b28158fa816e1dc5de0a64edc3e93a2de24720c316a20964ff74754f6511379f1be7952a1cad711537a7` + +### Client Binaries + +filename | sha512 hash +-------- | ----------- +[kubernetes-client-darwin-386.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-darwin-386.tar.gz) | `002b24d8026be295df278d02f40261b07f6fecf413c794e95ce4501f313e9a5d7fd2098d051a6b5e57c653058bcd4060f1f73a6dfdcb43c9239bb912206a9042` +[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-darwin-amd64.tar.gz) | `4120da867ed18d1fd5dedbf290c107a5769b767d18c42d4ef9f9e4ed0bd076635abc85e69ca0d5c3d65934266a9ce4869e597ce7152e673d6db689b8c492c208` +[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-linux-386.tar.gz) | `e9b2053e3b09e895f9149bb94a432ba62a980ea26efddb9f8ab6cc5123db21044028f7072ca3e0180eecb58cb201c326a3d175039f9fbe83abeaf42aa87747be` +[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-linux-amd64.tar.gz) | `95bc0c1d9b7eea56d5cc20c8f92a486adba379602b9cb6280670e4be458f7f723909fd27898f22500589b3c9c8a6c4bf50b6880d4aef7ab38a5c7dc80254c497` +[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-linux-arm.tar.gz) | `1a92e09afb9c64be08b45e228c62a4fb69611d8d7d106adf57e8b82ce9774ac2cba4c94092166658b5601b85e784de66c191b854c7ff9dd29219616055477da6` +[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-linux-arm64.tar.gz) | `a9a823bd51f7a27bd5158edea5fd4ae40f527e4028a8d3e2a2820862593f10e37f37f5bcc767a193e6669390e7e6e6b50c13a44c16805c1370ff99aaf1563444` +[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-linux-ppc64le.tar.gz) | `8b351358175833a970e664e35ef24b14af6fbe5286983d781856ce6a7a3fdaacf2154fce1bc126dbb07db3118e7cecf5d05ac27e5decee2ad4c1332417ee33ec` +[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-linux-s390x.tar.gz) | `c110b67a6b73e542af9f20991d4f9d6e80542555a6b7158b629cc1f3f69eff90708438834e3672633f1505f0e1a18e7107516258560cb24d601f846681b9310b` +[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-windows-386.tar.gz) | `0b5db213b847f49cfd934fa55ee30b1dd6c375d5dd3e6d4e2cfef9742b01afaa4f33ad634d56ef76ea7d0e4a017335c5e3a7221db9f9698d1a6ad8833af81356` +[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-client-windows-amd64.tar.gz) | `c842c77215e1d0cf6e7ad8c780488a5085984cbdf0aef46e37709544577b08859daff417db8bec8f130079835ddc2ac521b5418bbe88bd43dd3e5bc04d330402` + +### Server Binaries + +filename | sha512 hash +-------- | ----------- +[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-server-linux-amd64.tar.gz) | `6a5a8764ac75067ea5f81cc8cca179b56d72a2feb870bd096a8cfba4cfcbce72ea38b69773ff888e5463ee7a5403fc123b4f2a4eeb0145017d533f43d60dd4fc` +[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-server-linux-arm.tar.gz) | `e5cf04f368e6c5f455bbd2e584bec8774773ea03672697cd43605c96ad2d8915be78160339557568a8570b0331d5df8d892fe18637eda67b0763c113ad41f7ca` +[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-server-linux-arm64.tar.gz) | `4accbd3ce3d1ed5cbe6003ba83ab881378a3fa9e01cebc9d58dc4f8fa10bdb99be469c577c04f3016e83ab9b433526bba17371f3b0b40a64402e905cb6349dbf` +[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-server-linux-ppc64le.tar.gz) | `1004fc3bcb09876d002ae0c273736eca27e54861c3194b822fa6f01245b265dc862e3f611bcca6145f65a535355ac067d874787427122700c2db2b34b406aedc` +[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-server-linux-s390x.tar.gz) | `c571688de79022ece009adcee44dd18e614b566f1fafa9c1b87174d57a48403e3d2e2600157199bb48aa611ffcd6d5f2f43620d9190c02ad6bfab86a87c6e3cf` + +### Node Binaries + +filename | sha512 hash +-------- | ----------- +[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-node-linux-amd64.tar.gz) | `224ddda592871d2842c4cea3fdab37e21ea57f355a991f3fcf821305bd72bef942f2fea23407d6555ff5877cf2f495dd97465e44ec3032fc0e39fc77c651792f` +[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-node-linux-arm.tar.gz) | `989aa76291cd8e7c5ac49359b210059cbc7ebe6890cffde930c419fb87b498f9a6bc9cd6b8b746b3da10fc3447c76e0d86ea414dcc4fe9c9ce4f4184c7828a10` +[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-node-linux-arm64.tar.gz) | `d5880c71de9991ea3415a7931aa82bf080945632bbb2af92cfda581e619390db7609b7241d4b194a2e4664f7ffe8a863089bc5b2464258de4ff0f8e8a8f77c32` +[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-node-linux-ppc64le.tar.gz) | `a8f4362b2d00f298e3abbf056387b1c38673babbc02957f3b78b7b5c1ba59d246a0e6038ad08ffd310ad2a55c79717e97c74ceb4af4f5a6242037519ea19affa` +[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-node-linux-s390x.tar.gz) | `07e39957e314cb2b343a736a5aded1c46a0dbe1980e48d87355ed794c33401d5ab50760081102d29ad75d2dbc798f6e47f88539580e87fc289a33c4488255f55` +[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.11.8/kubernetes-node-windows-amd64.tar.gz) | `84b74af3042c301d94136e67fabb9296e72e4574e35bf9b163fb4ba66a6c60f37ff8c1de3b9b25a327d3b90ac50005873c39d03dcb9bade697969334ffd13a13` + +## Changelog since v1.11.7 + +### Other notable changes + +* fix smb remount issue on Windows ([#73661](https://github.com/kubernetes/kubernetes/pull/73661), [@andyzhangx](https://github.com/andyzhangx)) +* kube-apiserver: a request body of a CREATE/UPDATE/PATCH/DELETE resource operation larger than 100 MB will return a 413 "request entity too large" error. ([#73805](https://github.com/kubernetes/kubernetes/pull/73805), [@caesarxuchao](https://github.com/caesarxuchao)) + * Custom apiservers built with the latest apiserver library will have the 100MB limit on the body of resource requests as well. The limit can be altered via ServerRunOptions.MaxRequestBodyBytes. + * The body size limit does not apply to subresources like pods/proxy that proxy request content to another server. +* The apiserver, including both the kube-apiserver and apiservers built with the generic apiserver library, will now return 413 RequestEntityTooLarge error if a json patch contains more than 10,000 operations. ([#74000](https://github.com/kubernetes/kubernetes/pull/74000), [@caesarxuchao](https://github.com/caesarxuchao)) +* Update Cluster Autoscaler to version 1.3.7. ([#74136](https://github.com/kubernetes/kubernetes/pull/74136), [@jkaniuk](https://github.com/jkaniuk)) +* Fix watch to not send the same set of events multiple times causing watcher to go back in time ([#73845](https://github.com/kubernetes/kubernetes/pull/73845), [@wojtek-t](https://github.com/wojtek-t)) +* fixes an error processing watch events when running skewed apiservers ([#73482](https://github.com/kubernetes/kubernetes/pull/73482), [@liggitt](https://github.com/liggitt)) +* MAC Address filter has been fixed in vSphere Cloud Provider, it no longer ignores `00:1c:14` and `00:05:69` prefixes ([#73721](https://github.com/kubernetes/kubernetes/pull/73721), [@frapposelli](https://github.com/frapposelli)) +* add goroutine to move unschedulable pods to activeq if they are not retried for more than 1 minute ([#72558](https://github.com/kubernetes/kubernetes/pull/72558), [@denkensk](https://github.com/denkensk)) +* Scale max-inflight limits together with master VM sizes. ([#73268](https://github.com/kubernetes/kubernetes/pull/73268), [@wojtek-t](https://github.com/wojtek-t)) +* Update to go1.10.8 ([#73379](https://github.com/kubernetes/kubernetes/pull/73379), [@cblecker](https://github.com/cblecker)) + + + # v1.11.7 [Documentation](https://docs.k8s.io) From d102dac41111a82320417dd0381edf26771d244b Mon Sep 17 00:00:00 2001 From: fabriziopandini Date: Thu, 28 Feb 2019 22:25:35 +0100 Subject: [PATCH 26/31] cleanup-join-phases-flags --- .../app/cmd/phases/join/controlplanejoin.go | 4 +++- .../app/cmd/phases/join/controlplaneprepare.go | 17 ++++++++++------- cmd/kubeadm/app/cmd/phases/join/kubelet.go | 3 ++- cmd/kubeadm/app/cmd/phases/join/preflight.go | 1 + 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/cmd/kubeadm/app/cmd/phases/join/controlplanejoin.go b/cmd/kubeadm/app/cmd/phases/join/controlplanejoin.go index 37164a3f78..11b5fe734b 100644 --- a/cmd/kubeadm/app/cmd/phases/join/controlplanejoin.go +++ b/cmd/kubeadm/app/cmd/phases/join/controlplanejoin.go @@ -44,10 +44,12 @@ func getControlPlaneJoinPhaseFlags() []string { options.CfgPath, options.ControlPlane, options.NodeName, + options.FileDiscovery, options.TokenDiscovery, options.TokenDiscoveryCAHash, options.TokenDiscoverySkipCAHash, - options.KubeconfigPath, + options.TLSBootstrapToken, + options.TokenStr, } } diff --git a/cmd/kubeadm/app/cmd/phases/join/controlplaneprepare.go b/cmd/kubeadm/app/cmd/phases/join/controlplaneprepare.go index 858115b5b4..8ce3db7b47 100644 --- a/cmd/kubeadm/app/cmd/phases/join/controlplaneprepare.go +++ b/cmd/kubeadm/app/cmd/phases/join/controlplaneprepare.go @@ -41,9 +41,11 @@ func NewControlPlanePreparePhase() workflow.Phase { Short: "Prepares the machine for serving a control plane.", Phases: []workflow.Phase{ { - Name: "all", - Short: "Prepares the machine for serving a control plane.", - InheritFlags: getControlPlanePreparePhaseFlags(), + Name: "all", + Short: "Prepares the machine for serving a control plane.", + InheritFlags: append(getControlPlanePreparePhaseFlags(), + options.CertificateKey, + ), RunAllSiblings: true, }, newControlPlanePrepareDownloadCertsSubphase(), @@ -61,10 +63,12 @@ func getControlPlanePreparePhaseFlags() []string { options.CfgPath, options.ControlPlane, options.NodeName, + options.FileDiscovery, options.TokenDiscovery, options.TokenDiscoveryCAHash, options.TokenDiscoverySkipCAHash, - options.CertificateKey, + options.TLSBootstrapToken, + options.TokenStr, } } @@ -74,10 +78,9 @@ func newControlPlanePrepareDownloadCertsSubphase() workflow.Phase { Short: fmt.Sprintf("Download certificates from %s", kubeadmconstants.KubeadmCertsSecret), Long: cmdutil.MacroCommandLongDescription, Run: runControlPlanePrepareDownloadCertsPhaseLocal, - InheritFlags: []string{ - options.CfgPath, + InheritFlags: append(getControlPlanePreparePhaseFlags(), options.CertificateKey, - }, + ), } } diff --git a/cmd/kubeadm/app/cmd/phases/join/kubelet.go b/cmd/kubeadm/app/cmd/phases/join/kubelet.go index c198b96bfe..e6957d30b6 100644 --- a/cmd/kubeadm/app/cmd/phases/join/kubelet.go +++ b/cmd/kubeadm/app/cmd/phases/join/kubelet.go @@ -64,10 +64,11 @@ func NewKubeletStartPhase() workflow.Phase { options.CfgPath, options.NodeCRISocket, options.NodeName, - options.TLSBootstrapToken, + options.FileDiscovery, options.TokenDiscovery, options.TokenDiscoveryCAHash, options.TokenDiscoverySkipCAHash, + options.TLSBootstrapToken, options.TokenStr, }, } diff --git a/cmd/kubeadm/app/cmd/phases/join/preflight.go b/cmd/kubeadm/app/cmd/phases/join/preflight.go index a0a43fb387..9f1aa10213 100644 --- a/cmd/kubeadm/app/cmd/phases/join/preflight.go +++ b/cmd/kubeadm/app/cmd/phases/join/preflight.go @@ -73,6 +73,7 @@ func NewPreflightPhase() workflow.Phase { options.TokenDiscovery, options.TokenDiscoveryCAHash, options.TokenDiscoverySkipCAHash, + options.CertificateKey, }, } } From 4181422a3ce1be0f8e304151c81d220c5d79d785 Mon Sep 17 00:00:00 2001 From: Peter Hornyack Date: Thu, 28 Feb 2019 14:22:33 -0800 Subject: [PATCH 27/31] Increase Windows smoke-test timeout to 3 minutes. I recently lowered the timeout value to 2 minutes but this turned out to be too aggressive for now. 3 minutes is usually long enough for the test containers to come up. Note that this test is only used during development, it does not run continuously anywhere. --- cluster/gce/windows/smoke-test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster/gce/windows/smoke-test.sh b/cluster/gce/windows/smoke-test.sh index 3b4079f852..f820eb5a4d 100755 --- a/cluster/gce/windows/smoke-test.sh +++ b/cluster/gce/windows/smoke-test.sh @@ -40,7 +40,7 @@ # Override this to use a different kubectl binary. kubectl=kubectl linux_deployment_timeout=60 -windows_deployment_timeout=120 +windows_deployment_timeout=180 output_file=/tmp/k8s-smoke-test.out function check_windows_nodes_are_ready { From f1e28842752ee9ce424ab56fcb6369dd3956c40c Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 28 Feb 2019 11:32:12 -0800 Subject: [PATCH 28/31] print out verbose info for a scheduler e2e test --- test/e2e/scheduling/preemption.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/test/e2e/scheduling/preemption.go b/test/e2e/scheduling/preemption.go index 6c26c04bf8..95cf84c60b 100644 --- a/test/e2e/scheduling/preemption.go +++ b/test/e2e/scheduling/preemption.go @@ -385,6 +385,20 @@ var _ = SIGDescribe("PreemptionExecutionPath", func() { priorityPairs := make([]priorityPair, 0) AfterEach(func() { + // print out additional info if tests failed + if CurrentGinkgoTestDescription().Failed { + // list existing priorities + priorityList, err := cs.SchedulingV1().PriorityClasses().List(metav1.ListOptions{}) + if err != nil { + framework.Logf("Unable to list priorities: %v", err) + } else { + framework.Logf("List existing priorities:") + for _, p := range priorityList.Items { + framework.Logf("%v/%v created at %v", p.Name, p.Value, p.CreationTimestamp) + } + } + } + if node != nil { nodeCopy := node.DeepCopy() // force it to update @@ -428,6 +442,10 @@ var _ = SIGDescribe("PreemptionExecutionPath", func() { priorityVal := int32(i) priorityPairs = append(priorityPairs, priorityPair{name: priorityName, value: priorityVal}) _, err := cs.SchedulingV1().PriorityClasses().Create(&schedulerapi.PriorityClass{ObjectMeta: metav1.ObjectMeta{Name: priorityName}, Value: priorityVal}) + if err != nil { + framework.Logf("Failed to create priority '%v/%v': %v", priorityName, priorityVal, err) + framework.Logf("Reason: %v. Msg: %v", errors.ReasonForError(err), err) + } Expect(err == nil || errors.IsAlreadyExists(err)).To(Equal(true)) } }) @@ -557,7 +575,6 @@ var _ = SIGDescribe("PreemptionExecutionPath", func() { } } }) - }) type pauseRSConfig struct { From 43556be50e1b70324ed8ee19effcaffb4f9208da Mon Sep 17 00:00:00 2001 From: Peter Hornyack Date: Thu, 28 Feb 2019 17:17:02 -0800 Subject: [PATCH 29/31] Enhance metadata fetching functions. Introduce Get-InstanceMetadata which can be used to fetch non-"attribute" metadata values. --- cluster/gce/windows/common.psm1 | 17 ++++++++++++++--- cluster/gce/windows/configure.ps1 | 11 ++++++----- cluster/gce/windows/k8s-node-setup.psm1 | 6 +++--- cluster/gce/windows/testonly/install-ssh.psm1 | 2 +- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/cluster/gce/windows/common.psm1 b/cluster/gce/windows/common.psm1 index 73af2a12b8..685885bf94 100644 --- a/cluster/gce/windows/common.psm1 +++ b/cluster/gce/windows/common.psm1 @@ -65,14 +65,13 @@ function ShouldWrite-File { # Returns the GCE instance metadata value for $Key. If the key is not present # in the instance metadata returns $Default if set, otherwise returns $null. -function Get-InstanceMetadataValue { +function Get-InstanceMetadata { param ( [parameter(Mandatory=$true)] [string]$Key, [parameter(Mandatory=$false)] [string]$Default ) - $url = ("http://metadata.google.internal/computeMetadata/v1/instance/" + - "attributes/$Key") + $url = "http://metadata.google.internal/computeMetadata/v1/instance/$Key" try { $client = New-Object Net.WebClient $client.Headers.Add('Metadata-Flavor', 'Google') @@ -89,6 +88,18 @@ function Get-InstanceMetadataValue { } } +# Returns the GCE instance metadata value for $Key where key is an "attribute" +# of the instance. If the key is not present in the instance metadata returns +# $Default if set, otherwise returns $null. +function Get-InstanceMetadataAttribute { + param ( + [parameter(Mandatory=$true)] [string]$Key, + [parameter(Mandatory=$false)] [string]$Default + ) + + return Get-InstanceMetadata "attributes/$Key" $Default +} + function Validate-SHA1 { param( [parameter(Mandatory=$true)] [string]$Hash, diff --git a/cluster/gce/windows/configure.ps1 b/cluster/gce/windows/configure.ps1 index 903183d4d3..187e5e79b0 100644 --- a/cluster/gce/windows/configure.ps1 +++ b/cluster/gce/windows/configure.ps1 @@ -27,9 +27,10 @@ $ErrorActionPreference = 'Stop' [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $ProgressPreference = 'SilentlyContinue' -# Returns the GCE instance metadata value for $Key. If the key is not present -# in the instance metadata returns $Default if set, otherwise returns $null. -function Get-InstanceMetadataValue { +# Returns the GCE instance metadata value for $Key where key is an "attribute" +# of the instance. If the key is not present in the instance metadata returns +# $Default if set, otherwise returns $null. +function Get-InstanceMetadataAttribute { param ( [parameter(Mandatory=$true)] [string]$Key, [parameter(Mandatory=$false)] [string]$Default @@ -63,7 +64,7 @@ function FetchAndImport-ModuleFromMetadata { [parameter(Mandatory=$true)] [string]$Filename ) - $module = Get-InstanceMetadataValue $MetadataKey + $module = Get-InstanceMetadataAttribute $MetadataKey if (Test-Path C:\$Filename) { if (-not $REDO_STEPS) { Log-Output "Skip: C:\$Filename already exists, not overwriting" @@ -81,7 +82,7 @@ try { # Don't use FetchAndImport-ModuleFromMetadata for common.psm1 - the common # module includes variables and functions that any other function may depend # on. - $module = Get-InstanceMetadataValue 'common-psm1' + $module = Get-InstanceMetadataAttribute 'common-psm1' New-Item -ItemType file -Force C:\common.psm1 | Out-Null Set-Content C:\common.psm1 $module Import-Module -Force C:\common.psm1 diff --git a/cluster/gce/windows/k8s-node-setup.psm1 b/cluster/gce/windows/k8s-node-setup.psm1 index d8c7307a64..188d762e27 100644 --- a/cluster/gce/windows/k8s-node-setup.psm1 +++ b/cluster/gce/windows/k8s-node-setup.psm1 @@ -135,7 +135,7 @@ function Add_GceMetadataServerRoute { function Fetch-KubeEnv { # Testing / debugging: # First: - # ${kube_env} = Get-InstanceMetadataValue 'kube-env' + # ${kube_env} = Get-InstanceMetadataAttribute 'kube-env' # or: # ${kube_env} = [IO.File]::ReadAllText(".\kubeEnv.txt") # ${kube_env_table} = ConvertFrom-Yaml ${kube_env} @@ -143,7 +143,7 @@ function Fetch-KubeEnv { # ${kube_env_table}.GetType() # The type of kube_env is a powershell String. - $kube_env = Get-InstanceMetadataValue 'kube-env' + $kube_env = Get-InstanceMetadataAttribute 'kube-env' $kube_env_table = ConvertFrom-Yaml ${kube_env} return ${kube_env_table} } @@ -882,7 +882,7 @@ function Configure-Kubelet { # The Kubelet config is built by build-kubelet-config() in # cluster/gce/util.sh, and stored in the metadata server under the # 'kubelet-config' key. - $kubelet_config = Get-InstanceMetadataValue 'kubelet-config' + $kubelet_config = Get-InstanceMetadataAttribute 'kubelet-config' Set-Content ${env:KUBELET_CONFIG} $kubelet_config Log-Output "Kubelet config:`n$(Get-Content -Raw ${env:KUBELET_CONFIG})" } diff --git a/cluster/gce/windows/testonly/install-ssh.psm1 b/cluster/gce/windows/testonly/install-ssh.psm1 index 312b0be18f..b98a45be3a 100644 --- a/cluster/gce/windows/testonly/install-ssh.psm1 +++ b/cluster/gce/windows/testonly/install-ssh.psm1 @@ -106,7 +106,7 @@ function Setup_WriteSshKeysScript { # Fetch helper module for manipulating Windows user profiles. if (ShouldWrite-File $USER_PROFILE_MODULE) { - $module = Get-InstanceMetadataValue 'user-profile-psm1' + $module = Get-InstanceMetadataAttribute 'user-profile-psm1' New-Item -ItemType file -Force $USER_PROFILE_MODULE | Out-Null Set-Content $USER_PROFILE_MODULE $module } From 18a2a98d6793a5833dcf1f3ecddbcdd6e5b7b617 Mon Sep 17 00:00:00 2001 From: Peter Hornyack Date: Thu, 28 Feb 2019 14:45:09 -0800 Subject: [PATCH 30/31] Dump Windows version information during cluster bringup. --- cluster/gce/windows/configure.ps1 | 1 + cluster/gce/windows/k8s-node-setup.psm1 | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/cluster/gce/windows/configure.ps1 b/cluster/gce/windows/configure.ps1 index 187e5e79b0..25a725ab5c 100644 --- a/cluster/gce/windows/configure.ps1 +++ b/cluster/gce/windows/configure.ps1 @@ -91,6 +91,7 @@ try { # then put these calls into a loop over a list of XYZ-psm1 keys. FetchAndImport-ModuleFromMetadata 'k8s-node-setup-psm1' 'k8s-node-setup.psm1' + Dump-DebugInfoToConsole Set-PrerequisiteOptions $kube_env = Fetch-KubeEnv Disable-WindowsDefender diff --git a/cluster/gce/windows/k8s-node-setup.psm1 b/cluster/gce/windows/k8s-node-setup.psm1 index 188d762e27..600c317536 100644 --- a/cluster/gce/windows/k8s-node-setup.psm1 +++ b/cluster/gce/windows/k8s-node-setup.psm1 @@ -128,6 +128,19 @@ function Add_GceMetadataServerRoute { } } +# Writes debugging information, such as Windows version and patch info, to the +# console. +function Dump-DebugInfoToConsole { + Try { + $version = "$([System.Environment]::OSVersion.Version | Out-String)" + $hotfixes = "$(Get-Hotfix | Out-String)" + $image = "$(Get-InstanceMetadata 'image' | Out-String)" + Log-Output "Windows version:`n$version" + Log-Output "Installed hotfixes:`n$hotfixes" + Log-Output "GCE Windows image:`n$image" + } Catch { } +} + # Fetches the kube-env from the instance metadata. # # Returns: a PowerShell Hashtable object containing the key-value pairs from From d41ad755c1c9da6839d8a3ab4a91fce0fbdbce9f Mon Sep 17 00:00:00 2001 From: peibingit <45838000+peibingit@users.noreply.github.com> Date: Fri, 1 Mar 2019 12:03:12 +0800 Subject: [PATCH 31/31] Update types.go --- cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go b/cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go index 87c19ab1a7..596aedb9b9 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go @@ -194,7 +194,7 @@ type APIEndpoint struct { // NodeRegistrationOptions holds fields that relate to registering a new control-plane or node to the cluster, either via "kubeadm init" or "kubeadm join" type NodeRegistrationOptions struct { - // Name is the `.Metadata.Name` field of the Node API object that will be created in this `kubeadm init` or `kubeadm joiƄ` operation. + // Name is the `.Metadata.Name` field of the Node API object that will be created in this `kubeadm init` or `kubeadm join` operation. // This field is also used in the CommonName field of the kubelet's client certificate to the API server. // Defaults to the hostname of the node if not provided. Name string `json:"name,omitempty"`