mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
Merge pull request #113040 from ardaguclu/rollout-restart-nano
rollout restart: Change error message to more descriptive
This commit is contained in:
commit
178f4e2461
@ -18,7 +18,6 @@ package rollout
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
||||||
@ -183,7 +182,8 @@ func (o RestartOptions) RunRestart() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if string(patch.Patch) == "{}" || len(patch.Patch) == 0 {
|
if string(patch.Patch) == "{}" || len(patch.Patch) == 0 {
|
||||||
allErrs = append(allErrs, fmt.Errorf("failed to create patch for %v: empty patch", info.Name))
|
allErrs = append(allErrs, fmt.Errorf("failed to create patch for %v: if restart has already been triggered within the past second, please wait before attempting to trigger another", info.Name))
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
obj, err := resource.NewHelper(info.Client, info.Mapping).
|
obj, err := resource.NewHelper(info.Client, info.Mapping).
|
||||||
|
@ -23,6 +23,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
@ -70,6 +72,56 @@ func TestRolloutRestartOne(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRolloutRestartError(t *testing.T) {
|
||||||
|
deploymentName := "deployment/nginx-deployment"
|
||||||
|
ns := scheme.Codecs.WithoutConversion()
|
||||||
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
|
|
||||||
|
info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON)
|
||||||
|
encoder := ns.EncoderForVersion(info.Serializer, rolloutRestartGroupVersionEncoder)
|
||||||
|
tf.Client = &RolloutRestartRESTClient{
|
||||||
|
RESTClient: &fake.RESTClient{
|
||||||
|
GroupVersion: rolloutRestartGroupVersionEncoder,
|
||||||
|
NegotiatedSerializer: ns,
|
||||||
|
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
|
||||||
|
switch p, m := req.URL.Path, req.Method; {
|
||||||
|
case p == "/namespaces/test/deployments/nginx-deployment" && (m == "GET" || m == "PATCH"):
|
||||||
|
responseDeployment := &appsv1.Deployment{}
|
||||||
|
responseDeployment.Name = deploymentName
|
||||||
|
body := io.NopCloser(bytes.NewReader([]byte(runtime.EncodeOrDie(encoder, responseDeployment))))
|
||||||
|
return &http.Response{StatusCode: http.StatusOK, Header: cmdtesting.DefaultHeader(), Body: body}, nil
|
||||||
|
default:
|
||||||
|
t.Fatalf("unexpected request: %#v\n%#v", req.URL, req)
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
streams, _, bufOut, _ := genericclioptions.NewTestIOStreams()
|
||||||
|
opt := NewRolloutRestartOptions(streams)
|
||||||
|
err := opt.Complete(tf, nil, []string{deploymentName})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
err = opt.Validate()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
opt.Restarter = func(obj runtime.Object) ([]byte, error) {
|
||||||
|
return runtime.Encode(scheme.Codecs.LegacyCodec(appsv1.SchemeGroupVersion), obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
expectedErr := "failed to create patch for nginx-deployment: if restart has already been triggered within the past second, please wait before attempting to trigger another"
|
||||||
|
err = opt.RunRestart()
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("error expected but not fired")
|
||||||
|
}
|
||||||
|
if err.Error() != expectedErr {
|
||||||
|
t.Errorf("unexpected error fired %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if bufOut.String() != "" {
|
||||||
|
t.Errorf("unexpected message")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Tests that giving selectors with no matching objects shows an error
|
// Tests that giving selectors with no matching objects shows an error
|
||||||
func TestRolloutRestartSelectorNone(t *testing.T) {
|
func TestRolloutRestartSelectorNone(t *testing.T) {
|
||||||
labelSelector := "app=test"
|
labelSelector := "app=test"
|
||||||
|
Loading…
Reference in New Issue
Block a user