Fix wrench build on Windows
Bootstrap Endpoint Address

After Bootstrap returns successfully, get the bootstrap instance and
write its addresses to jenv/environ info/connection info.
Merge branch 'master' of https://github.com/juju/juju into endpoint-on-bootstrap-take3

Conflicts:
	cmd/envcmd/environmentcommand.go
	cmd/juju/bootstrap_test.go
Merge branch 'master' of https://github.com/juju/juju
Make sure that the environTag is always set on the state.State struct when calling Open.
Merge branch 'master' into endpoint-on-bootstrap-take3
Make the state server info return a tag.
Fix ordering and state initialization.
Revert "Revert "Merge pull request #530 from ericsnowcurrently/backups-storage""

This reverts commit 68c71ec48f16eac6f8aff2a66496afb148ec95c6.
Clean up the test.
Fix merge conflicts
Merge pull request #519 from waigani/endpoint-on-bootstrap-take3

Bootstrap Endpoint Address

After Bootstrap returns successfully, get the bootstrap instance and
write its addresses to jenv/environ info/connection info (choose
your name).
version: add OSSupportedSeries

OSSupportedSeries returns the supported series
for the specified OS.
Merge pull request #605 from howbazaar/state-env-tag-always-set

Ensure that environTag is always set on state.State when Opened

When we Open state we need to set the environment tag.

Previously the environment tag was only specified when the database was initialized.  Now we set it every time the database connection is opened.  This is required for when we have multiple environments, and we want to filter the results based on the current environment.

A follow-up branch will update this tag based on the environment uuid from the api server when passing the state connection to the facades of the API server.
Unexpose environs/tools.ToolsLtsSeries
state/api: always "upload" all supported series

UploadTools no longer accepts a "fakeSeries"
parameter; the client just sends all of the
supported series of the same OS as the uploaded
tools. This is to support old API servers.

A separate commit will change the API server
side to disregard the parameter, and compute
the supported series on the server side. We
can deprecate the client side parameter in a
future version.

Also: return a generic error if status code
is not 200. We no longer need to check the
"method not supported" error specifically.
state/apiserver: clone uploaded tools for supported series

Disregard additional series specified by client, and clone
for all supported series of the same OS as the uploaded tools.
cmd/juju: remove redundant code from upgrade-juju

- Ignore/obsolete "--series" as in "juju bootstrap". UploadTools
  now computes the series to send to the API server (for backwards
  compat), and the API server now computes the same.
- Remove old backwards compat code.

Also, change jujud/bootstrap to use new version.OSSupportedSeries.
state: NetworkInterfaces type uses Tags

Return the correctly typed name.Tag implementation from NetworkInterfaces methods.
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.