~rogpeppe/juju-core/438-local-instance-Addresses

« back to all changes in this revision

Viewing changes to state/api/provisioner/provisioner.go

[r=fwereade],[bug=1234035] Fix upgrade 1.14 -> 1.15

This adds a Tools() API call to provisioner API,
similarly to the upgrader API. Common code factored
out into apiserver/common/tools.go.

SetAgentTools() renamed to SetAgentVersion() in
machine and unit state types. Also renamed a few
types in params to be shorter or better reflect
what are they about. Added DEPRECATE(v1.18) tags
to bits of the API that need cleanup.

Live tested on EC2 - after copying the tools from
/tools/releases/ to /tools/ the upgrade proceeds
and finishes successfully.

https://codereview.appspot.com/14231044/

R=fwereade, jameinel

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
        "launchpad.net/juju-core/state/api/common"
11
11
        "launchpad.net/juju-core/state/api/params"
12
12
        "launchpad.net/juju-core/state/api/watcher"
 
13
        "launchpad.net/juju-core/tools"
13
14
)
14
15
 
15
16
// State provides access to the Machiner API facade.
131
132
        }
132
133
        return result.Result, nil
133
134
}
 
135
 
 
136
// Tools returns the agent tools for the given entity.
 
137
func (st *State) Tools(tag string) (*tools.Tools, error) {
 
138
        var results params.ToolsResults
 
139
        args := params.Entities{
 
140
                Entities: []params.Entity{{Tag: tag}},
 
141
        }
 
142
        err := st.caller.Call("Provisioner", "", "Tools", args, &results)
 
143
        if err != nil {
 
144
                // TODO: Not directly tested
 
145
                return nil, err
 
146
        }
 
147
        if len(results.Results) != 1 {
 
148
                // TODO: Not directly tested
 
149
                return nil, fmt.Errorf("expected one result, got %d", len(results.Results))
 
150
        }
 
151
        result := results.Results[0]
 
152
        if err := result.Error; err != nil {
 
153
                return nil, err
 
154
        }
 
155
        return result.Tools, nil
 
156
}