~james-page/ubuntu/wily/juju-core/mir-fixes

« back to all changes in this revision

Viewing changes to src/launchpad.net/juju-core/provider/local/environ.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-03-28 08:58:42 UTC
  • mfrom: (1.1.21)
  • Revision ID: package-import@ubuntu.com-20140328085842-cyzrgc120bdfxwj0
Tags: 1.17.7-0ubuntu1
* New upstream point release, including fixes for:
  - no debug log with all providers on Ubuntu 14.04 (LP: #1294776).
* d/control: Add cpu-checker dependency to juju-local (LP: #1297077).

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
        "launchpad.net/juju-core/state"
40
40
        "launchpad.net/juju-core/state/api"
41
41
        "launchpad.net/juju-core/state/api/params"
 
42
        "launchpad.net/juju-core/upstart"
42
43
        "launchpad.net/juju-core/utils/shell"
43
44
        "launchpad.net/juju-core/version"
44
45
        "launchpad.net/juju-core/worker/terminationworker"
109
110
 
110
111
        // Before we write the agent config file, we need to make sure the
111
112
        // instance is saved in the StateInfo.
112
 
        stateFileURL, err := bootstrap.CreateStateFile(env.Storage())
113
 
        if err != nil {
114
 
                return err
115
 
        }
116
113
        if err := bootstrap.SaveState(env.Storage(), &bootstrap.BootstrapState{
117
114
                StateInstances: []instance.Id{bootstrapInstanceId},
118
115
        }); err != nil {
121
118
        }
122
119
 
123
120
        vers := version.Current
124
 
        selectedTools, err := common.EnsureBootstrapTools(env, vers.Series, &vers.Arch)
 
121
        selectedTools, err := common.EnsureBootstrapTools(ctx, env, vers.Series, &vers.Arch)
125
122
        if err != nil {
126
123
                return err
127
124
        }
138
135
                return err
139
136
        }
140
137
 
141
 
        mcfg := environs.NewBootstrapMachineConfig(stateFileURL, privateKey)
 
138
        mcfg := environs.NewBootstrapMachineConfig(privateKey)
 
139
        mcfg.InstanceId = bootstrapInstanceId
142
140
        mcfg.Tools = selectedTools[0]
143
141
        mcfg.DataDir = env.config.rootDir()
144
142
        mcfg.LogDir = fmt.Sprintf("/var/log/juju-%s", env.config.namespace())
145
143
        mcfg.Jobs = []params.MachineJob{params.JobManageEnviron}
146
 
        mcfg.CloudInitOutputLog = filepath.Join(env.config.logDir(), "cloud-init-output.log")
 
144
        mcfg.CloudInitOutputLog = filepath.Join(mcfg.DataDir, "cloud-init-output.log")
147
145
        mcfg.DisablePackageCommands = true
148
146
        mcfg.MachineAgentServiceName = env.machineAgentServiceName()
149
147
        mcfg.MongoServiceName = env.mongoServiceName()
164
162
        // Also, we leave the old all-machines.log file in
165
163
        // /var/log/juju-{{namespace}} until we start the environment again. So
166
164
        // potentially remove it at the start of the cloud-init.
167
 
        os.RemoveAll(env.config.logDir())
168
 
        os.MkdirAll(env.config.logDir(), 0755)
 
165
        localLogDir := filepath.Join(mcfg.DataDir, "log")
 
166
        if err := os.RemoveAll(localLogDir); err != nil {
 
167
                return err
 
168
        }
 
169
        if err := os.Symlink(mcfg.LogDir, localLogDir); err != nil {
 
170
                return err
 
171
        }
 
172
        if err := os.Remove(mcfg.CloudInitOutputLog); err != nil && !os.IsNotExist(err) {
 
173
                return err
 
174
        }
169
175
        cloudcfg.AddScripts(
170
176
                fmt.Sprintf("rm -fr %s", mcfg.LogDir),
171
 
                fmt.Sprintf("mkdir -p %s", mcfg.LogDir),
172
 
                fmt.Sprintf("chown syslog:adm %s", mcfg.LogDir),
173
177
                fmt.Sprintf("rm -f /var/spool/rsyslog/machine-0-%s", env.config.namespace()),
174
 
                fmt.Sprintf("ln -s %s/all-machines.log %s/", mcfg.LogDir, env.config.logDir()),
175
 
                fmt.Sprintf("ln -s %s/machine-0.log %s/", env.config.logDir(), mcfg.LogDir))
 
178
        )
176
179
        if err := cloudinit.ConfigureJuju(mcfg, cloudcfg); err != nil {
177
180
                return err
178
181
        }
404
407
                        return err
405
408
                }
406
409
                args := []string{
407
 
                        osenv.JujuHomeEnvKey + "=" + osenv.JujuHome(),
 
410
                        "env", osenv.JujuHomeEnvKey + "=" + osenv.JujuHome(),
408
411
                        juju, "destroy-environment", "-y", "--force", env.Name(),
409
412
                }
410
413
                cmd := exec.Command("sudo", args...)
437
440
                        }
438
441
                }
439
442
        }
 
443
        // Stop the mongo database and machine agent. It's possible that the
 
444
        // service doesn't exist or is not running, so don't check the error.
 
445
        upstart.NewService(env.mongoServiceName()).StopAndRemove()
 
446
        upstart.NewService(env.machineAgentServiceName()).StopAndRemove()
 
447
 
 
448
        // Finally, remove the data-dir.
440
449
        if err := os.RemoveAll(env.config.rootDir()); err != nil && !os.IsNotExist(err) {
441
450
                return err
442
451
        }