Merge pull request #607 from wallyworld/agent-version-on-startup-trunk

Merge pull request #602 from wallyworld/agent-version-on-startup

Set a machine's tools version when the agent starts

Fixes: https://bugs.launchpad.net/juju-core/+bug/1359800

The referenced bug shows an error initialising container support when a machine's agent starts up.

2014-08-20 22:06:07 ERROR juju.provisioner container_initialisation.go:154 cannot get tools from machine for lxc container
2014-08-20 22:06:07 ERROR juju.provisioner container_initialisation.go:95 starting container provisioner for lxc: initialising container infrastructure on host machine: agent tools for machine 5 not found
2014-08-20 22:06:07 ERROR juju.worker runner.go:218 exited "5-container-watcher": initialising container infrastructure on host machine: agent tools for machine 5 not found

The only way I can see that happening is if the container worker starts before the upgrade work sets the tools version. That can happen as both upgrade worker and container worker start up in parallel.

I moved the logic to set the tools version on a machine from the upgrade worker to the agent's APIWorker() method, thus ensuring the tools version is set early before it is needed.

I also found what looks to be bad logic in the container initialisation worker - the code to stop the worker was duplicated and one of the copies was called in the wrong place; it looked like the worker was terminated after the first container type was handled, meaning subsequent container types added to the machine may not have been started properly.
Merge pull request #612 from wallyworld/fix-machine-test

Make some machine/unit agent tests more robust

Fixes: https://bugs.launchpad.net/juju-core/+bug/1361721

If a machine is marked as Dead part way through agent startup, as happens in some tests, the agent exits without realising it needs to terminate.
Fix compile errors
Generate "system identity" in jujud bootstrap

I recently moved the system-identity generation
up the stack from each of the providers into
environs/bootstrap common code. This caused a
slow down in tests that weren't previously
generating the key as they use the dummy provider.

This should never have been in the client side;
I'm moving generation of the system identity
into bootstrap.

Fixes https://bugs.launchpad.net/juju-core/+bug/1361971
Fix tests
cmd/jujud: test contents of system-identity written
Merge pull request #615 from wallyworld/agent-version-on-startup-master

Agent version on startup master

Fixes: https://bugs.launchpad.net/bugs/1359800

Was reverted because it was thought to be causing a regression, but that wasn't the case. So resubmitting.
Merge pull request #616 from axw/lp1361971-bootstrap-generate-systemidentity

Generate "system identity" in jujud bootstrap

I recently moved the system-identity generation
up the stack from each of the providers into
environs/bootstrap common code. This caused a
slow down in tests that weren't previously
generating the key as they use the dummy provider.

This should never have been in the client side;
I'm moving generation of the system identity
into bootstrap.

Fixes https://bugs.launchpad.net/juju-core/+bug/1361971