add no resources found message to rollout-status command (#117884)

* add no resources found message to rollout-status command

* return err if not nil before no resource message

Kubernetes-commit: a5575425b039bf7c15dfaa9a7acf257fdc4fde3f
This commit is contained in:
gxwilkerson33 2023-05-10 08:02:58 -05:00 committed by Kubernetes Publisher
parent 9cf9149792
commit 1b129f017b
4 changed files with 60 additions and 22 deletions

22
go.mod
View File

@ -30,15 +30,15 @@ require (
github.com/stretchr/testify v1.8.2
golang.org/x/sys v0.7.0
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.0.0-20230503175224-7a87286591e4
k8s.io/apimachinery v0.0.0-20230503174314-7ecc58659e5e
k8s.io/api v0.0.0-20230506223117-f3a0f2ed177a
k8s.io/apimachinery v0.0.0-20230508165628-e7958c5fe270
k8s.io/cli-runtime v0.0.0-20230504080109-6a67eceb5a5c
k8s.io/client-go v0.0.0-20230505090544-bbdc95deee6f
k8s.io/component-base v0.0.0-20230503184328-d8237c55bb0d
k8s.io/client-go v0.0.0-20230509212518-783d0d33626e
k8s.io/component-base v0.0.0-20230510051351-394420edbb3f
k8s.io/component-helpers v0.0.0-20230503184823-e13365989545
k8s.io/klog/v2 v2.100.1
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f
k8s.io/metrics v0.0.0-20230503201041-0e3d051e3ef2
k8s.io/metrics v0.0.0-20230509222513-a85c404a533e
k8s.io/utils v0.0.0-20230209194617-a36077c30491
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
sigs.k8s.io/kustomize/kustomize/v5 v5.0.1
@ -94,12 +94,12 @@ require (
)
replace (
k8s.io/api => k8s.io/api v0.0.0-20230503175224-7a87286591e4
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230503174314-7ecc58659e5e
k8s.io/api => k8s.io/api v0.0.0-20230506223117-f3a0f2ed177a
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230508165628-e7958c5fe270
k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20230504080109-6a67eceb5a5c
k8s.io/client-go => k8s.io/client-go v0.0.0-20230505090544-bbdc95deee6f
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20230503172937-f7315244e4ce
k8s.io/component-base => k8s.io/component-base v0.0.0-20230503184328-d8237c55bb0d
k8s.io/client-go => k8s.io/client-go v0.0.0-20230509212518-783d0d33626e
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20230509180209-89a7a4d0e489
k8s.io/component-base => k8s.io/component-base v0.0.0-20230510051351-394420edbb3f
k8s.io/component-helpers => k8s.io/component-helpers v0.0.0-20230503184823-e13365989545
k8s.io/metrics => k8s.io/metrics v0.0.0-20230503201041-0e3d051e3ef2
k8s.io/metrics => k8s.io/metrics v0.0.0-20230509222513-a85c404a533e
)

20
go.sum
View File

@ -540,24 +540,24 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
k8s.io/api v0.0.0-20230503175224-7a87286591e4 h1:cxVILqCCBsq5MCwFs3RkBL8HDUwZ6Sh5qH0UBJSTnnw=
k8s.io/api v0.0.0-20230503175224-7a87286591e4/go.mod h1:/fu24lnfAhrloAI7EhcGTa0fXXQH5r4rUqEQMW9endY=
k8s.io/apimachinery v0.0.0-20230503174314-7ecc58659e5e h1:zTmKa/UVIS4WvRrYbIblypAjK81XFnlq8zxUCiBFgFE=
k8s.io/apimachinery v0.0.0-20230503174314-7ecc58659e5e/go.mod h1:jF849JXyKVKRC0O62ZBSygt6qOSEYju8i90sKd1mx4g=
k8s.io/api v0.0.0-20230506223117-f3a0f2ed177a h1:8sUE9zRxWwhC0FmKr0+Jtm6wgnL3ljlVJOT94jSVsO4=
k8s.io/api v0.0.0-20230506223117-f3a0f2ed177a/go.mod h1:/fu24lnfAhrloAI7EhcGTa0fXXQH5r4rUqEQMW9endY=
k8s.io/apimachinery v0.0.0-20230508165628-e7958c5fe270 h1:0kz1rv3L87V/4KNEVPlst7yhT5RfAC+5JqeXR3rBXVc=
k8s.io/apimachinery v0.0.0-20230508165628-e7958c5fe270/go.mod h1:jF849JXyKVKRC0O62ZBSygt6qOSEYju8i90sKd1mx4g=
k8s.io/cli-runtime v0.0.0-20230504080109-6a67eceb5a5c h1:gITBbx6eAQQ5SgiMn3vjRyR00nE1IYes26fBH1zbsUc=
k8s.io/cli-runtime v0.0.0-20230504080109-6a67eceb5a5c/go.mod h1:ixnBuX8weZhKqsRkVWPDthO0+XyV8Zb+Dm/VG2JmQoE=
k8s.io/client-go v0.0.0-20230505090544-bbdc95deee6f h1:2ay98zE1TJH8YXO2PvRz3x72AScfGwrJu8gZKr8mFxY=
k8s.io/client-go v0.0.0-20230505090544-bbdc95deee6f/go.mod h1:KbdynSEZqrbOI2U7keuj6YcwapdnH1uqm4B5ZTlKl3Q=
k8s.io/component-base v0.0.0-20230503184328-d8237c55bb0d h1:fFtyr79NYtiblUPlY9jBGOxz6oJ+InvkHO2CuXCt9kY=
k8s.io/component-base v0.0.0-20230503184328-d8237c55bb0d/go.mod h1:whrRS7Eo7V9CAjv5tN/lSHTNdU7GimImJs2398lzkHg=
k8s.io/client-go v0.0.0-20230509212518-783d0d33626e h1:LpWwrdVPWBo4qvabkUmgiTVVrG60WB2Aq7vL/+CuFVY=
k8s.io/client-go v0.0.0-20230509212518-783d0d33626e/go.mod h1:cEaa9OUfUngJoratq5HOLPAqYQuGXvAXcib8cBvOLhQ=
k8s.io/component-base v0.0.0-20230510051351-394420edbb3f h1:fRDW72RPFuh2ICNsCZCnEG/0tiKMDRyL/YVJ1RyVL74=
k8s.io/component-base v0.0.0-20230510051351-394420edbb3f/go.mod h1:OZt7sB3oDI0Zde3l1u9cPMS4sDIg62oCaaGt3ifkLBg=
k8s.io/component-helpers v0.0.0-20230503184823-e13365989545 h1:we8rVlPuvlPzZu0GPqB5mfJiFVypCn1mHRtcj/+RE+k=
k8s.io/component-helpers v0.0.0-20230503184823-e13365989545/go.mod h1:/80xHbyNUOWQDlqQY3/tYGQb0iauI/zFw3PwSURMNvI=
k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg=
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg=
k8s.io/metrics v0.0.0-20230503201041-0e3d051e3ef2 h1:7Sv0E88nYKu/nXVP+iKR7ZnXXGE5KcPjOXsU+TFo4TE=
k8s.io/metrics v0.0.0-20230503201041-0e3d051e3ef2/go.mod h1:cQI162g705VM24ahnXgDA7UHi1N/N6/PiRsuNYmgolo=
k8s.io/metrics v0.0.0-20230509222513-a85c404a533e h1:WyqSbvuKfcI+786a90tUbxG/zjZ8lc+iNukkvOOYQSo=
k8s.io/metrics v0.0.0-20230509222513-a85c404a533e/go.mod h1:NmxcJrJm4XizsA3tx1O/5Fb8pV599o9ZrKu70qL4E0g=
k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY=
k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=

View File

@ -174,7 +174,9 @@ func (o *RolloutStatusOptions) Run() error {
return err
}
return r.Visit(func(info *resource.Info, _ error) error {
resourceFound := false
err = r.Visit(func(info *resource.Info, _ error) error {
resourceFound = true
mapping := info.ResourceMapping()
statusViewer, err := o.StatusViewerFn(mapping)
if err != nil {
@ -228,4 +230,14 @@ func (o *RolloutStatusOptions) Run() error {
return err
})
})
if err != nil {
return err
}
if !resourceFound {
fmt.Fprintf(o.ErrOut, "No resources found in %s namespace.\n", o.Namespace)
}
return nil
}

View File

@ -258,3 +258,29 @@ func TestRolloutStatusWatchDisabledUnavailable(t *testing.T) {
t.Errorf("expected output: %s, but got: %s", expectedMsg, buf.String())
}
}
func TestRolloutStatusEmptyList(t *testing.T) {
ns := scheme.Codecs.WithoutConversion()
tf := cmdtesting.NewTestFactory().WithNamespace("test")
tf.ClientConfigVal = cmdtesting.DefaultClientConfig()
info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON)
encoder := ns.EncoderForVersion(info.Serializer, rolloutStatusGroupVersionEncoder)
tf.Client = &fake.RESTClient{
GroupVersion: rolloutStatusGroupVersionEncoder,
NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
dep := &appsv1.DeploymentList{}
body := io.NopCloser(bytes.NewReader([]byte(runtime.EncodeOrDie(encoder, dep))))
return &http.Response{StatusCode: http.StatusOK, Header: cmdtesting.DefaultHeader(), Body: body}, nil
}),
}
streams, _, _, err := genericiooptions.NewTestIOStreams()
cmd := NewCmdRolloutStatus(tf, streams)
cmd.Run(cmd, []string{"deployment"})
expectedMsg := "No resources found in test namespace.\n"
if err.String() != expectedMsg {
t.Errorf("expected output: %s, but got: %s", expectedMsg, err.String())
}
}