The openbsd spec tests mistakenly used File.new instead of File.open.
Fix this to use .read, not .open.
(#9416) Rename zfs provider from solaris to zfs

Previously the name of the `zfs` provider was `solaris`. This commit
changes it to be `zfs` in preparation for supporting the resource type
on other platforms.
(#9416) Confine based on the presence of a `zfs` command

Previously, the zfs provider was confined to solaris and assumed the
existence of `/usr/sbin/zfs`. This commit changes the command to a
relative path, which will use `Puppet::Util.which` to resolve the
command. The default search path is set by the `path` setting in
puppet.conf.

Based on work by Marc Fournier <marc.fournier@camptocamp.com>
(#9416) Rename zpool provider from solaris to zpool

Previously the name of the `zpool` provider was `solaris`. This commit
changes it to be `zpool` in preparation for supporting the resource type
on other platforms.
(#9416) Confine based on the presence of a `zpool` command

Previously, the zpool provider was confined to solaris and assumed the
existence of `/usr/sbin/zpool`. This commit changes the command to a
relative path, which will use `Puppet::Util.which` to resolve the
command. The default search path is set by the `path` setting in
puppet.conf.

Based on work by Marc Fournier <marc.fournier@camptocamp.com>
(#9416) Refactor zfs spec tests

Convert to the zfs spec tests to the new format using `let`. Also added
tests for both postive and negative outcomes for each method. Also
eliminated unnecessary stubbing, since the only platform specific aspect
of the provider is whether the `zfs` command is in the PATH.
(#9416) Refactor zpool spec tests

Convert to the zpool spec tests to the new format using `let`.  Also
added tests for both postive and negative outcomes for each method. Also
eliminated unnecessary stubbing, since the only platform specific aspect
of the provider is whether the `zpool` command is in the PATH.
Merge pull request #1011 from joshcooper/ticket/3.x/9416-zfs-zpool

(#9416) Add support for zfs & zpool types on platforms other than Solaris
(#15686) Ensure exception message is a string

Previously the execpipe method used to return an array as output, which
if the child exit status was non-zero, caused an exception to be raised
with the array as the error message, instead of a string.

Also, previously, we relied on exception handling to know when a package
is not present. But there are cases where no exception is raised, but
the package output has an 'ERROR' string.

This commit changes from `execpipe` to `execute`, which will raise an
exception with the output of the `pkginfo` command.  It also explicitly
looks for an 'ERROR' string in the package output.

This commit also refactors the duplicate namemap so that it is defined
only once, and removes the nil entries so that only keys of interest are
retained.

It also adds fixtures and spec tests for the provider.
(#15686) Test for package provider features

This commit adds tests to ensure that the sun package provider features
are correct: installable, uninstallable, and upgradeable, but not
versionable.
(#15686) Refactor install and uninstall methods

Previously the install and uninstall methods duplicated the logic for
appending options the the `pkgadd` and `pkgrm` commands. This commit
refactors the logic into a single `prepare_cmd` method, and it removes
the extra syntactic noice of parenthesis in method calls with no
arguments.
(Maint) Simplify spec test

Modified the spec test to use the `described_class` method of the
example group. Also simplified how the `resource` and `provider` were
declared in the `let` blocks.
Merge branch 'ticket/3.x/15686_s10_resource_failure' into 3.x

* ticket/3.x/15686_s10_resource_failure:
  (Maint) Simplify spec test
  (#15686) Refactor install and uninstall methods
  (#15686) Test for package provider features
  (#15686) Ensure exception message is a string
(#15686) Fix `odd number of arguments for Hash`

On ruby 1.8.5, calling `Hash[array]` raises:

  ArgumentError: odd number of arguments for Hash

This commit changes the `namemap` method to return a hash, where the
keys are the names of puppet parameters and the values are the values
obtained from the system.
(#13938) Add dedup parameter to zfs provider

This patch to the zfs type/provider:
 - adds "dedup" to the list of properties
 - removes a "vscan" property which was listed twice
 - updates the spec to list every currently supported property
Merge branch 'ticket/3.x/13938-zfs-dedup' into 3.x

* ticket/3.x/13938-zfs-dedup:
  (#13938) Add dedup parameter to zfs provider
Merge remote-tracking branch 'apenney/openbsd' into 3.x

* apenney/openbsd:
  Fix this to use .read, not .open.
  The openbsd spec tests mistakenly used File.new instead of File.open.
(#8288) pkgadd - allow -G to be specified as an install option

Before implementing this feature, pkgadd solaris could not specify {
install_options=>options } as extra options in package manifest for
puppet. This checkin adds the :install_option feature to the provider
which enables the use of { install_options=> options } parameter. This
checkin also adds the test cases for this feature.
Merge branch 'ticket/3.x/8288-pkgadd-local' into 3.x

* ticket/3.x/8288-pkgadd-local:
  (#8288) pkgadd - allow -G to be specified as an install option