Merge lp:~wallyworld/juju-core/fix-unitupgrader-datadir into lp:~go-bot/juju-core/trunk

Proposed by Ian Booth
Status: Merged
Approved by: Ian Booth
Approved revision: no longer in the source branch.
Merged at revision: 2343
Proposed branch: lp:~wallyworld/juju-core/fix-unitupgrader-datadir
Merge into: lp:~go-bot/juju-core/trunk
Diff against target: 207 lines (+21/-22)
6 files modified
juju/testing/conn.go (+2/-2)
provider/dummy/environs.go (+4/-1)
state/api/upgrader/unitupgrader_test.go (+1/-4)
state/apiserver/root.go (+1/-1)
state/apiserver/upgrader/unitupgrader.go (+4/-2)
state/apiserver/upgrader/unitupgrader_test.go (+9/-12)
To merge this branch: bzr merge lp:~wallyworld/juju-core/fix-unitupgrader-datadir
Reviewer Review Type Date Requested Status
Juju Engineering Pending
Review via email: mp+207345@code.launchpad.net

Commit message

Unit upgrader data dir fix

The unit upgrader was using the default datadir instead
of the one configured in the agent config.

https://codereview.appspot.com/66320043/

Description of the change

Unit upgrader data dir fix

The unit upgrader was using the default datadir instead
of the one configured in the agent config.

https://codereview.appspot.com/66320043/

To post a comment you must log in.
Revision history for this message
Ian Booth (wallyworld) wrote :
Download full text (6.5 KiB)

Reviewers: mp+207345_code.launchpad.net,

Message:
Please take a look.

Description:
Unit upgrader data dir fix

The unit upgrader was using the default datadir instead
of the one configured in the agent config.

https://code.launchpad.net/~wallyworld/juju-core/fix-unitupgrader-datadir/+merge/207345

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/66320043/

Affected files (+17, -15 lines):
   A [revision details]
   M state/apiserver/root.go
   M state/apiserver/upgrader/unitupgrader.go
   M state/apiserver/upgrader/unitupgrader_test.go

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: tarmac-20140219135723-ldv43e0o1e1qgiif
+New revision: <email address hidden>

Index: state/apiserver/root.go
=== modified file 'state/apiserver/root.go'
--- state/apiserver/root.go 2014-02-18 00:15:30 +0000
+++ state/apiserver/root.go 2014-02-20 03:12:23 +0000
@@ -211,7 +211,7 @@
   case names.MachineTagKind:
    return upgrader.NewUpgraderAPI(r.srv.state, r.resources, r)
   case names.UnitTagKind:
- return upgrader.NewUnitUpgraderAPI(r.srv.state, r.resources, r)
+ return upgrader.NewUnitUpgraderAPI(r.srv.state, r.resources, r,
r.srv.dataDir)
   }
   // Not a machine or unit.
   return nil, common.ErrPerm

Index: state/apiserver/upgrader/unitupgrader.go
=== modified file 'state/apiserver/upgrader/unitupgrader.go'
--- state/apiserver/upgrader/unitupgrader.go 2014-02-19 01:26:15 +0000
+++ state/apiserver/upgrader/unitupgrader.go 2014-02-20 03:12:23 +0000
@@ -5,7 +5,6 @@

  import (
   agenttools "launchpad.net/juju-core/agent/tools"
- "launchpad.net/juju-core/environs"
   "launchpad.net/juju-core/names"
   "launchpad.net/juju-core/state"
   "launchpad.net/juju-core/state/api/params"
@@ -22,6 +21,7 @@
   st *state.State
   resources *common.Resources
   authorizer common.Authorizer
+ dataDir string
  }

  // NewUnitUpgraderAPI creates a new server-side UnitUpgraderAPI facade.
@@ -29,6 +29,7 @@
   st *state.State,
   resources *common.Resources,
   authorizer common.Authorizer,
+ dataDir string,
  ) (*UnitUpgraderAPI, error) {
   if !authorizer.AuthUnitAgent() {
    return nil, common.ErrPerm
@@ -42,6 +43,7 @@
    st: st,
    resources: resources,
    authorizer: authorizer,
+ dataDir: dataDir,
   }, nil
  }

@@ -144,7 +146,7 @@
   // download the tools even though they already have been fetched by the
machine agent. Newer upgrader
   // workers do not have this problem. So to be compatible across all
versions, we return the full tools
   // metadata as recorded in the downloaded tools directory.
- downloadedTools, err := agenttools.ReadTools(environs.DataDir,
machineTools.Version)
+ downloadedTools, err := agenttools.ReadTools(u.dataDir,
machineTools.Version)
   if err != nil {
    return nil, err
   }

Index: state/apiserver/upgrader/unitupgrader_test.go
=== modified file 'state/apiserver/upgrader/unitupgrader_test.go'
--- state/apiserver/upgrader/unitupgrader_test.go 2014-02-19 02:07:19 +0000...

Read more...

Revision history for this message
Andrew Wilkins (axwalk) wrote :

On 2014/02/20 03:14:37, wallyworld wrote:
> Please take a look.

LGTM

https://codereview.appspot.com/66320043/

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (90.9 KiB)

The attempt to merge lp:~wallyworld/juju-core/fix-unitupgrader-datadir into lp:juju-core failed. Below is the output from the failed tests.

ok launchpad.net/juju-core 0.016s
ok launchpad.net/juju-core/agent 0.879s
ok launchpad.net/juju-core/agent/tools 0.304s
ok launchpad.net/juju-core/bzr 6.801s
ok launchpad.net/juju-core/cert 3.720s
ok launchpad.net/juju-core/charm 0.660s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.037s
ok launchpad.net/juju-core/cloudinit/sshinit 1.139s
ok launchpad.net/juju-core/cmd 0.233s
ok launchpad.net/juju-core/cmd/charm-admin 0.858s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/juju 238.233s
[jujuc whatever]
[remote]
[/path/to/remote]
[remote --help]
[unknown]
[remote --error borken]
[remote --unknown]
[remote unwanted]

----------------------------------------------------------------------
FAIL: unit_test.go:146: UnitSuite.TestUpgrade

[LOG] 29.87242 DEBUG juju.environs.configstore Making /tmp/gocheck-2781055864473387780/18/home/ubuntu/.juju/environments
[LOG] 29.96522 DEBUG juju.environs.tools reading v1.* tools
[LOG] 29.96528 INFO juju environs/testing: uploading FAKE tools 1.17.3-precise-amd64
[LOG] 29.96754 DEBUG juju.environs.tools no architecture specified when finding tools, looking for any
[LOG] 29.96757 DEBUG juju.environs.tools no series specified when finding tools, looking for any
[LOG] 29.96767 DEBUG juju.environs.simplestreams fetchData failed for "tools/streams/v1/index.sjson": file "tools/streams/v1/index.sjson" not found not found
[LOG] 29.96768 DEBUG juju.environs.simplestreams cannot load index "streams/v1/index.sjson": invalid URL "tools/streams/v1/index.sjson" not found
[LOG] 29.96774 DEBUG juju.environs.simplestreams fetchData failed for "tools/streams/v1/index.json": file "tools/streams/v1/index.json" not found not found
[LOG] 29.96776 DEBUG juju.environs.simplestreams cannot load index "streams/v1/index.json": invalid URL "tools/streams/v1/index.json" not found
[LOG] 29.96810 INFO juju.environs.tools Writing tools/streams/v1/index.json
[LOG] 29.96822 INFO juju.environs.tools Writing tools/streams/v1/com.ubuntu.juju:released:tools.json
[LOG] 29.96828 INFO juju.environs.bootstrap bootstrapping environment "dummyenv"
[LOG] 29.96831 DEBUG juju.environs.bootstrap looking for bootstrap tools: series="precise", arch=<nil>, version=1.17.3
[LOG] 29.96832 INFO juju.environs.tools reading tools with major.minor version 1.17
[LOG] 29.96833 INFO juju.environs.tools filtering tools by version: 1.17.3
[LOG] 29.96836 INFO juju.environs.tools filtering tools by series: precise
[LOG] 29.96839 DEBUG juju.environs.tools no architecture specified when finding tools, looking for any
[LOG] 29.96843 DEBUG juju.environs.simplestreams fetchData failed for "tools/streams/v1/index.sjson": file "tools/streams/v1/index.sjson" not found not found
[LOG] 29.96845 DEBUG juju.environs.simplestreams cannot load index "streams/v1/index.sjson": invalid URL "tools/streams/v1/index.sjson" not found
[L...

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (9.8 KiB)

The attempt to merge lp:~wallyworld/juju-core/fix-unitupgrader-datadir into lp:juju-core failed. Below is the output from the failed tests.

ok launchpad.net/juju-core 0.016s
ok launchpad.net/juju-core/agent 1.219s
ok launchpad.net/juju-core/agent/tools 0.226s
ok launchpad.net/juju-core/bzr 7.100s
ok launchpad.net/juju-core/cert 3.992s
ok launchpad.net/juju-core/charm 0.583s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.037s
ok launchpad.net/juju-core/cloudinit/sshinit 1.159s
ok launchpad.net/juju-core/cmd 0.231s
ok launchpad.net/juju-core/cmd/charm-admin 0.373s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/juju 240.446s
ok launchpad.net/juju-core/cmd/jujud 60.763s
ok launchpad.net/juju-core/cmd/plugins/juju-metadata 13.349s
? launchpad.net/juju-core/cmd/plugins/juju-restore [no test files]
ok launchpad.net/juju-core/constraints 0.027s
ok launchpad.net/juju-core/container 0.038s
ok launchpad.net/juju-core/container/factory 0.051s
ok launchpad.net/juju-core/container/kvm 0.263s
ok launchpad.net/juju-core/container/kvm/mock 0.047s
? launchpad.net/juju-core/container/kvm/testing [no test files]
ok launchpad.net/juju-core/container/lxc 0.304s
? launchpad.net/juju-core/container/lxc/mock [no test files]
? launchpad.net/juju-core/container/lxc/testing [no test files]
? launchpad.net/juju-core/container/testing [no test files]
ok launchpad.net/juju-core/downloader 5.305s
ok launchpad.net/juju-core/environs 3.068s
ok launchpad.net/juju-core/environs/bootstrap 4.620s
ok launchpad.net/juju-core/environs/cloudinit 0.631s
ok launchpad.net/juju-core/environs/config 3.119s
ok launchpad.net/juju-core/environs/configstore 0.113s
ok launchpad.net/juju-core/environs/filestorage 0.032s
ok launchpad.net/juju-core/environs/httpstorage 1.153s
ok launchpad.net/juju-core/environs/imagemetadata 0.607s
? launchpad.net/juju-core/environs/imagemetadata/testing [no test files]
ok launchpad.net/juju-core/environs/instances 0.060s
ok launchpad.net/juju-core/environs/jujutest 0.254s
ok launchpad.net/juju-core/environs/manual 12.920s
ok launchpad.net/juju-core/environs/simplestreams 0.323s
? launchpad.net/juju-core/environs/simplestreams/testing [no test files]
ok launchpad.net/juju-core/environs/sshstorage 1.193s
ok launchpad.net/juju-core/environs/storage 1.181s
ok launchpad.net/juju-core/environs/sync 34.818s
ok launchpad.net/juju-core/environs/testing 0.234s
ok launchpad.net/juju-core/environs/tools 7.089s
? launchpad.net/juju-core/environs/tools/testing [no test files]
ok launchpad.net/juju-core/errors 0.015s
ok launchpad.net/juju-core/instance 0.023s
? launchpad.net/juju-core/instance/testing [no test files]
ok launchpad.net/juju-core/juju 23.365s
ok launchpad.net/juju-core/juju/osenv 0.020s
? launchpad.net/juju-core/juju/testing [no test files]
ok launchpad.net/juju-core/log 0.015s
ok launchpad.net/juju-core/log/syslog 0.022s
? launchpad.net/juju...

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (9.4 KiB)

The attempt to merge lp:~wallyworld/juju-core/fix-unitupgrader-datadir into lp:juju-core failed. Below is the output from the failed tests.

ok launchpad.net/juju-core 0.016s
ok launchpad.net/juju-core/agent 1.144s
ok launchpad.net/juju-core/agent/tools 0.217s
ok launchpad.net/juju-core/bzr 7.186s
ok launchpad.net/juju-core/cert 3.629s
ok launchpad.net/juju-core/charm 0.613s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.036s
ok launchpad.net/juju-core/cloudinit/sshinit 1.178s
ok launchpad.net/juju-core/cmd 0.239s
ok launchpad.net/juju-core/cmd/charm-admin 0.856s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/juju 238.995s
ok launchpad.net/juju-core/cmd/jujud 60.725s
ok launchpad.net/juju-core/cmd/plugins/juju-metadata 10.378s
? launchpad.net/juju-core/cmd/plugins/juju-restore [no test files]
ok launchpad.net/juju-core/constraints 0.026s
ok launchpad.net/juju-core/container 0.039s
ok launchpad.net/juju-core/container/factory 0.051s
ok launchpad.net/juju-core/container/kvm 0.234s
ok launchpad.net/juju-core/container/kvm/mock 0.047s
? launchpad.net/juju-core/container/kvm/testing [no test files]
ok launchpad.net/juju-core/container/lxc 0.262s
? launchpad.net/juju-core/container/lxc/mock [no test files]
? launchpad.net/juju-core/container/lxc/testing [no test files]
? launchpad.net/juju-core/container/testing [no test files]
ok launchpad.net/juju-core/downloader 5.316s
ok launchpad.net/juju-core/environs 3.044s
ok launchpad.net/juju-core/environs/bootstrap 4.969s
ok launchpad.net/juju-core/environs/cloudinit 0.651s
ok launchpad.net/juju-core/environs/config 2.231s
ok launchpad.net/juju-core/environs/configstore 0.049s
ok launchpad.net/juju-core/environs/filestorage 0.032s
ok launchpad.net/juju-core/environs/httpstorage 0.928s
ok launchpad.net/juju-core/environs/imagemetadata 0.643s
? launchpad.net/juju-core/environs/imagemetadata/testing [no test files]
ok launchpad.net/juju-core/environs/instances 0.061s
ok launchpad.net/juju-core/environs/jujutest 0.271s
ok launchpad.net/juju-core/environs/manual 14.055s
ok launchpad.net/juju-core/environs/simplestreams 0.348s
? launchpad.net/juju-core/environs/simplestreams/testing [no test files]
ok launchpad.net/juju-core/environs/sshstorage 1.173s
ok launchpad.net/juju-core/environs/storage 1.145s
ok launchpad.net/juju-core/environs/sync 34.464s
ok launchpad.net/juju-core/environs/testing 0.188s
ok launchpad.net/juju-core/environs/tools 7.080s
? launchpad.net/juju-core/environs/tools/testing [no test files]
ok launchpad.net/juju-core/errors 0.016s
ok launchpad.net/juju-core/instance 0.024s
? launchpad.net/juju-core/instance/testing [no test files]
ok launchpad.net/juju-core/juju 23.359s
ok launchpad.net/juju-core/juju/osenv 0.020s
? launchpad.net/juju-core/juju/testing [no test files]
ok launchpad.net/juju-core/log 0.015s
ok launchpad.net/juju-core/log/syslog 0.026s
? launchpad.net/juju...

Read more...

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (9.4 KiB)

The attempt to merge lp:~wallyworld/juju-core/fix-unitupgrader-datadir into lp:juju-core failed. Below is the output from the failed tests.

ok launchpad.net/juju-core 0.015s
ok launchpad.net/juju-core/agent 1.237s
ok launchpad.net/juju-core/agent/tools 0.245s
ok launchpad.net/juju-core/bzr 6.870s
ok launchpad.net/juju-core/cert 3.124s
ok launchpad.net/juju-core/charm 0.601s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.036s
ok launchpad.net/juju-core/cloudinit/sshinit 1.195s
ok launchpad.net/juju-core/cmd 0.268s
ok launchpad.net/juju-core/cmd/charm-admin 0.853s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/juju 232.782s
ok launchpad.net/juju-core/cmd/jujud 61.007s
ok launchpad.net/juju-core/cmd/plugins/juju-metadata 12.876s
? launchpad.net/juju-core/cmd/plugins/juju-restore [no test files]
ok launchpad.net/juju-core/constraints 0.026s
ok launchpad.net/juju-core/container 0.037s
ok launchpad.net/juju-core/container/factory 0.062s
ok launchpad.net/juju-core/container/kvm 0.306s
ok launchpad.net/juju-core/container/kvm/mock 0.045s
? launchpad.net/juju-core/container/kvm/testing [no test files]
ok launchpad.net/juju-core/container/lxc 0.321s
? launchpad.net/juju-core/container/lxc/mock [no test files]
? launchpad.net/juju-core/container/lxc/testing [no test files]
? launchpad.net/juju-core/container/testing [no test files]
ok launchpad.net/juju-core/downloader 5.288s
ok launchpad.net/juju-core/environs 3.084s
ok launchpad.net/juju-core/environs/bootstrap 4.612s
ok launchpad.net/juju-core/environs/cloudinit 0.654s
ok launchpad.net/juju-core/environs/config 3.396s
ok launchpad.net/juju-core/environs/configstore 0.049s
ok launchpad.net/juju-core/environs/filestorage 0.032s
ok launchpad.net/juju-core/environs/httpstorage 1.041s
ok launchpad.net/juju-core/environs/imagemetadata 0.638s
? launchpad.net/juju-core/environs/imagemetadata/testing [no test files]
ok launchpad.net/juju-core/environs/instances 0.061s
ok launchpad.net/juju-core/environs/jujutest 0.230s
ok launchpad.net/juju-core/environs/manual 17.024s
ok launchpad.net/juju-core/environs/simplestreams 0.408s
? launchpad.net/juju-core/environs/simplestreams/testing [no test files]
ok launchpad.net/juju-core/environs/sshstorage 1.227s
ok launchpad.net/juju-core/environs/storage 1.113s
ok launchpad.net/juju-core/environs/sync 34.732s
ok launchpad.net/juju-core/environs/testing 0.222s
ok launchpad.net/juju-core/environs/tools 6.910s
? launchpad.net/juju-core/environs/tools/testing [no test files]
ok launchpad.net/juju-core/errors 0.016s
ok launchpad.net/juju-core/instance 0.023s
? launchpad.net/juju-core/instance/testing [no test files]
ok launchpad.net/juju-core/juju 21.984s
ok launchpad.net/juju-core/juju/osenv 0.018s
? launchpad.net/juju-core/juju/testing [no test files]
ok launchpad.net/juju-core/log 0.015s
ok launchpad.net/juju-core/log/syslog 0.026s
? launchpad.net/juju...

Read more...

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'juju/testing/conn.go'
--- juju/testing/conn.go 2014-02-18 01:29:47 +0000
+++ juju/testing/conn.go 2014-02-20 04:59:53 +0000
@@ -177,8 +177,7 @@
177 err = os.Mkdir(osenv.JujuHome(), 0777)177 err = os.Mkdir(osenv.JujuHome(), 0777)
178 c.Assert(err, gc.IsNil)178 c.Assert(err, gc.IsNil)
179179
180 dataDir := filepath.Join(s.RootDir, "/var/lib/juju")180 err = os.MkdirAll(s.DataDir(), 0777)
181 err = os.MkdirAll(dataDir, 0777)
182 c.Assert(err, gc.IsNil)181 c.Assert(err, gc.IsNil)
183 s.PatchEnvironment(osenv.JujuEnvEnvKey, "")182 s.PatchEnvironment(osenv.JujuEnvEnvKey, "")
184183
@@ -201,6 +200,7 @@
201 c.Assert(err, gc.IsNil)200 c.Assert(err, gc.IsNil)
202 // sanity check we've got the correct environment.201 // sanity check we've got the correct environment.
203 c.Assert(environ.Name(), gc.Equals, "dummyenv")202 c.Assert(environ.Name(), gc.Equals, "dummyenv")
203 s.PatchValue(&dummy.DataDir, s.DataDir())
204204
205 envtesting.MustUploadFakeTools(environ.Storage())205 envtesting.MustUploadFakeTools(environ.Storage())
206 c.Assert(bootstrap.Bootstrap(ctx, environ, constraints.Value{}), gc.IsNil)206 c.Assert(bootstrap.Bootstrap(ctx, environ, constraints.Value{}), gc.IsNil)
207207
=== modified file 'provider/dummy/environs.go'
--- provider/dummy/environs.go 2014-02-13 02:46:58 +0000
+++ provider/dummy/environs.go 2014-02-20 04:59:53 +0000
@@ -490,6 +490,9 @@
490490
491var errBroken = errors.New("broken environment")491var errBroken = errors.New("broken environment")
492492
493// Override for testing - the data directory with which the state api server is initialised.
494var DataDir = ""
495
493func (e *environ) ecfg() *environConfig {496func (e *environ) ecfg() *environConfig {
494 e.ecfgMutex.Lock()497 e.ecfgMutex.Lock()
495 ecfg := e.ecfgUnlocked498 ecfg := e.ecfgUnlocked
@@ -585,7 +588,7 @@
585 if err != nil {588 if err != nil {
586 panic(err)589 panic(err)
587 }590 }
588 estate.apiServer, err = apiserver.NewServer(st, "localhost:0", []byte(testing.ServerCert), []byte(testing.ServerKey), "")591 estate.apiServer, err = apiserver.NewServer(st, "localhost:0", []byte(testing.ServerCert), []byte(testing.ServerKey), DataDir)
589 if err != nil {592 if err != nil {
590 panic(err)593 panic(err)
591 }594 }
592595
=== modified file 'state/api/upgrader/unitupgrader_test.go'
--- state/api/upgrader/unitupgrader_test.go 2014-02-19 01:26:15 +0000
+++ state/api/upgrader/unitupgrader_test.go 2014-02-20 04:59:53 +0000
@@ -11,7 +11,6 @@
1111
12 gc "launchpad.net/gocheck"12 gc "launchpad.net/gocheck"
1313
14 "launchpad.net/juju-core/environs"
15 "launchpad.net/juju-core/errors"14 "launchpad.net/juju-core/errors"
16 jujutesting "launchpad.net/juju-core/juju/testing"15 jujutesting "launchpad.net/juju-core/juju/testing"
17 "launchpad.net/juju-core/state"16 "launchpad.net/juju-core/state"
@@ -54,9 +53,7 @@
54 s.stateAPI = s.OpenAPIAs(c, s.rawUnit.Tag(), password)53 s.stateAPI = s.OpenAPIAs(c, s.rawUnit.Tag(), password)
5554
56 // Set up fake downloaded tools for the assigned machine.55 // Set up fake downloaded tools for the assigned machine.
57 libDir := c.MkDir()56 fakeToolsPath := filepath.Join(s.DataDir(), "tools", version.Current.String())
58 s.PatchValue(&environs.DataDir, libDir)
59 fakeToolsPath := filepath.Join(libDir, "tools", version.Current.String())
60 err = os.MkdirAll(fakeToolsPath, 0700)57 err = os.MkdirAll(fakeToolsPath, 0700)
61 c.Assert(err, gc.IsNil)58 c.Assert(err, gc.IsNil)
62 s.fakeTools = &tools.Tools{59 s.fakeTools = &tools.Tools{
6360
=== modified file 'state/apiserver/root.go'
--- state/apiserver/root.go 2014-02-18 00:15:30 +0000
+++ state/apiserver/root.go 2014-02-20 04:59:53 +0000
@@ -211,7 +211,7 @@
211 case names.MachineTagKind:211 case names.MachineTagKind:
212 return upgrader.NewUpgraderAPI(r.srv.state, r.resources, r)212 return upgrader.NewUpgraderAPI(r.srv.state, r.resources, r)
213 case names.UnitTagKind:213 case names.UnitTagKind:
214 return upgrader.NewUnitUpgraderAPI(r.srv.state, r.resources, r)214 return upgrader.NewUnitUpgraderAPI(r.srv.state, r.resources, r, r.srv.dataDir)
215 }215 }
216 // Not a machine or unit.216 // Not a machine or unit.
217 return nil, common.ErrPerm217 return nil, common.ErrPerm
218218
=== modified file 'state/apiserver/upgrader/unitupgrader.go'
--- state/apiserver/upgrader/unitupgrader.go 2014-02-19 01:26:15 +0000
+++ state/apiserver/upgrader/unitupgrader.go 2014-02-20 04:59:53 +0000
@@ -5,7 +5,6 @@
55
6import (6import (
7 agenttools "launchpad.net/juju-core/agent/tools"7 agenttools "launchpad.net/juju-core/agent/tools"
8 "launchpad.net/juju-core/environs"
9 "launchpad.net/juju-core/names"8 "launchpad.net/juju-core/names"
10 "launchpad.net/juju-core/state"9 "launchpad.net/juju-core/state"
11 "launchpad.net/juju-core/state/api/params"10 "launchpad.net/juju-core/state/api/params"
@@ -22,6 +21,7 @@
22 st *state.State21 st *state.State
23 resources *common.Resources22 resources *common.Resources
24 authorizer common.Authorizer23 authorizer common.Authorizer
24 dataDir string
25}25}
2626
27// NewUnitUpgraderAPI creates a new server-side UnitUpgraderAPI facade.27// NewUnitUpgraderAPI creates a new server-side UnitUpgraderAPI facade.
@@ -29,6 +29,7 @@
29 st *state.State,29 st *state.State,
30 resources *common.Resources,30 resources *common.Resources,
31 authorizer common.Authorizer,31 authorizer common.Authorizer,
32 dataDir string,
32) (*UnitUpgraderAPI, error) {33) (*UnitUpgraderAPI, error) {
33 if !authorizer.AuthUnitAgent() {34 if !authorizer.AuthUnitAgent() {
34 return nil, common.ErrPerm35 return nil, common.ErrPerm
@@ -42,6 +43,7 @@
42 st: st,43 st: st,
43 resources: resources,44 resources: resources,
44 authorizer: authorizer,45 authorizer: authorizer,
46 dataDir: dataDir,
45 }, nil47 }, nil
46}48}
4749
@@ -144,7 +146,7 @@
144 // download the tools even though they already have been fetched by the machine agent. Newer upgrader146 // download the tools even though they already have been fetched by the machine agent. Newer upgrader
145 // workers do not have this problem. So to be compatible across all versions, we return the full tools147 // workers do not have this problem. So to be compatible across all versions, we return the full tools
146 // metadata as recorded in the downloaded tools directory.148 // metadata as recorded in the downloaded tools directory.
147 downloadedTools, err := agenttools.ReadTools(environs.DataDir, machineTools.Version)149 downloadedTools, err := agenttools.ReadTools(u.dataDir, machineTools.Version)
148 if err != nil {150 if err != nil {
149 return nil, err151 return nil, err
150 }152 }
151153
=== modified file 'state/apiserver/upgrader/unitupgrader_test.go'
--- state/apiserver/upgrader/unitupgrader_test.go 2014-02-19 02:07:19 +0000
+++ state/apiserver/upgrader/unitupgrader_test.go 2014-02-20 04:59:53 +0000
@@ -11,7 +11,6 @@
1111
12 gc "launchpad.net/gocheck"12 gc "launchpad.net/gocheck"
1313
14 "launchpad.net/juju-core/environs"
15 "launchpad.net/juju-core/errors"14 "launchpad.net/juju-core/errors"
16 jujutesting "launchpad.net/juju-core/juju/testing"15 jujutesting "launchpad.net/juju-core/juju/testing"
17 "launchpad.net/juju-core/state"16 "launchpad.net/juju-core/state"
@@ -63,13 +62,8 @@
63 LoggedIn: true,62 LoggedIn: true,
64 UnitAgent: true,63 UnitAgent: true,
65 }64 }
66 s.upgrader, err = upgrader.NewUnitUpgraderAPI(s.State, s.resources, s.authorizer)
67 c.Assert(err, gc.IsNil)
68
69 // Set up fake downloaded tools for the assigned machine.65 // Set up fake downloaded tools for the assigned machine.
70 libDir := c.MkDir()66 fakeToolsPath := filepath.Join(s.DataDir(), "tools", version.Current.String())
71 s.PatchValue(&environs.DataDir, libDir)
72 fakeToolsPath := filepath.Join(libDir, "tools", version.Current.String())
73 err = os.MkdirAll(fakeToolsPath, 0700)67 err = os.MkdirAll(fakeToolsPath, 0700)
74 c.Assert(err, gc.IsNil)68 c.Assert(err, gc.IsNil)
75 s.fakeTools = &tools.Tools{69 s.fakeTools = &tools.Tools{
@@ -82,6 +76,9 @@
82 c.Assert(err, gc.IsNil)76 c.Assert(err, gc.IsNil)
83 err = ioutil.WriteFile(filepath.Join(fakeToolsPath, "downloaded-tools.txt"), []byte(toolsMetadataData), 0644)77 err = ioutil.WriteFile(filepath.Join(fakeToolsPath, "downloaded-tools.txt"), []byte(toolsMetadataData), 0644)
84 c.Assert(err, gc.IsNil)78 c.Assert(err, gc.IsNil)
79
80 s.upgrader, err = upgrader.NewUnitUpgraderAPI(s.State, s.resources, s.authorizer, s.DataDir())
81 c.Assert(err, gc.IsNil)
85}82}
8683
87func (s *unitUpgraderSuite) TearDownTest(c *gc.C) {84func (s *unitUpgraderSuite) TearDownTest(c *gc.C) {
@@ -125,7 +122,7 @@
125 anAuthorizer := s.authorizer122 anAuthorizer := s.authorizer
126 anAuthorizer.MachineAgent = true123 anAuthorizer.MachineAgent = true
127 anAuthorizer.UnitAgent = false124 anAuthorizer.UnitAgent = false
128 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer)125 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer, "")
129 c.Check(err, gc.NotNil)126 c.Check(err, gc.NotNil)
130 c.Check(anUpgrader, gc.IsNil)127 c.Check(anUpgrader, gc.IsNil)
131 c.Assert(err, gc.ErrorMatches, "permission denied")128 c.Assert(err, gc.ErrorMatches, "permission denied")
@@ -135,7 +132,7 @@
135 // We are a unit agent, but not the one we are trying to track132 // We are a unit agent, but not the one we are trying to track
136 anAuthorizer := s.authorizer133 anAuthorizer := s.authorizer
137 anAuthorizer.Tag = "unit-wordpress-12354"134 anAuthorizer.Tag = "unit-wordpress-12354"
138 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer)135 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer, "")
139 c.Check(err, gc.IsNil)136 c.Check(err, gc.IsNil)
140 args := params.Entities{137 args := params.Entities{
141 Entities: []params.Entity{{Tag: s.rawUnit.Tag()}},138 Entities: []params.Entity{{Tag: s.rawUnit.Tag()}},
@@ -158,7 +155,7 @@
158func (s *unitUpgraderSuite) TestToolsRefusesWrongAgent(c *gc.C) {155func (s *unitUpgraderSuite) TestToolsRefusesWrongAgent(c *gc.C) {
159 anAuthorizer := s.authorizer156 anAuthorizer := s.authorizer
160 anAuthorizer.Tag = "unit-wordpress-12354"157 anAuthorizer.Tag = "unit-wordpress-12354"
161 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer)158 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer, "")
162 c.Check(err, gc.IsNil)159 c.Check(err, gc.IsNil)
163 args := params.Entities{160 args := params.Entities{
164 Entities: []params.Entity{{Tag: s.rawUnit.Tag()}},161 Entities: []params.Entity{{Tag: s.rawUnit.Tag()}},
@@ -202,7 +199,7 @@
202func (s *unitUpgraderSuite) TestSetToolsRefusesWrongAgent(c *gc.C) {199func (s *unitUpgraderSuite) TestSetToolsRefusesWrongAgent(c *gc.C) {
203 anAuthorizer := s.authorizer200 anAuthorizer := s.authorizer
204 anAuthorizer.Tag = "unit-wordpress-12354"201 anAuthorizer.Tag = "unit-wordpress-12354"
205 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer)202 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer, "")
206 c.Check(err, gc.IsNil)203 c.Check(err, gc.IsNil)
207 args := params.EntitiesVersion{204 args := params.EntitiesVersion{
208 AgentTools: []params.EntityVersion{{205 AgentTools: []params.EntityVersion{{
@@ -259,7 +256,7 @@
259func (s *unitUpgraderSuite) TestDesiredVersionRefusesWrongAgent(c *gc.C) {256func (s *unitUpgraderSuite) TestDesiredVersionRefusesWrongAgent(c *gc.C) {
260 anAuthorizer := s.authorizer257 anAuthorizer := s.authorizer
261 anAuthorizer.Tag = "unit-wordpress-12354"258 anAuthorizer.Tag = "unit-wordpress-12354"
262 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer)259 anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer, "")
263 c.Check(err, gc.IsNil)260 c.Check(err, gc.IsNil)
264 args := params.Entities{261 args := params.Entities{
265 Entities: []params.Entity{{Tag: s.rawUnit.Tag()}},262 Entities: []params.Entity{{Tag: s.rawUnit.Tag()}},

Subscribers

People subscribed via source and target branches

to status/vote changes: