~ubuntu-branches/ubuntu/trusty/juju-core/trusty-proposed

« back to all changes in this revision

Viewing changes to src/launchpad.net/juju-core/environs/manual/provisioner.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-02-03 09:22:46 UTC
  • mfrom: (1.1.17)
  • Revision ID: package-import@ubuntu.com-20140203092246-e03vg402vztzo4qa
Tags: 1.17.2-0ubuntu1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
        "net"
11
11
        "strings"
12
12
 
13
 
        "launchpad.net/loggo"
 
13
        "github.com/loggo/loggo"
14
14
 
15
15
        coreCloudinit "launchpad.net/juju-core/cloudinit"
16
16
        "launchpad.net/juju-core/cloudinit/sshinit"
131
131
                return "", err
132
132
        }
133
133
 
134
 
        var configParameters params.MachineConfig
 
134
        var provisioningScript string
135
135
        if stateConn == nil {
136
 
                configParameters, err = client.MachineConfig(machineId)
 
136
                provisioningScript, err = client.ProvisioningScript(params.ProvisioningScriptParams{
 
137
                        MachineId: machineId,
 
138
                        Nonce:     machineParams.Nonce,
 
139
                })
 
140
                if err != nil {
 
141
                        return "", err
 
142
                }
137
143
        } else {
138
 
                configParameters, err = statecmd.MachineConfig(stateConn.State, machineId)
139
 
        }
140
 
        if err != nil {
141
 
                return "", err
142
 
        }
143
 
        // Gather the information needed by the machine agent to run the provisioning script.
144
 
        mcfg, err := statecmd.FinishMachineConfig(configParameters, machineId, machineParams.Nonce, args.DataDir)
145
 
        if err != nil {
146
 
                return machineId, err
 
144
                mcfg, err := statecmd.MachineConfig(stateConn.State, machineId, machineParams.Nonce, args.DataDir)
 
145
                if err == nil {
 
146
                        provisioningScript, err = generateProvisioningScript(mcfg)
 
147
                }
 
148
                if err != nil {
 
149
                        return "", err
 
150
                }
147
151
        }
148
152
 
149
153
        // Finally, provision the machine agent.
150
 
        err = provisionMachineAgent(hostname, mcfg, args.Stderr)
 
154
        err = runProvisionScript(provisioningScript, hostname, args.Stderr)
151
155
        if err != nil {
152
156
                return machineId, err
153
157
        }
249
253
                        // be using.
250
254
                }
251
255
        }
252
 
        addrs, err := instance.HostAddresses(hostname)
 
256
        addrs, err := HostAddresses(hostname)
253
257
        if err != nil {
254
258
                return nil, err
255
259
        }
289
293
        return machineParams, nil
290
294
}
291
295
 
292
 
func provisionMachineAgent(host string, mcfg *cloudinit.MachineConfig, stderr io.Writer) error {
 
296
func provisionMachineAgent(host string, mcfg *cloudinit.MachineConfig, progressWriter io.Writer) error {
 
297
        script, err := generateProvisioningScript(mcfg)
 
298
        if err != nil {
 
299
                return err
 
300
        }
 
301
        return runProvisionScript(script, host, progressWriter)
 
302
}
 
303
 
 
304
func generateProvisioningScript(mcfg *cloudinit.MachineConfig) (string, error) {
293
305
        cloudcfg := coreCloudinit.New()
294
306
        if err := cloudinit.ConfigureJuju(mcfg, cloudcfg); err != nil {
295
 
                return err
 
307
                return "", err
296
308
        }
297
309
        // Explicitly disabling apt_upgrade so as not to trample
298
310
        // the target machine's existing configuration.
299
311
        cloudcfg.SetAptUpgrade(false)
300
 
        return sshinit.Configure(sshinit.ConfigureParams{
301
 
                Host:   "ubuntu@" + host,
302
 
                Config: cloudcfg,
303
 
                Stderr: stderr,
304
 
        })
 
312
        return sshinit.ConfigureScript(cloudcfg)
 
313
}
 
314
 
 
315
func runProvisionScript(script, host string, progressWriter io.Writer) error {
 
316
        params := sshinit.ConfigureParams{
 
317
                Host:           "ubuntu@" + host,
 
318
                ProgressWriter: progressWriter,
 
319
        }
 
320
        return sshinit.RunConfigureScript(script, params)
305
321
}