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

« back to all changes in this revision

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

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-03-24 16:05:44 UTC
  • mfrom: (1.1.20)
  • Revision ID: package-import@ubuntu.com-20140324160544-g8lsfufby18d5fj4
Tags: 1.17.6-0ubuntu1
* New upstream point release, including fixes for:
  - br0 not bought up by cloud-init with MAAS provider (LP: #1271144).
  - ppc64el enablement for juju/lxc (LP: #1273769).
  - juju userdata should not restart networking (LP: #1248283).
  - error detecting hardware characteristics (LP: #1276909).
  - juju instances not including the default security group (LP: #1129720).
  - juju bootstrap does not honor https_proxy (LP: #1240260).
* d/control,rules: Drop BD on bash-completion, install bash-completion
  direct from upstream source code.
* d/rules: Set HOME prior to generating man pages.
* d/control: Drop alternative dependency on mongodb-server; juju now only
  works on trusty with juju-mongodb.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
        "strings"
13
13
        "sync"
14
14
 
15
 
        "github.com/loggo/loggo"
 
15
        "github.com/juju/loggo"
16
16
 
 
17
        "launchpad.net/juju-core/agent"
17
18
        "launchpad.net/juju-core/constraints"
18
19
        "launchpad.net/juju-core/environs"
19
 
        "launchpad.net/juju-core/environs/cloudinit"
20
20
        "launchpad.net/juju-core/environs/config"
21
21
        "launchpad.net/juju-core/environs/httpstorage"
22
22
        "launchpad.net/juju-core/environs/manual"
28
28
        "launchpad.net/juju-core/provider/common"
29
29
        "launchpad.net/juju-core/state"
30
30
        "launchpad.net/juju-core/state/api"
31
 
        "launchpad.net/juju-core/tools"
32
31
        "launchpad.net/juju-core/utils/ssh"
33
32
        "launchpad.net/juju-core/worker/localstorage"
34
33
        "launchpad.net/juju-core/worker/terminationworker"
35
34
)
36
35
 
37
36
const (
38
 
        // TODO(axw) make this configurable?
39
 
        dataDir = "/var/lib/juju"
40
 
 
41
37
        // storageSubdir is the subdirectory of
42
38
        // dataDir in which storage will be located.
43
39
        storageSubdir = "storage"
63
59
var errNoStartInstance = errors.New("manual provider cannot start instances")
64
60
var errNoStopInstance = errors.New("manual provider cannot stop instances")
65
61
 
66
 
func (*manualEnviron) StartInstance(constraints.Value, tools.List, *cloudinit.MachineConfig) (instance.Instance, *instance.HardwareCharacteristics, error) {
 
62
func (*manualEnviron) StartInstance(args environs.StartInstanceParams) (instance.Instance, *instance.HardwareCharacteristics, error) {
67
63
        return nil, nil, errNoStartInstance
68
64
}
69
65
 
90
86
        return e.envConfig().Name()
91
87
}
92
88
 
 
89
// SupportedArchitectures is specified on the EnvironCapability interface.
 
90
func (e *manualEnviron) SupportedArchitectures() ([]string, error) {
 
91
        envConfig := e.envConfig()
 
92
        host := envConfig.bootstrapHost()
 
93
        hc, _, err := manual.DetectSeriesAndHardwareCharacteristics(host)
 
94
        if err != nil {
 
95
                return nil, err
 
96
        }
 
97
        return []string{*hc.Arch}, nil
 
98
}
 
99
 
93
100
func (e *manualEnviron) Bootstrap(ctx environs.BootstrapContext, cons constraints.Value) error {
94
101
        // Set "use-sshstorage" to false, so agents know not to use sshstorage.
95
102
        cfg, err := e.Config().Apply(map[string]interface{}{"use-sshstorage": false})
112
119
        return manual.Bootstrap(manual.BootstrapArgs{
113
120
                Context:                 ctx,
114
121
                Host:                    host,
115
 
                DataDir:                 dataDir,
 
122
                DataDir:                 agent.DefaultDataDir,
116
123
                Environ:                 e,
117
124
                PossibleTools:           selectedTools,
118
125
                Series:                  series,
141
148
                var stor storage.Storage
142
149
                if envConfig.useSSHStorage() {
143
150
                        storageDir := e.StorageDir()
144
 
                        storageTmpdir := path.Join(dataDir, storageTmpSubdir)
 
151
                        storageTmpdir := path.Join(agent.DefaultDataDir, storageTmpSubdir)
145
152
                        stor, err = newSSHStorage("ubuntu@"+e.cfg.bootstrapHost(), storageDir, storageTmpdir)
146
153
                        if err != nil {
147
154
                                return fmt.Errorf("initialising SSH storage failed: %v", err)
188
195
}
189
196
 
190
197
var newSSHStorage = func(sshHost, storageDir, storageTmpdir string) (storage.Storage, error) {
 
198
        logger.Debugf("using ssh storage at host %q dir %q", sshHost, storageDir)
191
199
        return sshstorage.NewSSHStorage(sshstorage.NewSSHStorageParams{
192
200
                Host:       sshHost,
193
201
                StorageDir: storageDir,
200
208
func (e *manualEnviron) GetToolsSources() ([]simplestreams.DataSource, error) {
201
209
        // Add the simplestreams source off private storage.
202
210
        return []simplestreams.DataSource{
203
 
                storage.NewStorageSimpleStreamsDataSource(e.Storage(), storage.BaseToolsPath),
 
211
                storage.NewStorageSimpleStreamsDataSource("cloud storage", e.Storage(), storage.BaseToolsPath),
204
212
        }, nil
205
213
}
206
214
 
256
264
}
257
265
 
258
266
func (e *manualEnviron) StorageDir() string {
259
 
        return path.Join(dataDir, storageSubdir)
 
267
        return path.Join(agent.DefaultDataDir, storageSubdir)
260
268
}
261
269
 
262
270
func (e *manualEnviron) SharedStorageAddr() string {