github.com/databricks/cli@v0.203.0/bundle/deploy/lock/acquire.go (about) 1 package lock 2 3 import ( 4 "context" 5 6 "github.com/databricks/cli/bundle" 7 "github.com/databricks/cli/libs/locker" 8 "github.com/databricks/cli/libs/log" 9 ) 10 11 type acquire struct{} 12 13 func Acquire() bundle.Mutator { 14 return &acquire{} 15 } 16 17 func (m *acquire) Name() string { 18 return "lock:acquire" 19 } 20 21 func (m *acquire) init(b *bundle.Bundle) error { 22 user := b.Config.Workspace.CurrentUser.UserName 23 dir := b.Config.Workspace.StatePath 24 l, err := locker.CreateLocker(user, dir, b.WorkspaceClient()) 25 if err != nil { 26 return err 27 } 28 29 b.Locker = l 30 return nil 31 } 32 33 func (m *acquire) Apply(ctx context.Context, b *bundle.Bundle) error { 34 // Return early if locking is disabled. 35 if !b.Config.Bundle.Lock.IsEnabled() { 36 log.Infof(ctx, "Skipping; locking is disabled") 37 return nil 38 } 39 40 err := m.init(b) 41 if err != nil { 42 return err 43 } 44 45 force := b.Config.Bundle.Lock.Force 46 log.Infof(ctx, "Acquiring deployment lock (force: %v)", force) 47 err = b.Locker.Lock(ctx, force) 48 if err != nil { 49 log.Errorf(ctx, "Failed to acquire deployment lock: %v", err) 50 return err 51 } 52 53 return nil 54 }