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  }