|
1 | 1 | package cmds
|
2 | 2 |
|
3 | 3 | import (
|
4 |
| - "io/ioutil" |
5 | 4 | "os"
|
6 | 5 | "strings"
|
7 | 6 | "time"
|
8 | 7 |
|
9 | 8 | "github.com/appscode/go/log"
|
10 | 9 | "github.com/appscode/kutil"
|
| 10 | + api "github.com/appscode/stash/apis/stash/v1alpha1" |
11 | 11 | cs "github.com/appscode/stash/client/typed/stash/v1alpha1"
|
12 | 12 | "github.com/appscode/stash/pkg/scheduler"
|
13 | 13 | "github.com/appscode/stash/pkg/util"
|
@@ -58,28 +58,22 @@ func NewCmdSchedule() *cobra.Command {
|
58 | 58 | if opt.SnapshotHostname, opt.SmartPrefix, err = opt.Workload.HostnamePrefix(opt.PodName, opt.NodeName); err != nil {
|
59 | 59 | log.Fatalf(err.Error())
|
60 | 60 | }
|
61 |
| - if err = util.CheckWorkloadExists(kubeClient, opt.Namespace, opt.Workload); err != nil { |
| 61 | + if err = util.WorkloadExists(kubeClient, opt.Namespace, opt.Workload); err != nil { |
62 | 62 | log.Fatalf(err.Error())
|
63 | 63 | }
|
64 |
| - |
65 |
| - opt.ScratchDir = strings.TrimSuffix(opt.ScratchDir, "/") |
66 |
| - err = os.MkdirAll(opt.ScratchDir, 0755) |
67 |
| - if err != nil { |
68 |
| - log.Fatalf("Failed to create scratch dir: %s", err) |
69 |
| - } |
70 |
| - err = ioutil.WriteFile(opt.ScratchDir+"/.stash", []byte("test"), 644) |
71 |
| - if err != nil { |
72 |
| - log.Fatalf("No write access in scratch dir: %s", err) |
73 |
| - } |
| 64 | + opt.ScratchDir = strings.TrimSuffix(opt.ScratchDir, "/") // setup ScratchDir in SetupAndRun |
74 | 65 |
|
75 | 66 | ctrl := scheduler.New(kubeClient, stashClient, opt)
|
76 |
| - err = ctrl.Setup() |
77 |
| - if err != nil { |
78 |
| - log.Fatalf("Failed to setup scheduler: %s", err) |
| 67 | + stopBackup := make(chan struct{}) |
| 68 | + defer close(stopBackup) |
| 69 | + |
| 70 | + // split code from here for leader election |
| 71 | + switch opt.Workload.Kind { |
| 72 | + case api.AppKindDeployment, api.AppKindReplicaSet, api.AppKindReplicationController: |
| 73 | + ctrl.ElectLeader(stopBackup) |
| 74 | + default: |
| 75 | + ctrl.SetupAndRun(stopBackup) |
79 | 76 | }
|
80 |
| - stop := make(chan struct{}) |
81 |
| - defer close(stop) |
82 |
| - go ctrl.Run(1, stop) |
83 | 77 |
|
84 | 78 | // Wait forever
|
85 | 79 | select {}
|
|
0 commit comments