diff --git a/cmd/start.go b/cmd/start.go index 96c9511..eca55fd 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -14,7 +14,10 @@ func init() { // Sub-commands startCmd.AddCommand(startMaintCmd) + startCmd.AddCommand(startSnapshotCmd) + startCmd.AddCommand(startBackupCmd) + // Maintenance specific flags startMaintCmd.Flags().IntVar(&monitorInterval,"interval", 5, "Interval at which to poll scheduler.") startMaintCmd.Flags().IntVar(&monitorTimeout,"timeout", 50, "Time after which the monitor will stop polling and throw an error.") @@ -22,7 +25,7 @@ func init() { var startCmd = &cobra.Command{ Use: "start", - Short: "Start a service or maintenance on a host (DRAIN).", + Short: "Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.", } var startMaintCmd = &cobra.Command{ @@ -64,3 +67,43 @@ func drain(cmd *cobra.Command, args []string) { fmt.Println(result.String()) } + +var startSnapshotCmd = &cobra.Command{ + Use: "snapshot", + Short: "Force the leading scheduler to perform a Snapshot.", + Long: `Takes a Snapshot of the in memory state of the Apache Aurora cluster and + writes it to the Mesos replicated log. This should NOT be confused with a backup.`, + Run: snapshot, +} + +func snapshot(cmd *cobra.Command, args []string) { + + fmt.Println("Forcing scheduler to write snapshot to Mesos replicated log") + err := client.Snapshot() + if err != nil { + fmt.Printf("error: %+v\n", err.Error()) + os.Exit(1) + } else { + fmt.Println("Snapshot started successfully") + } +} + +var startBackupCmd = &cobra.Command{ + Use: "backup", + Short: "Force the leading scheduler to perform a Backup.", + Long: `Force the Aurora Scheduler to write a backup of the latest snapshot to the filesystem + of the leading scheduler.`, + Run: backup, +} + +func backup(cmd *cobra.Command, args []string) { + + fmt.Println("Forcing scheduler to write a Backup of latest Snapshot to file system") + err := client.PerformBackup() + if err != nil { + fmt.Printf("error: %+v\n", err.Error()) + os.Exit(1) + } else { + fmt.Println("Backup started successfully") + } +}