(QENG-597) 'master' DSL helper can return a non-master node...

...when actual master is confined away

- change around the logic so that the default node is defined at options
  parsing, not during test runtime
- determine the default node by it either being
  1.  the node with the role defined  as 'default'
  2.  the master node
  3.  the only node
  Then add the role 'default' to that node, if necessary
- differentiate between master and default, no longer allow the default
  to be used as a master if the master is undefined (keep roles clear,
  the master should only be the node defined as master)
Merge pull request #224 from anodelman/fix-default

(QENG-597) 'master' DSL helper can return a non-master node...
Added curl-retries key to host file
(QE-683) install_package_version

This commit adds 'install_package_version' method to the DSL helper utils and an
associated method that given package name as well as optional version string
that will be used to construct a package name that includes a specific version
string for installation on the SUT.

This currently only supports apt and yum based package managers, as I am no
familiar enough with other platforms. For non apt or yum based platforms, an
exception will be raised.

Signed-off-by: Wayne <wayne@puppetlabs.com>
No, this isn't Java.
(QE-725) Implements install_from_ezbake.

Adds a new module, Beaker::DSL::EZbake to extend the Beaker DSL with
functionality that should be useful across multiple JVM based projects,
particularly those that use TrapperKeeper and are packaged using ezbake.

Signed-off-by: Wayne <wayne@puppetlabs.com>
Bugfix in host.exec.

Honor the :silent option.

Signed-off-by: Wayne <wayne@puppetlabs.com>
(QE-725) Update install_from_ezbake.

Updates to fix bugs in conditionally_clone and install_from_ezbake.

Don't want to add user to system from install_from_ezbake, that should be done
at a higher level or from within a preinst step if absolutely necessary. Also
shouldn't be making any puppet calls using Beaker before the Puppet master is
run for the first time using init scripts since this will lead to
/var/lib/puppet directories being owned by root. Bad.

Signed-off-by: Wayne <wayne@puppetlabs.com>
Bugfix in logger.

Many logging functions seem to try to pass positional parameters in to
optionally_color but mistakenly flattened the list into a single argument. This
made it impossible to choose whether or not to add a newline.

Signed-off-by: Wayne <wayne@puppetlabs.com>
(QE-725) Adds spec tests for EZBakeUtils.

Signed-off-by: Wayne <wayne@puppetlabs.com>
Make retry_command output easier on the eyes.

Silent all the "on" commands by passing silent => true to the underlying
host.exec in the options map. Instead, handle console/logfile output for
retry_command manually. Should significantly reduce logfile size for
applications that make extensive use of retry_command, not to mention making
stdout more readable.

Signed-off-by: Wayne <wayne@puppetlabs.com>
(QE-725) Minor bugfix and documentation addition.

* Document `ezbake_stage` method.
* Fix directory creation bug in `conditionally_clone` method.

Signed-off-by: Wayne <wayne@puppetlabs.com>
Remove call to logger.notify with bogus arity.

Seems like "args" probably becomes an empty array which made this method call
okay previously. However, if there are no arguments in "*args" then no args get
passed down to optionally_color, thus the arity of the original "*args" is
preserved.

Signed-off-by: Wayne <wayne@puppetlabs.com>
(QE-683) Add package_version option to install_package.

Makes more sense to make this optional behavior in `install_package` than to
implement new method.

Signed-off-by: Wayne <wayne@puppetlabs.com>
(QENG-713) add 'puppet_tmpdir' method

Add a 'puppet_tmpdir' method in Unix::File that creates temporary
directories which are owned by the puppet user.
add test case and docs for 'puppet_tmpdir' method
use DSL to access --configprint value
Adds create_tmpdir_on DSL method.

Signed-off-by: Wayne <wayne@puppetlabs.com>
Update to create_tmpdir_for_user, add spectests

This commit as spec tests which include several additions to spec/mocks.rb to
support the use of `host.tmpdir` and `execute` when using FakeHost. In support
of these is the FakeCommand which works around the fact that these FakeHost
commands don't have access to the same objects as the context in which
FakeHost.exec is used.

Also removes test for Unix::Host.puppet_tmpdir

Signed-off-by: Wayne <wayne@puppetlabs.com>
Merge branches 'feature/create-tmpdir-for-user-on', 'feature/curl-retries', 'feature/ezbake-utils' and 'feature/logging-improvements' into merged