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