From 49258593c34c377592865e2adfb3c01cd4c34bbd Mon Sep 17 00:00:00 2001 From: David Eads Date: Tue, 22 May 2018 08:46:51 -0400 Subject: [PATCH] add a discarding printer for testing and delegation --- pkg/kubectl/cmd/delete.go | 3 +- pkg/kubectl/cmd/wait/BUILD | 1 + pkg/kubectl/cmd/wait/wait.go | 9 ------ pkg/kubectl/cmd/wait/wait_test.go | 5 ++-- pkg/kubectl/genericclioptions/printers/BUILD | 1 + .../genericclioptions/printers/discard.go | 30 +++++++++++++++++++ .../genericclioptions/printers/interface.go | 5 ++++ 7 files changed, 42 insertions(+), 12 deletions(-) create mode 100644 pkg/kubectl/genericclioptions/printers/discard.go diff --git a/pkg/kubectl/cmd/delete.go b/pkg/kubectl/cmd/delete.go index 6fac3d34c2f..30b1872e3af 100644 --- a/pkg/kubectl/cmd/delete.go +++ b/pkg/kubectl/cmd/delete.go @@ -34,6 +34,7 @@ import ( cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" kubectlwait "k8s.io/kubernetes/pkg/kubectl/cmd/wait" "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/util/i18n" ) @@ -335,7 +336,7 @@ func (o *DeleteOptions) DeleteResult(r *resource.Result) error { DynamicClient: o.DynamicClient, Timeout: effectiveTimeout, - Printer: kubectlwait.NewDiscardingPrinter(), + Printer: printers.NewDiscardingPrinter(), ConditionFn: kubectlwait.IsDeleted, IOStreams: o.IOStreams, } diff --git a/pkg/kubectl/cmd/wait/BUILD b/pkg/kubectl/cmd/wait/BUILD index 621977eda94..ce1253f61eb 100644 --- a/pkg/kubectl/cmd/wait/BUILD +++ b/pkg/kubectl/cmd/wait/BUILD @@ -46,6 +46,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubectl/genericclioptions:go_default_library", + "//pkg/kubectl/genericclioptions/printers:go_default_library", "//pkg/kubectl/genericclioptions/resource:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", diff --git a/pkg/kubectl/cmd/wait/wait.go b/pkg/kubectl/cmd/wait/wait.go index 6838a8b91d1..e75d5f418dc 100644 --- a/pkg/kubectl/cmd/wait/wait.go +++ b/pkg/kubectl/cmd/wait/wait.go @@ -18,7 +18,6 @@ package wait import ( "fmt" - "io" "strings" "time" @@ -320,11 +319,3 @@ func (w ConditionalWait) isConditionMet(event watch.Event) (bool, error) { obj := event.Object.(*unstructured.Unstructured) return w.checkCondition(obj) } - -// NewDiscardingPrinter is a printer that discards all objects -// TODO use the real discarding printer from a different pull I just opened. -func NewDiscardingPrinter() printers.ResourcePrinterFunc { - return printers.ResourcePrinterFunc(func(runtime.Object, io.Writer) error { - return nil - }) -} diff --git a/pkg/kubectl/cmd/wait/wait_test.go b/pkg/kubectl/cmd/wait/wait_test.go index b26f3060a94..6ef63357bd5 100644 --- a/pkg/kubectl/cmd/wait/wait_test.go +++ b/pkg/kubectl/cmd/wait/wait_test.go @@ -34,6 +34,7 @@ import ( dynamicfakeclient "k8s.io/client-go/dynamic/fake" clienttesting "k8s.io/client-go/testing" "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" ) @@ -222,7 +223,7 @@ func TestWaitForDeletion(t *testing.T) { DynamicClient: fakeClient, Timeout: test.timeout, - Printer: NewDiscardingPrinter(), + Printer: printers.NewDiscardingPrinter(), ConditionFn: IsDeleted, IOStreams: genericclioptions.NewTestIOStreamsDiscard(), } @@ -454,7 +455,7 @@ func TestWaitForCondition(t *testing.T) { DynamicClient: fakeClient, Timeout: test.timeout, - Printer: NewDiscardingPrinter(), + Printer: printers.NewDiscardingPrinter(), ConditionFn: ConditionalWait{conditionName: "the-condition", conditionStatus: "status-value"}.IsConditionMet, IOStreams: genericclioptions.NewTestIOStreamsDiscard(), } diff --git a/pkg/kubectl/genericclioptions/printers/BUILD b/pkg/kubectl/genericclioptions/printers/BUILD index f62c55053ea..c29044dc639 100644 --- a/pkg/kubectl/genericclioptions/printers/BUILD +++ b/pkg/kubectl/genericclioptions/printers/BUILD @@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", srcs = [ + "discard.go", "interface.go", "json.go", "name.go", diff --git a/pkg/kubectl/genericclioptions/printers/discard.go b/pkg/kubectl/genericclioptions/printers/discard.go new file mode 100644 index 00000000000..cd934976da7 --- /dev/null +++ b/pkg/kubectl/genericclioptions/printers/discard.go @@ -0,0 +1,30 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package printers + +import ( + "io" + + "k8s.io/apimachinery/pkg/runtime" +) + +// NewDiscardingPrinter is a printer that discards all objects +func NewDiscardingPrinter() ResourcePrinterFunc { + return ResourcePrinterFunc(func(runtime.Object, io.Writer) error { + return nil + }) +} diff --git a/pkg/kubectl/genericclioptions/printers/interface.go b/pkg/kubectl/genericclioptions/printers/interface.go index a42a136a98d..b59a935fcab 100644 --- a/pkg/kubectl/genericclioptions/printers/interface.go +++ b/pkg/kubectl/genericclioptions/printers/interface.go @@ -25,6 +25,11 @@ import ( // ResourcePrinterFunc is a function that can print objects type ResourcePrinterFunc func(runtime.Object, io.Writer) error +// PrintObj implements ResourcePrinter +func (fn ResourcePrinterFunc) PrintObj(obj runtime.Object, w io.Writer) error { + return fn(obj, w) +} + // ResourcePrinter is an interface that knows how to print runtime objects. type ResourcePrinter interface { // Print receives a runtime object, formats it and prints it to a writer.