Ryan Coleman [Fri, 10 May 2013 16:54:39 +0000 (09:54 -0700)]
Update Modulefile, CHANGELOG for version 4.1.0
This commit alters the module metadata to indicate a 4.1.0 version
release for the Puppet Forge. It contains backwards compatible
features, refactors and bug fixes.
Jeff McCune [Mon, 6 May 2013 23:29:35 +0000 (16:29 -0700)]
(#20582) Restore facter_dot_d to stdlib for PE users
Without this patch Puppet Enterprise users who install the most recent
version of stdlib lose the ability to resolve certain facts critical to
the operation of Puppet Enterprise. These facts are defined externally
in the file
`/etc/puppetlabs/facter/facts.d/puppet_enterprise_installer.txt`.
As an example, Puppet Enterprise catalogs fail to compile if the
`fact_stomp_server`, and `fact_stomp_port` facts are not defined.
`facter_dot_d` was removed from stdlib version 4 because Facter version
1.7 now supports external facts defined in
`/etc/puppetlabs/facter/facts.d/puppet_enterprise_installer.txt`.
Puppet Enterprise does not yet include Facter 1.7, however. The most
recent PE release, 2.8.1, includes Facter 1.6.17. With this version of
Facter, users who replace the version of stdlib that ships with PE with
the most recent version from the Forge will lose the ability to resolve
facts from
`/etc/puppetlabs/facter/facts.d/puppet_enterprise_installer.txt`.
This patch addresses the problem by detecting if Facter version < 1.7 is
loaded. If so, then the facter_dot_d.rb facts will be defined using the
stdlib custom fact. If Facter >= 1.7 is being used then stdlib will not
define external facts.
We're restoring facts_dot_d support to stdlib because users are pulling
in the latest version of stdlib while on Puppet Enterprise which breaks
the operation of PE itself when the fact_stomp_server and
fact_stomp_port facts are not defined. They are not defined in PE
because PE runs with Facter 1.6.17 and Puppet 2.7.21
Jeff McCune [Mon, 6 May 2013 23:22:59 +0000 (16:22 -0700)]
(maint) Update Gemfile with GEM_FACTER_VERSION
Without this patch we cannot explicitly set the version of Facter to
integrate using Bundler. This patch addresses the problem by adding a
new environment variable, GEM_FACTER_VERSION which allows bundler to
install a specific version of Facter. GEM_FACTER_VERSION is the
variable name instead of FACTER_GEM_VERSION to prevent the gem_version
fact from being defined. In addition, GEM_PUPPET_VERSION is defined
based on PUPPET_GEM_VERSION in order to match the environment names and
provide backwards compatibility with CI jobs.
Alex Cline [Fri, 3 May 2013 19:47:27 +0000 (15:47 -0400)]
(#20548) Allow an array of resource titles to be passed into the ensure_resource function
This patch allows an array of resource titles to be passed into
the ensure_resource function. Each item in the array will be
checked for existence and will be created if it doesn't already
exist.
Jeff McCune [Fri, 12 Apr 2013 16:23:34 +0000 (09:23 -0700)]
Update gemspec, Modulefile, CHANGELOG for 4.0.2
Without this patch the information displayed on rubygems.org does not
clearly convey the intent of the Gem format of stdlib from the official
puppet module format of stdlib. This is a problem because end users
might get confused and start installing stdlib from rubygems.org
This patch addresses the problem by making it clear that the gem version
of stdlib is not intended for end users, but rather is specifically
intended to make it easier for other module authors to depend on stdlib
and have that dependency automatically resolved using a Gemfile.
Jeff McCune [Fri, 12 Apr 2013 00:55:40 +0000 (17:55 -0700)]
Add behavior example for anchor refresh propagation
Without this patch we don't have a spec test to make sure the anchor
resource type passes notify events along. This patch addresses the
problem by using RSpec Puppet to build a catalog, apply the catalog,
then pull a resource out of the transaction and make sure the resource
was triggered.
Philip Potter [Thu, 12 Jul 2012 16:05:23 +0000 (17:05 +0100)]
Make the anchor type propagate refresh events
Without this patch the anchor resource does not propogate refresh
events, making it difficult to subscribe to a class which has been
notified by another resource.
Jeff McCune [Thu, 11 Apr 2013 21:29:56 +0000 (14:29 -0700)]
Fix README function documentation
Without this patch some core puppet functions leaked into the
documentation for the functions contained in stdlib. This patch removes
them and cleans up some of the formatting.
Jeff McCune [Thu, 11 Apr 2013 21:04:31 +0000 (14:04 -0700)]
Update function documentation for 4.0.0
Without this patch the function documentation is out of sync with the
functions contained in the standard library. This commit updates the
functions. I generated the list using this sequence:
cd ~/src/puppet
git checkout 3.1.1
bundle exec puppet doc -r function > /tmp/puppet_functions.txt
cd ~/src/stdlib
bundle exec puppet doc -r function > /tmp/stdlib_functions.txt
diff -U2 puppet_functions.txt stdlib_functions.txt | grep '^+' | perl -ple 's/^\+//' > functions.txt
I then replaced the README function documentation with the contents of
functions.txt which contains only the functions contained in stdlib.
Jeff McCune [Thu, 11 Apr 2013 16:49:53 +0000 (09:49 -0700)]
Add ability to use puppet from git via bundler
Without this patch the Gemfile can only satisfy dependencies using
officially release gem versions. This is a problem because we want to
test stdlib against the latest HEAD of the puppet git repository.
This patch addresses the problem by copying over the location_for method
from the Puppet Gemfile, which will parse out git://, file:// or Gem
version specifications.
This, in turn, allows jobs to be configured to run with different
dependency integrations.
Jeff McCune [Wed, 10 Apr 2013 21:35:42 +0000 (14:35 -0700)]
(maint) Make stdlib usable as a Ruby GEM
Without this patch it is inconvenient to use the functions included in
stdlib in a development setting. The Puppet modulepath must be
explicitly set for the functions to be automatically loaded.
This patch addresses the problem by adding a gem specification and
dependency Gemfile. This makes it possible to directly use stdlib and
all of the components it depends upon, like so:
The first command will install all of the dependencies, including Puppet
and Facter, into the local project directory. The second command will
make stdlib avaialable as a Gem, which will be picked up by Puppet since
(#7788) was merged into Puppet in the 3.0 release.
Jeff McCune [Wed, 10 Apr 2013 21:33:08 +0000 (14:33 -0700)]
(maint) Add the behavior for count() with arrays and hashes
Without this patch the expected behavior of the count() function when
dealing with an out of bound array index and with a hash key that does
not exist is implicitly encoded in the spec examples. This is a problem
because the expected behavior is not clear for something similar to the
following example:
Adrien Thebo [Mon, 25 Feb 2013 22:00:20 +0000 (14:00 -0800)]
(maint) Backport Gemfile and .travis.yml to 2.x
This is a partial backport and update of 03c5c4a434c2290c021034dbfed82cb0f97e0e87
to add travis-ci support and a Gemfile to 2.x. Right now we're not
testing 2.x in travis-ci and we're experiencing spec failures because we
have to install rspec-puppet from git. The best resolution for this is
to consistently use a Gemfile for running tests.
This commit also rewrites the .travis.yml for 2.x to only test 2.x
versions against ruby 1.8.7 and Puppet < 3.0
Amos Shapira [Sun, 31 Mar 2013 12:37:30 +0000 (23:37 +1100)]
(#19998) Implement any2array
This change is to implement a new function "any2array", which will take any
argument or arguments and create an array which contains it. If the argument
is a single array then it will be returned as-is. If the argument is a single
hash then it will be converted into an array. Otherwise (if there are more than
one argument, or the only argument is not an array or a hash) the function will
return an array containing all the arguments.
Steve Huff [Fri, 29 Mar 2013 19:06:36 +0000 (15:06 -0400)]
(19864) num2bool match fix
This is a bit more heavy-handed than I might like, but it does appear to
do the right things:
* accepts numeric input appropriately, truncating floats
* matches string input against a regex, then coerces number-looking
strings to int
* makes a best effort to coerce anything else to a string, then subjects
it to the same treatment
* raises an error in the event of incorrect number of arguments or
non-number-looking strings
Steve Huff [Fri, 29 Mar 2013 16:03:33 +0000 (12:03 -0400)]
Reworked number-handling logic
No more coercing to String and regex matching. Instead, we now coerce
to Integer at the beginning or raise an error if we cannot coerce to
Integer.
A consequence of this change is that the function will now accept
blatantly non-numeric strings as input, and return false. This seems a
bit goofy to me, but it's how String#to_i works. If we really don't
like this, then I'm open to suggestions.
Erik Dalén [Wed, 20 Mar 2013 15:36:20 +0000 (16:36 +0100)]
Allow comparisons of Numeric and number as String
Puppet passes numbers as String to functions, but it makes more sense to
compare them as Numeric.
But sometimes Puppet passes them as the wrong type, see:
https://projects.puppetlabs.com/issues/19812
Adrien Thebo [Wed, 27 Mar 2013 20:37:25 +0000 (13:37 -0700)]
(maint) better error reporting for prefix and suffix
When prefix and suffix did error checking with positional arguments,
they would not report the position of the argument that failed to
validate. This commit changes the messages to indicate which argument
failed.
Eric Shamow [Wed, 4 Apr 2012 02:30:46 +0000 (22:30 -0400)]
(#13610) Add is_function_available to stdlib
This function provides a simple wrapper around
Puppet::Parser::Functions.function for access within Puppet manifests.
This will allow users to check whether or not a plugin or functionality
such as hiera is installed on the server.
Jeff McCune [Mon, 25 Feb 2013 22:00:20 +0000 (14:00 -0800)]
(maint) Add Ruby 2.0.0 to Travis build matrix
Without this patch we're not testing against Ruby 2.0.0 which has recently been
released. This is a problem because we'd like a way to be notified if a change
set breaks compatibility with future supported versions of Ruby.
This patch should not be taken as an indication that we fully support Ruby 2.0,
just as an indication that we plan to in the future.
This patch also tightens up the specifications of the build matrix. In
addition to testing against the specific Puppet dependency versions, we're also
testing against the latest 2.7.x release and the latest release.
I'm reverting this change because of concerns raised by Peter Meier that
it duplicates the "in" operator in the DSL. The "in" operator is new
information that I did not posses when I made the decision to merge.
Because of this new information I'm un-merging and continuing the
discussion in the comments of
https://projects.puppetlabs.com/issues/19272