Make backend/local test pass

This commit is contained in:
James Bardin 2017-02-14 18:11:55 -05:00
parent 6d32b70637
commit 67dc16c9ca
5 changed files with 20 additions and 10 deletions

View File

@ -38,7 +38,7 @@ func (b *Local) opApply(
// If we're locking state, unlock when we're done // If we're locking state, unlock when we're done
if op.LockState { if op.LockState {
defer func() { defer func() {
if err := clistate.Unlock(opState, b.CLI, b.Colorize()); err != nil { if err := clistate.Unlock(opState, "", b.CLI, b.Colorize()); err != nil {
runningOp.Err = multierror.Append(runningOp.Err, err) runningOp.Err = multierror.Append(runningOp.Err, err)
} }
}() }()

View File

@ -30,7 +30,11 @@ func (b *Local) context(op *backend.Operation) (*terraform.Context, state.State,
} }
if op.LockState { if op.LockState {
err := clistate.Lock(s, op.Type.String(), b.CLI, b.Colorize()) lockInfo := &state.LockInfo{
Info: op.Type.String(),
}
_, err := clistate.Lock(s, lockInfo, b.CLI, b.Colorize())
if err != nil { if err != nil {
return nil, nil, errwrap.Wrapf("Error locking state: {{err}}", err) return nil, nil, errwrap.Wrapf("Error locking state: {{err}}", err)
} }

View File

@ -62,7 +62,7 @@ func (b *Local) opPlan(
// If we're locking state, unlock when we're done // If we're locking state, unlock when we're done
if op.LockState { if op.LockState {
defer func() { defer func() {
if err := clistate.Unlock(opState, b.CLI, b.Colorize()); err != nil { if err := clistate.Unlock(opState, "", b.CLI, b.Colorize()); err != nil {
runningOp.Err = multierror.Append(runningOp.Err, err) runningOp.Err = multierror.Append(runningOp.Err, err)
} }
}() }()

View File

@ -51,7 +51,7 @@ func (b *Local) opRefresh(
// If we're locking state, unlock when we're done // If we're locking state, unlock when we're done
if op.LockState { if op.LockState {
defer func() { defer func() {
if err := clistate.Unlock(opState, b.CLI, b.Colorize()); err != nil { if err := clistate.Unlock(opState, "", b.CLI, b.Colorize()); err != nil {
runningOp.Err = multierror.Append(runningOp.Err, err) runningOp.Err = multierror.Append(runningOp.Err, err)
} }
}() }()

View File

@ -49,14 +49,18 @@ that no one else is holding a lock.
// Lock locks the given state and outputs to the user if locking // Lock locks the given state and outputs to the user if locking
// is taking longer than the threshold. // is taking longer than the threshold.
func Lock(s state.State, info string, ui cli.Ui, color *colorstring.Colorize) error { func Lock(s state.State, info *state.LockInfo, ui cli.Ui, color *colorstring.Colorize) (string, error) {
sl, ok := s.(state.Locker) sl, ok := s.(state.Locker)
if !ok { if !ok {
return nil return "", nil
} }
var lockID string
err := slowmessage.Do(LockThreshold, func() error { err := slowmessage.Do(LockThreshold, func() error {
return sl.Lock(info) id, err := sl.Lock(info)
lockID = id
return err
}, func() { }, func() {
if ui != nil { if ui != nil {
ui.Output(color.Color(LockMessage)) ui.Output(color.Color(LockMessage))
@ -67,18 +71,20 @@ func Lock(s state.State, info string, ui cli.Ui, color *colorstring.Colorize) er
err = errwrap.Wrapf(strings.TrimSpace(LockErrorMessage), err) err = errwrap.Wrapf(strings.TrimSpace(LockErrorMessage), err)
} }
return err return lockID, err
} }
// Unlock unlocks the given state and outputs to the user if the // Unlock unlocks the given state and outputs to the user if the
// unlock fails what can be done. // unlock fails what can be done.
func Unlock(s state.State, ui cli.Ui, color *colorstring.Colorize) error { func Unlock(s state.State, id string, ui cli.Ui, color *colorstring.Colorize) error {
sl, ok := s.(state.Locker) sl, ok := s.(state.Locker)
if !ok { if !ok {
return nil return nil
} }
err := slowmessage.Do(LockThreshold, sl.Unlock, func() { err := slowmessage.Do(LockThreshold, func() error {
return sl.Unlock(id)
}, func() {
if ui != nil { if ui != nil {
ui.Output(color.Color(UnlockMessage)) ui.Output(color.Color(UnlockMessage))
} }