// buildTxnWithLeadership returns a transaction source that combines the supplied source // with checks and asserts on the supplied token. func buildTxnWithLeadership(buildTxn jujutxn.TransactionSource, token leadership.Token) jujutxn.TransactionSource { return func(attempt int) ([]txn.Op, error) { var prereqs []txn.Op if err := token.Check(&prereqs); err != nil { return nil, errors.Annotatef(err, "prerequisites failed") } ops, err := buildTxn(attempt) if err == jujutxn.ErrNoOperations { return nil, jujutxn.ErrNoOperations } else if err != nil { return nil, errors.Trace(err) } return append(prereqs, ops...), nil } }
func assertOps(c *gc.C, token coreleadership.Token) (out []txn.Op) { err := token.Check(&out) c.Check(err, jc.ErrorIsNil) return out }