github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/tests/executions.go (about)

     1  package tests
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/spf13/cobra"
     8  
     9  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common"
    10  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common/render"
    11  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/tests/renderer"
    12  	"github.com/kubeshop/testkube/pkg/ui"
    13  )
    14  
    15  func NewGetExecutionCmd() *cobra.Command {
    16  	var (
    17  		selectors []string
    18  		testID    string
    19  		limit     int
    20  		logsOnly  bool
    21  	)
    22  
    23  	cmd := &cobra.Command{
    24  		Use:     "execution [executionID][executionName]",
    25  		Aliases: []string{"executions", "e"},
    26  		Short:   "Lists or gets test executions",
    27  		Long:    `Getting list of execution for given test name or recent executions if there is no test name passed`,
    28  		Run: func(cmd *cobra.Command, args []string) {
    29  			client, _, err := common.GetClient(cmd)
    30  			ui.ExitOnError("getting client", err)
    31  
    32  			if len(args) == 1 {
    33  				executionID := args[0]
    34  				execution, err := client.GetExecution(executionID)
    35  				ui.ExitOnError("getting test execution: "+executionID, err)
    36  
    37  				if logsOnly {
    38  					if err = render.RenderExecutionResult(client, &execution, logsOnly, true); err != nil {
    39  						os.Exit(1)
    40  					}
    41  				} else {
    42  					err = render.Obj(cmd, execution, os.Stdout, renderer.ExecutionRenderer)
    43  					ui.ExitOnError("rendering execution", err)
    44  				}
    45  			} else {
    46  				executions, err := client.ListExecutions(testID, limit, strings.Join(selectors, ","))
    47  				ui.ExitOnError("Getting executions for test: "+testID, err)
    48  				err = render.List(cmd, executions, os.Stdout)
    49  				ui.ExitOnError("rendering", err)
    50  			}
    51  		},
    52  	}
    53  
    54  	cmd.Flags().StringSliceVarP(&selectors, "label", "l", nil, "label key value pair: --label key1=value1")
    55  	cmd.Flags().StringVarP(&testID, "test", "", "", "test id")
    56  	cmd.Flags().IntVarP(&limit, "limit", "", 10, "records limit")
    57  	cmd.Flags().BoolVar(&logsOnly, "logs-only", false, "show only execution logs")
    58  
    59  	return cmd
    60  }