cli

package
v0.3.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 26, 2018 License: MIT Imports: 26 Imported by: 3

README

What

Cadence CLI provide an command-line tool for users to perform various tasks on Cadence.
Users can perform operations like register, update and describe on domain;
also start workflow, show workflow history, signal workflow ... and many other tasks.

How

  • Run make bins
  • You should see an executable cadence

Quick Start

Run ./cadence to view help message. There are some top level commands and global options.
Run ./cadence domain to view help message about operations on domain
Run ./cadence workflow to view help message about operations on workflow
Run ./cadence tasklist to view help message about operations on tasklist
(./cadence help, ./cadence help [domain|workflow] will also print help messages)

Note: make sure you have cadence server running before using CLI

Domain operation examples

  • Register a new domain named "samples-domain":
./cadence --domain samples-domain domain register 
# OR using short alias  
./cadence --do samples-domain domain re
  • View "samples-domain" details:
./cadence --domain samples-domain domain describe  

Tips:
to avoid repeated input global option domain, user can export domain-name in environment variable CADENCE_CLI_DOMAIN.

export CADENCE_CLI_DOMAIN=samples-domain

# then just run commands without --domain flag, like
./cadence domain desc

Workflow operation examples

(The following examples assume you already export CADENCE_CLI_DOMAIN environment variable as Tips above)

  • Run workflow: Start a workflow and see it's progress, this command doesn't finish until workflow completes
./cadence workflow run --tl helloWorldGroup --wt main.Workflow --et 60 -i '"cadence"'

# view help messages for workflow run
./cadence workflow run -h

Brief explanation:
To run a workflow, user must specify

  1. Tasklist name (--tl),
  2. Workflow type (--wt),
  3. Execution start to close timeout in seconds (--et),

Example uses this cadence-samples workflow and it takes a string as input, so there is the -i '"cadence"'. Single quote '' is used to wrap input as json.

Note: you need to start worker so that workflow can make progress.
(Run make && ./bin/helloworld -m worker in cadence-samples to start the worker)

  • Show running workers of a tasklist
./cadence tasklist desc --tl helloWorldGroup

  • Start workflow:
./cadence workflow start --tl helloWorldGroup --wt main.Workflow --et 60 -i '"cadence"'

# view help messages for workflow start
./cadence workflow start -h

# for workflow with multiple input, seperate each json with space/newline like
./cadence workflow start --tl helloWorldGroup --wt main.WorkflowWith3Args --et 60 -i '"your_input_string" 123 {"Name":"my-string", "Age":12345}'

Workflow start command is similar to run command and takes same flag options. But it just start the workflow and immediately return workflow_id and run_id.
User need to run show to view workflow history/progress.

  • Show workflow history
./cadence workflow show -w 3ea6b242-b23c-4279-bb13-f215661b4717 -r 866ae14c-88cf-4f1e-980f-571e031d71b0
# a shortcut of this is (without -w -r flag)
./cadence workflow showid 3ea6b242-b23c-4279-bb13-f215661b4717 866ae14c-88cf-4f1e-980f-571e031d71b0

# if run_id is not provided, it will show the latest run history of that workflow_id
./cadence workflow show -w 3ea6b242-b23c-4279-bb13-f215661b4717
# a shortcut of this is
./cadence workflow showid 3ea6b242-b23c-4279-bb13-f215661b4717
  • Show workflow execution info
./cadence workflow descibe -w 3ea6b242-b23c-4279-bb13-f215661b4717 -r 866ae14c-88cf-4f1e-980f-571e031d71b0
# a shortcut of this is (without -w -r flag)
./cadence workflow descibeid 3ea6b242-b23c-4279-bb13-f215661b4717 866ae14c-88cf-4f1e-980f-571e031d71b0

# if run_id is not provided, it will show the latest workflow execution of that workflow_id
./cadence workflow descibe -w 3ea6b242-b23c-4279-bb13-f215661b4717
# a shortcut of this is
./cadence workflow descibeid 3ea6b242-b23c-4279-bb13-f215661b4717
  • List closed or open workflow executions
./cadence workflow list

# default will only show one page, to view more items, use --more flag
./cadence workflow list -m
  • Query workflow execution
# use custom query type
./cadence workflow query -w <wid> -r <rid> --qt <query-type>

# use build-in query type "__stack_trace" which is supported by cadence client library
./cadence workflow query -w <wid> -r <rid> --qt __stack_trace
# a shortcut to query using __stack_trace is (without --qt flag)
./cadence workflow stack -w <wid> -r <rid> 
  • Signal, cancel, terminate workflow
# signal
./cadence workflow signal -w <wid> -r <rid> -n <signal-name> -i '"signal-value"'

# cancel
./cadence workflow cancel -w <wid> -r <rid>

# terminate
./cadence workflow terminate -w <wid> -r <rid> --reason 

Terminate a running workflow execution will record WorkflowExecutionTerminated event as closing event in the history. No more decision task will be scheduled for terminated workflow execution.
Cancel a running workflow execution will record WorkflowExecutionCancelRequested event in the history, and a new decision task will be scheduled. Workflow has a chance to do some clean up work after cancellation.

Documentation

Index

Constants

View Source
const (
	FlagAddress                    = "address"
	FlagAddressWithAlias           = FlagAddress + ", ad"
	FlagDomain                     = "domain"
	FlagDomainWithAlias            = FlagDomain + ", do"
	FlagWorkflowID                 = "workflow_id"
	FlagWorkflowIDWithAlias        = FlagWorkflowID + ", wid, w"
	FlagRunID                      = "run_id"
	FlagRunIDWithAlias             = FlagRunID + ", rid, r"
	FlagTaskList                   = "tasklist"
	FlagTaskListWithAlias          = FlagTaskList + ", tl"
	FlagTaskListType               = "tasklisttype"
	FlagTaskListTypeWithAlias      = FlagTaskListType + ", tlt"
	FlagWorkflowType               = "workflow_type"
	FlagWorkflowTypeWithAlias      = FlagWorkflowType + ", wt"
	FlagExecutionTimeout           = "execution_timeout"
	FlagExecutionTimeoutWithAlias  = FlagExecutionTimeout + ", et"
	FlagDecisionTimeout            = "decision_timeout"
	FlagDecisionTimeoutWithAlias   = FlagDecisionTimeout + ", dt"
	FlagContextTimeout             = "context_timeout"
	FlagContextTimeoutWithAlias    = FlagContextTimeout + ", ct"
	FlagInput                      = "input"
	FlagInputWithAlias             = FlagInput + ", i"
	FlagInputFile                  = "input_file"
	FlagInputFileWithAlias         = FlagInputFile + ", if"
	FlagReason                     = "reason"
	FlagReasonWithAlias            = FlagReason + ", re"
	FlagOpen                       = "open"
	FlagOpenWithAlias              = FlagOpen + ", op"
	FlagMore                       = "more"
	FlagMoreWithAlias              = FlagMore + ", m"
	FlagPageSize                   = "pagesize"
	FlagPageSizeWithAlias          = FlagPageSize + ", ps"
	FlagEarliestTime               = "earliest_time"
	FlagEarliestTimeWithAlias      = FlagEarliestTime + ", et"
	FlagLatestTime                 = "latest_time"
	FlagLatestTimeWithAlias        = FlagLatestTime + ", lt"
	FlagPrintRawTime               = "print_raw_time"
	FlagPrintRawTimeWithAlias      = FlagPrintRawTime + ", prt"
	FlagPrintDateTime              = "print_datetime"
	FlagPrintDateTimeWithAlias     = FlagPrintDateTime + ", pdt"
	FlagDescription                = "description"
	FlagDescriptionWithAlias       = FlagDescription + ", desc"
	FlagOwnerEmail                 = "owner_email"
	FlagOwnerEmailWithAlias        = FlagOwnerEmail + ", oe"
	FlagRetentionDays              = "retention_days"
	FlagRetentionDaysWithAlias     = FlagRetentionDays + ", rd"
	FlagEmitMetric                 = "emit_metric"
	FlagEmitMetricWithAlias        = FlagEmitMetric + ", em"
	FlagName                       = "name"
	FlagNameWithAlias              = FlagName + ", n"
	FlagOutputFilename             = "output_filename"
	FlagOutputFilenameWithAlias    = FlagOutputFilename + ", of"
	FlagQueryType                  = "query_type"
	FlagQueryTypeWithAlias         = FlagQueryType + ", qt"
	FlagShowDetail                 = "show_detail"
	FlagShowDetailWithAlias        = FlagShowDetail + ", sd"
	FlagActiveClusterName          = "active_cluster"
	FlagActiveClusterNameWithAlias = FlagActiveClusterName + ", ac"
	FlagClusters                   = "clusters"
	FlagClustersWithAlias          = FlagClusters + ", cl"
)

* Flags used to specify cli command line arguments

View Source
const (
	// Version is the controlled version string. It should be updated every time
	// before we release a new version.
	Version = "0.5.3"
)

Variables

This section is empty.

Functions

func CancelWorkflow

func CancelWorkflow(c *cli.Context)

CancelWorkflow cancels a workflow execution

func ColorEvent added in v0.3.11

func ColorEvent(e *s.HistoryEvent) string

ColorEvent takes an event and return string with color Event with color mapping rules:

Failed - red
Timeout - yellow
Canceled - magenta
Completed - green
Started - blue
Others - default (white/black)

func DescribeDomain

func DescribeDomain(c *cli.Context)

DescribeDomain updates a domain

func DescribeTaskList

func DescribeTaskList(c *cli.Context)

DescribeTaskList show pollers info of a given tasklist

func DescribeWorkflow added in v0.3.11

func DescribeWorkflow(c *cli.Context)

DescribeWorkflow show information about the specified workflow execution

func DescribeWorkflowWithID added in v0.3.11

func DescribeWorkflowWithID(c *cli.Context)

DescribeWorkflowWithID show information about the specified workflow execution

func ErrorAndExit

func ErrorAndExit(msg string, err error)

ErrorAndExit print easy to understand error msg first then error detail in a new line

func ExitIfError

func ExitIfError(err error)

ExitIfError exit while err is not nil and print the calling stack also

func GetHistory

func GetHistory(ctx context.Context, workflowClient client.Client, workflowID, runID string) (*s.History, error)

GetHistory helper method to iterate over all pages and return complete list of history events

func HistoryEventToString

func HistoryEventToString(e *s.HistoryEvent) string

HistoryEventToString convert HistoryEvent to string

func InquiryWorkflow added in v0.3.12

func InquiryWorkflow(c *cli.Context)

InquiryWorkflow inquiries a new workflow execution

func ListAllWorkflow added in v0.3.11

func ListAllWorkflow(c *cli.Context)

ListAllWorkflow list all workflow executions based on filters

func ListWorkflow

func ListWorkflow(c *cli.Context)

ListWorkflow list workflow executions based on filters

func NewCliApp

func NewCliApp() *cli.App

NewCliApp instantiates a new instance of the CLI application.

func ObserveHistory added in v0.3.11

func ObserveHistory(c *cli.Context)

ObserveHistory show the process of running workflow

func ObserveHistoryWithID added in v0.3.11

func ObserveHistoryWithID(c *cli.Context)

ObserveHistoryWithID show the process of running workflow

func QueryWorkflow

func QueryWorkflow(c *cli.Context)

QueryWorkflow query workflow execution

func QueryWorkflowUsingStackTrace

func QueryWorkflowUsingStackTrace(c *cli.Context)

QueryWorkflowUsingStackTrace query workflow execution using __stack_trace as query type

func RegisterDomain

func RegisterDomain(c *cli.Context)

RegisterDomain register a domain

func RunWorkflow

func RunWorkflow(c *cli.Context)

RunWorkflow starts a new workflow execution and print workflow progress and result

func SetBuilder

func SetBuilder(builder WorkflowClientBuilderInterface)

SetBuilder can be used to inject customized builder of cadence clients

func ShowHistory

func ShowHistory(c *cli.Context)

ShowHistory shows the history of given workflow execution based on workflowID and runID.

func ShowHistoryWithWID

func ShowHistoryWithWID(c *cli.Context)

ShowHistoryWithWID shows the history of given workflow with workflow_id

func SignalWorkflow

func SignalWorkflow(c *cli.Context)

SignalWorkflow signals a workflow execution

func StartWorkflow

func StartWorkflow(c *cli.Context)

StartWorkflow starts a new workflow execution

func TerminateWorkflow

func TerminateWorkflow(c *cli.Context)

TerminateWorkflow terminates a workflow execution

func UpdateDomain

func UpdateDomain(c *cli.Context)

UpdateDomain updates a domain

Types

type JSONHistorySerializer

type JSONHistorySerializer struct{}

JSONHistorySerializer is used to encode history event in JSON

func (*JSONHistorySerializer) Deserialize

func (j *JSONHistorySerializer) Deserialize(data []byte) (*s.History, error)

Deserialize deserializes history

func (*JSONHistorySerializer) Serialize

func (j *JSONHistorySerializer) Serialize(h *s.History) ([]byte, error)

Serialize serializes history.

type WorkflowClientBuilder

type WorkflowClientBuilder struct {
	// contains filtered or unexported fields
}

WorkflowClientBuilder build client to cadence service

func NewBuilder

func NewBuilder() *WorkflowClientBuilder

NewBuilder creates a new WorkflowClientBuilder

func (*WorkflowClientBuilder) BuildAdminServiceClient added in v0.3.12

func (b *WorkflowClientBuilder) BuildAdminServiceClient(c *cli.Context) (adminserviceclient.Interface, error)

BuildAdminServiceClient builds a rpc service client to cadence admin service

func (*WorkflowClientBuilder) BuildServiceClient

BuildServiceClient builds a rpc service client to cadence service

type WorkflowClientBuilderInterface

type WorkflowClientBuilderInterface interface {
	BuildServiceClient(c *cli.Context) (workflowserviceclient.Interface, error)
	BuildAdminServiceClient(c *cli.Context) (adminserviceclient.Interface, error)
}

WorkflowClientBuilderInterface is an interface to build client to cadence service. User can customize builder by implementing this interface, and call SetBulder after initialize cli. (See cadence/cmd/tools/cli/main.go for example) The customized builder may have more processing on Env, Address and other info.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL