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

     1  package testworkflows
     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/testworkflows/renderer"
    12  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
    13  	"github.com/kubeshop/testkube/pkg/ui"
    14  )
    15  
    16  func NewGetTestWorkflowExecutionsCmd() *cobra.Command {
    17  	var (
    18  		limit            int
    19  		selectors        []string
    20  		testWorkflowName string
    21  	)
    22  
    23  	cmd := &cobra.Command{
    24  		Use:     "testworkflowexecution [executionID]",
    25  		Aliases: []string{"testworkflowexecutions", "twe", "tw-execution", "twexecution"},
    26  		Args:    cobra.MaximumNArgs(1),
    27  		Short:   "Gets TestWorkflow execution details",
    28  		Long:    `Gets TestWorkflow execution details by ID, or list if id is not passed`,
    29  
    30  		Run: func(cmd *cobra.Command, args []string) {
    31  			client, _, err := common.GetClient(cmd)
    32  			ui.ExitOnError("getting client", err)
    33  
    34  			if len(args) == 0 {
    35  				client, _, err := common.GetClient(cmd)
    36  				ui.ExitOnError("getting client", err)
    37  
    38  				executions, err := client.ListTestWorkflowExecutions(testWorkflowName, limit, strings.Join(selectors, ","))
    39  				ui.ExitOnError("getting test workflow executions list", err)
    40  				err = render.List(cmd, testkube.TestWorkflowExecutionSummaries(executions.Results), os.Stdout)
    41  				ui.ExitOnError("rendering list", err)
    42  				return
    43  			}
    44  
    45  			executionID := args[0]
    46  			execution, err := client.GetTestWorkflowExecution(executionID)
    47  			ui.ExitOnError("getting recent test workflow execution data id:"+execution.Id, err)
    48  			err = render.Obj(cmd, execution, os.Stdout, renderer.TestWorkflowExecutionRenderer)
    49  			ui.ExitOnError("rendering obj", err)
    50  		},
    51  	}
    52  
    53  	cmd.Flags().StringVarP(&testWorkflowName, "testworkflow", "w", "", "test workflow name")
    54  	cmd.Flags().IntVar(&limit, "limit", 1000, "max number of records to return")
    55  	cmd.Flags().StringSliceVarP(&selectors, "label", "l", nil, "label key value pair: --label key1=value1")
    56  
    57  	return cmd
    58  }