mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-27 08:40:23 +00:00
e2e: pass variadic argument to kubectl helper function
this provides caller ability to pass the arguments
like ignore-not-found=true etc when executing
the kubectl commands.
Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 2071c535fa
)
This commit is contained in:
parent
64937f1f68
commit
f7e150b84f
34
e2e/utils.go
34
e2e/utils.go
@ -1227,13 +1227,19 @@ func (ka kubectlAction) String() string {
|
|||||||
// retryKubectlInput takes a namespace and action telling kubectl what to do,
|
// retryKubectlInput takes a namespace and action telling kubectl what to do,
|
||||||
// it then feeds data through stdin to the process. This function retries until
|
// it then feeds data through stdin to the process. This function retries until
|
||||||
// no error occurred, or the timeout passed.
|
// no error occurred, or the timeout passed.
|
||||||
func retryKubectlInput(namespace string, action kubectlAction, data string, t int) error {
|
func retryKubectlInput(namespace string, action kubectlAction, data string, t int, args ...string) error {
|
||||||
timeout := time.Duration(t) * time.Minute
|
timeout := time.Duration(t) * time.Minute
|
||||||
e2elog.Logf("waiting for kubectl (%s) to finish", action)
|
e2elog.Logf("waiting for kubectl (%s -f %q args %s) to finish", action, args)
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
|
||||||
return wait.PollImmediate(poll, timeout, func() (bool, error) {
|
return wait.PollImmediate(poll, timeout, func() (bool, error) {
|
||||||
_, err := framework.RunKubectlInput(namespace, data, string(action), "-f", "-")
|
cmd := []string{}
|
||||||
|
if len(args) != 0 {
|
||||||
|
cmd = append(cmd, strings.Join(args, ""))
|
||||||
|
}
|
||||||
|
cmd = append(cmd, []string{string(action), "-f", "-"}...)
|
||||||
|
|
||||||
|
_, err := framework.RunKubectlInput(namespace, data, cmd...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if isRetryableAPIError(err) {
|
if isRetryableAPIError(err) {
|
||||||
return false, nil
|
return false, nil
|
||||||
@ -1242,8 +1248,9 @@ func retryKubectlInput(namespace string, action kubectlAction, data string, t in
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
e2elog.Logf(
|
e2elog.Logf(
|
||||||
"will run kubectl (%s) again (%d seconds elapsed)",
|
"will run kubectl (%s) args (%s) again (%d seconds elapsed)",
|
||||||
action,
|
action,
|
||||||
|
args,
|
||||||
int(time.Since(start).Seconds()))
|
int(time.Since(start).Seconds()))
|
||||||
|
|
||||||
return false, fmt.Errorf("failed to run kubectl: %w", err)
|
return false, fmt.Errorf("failed to run kubectl: %w", err)
|
||||||
@ -1254,15 +1261,21 @@ func retryKubectlInput(namespace string, action kubectlAction, data string, t in
|
|||||||
}
|
}
|
||||||
|
|
||||||
// retryKubectlFile takes a namespace and action telling kubectl what to do
|
// retryKubectlFile takes a namespace and action telling kubectl what to do
|
||||||
// with the passed filename. This function retries until no error occurred, or
|
// with the passed filename and arguments. This function retries until no error
|
||||||
// the timeout passed.
|
// occurred, or the timeout passed.
|
||||||
func retryKubectlFile(namespace string, action kubectlAction, filename string, t int) error {
|
func retryKubectlFile(namespace string, action kubectlAction, filename string, t int, args ...string) error {
|
||||||
timeout := time.Duration(t) * time.Minute
|
timeout := time.Duration(t) * time.Minute
|
||||||
e2elog.Logf("waiting for kubectl (%s -f %q) to finish", action, filename)
|
e2elog.Logf("waiting for kubectl (%s -f %q args %s) to finish", action, filename, args)
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
|
||||||
return wait.PollImmediate(poll, timeout, func() (bool, error) {
|
return wait.PollImmediate(poll, timeout, func() (bool, error) {
|
||||||
_, err := framework.RunKubectl(namespace, string(action), "-f", filename)
|
cmd := []string{}
|
||||||
|
if len(args) != 0 {
|
||||||
|
cmd = append(cmd, strings.Join(args, ""))
|
||||||
|
}
|
||||||
|
cmd = append(cmd, []string{string(action), "-f", filename}...)
|
||||||
|
|
||||||
|
_, err := framework.RunKubectl(namespace, cmd...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if isRetryableAPIError(err) {
|
if isRetryableAPIError(err) {
|
||||||
return false, nil
|
return false, nil
|
||||||
@ -1271,9 +1284,10 @@ func retryKubectlFile(namespace string, action kubectlAction, filename string, t
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
e2elog.Logf(
|
e2elog.Logf(
|
||||||
"will run kubectl (%s -f %q) again (%d seconds elapsed)",
|
"will run kubectl (%s -f %q args %s) again (%d seconds elapsed)",
|
||||||
action,
|
action,
|
||||||
filename,
|
filename,
|
||||||
|
args,
|
||||||
int(time.Since(start).Seconds()))
|
int(time.Since(start).Seconds()))
|
||||||
|
|
||||||
return false, fmt.Errorf("failed to run kubectl: %w", err)
|
return false, fmt.Errorf("failed to run kubectl: %w", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user