mirror of https://github.com/databricks/cli.git
Move sync logic from cmd/sync to libs/sync (#173)
Mechanical change. Ported global variables the logic relied on to a new `sync.Sync` struct.
This commit is contained in:
parent
f122e29279
commit
fc46d21f8b
|
@ -8,8 +8,8 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/databricks/bricks/cmd/root"
|
||||
"github.com/databricks/bricks/cmd/sync/repofiles"
|
||||
"github.com/databricks/bricks/git"
|
||||
"github.com/databricks/bricks/libs/sync"
|
||||
"github.com/databricks/bricks/project"
|
||||
"github.com/databricks/databricks-sdk-go"
|
||||
"github.com/databricks/databricks-sdk-go/apierr"
|
||||
|
@ -120,11 +120,14 @@ var syncCmd = &cobra.Command{
|
|||
return err
|
||||
}
|
||||
|
||||
root := prj.Root()
|
||||
repoFiles := repofiles.Create(*remotePath, root, wsc)
|
||||
syncCallback := syncCallback(ctx, repoFiles)
|
||||
err = spawnWatchdog(ctx, *interval, syncCallback, *remotePath)
|
||||
return err
|
||||
s := sync.Sync{
|
||||
LocalPath: prj.Root(),
|
||||
RemotePath: *remotePath,
|
||||
PersistSnapshot: *persistSnapshot,
|
||||
PollInterval: *interval,
|
||||
}
|
||||
|
||||
return s.RunWatchdog(ctx, wsc)
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
package sync
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestItSyncs(t *testing.T) {
|
||||
// ctx := context.Background()
|
||||
// root.RootCmd.SetArgs([]string{"sync"})
|
||||
// err := root.RootCmd.ExecuteContext(ctx)
|
||||
// assert.NoError(t, err)
|
||||
}
|
|
@ -14,7 +14,8 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/databricks/bricks/cmd/sync"
|
||||
_ "github.com/databricks/bricks/cmd/sync"
|
||||
"github.com/databricks/bricks/libs/sync"
|
||||
"github.com/databricks/bricks/libs/testfile"
|
||||
"github.com/databricks/databricks-sdk-go"
|
||||
"github.com/databricks/databricks-sdk-go/client"
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package sync
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/databricks/bricks/libs/sync/repofiles"
|
||||
"github.com/databricks/databricks-sdk-go"
|
||||
)
|
||||
|
||||
type Sync struct {
|
||||
LocalPath string
|
||||
RemotePath string
|
||||
|
||||
PersistSnapshot bool
|
||||
|
||||
PollInterval time.Duration
|
||||
}
|
||||
|
||||
// RunWatchdog kicks off a polling loop to monitor local changes and synchronize
|
||||
// them to the remote workspace path.
|
||||
func (s *Sync) RunWatchdog(ctx context.Context, wsc *databricks.WorkspaceClient) error {
|
||||
repoFiles := repofiles.Create(s.RemotePath, s.LocalPath, wsc)
|
||||
syncCallback := syncCallback(ctx, repoFiles)
|
||||
return spawnWatchdog(ctx, s.PollInterval, syncCallback, s.RemotePath, s.PersistSnapshot)
|
||||
}
|
|
@ -6,7 +6,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/databricks/bricks/cmd/sync/repofiles"
|
||||
"github.com/databricks/bricks/libs/sync/repofiles"
|
||||
"github.com/databricks/bricks/project"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
@ -16,6 +16,8 @@ type watchdog struct {
|
|||
ticker *time.Ticker
|
||||
wg sync.WaitGroup
|
||||
failure error // data race? make channel?
|
||||
|
||||
persistSnapshot bool
|
||||
}
|
||||
|
||||
// See https://docs.databricks.com/resources/limits.html#limits-api-rate-limits for per api
|
||||
|
@ -70,9 +72,11 @@ func syncCallback(ctx context.Context, repoFiles *repofiles.RepoFiles) func(loca
|
|||
func spawnWatchdog(ctx context.Context,
|
||||
interval time.Duration,
|
||||
applyDiff func(diff) error,
|
||||
remotePath string) error {
|
||||
remotePath string,
|
||||
persistSnapshot bool) error {
|
||||
w := &watchdog{
|
||||
ticker: time.NewTicker(interval),
|
||||
persistSnapshot: persistSnapshot,
|
||||
}
|
||||
w.wg.Add(1)
|
||||
go w.main(ctx, applyDiff, remotePath)
|
||||
|
@ -90,7 +94,7 @@ func (w *watchdog) main(ctx context.Context, applyDiff func(diff) error, remoteP
|
|||
w.failure = err
|
||||
return
|
||||
}
|
||||
if *persistSnapshot {
|
||||
if w.persistSnapshot {
|
||||
err := snapshot.loadSnapshot(ctx)
|
||||
if err != nil {
|
||||
log.Printf("[ERROR] cannot load snapshot: %s", err)
|
||||
|
@ -128,7 +132,7 @@ func (w *watchdog) main(ctx context.Context, applyDiff func(diff) error, remoteP
|
|||
w.failure = err
|
||||
return
|
||||
}
|
||||
if *persistSnapshot {
|
||||
if w.persistSnapshot {
|
||||
err = snapshot.storeSnapshot(ctx)
|
||||
if err != nil {
|
||||
log.Printf("[ERROR] cannot store snapshot: %s", err)
|
Loading…
Reference in New Issue