func newAdminFailoverCommands()

in tools/cli/admin.go [1032:1230]


func newAdminFailoverCommands() []cli.Command {
	return []cli.Command{
		{
			Name:    "start",
			Aliases: []string{"s"},
			Usage:   "start failover workflow",
			Flags: []cli.Flag{
				cli.StringFlag{
					Name:  FlagTargetClusterWithAlias,
					Usage: "Target cluster name",
				},
				cli.StringFlag{
					Name:  FlagSourceClusterWithAlias,
					Usage: "Source cluster name",
				},
				cli.IntFlag{
					Name:  FlagFailoverTimeoutWithAlias,
					Usage: "Optional graceful failover timeout in seconds. If this field is define, the failover will use graceful failover.",
				},
				cli.IntFlag{
					Name:  FlagExecutionTimeoutWithAlias,
					Usage: "Optional Failover workflow timeout in seconds",
					Value: defaultFailoverWorkflowTimeoutInSeconds,
				},
				cli.IntFlag{
					Name:  FlagFailoverWaitTimeWithAlias,
					Usage: "Optional Failover wait time after each batch in seconds",
					Value: defaultBatchFailoverWaitTimeInSeconds,
				},
				cli.IntFlag{
					Name:  FlagFailoverBatchSizeWithAlias,
					Usage: "Optional number of domains to failover in one batch",
					Value: defaultBatchFailoverSize,
				},
				cli.StringSliceFlag{
					Name: FlagFailoverDomains,
					Usage: "Optional domains to failover, eg d1,d2..,dn. " +
						"Only provided domains in source cluster will be failover.",
				},
				cli.IntFlag{
					Name: FlagFailoverDrillWaitTimeWithAlias,
					Usage: "Optional failover drill wait time. " +
						"After the wait time, the domains will be reset to original regions." +
						"This field is required if the cron schedule is specified.",
				},
				cli.StringFlag{
					Name: FlagCronSchedule,
					Usage: "Optional cron schedule on failover drill. Please specify failover drill wait time " +
						"if this field is specific",
				},
			},
			Action: func(c *cli.Context) {
				AdminFailoverStart(c)
			},
		},
		{
			Name:    "pause",
			Aliases: []string{"p"},
			Usage:   "pause failover workflow",
			Flags: []cli.Flag{
				cli.StringFlag{
					Name:  FlagRunIDWithAlias,
					Usage: "Optional Failover workflow runID, default is latest runID",
				},
				cli.BoolFlag{
					Name: FlagFailoverDrillWithAlias,
					Usage: "Optional to pause failover workflow or failover drill workflow." +
						" The default is normal failover workflow",
				},
			},

			Action: func(c *cli.Context) {
				AdminFailoverPause(c)
			},
		},
		{
			Name:    "resume",
			Aliases: []string{"re"},
			Usage:   "resume paused failover workflow",
			Flags: []cli.Flag{
				cli.StringFlag{
					Name:  FlagRunIDWithAlias,
					Usage: "Optional Failover workflow runID, default is latest runID",
				},
				cli.BoolFlag{
					Name: FlagFailoverDrillWithAlias,
					Usage: "Optional to resume failover workflow or failover drill workflow." +
						" The default is normal failover workflow",
				},
			},
			Action: func(c *cli.Context) {
				AdminFailoverResume(c)
			},
		},
		{
			Name:    "query",
			Aliases: []string{"q"},
			Usage:   "query failover workflow state",
			Flags: []cli.Flag{
				cli.BoolFlag{
					Name: FlagFailoverDrillWithAlias,
					Usage: "Optional to query failover workflow or failover drill workflow." +
						" The default is normal failover workflow",
				},
				cli.StringFlag{
					Name:  FlagRunIDWithAlias,
					Usage: "Optional Failover workflow runID, default is latest runID",
				},
			},
			Action: func(c *cli.Context) {
				AdminFailoverQuery(c)
			},
		},
		{
			Name:    "abort",
			Aliases: []string{"a"},
			Usage:   "abort failover workflow",
			Flags: []cli.Flag{
				cli.StringFlag{
					Name:  FlagRunIDWithAlias,
					Usage: "Optional Failover workflow runID, default is latest runID",
				},
				cli.StringFlag{
					Name:  FlagReasonWithAlias,
					Usage: "Optional reason why abort",
				},
				cli.BoolFlag{
					Name: FlagFailoverDrillWithAlias,
					Usage: "Optional to abort failover workflow or failover drill workflow." +
						" The default is normal failover workflow",
				},
			},
			Action: func(c *cli.Context) {
				AdminFailoverAbort(c)
			},
		},
		{
			Name:    "rollback",
			Aliases: []string{"ro"},
			Usage:   "rollback failover workflow",
			Flags: []cli.Flag{
				cli.StringFlag{
					Name:  FlagRunIDWithAlias,
					Usage: "Optional Failover workflow runID, default is latest runID",
				},
				cli.IntFlag{
					Name:  FlagFailoverTimeoutWithAlias,
					Usage: "Optional graceful failover timeout in seconds. If this field is define, the failover will use graceful failover.",
				},
				cli.IntFlag{
					Name:  FlagExecutionTimeoutWithAlias,
					Usage: "Optional Failover workflow timeout in seconds",
					Value: defaultFailoverWorkflowTimeoutInSeconds,
				},
				cli.IntFlag{
					Name:  FlagFailoverWaitTimeWithAlias,
					Usage: "Optional Failover wait time after each batch in seconds",
					Value: defaultBatchFailoverWaitTimeInSeconds,
				},
				cli.IntFlag{
					Name:  FlagFailoverBatchSizeWithAlias,
					Usage: "Optional number of domains to failover in one batch",
					Value: defaultBatchFailoverSize,
				},
			},
			Action: func(c *cli.Context) {
				AdminFailoverRollback(c)
			},
		},
		{
			Name:    "list",
			Aliases: []string{"l"},
			Usage:   "list failover workflow runs closed/open. This is just a simplified list cmd",
			Flags: []cli.Flag{
				cli.BoolFlag{
					Name:  FlagOpenWithAlias,
					Usage: "List for open workflow executions, default is to list for closed ones",
				},
				cli.IntFlag{
					Name:  FlagPageSizeWithAlias,
					Value: 10,
					Usage: "Result page size",
				},
				cli.StringFlag{
					Name:  FlagWorkflowIDWithAlias,
					Usage: "Ignore this. It is a dummy flag which will be forced overwrite",
				},
				cli.BoolFlag{
					Name: FlagFailoverDrillWithAlias,
					Usage: "Optional to query failover workflow or failover drill workflow." +
						" The default is normal failover workflow",
				},
			},
			Action: func(c *cli.Context) {
				AdminFailoverList(c)
			},
		},
	}
}