forked from juju/juju
/
leadership.go
51 lines (41 loc) · 1.18 KB
/
leadership.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Copyright 2015 Canonical Ltd.
// Licensed under the AGPLv3, see LICENCE file for details.
package testing
import (
"github.com/juju/errors"
)
// Leadership holds the values for the hook context.
type Leadership struct {
IsLeader bool
LeaderSettings map[string]string
}
// ContextLeader is a test double for jujuc.ContextLeader.
type ContextLeader struct {
contextBase
info *Leadership
}
// IsLeader implements jujuc.ContextLeader.
func (c *ContextLeader) IsLeader() (bool, error) {
c.stub.AddCall("IsLeader")
if err := c.stub.NextErr(); err != nil {
return false, errors.Trace(err)
}
return c.info.IsLeader, nil
}
// LeaderSettings implements jujuc.ContextLeader.
func (c *ContextLeader) LeaderSettings() (map[string]string, error) {
c.stub.AddCall("LeaderSettings")
if err := c.stub.NextErr(); err != nil {
return nil, errors.Trace(err)
}
return c.info.LeaderSettings, nil
}
// WriteLeaderSettings implements jujuc.ContextLeader.
func (c *ContextLeader) WriteLeaderSettings(settings map[string]string) error {
c.stub.AddCall("WriteLeaderSettings")
if err := c.stub.NextErr(); err != nil {
return errors.Trace(err)
}
c.info.LeaderSettings = settings
return nil
}