test/cluster: Use a persistent SSH connection

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
Merge pull request #642 from siminm/master

Use HTTPAuth if Token is not available.
Merge pull request #640 from flynn/ci-ssh

test/cluster: Use a persistent SSH connection
Godeps: Bump docker

This is specifically for the race fix in docker/docker@2540765ddc8889e2757f9ccfbfe852074b61601c

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
Merge pull request #646 from flynn/update-docker

Godeps: Bump docker
dashboard: Move apps list header into own view component

Signed-off-by: Jesse Stuart <jesse@jessestuart.ca>
Merge pull request #648 from flynn/dashboard-refactor

dashboard: Move apps list header into own view component
test,util/packer: Add ZFS to vm images.

Signed-off-by: Eric Myhre <eric@flynn.io>
test,util/packer: Describe each apt key as they are registered in bootstrap scripts.

Signed-off-by: Eric Myhre <eric@flynn.io>
Merge pull request #625 from flynn/add-zfs-to-vm-images

Add ZFS to vm images.
host/ports: Add missing mutex lock

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
host: Fix race in image layer handling

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
pkg/iotool: Add io tools package with a thread-safe io.Writer

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
test: Use SafeWriter to avoid races

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
host/ports: Defer mutex unlock for consistency

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
Merge pull request #645 from flynn/fix-races

Fix races
host: Unlock write mutex when attach fails

If this mutex doesn’t get unlocked, the error write will hang trying to
lock at L175.

In practice this was happening when getting the logs for interactive and
non-existent jobs.

Closes #444

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
test: Move Helper cleanup to its own TearDownSuite method

Since the method set of a struct includes methods from anonymous fields,
we can remove any TearDownSuite methods on suites that embed Helper
and only call the Helper cleanup method.

Suites that need to their own TearDownSuite and embed Helper will need
to call cleanup in their implementation.

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
pkg/exec: Use host event stream if no attach

If there are no streams to attach to, use the event stream from the host
to get job exit status and error details.

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
test: Add HostSuite with tests for failing attaches

TestAttachFinishedInteractiveJob covers #444.

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>