Add moduledir defaults to windows hosts
Add beaker windows support to auto identify port and guest
(QENG-425) Generalize with_puppet_running_on method.

Instead of always using pe-httpd as the service name for PE Puppet master, set
that as the default and allow customization on a per-host basis (probably
through Beaker config).

Signed-off-by: Wayne <wayne@puppetlabs.com>
(QENG-425) Support optional curl_with_retries behavior.

Specifically, when restarting the puppet master using the initscript/service,
allow per-host configuration to specify whether or not to actually wait for the
puppet master to listen on port 8140 by attemping to grok with. Try up to 120
times at 1-second intervals.

Signed-off-by: Wayne <wayne@puppetlabs.com>
(QENG-425) Alter with_puppet_running_on logic.

Only use initscript to restart if puppetservice is defined.

Signed-off-by: Wayne <wayne@puppetlabs.com>
Merge pull request #211 from waynr/features/arbitary-puppetservice-name_curl-with-retries

Features/arbitary puppetservice name curl with retries
Merge pull request #214 from cyberious/windows_vagrant

Add beaker windows support to auto identify port and guest
(QENG-486) add easy access to ip address per beaker host

- either use the already determined ip address or figure it out through
  ifconfig/ipconfig
Merge pull request #216 from anodelman/wrap-ip

(QENG-486) add easy access to ip address per beaker host
(MAINT) correctly sort test files

- turns out that we aren't actually correctly sorting files and this
  affects how tests are run on hosts.
Merge pull request #217 from anodelman/fix-filesort

(MAINT) correctly sort test files
(maint) Remove unneeded options for 'apt-get update'

Previously apt-get update was invoked with the -y -f -m
options. None of these options actually make sense for *update*
(though -y makes total sense for *install*). Starting with
trusty's apt-get, apt-get actually rejects (at least) -f for
apt-get install.

So this patch simply removes those unneeded options.
Merge pull request #219 from kylog/maint/remove-unneeded-apt-get-install-options

(maint) Remove unneeded options for 'apt-get update'
create beaker 1.10.0 gem
Merge pull request #220 from anodelman/make-gem

create beaker 1.10.0 gem
Add a docker hypervisor

This is a quite simple hypervisor, and only supports linux flavours
currently.  Many things around inter-node communications will
probably not work.

The basic approach is we spin up a new image based on an upstream
one, add a sshd to it, tag the image with the name of the host and
then create a container from it.  This container should then be
usable as a system under test.

The implementation is largely based on both the existing Beaker::Vagrant
hypervisor, and docker-kitchen.
https://github.com/portertech/kitchen-docker All bugs are mine.

Still a few things to do around finding existing nodes, but for now
it makes basic enough images that you can run no tests in 11 seconds.

    $ cat docker-test.yml
    HOSTS:
      ubuntu-12-10:
        platform: ubuntu-12.10-x64
        image: ubuntu:12.10
        hypervisor: docker
    CONFIG:
       type: foss

```
$ time ruby -Ilib ./bin/beaker --hosts docker-test.yml   --no-debug
{
    "log_level": "info",
    "trace_limit": 10,
    "hosts_file": "docker-test.yml",
    "options_file": null,
    "type": "foss",
    "provision": true,
    "preserve_hosts": "never",
    "root_keys": false,
    "quiet": false,
    "xml": false,
    "color": true,
    "dry_run": false,
    "timeout": 300,
    "fail_mode": "slow",
    "timesync": false,
    "repo_proxy": false,
    "add_el_extras": false,
    "consoleport": 443,
    "pe_dir": "/opt/enterprise/dists",
    "pe_version_file": "LATEST",
    "pe_version_file_win": "LATEST-win",
    "dot_fog": "/Users/richardc/.fog",
    "ec2_yaml": "config/image_templates/ec2.yaml",
    "help": false,
    "ssh": {
        "config": false,
        "paranoid": false,
        "timeout": 300,
        "auth_methods": [
            "publickey"
        ],
        "port": 22,
        "forward_agent": true,
        "keys": [
            "/Users/richardc/.ssh/id_rsa"
        ],
        "user_known_hosts_file": "/Users/richardc/.ssh/known_hosts"
    },
    "HOSTS": {
        "ubuntu-12-10": {
            "roles": [
                "master"
            ],
            "platform": "ubuntu-12.10-x64",
            "image": "ubuntu:12.10",
            "hypervisor": "docker",
            "extra_commands": [
                "touch /tmp/foo"
            ]
        }
    },
    "helper": [],
    "load_path": [],
    "tests": [],
    "pre_suite": [],
    "post_suite": [],
    "install": [],
    "modules": [],
    "logger": "#<Beaker::Logger:0x007fbd9f087910>"
}
Beaker::Hypervisor, found some docker boxes to create
Provisioning docker
provisioning ubuntu-12-10

Setup: Update /etc/hosts on master with master's ip
Add Master entry to /etc/hosts
No tests to run for suite 'pre_suite'
No tests to run for suite 'tests'
No tests to run for suite 'post_suite'
Cleanup: cleaning up after successful run
Cleaning up docker
systest completed successfully, thanks.

real    0m11.892s
user    0m0.825s
sys     0m0.115s
```
Add openSUSE and SLES support to docker hypervisor.

On SUSE variants the package installer is called zypper, so add the
RUN statements to install the sshd in terms of zypper.

Additionally we need to explictly configure the sshd to allow root
login via passwords, bypassing pam.
Add a `docker_cmd` option to the docker hypervisor

This opens up the ability to have the docker container run something
closer to an init rather than a simple sshd.  This allows the
container to behave more like a system under test with fully working
service supervision.
Increase read/write timeouts in the docker hypervisor

This change increases the read and write timeouts to the docker api.
By default this is 60 seconds

Additionally we use the version assertion from docker-api so we
don't try and talk to an incompatible api version.
Install ssh clients in the docker hypervisor

Some docker base images are seriously stripped down and will not
include the ssh client packages.  These are normally where the scp
and sftp binaries live which are needed in later provisioning steps.