1
// Copyright 2014 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/version"
9
"github.com/juju/juju/agent/tools"
12
// UpgradeReadyError is returned by an Upgrader to report that
13
// an upgrade is ready to be performed and a restart is due.
14
type UpgradeReadyError struct {
16
OldTools version.Binary
17
NewTools version.Binary
21
func (e *UpgradeReadyError) Error() string {
22
return "must restart: an agent upgrade is available"
25
// ChangeAgentTools does the actual agent upgrade.
26
// It should be called just before an agent exits, so that
27
// it will restart running the new tools.
28
func (e *UpgradeReadyError) ChangeAgentTools() error {
29
agentTools, err := tools.ChangeAgentTools(e.DataDir, e.AgentName, e.NewTools)
33
logger.Infof("upgraded from %v to %v (%q)", e.OldTools, agentTools.Version, agentTools.URL)