~sidnei/juju-core/lxc-clone-with-overlayfs

« back to all changes in this revision

Viewing changes to juju/conn.go

  • Committer: Sidnei da Silva
  • Date: 2013-10-21 18:33:07 UTC
  • mfrom: (1667.1.329 juju-core)
  • Revision ID: sidnei.da.silva@canonical.com-20131021183307-fylyr68s4gtbxr08
- Merge from trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
        "launchpad.net/juju-core/constraints"
21
21
        "launchpad.net/juju-core/environs"
22
22
        "launchpad.net/juju-core/environs/config"
 
23
        "launchpad.net/juju-core/environs/configstore"
23
24
        "launchpad.net/juju-core/errors"
24
25
        "launchpad.net/juju-core/instance"
 
26
        "launchpad.net/juju-core/juju/osenv"
25
27
        "launchpad.net/juju-core/log"
26
28
        "launchpad.net/juju-core/names"
27
29
        "launchpad.net/juju-core/state"
118
120
// NewConnFromName returns a Conn pointing at the environName environment, or the
119
121
// default environment if not specified.
120
122
func NewConnFromName(environName string) (*Conn, error) {
121
 
        environ, err := environs.NewFromName(environName)
 
123
        store, err := configstore.Default()
 
124
        if err != nil {
 
125
                return nil, err
 
126
        }
 
127
        environ, err := environs.NewFromName(environName, store)
122
128
        if err != nil {
123
129
                return nil, err
124
130
        }
146
152
                return err
147
153
        }
148
154
        attrs := cfg.AllAttrs()
149
 
        for k := range secrets {
 
155
        for k, v := range secrets {
150
156
                if _, exists := attrs[k]; exists {
151
157
                        // Environment already has secrets. Won't send again.
152
158
                        return nil
 
159
                } else {
 
160
                        attrs[k] = v
153
161
                }
154
162
        }
155
 
        cfg, err = cfg.Apply(secrets)
 
163
        cfg, err = config.New(config.NoDefaults, attrs)
156
164
        if err != nil {
157
165
                return err
158
166
        }
216
224
        if err != nil {
217
225
                return nil, err
218
226
        }
219
 
        emptyCons := constraints.Value{}
220
227
        if args.Charm.Meta().Subordinate {
221
228
                if args.NumUnits != 0 || args.ToMachineSpec != "" {
222
229
                        return nil, fmt.Errorf("subordinate service must be deployed without units")
223
230
                }
224
 
                if args.Constraints != emptyCons {
 
231
                if !constraints.IsEmpty(&args.Constraints) {
225
232
                        return nil, fmt.Errorf("subordinate service must be deployed without constraints")
226
233
                }
227
234
        }
239
246
        if args.Charm.Meta().Subordinate {
240
247
                return service, nil
241
248
        }
242
 
        if args.Constraints != emptyCons {
 
249
        if !constraints.IsEmpty(&args.Constraints) {
243
250
                if err := service.SetConstraints(args.Constraints); err != nil {
244
251
                        return nil, err
245
252
                }
288
295
        if _, err := f.Seek(0, 0); err != nil {
289
296
                return nil, err
290
297
        }
291
 
        storage := conn.Environ.Storage()
 
298
        stor := conn.Environ.Storage()
292
299
        log.Infof("writing charm to storage [%d bytes]", size)
293
 
        if err := storage.Put(name, f, size); err != nil {
 
300
        if err := stor.Put(name, f, size); err != nil {
294
301
                return nil, fmt.Errorf("cannot put charm: %v", err)
295
302
        }
296
 
        ustr, err := storage.URL(name)
 
303
        ustr, err := stor.URL(name)
297
304
        if err != nil {
298
305
                return nil, fmt.Errorf("cannot get storage URL for charm: %v", err)
299
306
        }
378
385
// default paths based on the $JUJU_HOME or $HOME environment variables.
379
386
// This function should be called before calling NewConn or Conn.Deploy.
380
387
func InitJujuHome() error {
381
 
        jujuHome := os.Getenv("JUJU_HOME")
 
388
        jujuHome := osenv.JujuHomeDir()
382
389
        if jujuHome == "" {
383
 
                home := os.Getenv("HOME")
384
 
                if home == "" {
385
 
                        return stderrors.New("cannot determine juju home, neither $JUJU_HOME nor $HOME are set")
386
 
                }
387
 
                jujuHome = filepath.Join(home, ".juju")
 
390
                return stderrors.New(
 
391
                        "cannot determine juju home, required environment variables are not set")
388
392
        }
389
393
        config.SetJujuHome(jujuHome)
390
394
        charm.CacheDir = filepath.Join(jujuHome, "charmcache")