Commit graph

205 commits

Author SHA1 Message Date
Jeff McCune
0594aa9141 Docs: Update file_line documentation
This commit clarifies the behavior of the file_line resource type.
2011-08-18 12:39:04 -07:00
Jeff McCune
27c3b644b0 Docs: Improve example in merge function
This commit replaces the example in the merge function with a much clearer
one. It also mentions that the rightmost value wins in the event of duplicated
hash keys.
2011-08-18 12:39:04 -07:00
Jeff McCune
d7bdfe1dff Merge branch 'ticket/v2.x/9080_match_facts.d_to_facter2dot0'
* ticket/v2.x/9080_match_facts.d_to_facter2dot0:
  (#9080) Make facts.d match Facter 2.0
2011-08-18 10:50:35 -07:00
Jeff McCune
d30e7f81d0 (#9080) Make facts.d match Facter 2.0
Based on feedback from Luke, the facts.d directory should at least match
the directory that will be used by Facter 2.0.

Reading #2157 I believe the Facter 2.0 facts.d feature is reasonably API
compatible with this custom fact from R.I. so I'm comfortable using the
same filesystem path.

Change in behavior:  Now look for facts in:
 * /etc/facter/facts.d
 * /etc/puppetlabs/facter/facts.d
2011-08-18 10:44:40 -07:00
Jeff McCune
e6d62cde42 Merge branch 'v2.x'
* v2.x:
  Update CHANGELOG, Modulefile and README for 2.1.0
  (#9080) Add facts from /etc/puppetlabs/facts.d
2011-08-17 16:38:14 -07:00
Jeff McCune
95c88a1305 (#9080) Add facts from /etc/puppetlabs/facts.d
This fact is a direct copy of R.I.'s work at
https://github.com/ripienaar/facter-facts

This is necessary plumbing to allow the installer to write a simple text
file based on the role the node is receiving.  For example:

    $ cat /etc/puppetlabs/facts.d/puppet_enterprise_mcollective.txt
    fact_stomp_port=61613
    fact_stomp_server=puppetmaster
    fact_is_puppetagent=true
    fact_is_puppetmaster=true

The mcollectivepe module relies on these facts being set and we need a
persistent place to write them during the interview process and later
read them when puppet agent runs to configure MCollective on the agent
systems.

Since stdlib is a public module, both /etc/facts.d and
/etc/puppetlabs/facts.d are scanned for static facts.
2011-08-17 16:25:29 -07:00
Ken Barber
9b912d028f (#8925) Added new function called 'get_certificate' for retrieving
certificates from a CA (or locally).

This function works by either obtaining the file locally
or remotely based on Puppets configuration.

Also added get_pubkey which wraps get_certificate and extracts the
public key.
2011-08-17 16:36:59 +02:00
Jeff McCune
33887f9be5 Merge branch 'issue/master/8797_puppetlabs-functions_merge'
Closes pull request #12

Reviewed-by: Jeff McCune

Verified all spec tests pass using rspec **/*_spec.rb

* issue/master/8797_puppetlabs-functions_merge: (164 commits)
  * Moved kwalify to puppetlabs-kwalify project * Re-arranged tests in line with puppetlabs-stdlib
  Prep for stdlib merge * Renamed load_yaml & load_json to parseyaml & parsejson * Renamed is_valid_* functions and remove the 'valid_'
  Fix some ruby 1.9.2 issues.
  (#3) Provide documentation for remaining functions.
  (#3) Apply missing documentation to more functions.
  Remove rand.
  Some improvements to values_at tests.
  (#1) provide some more detailed tests for a number of functions.
  Removed date stub since this functinality is available in strftime anyway.
  (#2) fix is_string finally so it also makes sure numbers return false.
  (#2) unstub is_valid_domain_name
  Added doc strings for first five functions
  Removed join_with_prefix.
  (#2) unstub is_valid_mac_address.
  Allow sort for strings.
  Count functionality overlaps with size - so removing it.
  Removed crontab functions instead of unstubbing them.
  Removed load_variables. load_yaml is sufficient to solve this problem on its own.
  Remove is_valid_netmask instead of unstubbing. Doesn't seem like a sensible function on its own.
  (#2) unstub is_numeric function.
  ...
2011-08-08 16:58:40 -07:00
Ken Barber
aa27fc76c7 (#8797) Merge puppetlabs-functions into puppetlabs-stdlib
It was decided that maintaining puppetlabs-functions and
puppetlabs-stdlib was duplication as both are trying to
achieve the same goal.

This patch provides a merge of the puppetlabs-functions
into the puppetlabs-stdlib repository, with history
preservation.

The following conflicts were found and resolved:

* LICENSE file from functions was used as it aligns with
  ASL usage instructions and contains relevant copyright
  information:
  http://www.apache.org/licenses/LICENSE-2.0.html
* Used spec_helper.rb from functions - this is what
  Puppet core uses and doesn't break tests.
* Merged .gitignore and spec.opts options.
2011-08-05 10:31:46 +01:00
Ken Barber
1b73a66fc6 * Moved kwalify to puppetlabs-kwalify project
* Re-arranged tests in line with puppetlabs-stdlib
2011-08-05 08:46:38 +01:00
Ken Barber
681a1c7971 Prep for stdlib merge
* Renamed load_yaml & load_json to parseyaml & parsejson
* Renamed is_valid_* functions and remove the 'valid_'
2011-08-05 08:25:03 +01:00
Jeff McCune
4c93090e1a (#8792) Rename whole_line type to file_line
Without this patch the resource whole_line would be included in the
stable stdlib module shipping in PE 1.2.  Ideally the name will be
stable and unchanging in the future.

There was quite a bit of concern over whole_line being an unwise name.
file_line appears to be the most suitable name and least likely to need
another rename in the future.
2011-08-04 19:17:48 -07:00
Jeff McCune
ee1081571e Merge branch 'refactor/master/8665_whole_line'
* refactor/master/8665_whole_line:
  (#8665) Change type from append_line to whole_line
2011-08-04 17:58:05 -07:00
Jeff McCune
7393de9895 (#8678) Add validate_array and validate_string functions
The accounts module is making use of validate_array() and
validate_string() which do not exist int he stdlib module without this
patch.

This patch adds the two functions to the stdlib with unit tests.

Reviewed-by: Dan Bode
2011-08-04 16:05:39 -07:00
Jeff McCune
4725c97102 (#8717) Make merge() function work with Ruby 1.8.5
The previous behavior of the merge() function used Array#inject with two
arguments.  Ruby 1.8.5 only supports inject being used with one
argument.

This change initializes and empty Hash object and merges each argument
into the accumulator.  The last argument still "wins" in the merge.

rspec tests (cd spec; rspec **/*_spec.rb) verified as passing with this
change.

Reviewed-by: Dan Bode
2011-08-01 11:45:08 -07:00
Ken Barber
35fefe1865 Fix some ruby 1.9.2 issues. 2011-07-30 00:44:02 +01:00
Dan Bode
c4a13acafe (#8709) Add hash merging function
In Puppet, it is not possible to reassign hash
values.

This function allows a reasonable way to perform
hash munging in Puppet.

Reviewed-by: Jeff McCune
2011-07-29 15:28:21 -07:00
Dan Bode
b1beaec2da (#8708) Add has_key function
It is difficult to use existance of keys in a hash
as a boolean condition in Puppet (see #8705)

This function provides a working solution until
the underlying issue in Puppet can be resolved.

Reviewed-by: Jeff McCune
2011-07-29 15:11:10 -07:00
Ken Barber
a1cae426f1 (#3) Provide documentation for remaining functions. 2011-07-29 23:09:30 +01:00
Ken Barber
19313b43ea (#3) Apply missing documentation to more functions. 2011-07-29 22:18:56 +01:00
Ken Barber
f9634b7f9b Remove rand. 2011-07-29 22:08:09 +01:00
Ken Barber
aa023c1e5d Removed date stub since this functinality is available in strftime anyway. 2011-07-29 20:56:40 +01:00
Ken Barber
18e5302614 (#2) fix is_string finally so it also makes sure numbers return false. 2011-07-29 20:11:47 +01:00
Ken Barber
56a402e654 (#2) unstub is_valid_domain_name 2011-07-29 20:08:31 +01:00
James Turnbull
62520a2df0 Added doc strings for first five functions 2011-07-30 04:22:30 +10:00
Ken Barber
db7e06e301 Removed join_with_prefix. 2011-07-29 18:00:32 +01:00
Ken Barber
4080c0534e (#2) unstub is_valid_mac_address. 2011-07-29 17:55:45 +01:00
Ken Barber
ce48eb6e7a Allow sort for strings. 2011-07-29 00:10:31 +01:00
Ken Barber
7d6ae5d57c Count functionality overlaps with size - so removing it. 2011-07-28 21:30:02 +01:00
Ken Barber
4915eff575 Removed crontab functions instead of unstubbing them. 2011-07-28 21:23:53 +01:00
Ken Barber
a47853502d Removed load_variables. load_yaml is sufficient to solve this problem on its own. 2011-07-28 21:15:43 +01:00
Ken Barber
1a7bd1ae83 Remove is_valid_netmask instead of unstubbing. Doesn't seem like a sensible function on its own. 2011-07-28 21:10:33 +01:00
Ken Barber
313df566bf (#2) unstub is_numeric function. 2011-07-28 21:03:33 +01:00
Ken Barber
635ed82e5c (#2) - unstubbed is_valid_ip_address 2011-07-28 18:10:16 +01:00
Ken Barber
a55930368a (#2) - Added is_float and is_integer functionality. 2011-07-28 15:38:19 +01:00
Dan Bode
4540949d96 (#8665) Change type from append_line to whole_line
Changed the type name from append_line to
whole_line.

After feedback that having a type with a verb in
the name was confusing.
2011-07-27 15:28:44 -07:00
Jeff McCune
9560b6336c Merge branch 'ticket/master/8585_load_yaml_function'
* ticket/master/8585_load_yaml_function:
  (#8575) Add loadyaml() function
2011-07-26 15:46:23 -07:00
Jeff McCune
8a46e201fe (#8575) Add loadyaml() function
This change adds a loadyaml() puppet function that takes a path to a
YAML data file and returns the contents as a Puppet variable.  There is
currently no validation of the contents of the file.

This commit is intentionally lacking unit tests because of time
constraints.

Reviewed-by: Dan Bode
2011-07-26 15:45:47 -07:00
Dan Bode
e82370a26d (#8628) Add append_line native type
This commit adds a native type that can check if
a line exists and append it to a file.

This use case seems common enough to warrant its
inclusion into stdlib.

Reviewed-by: Jeff McCune
2011-07-26 15:30:28 -07:00
Ken Barber
fde64f37c9 (#1) - fleshed out some more tests. 2011-07-24 00:39:17 +01:00
Ken Barber
07ee334554 Added validate_resource function and examples on how to use it (and kwalify as well) 2011-07-01 21:09:02 +02:00
Ken Barber
1abf4b62fc Few more tests. 2011-06-30 01:00:32 +02:00
Ken Barber
c7c8647634 Move require inside function for kwalify. 2011-06-29 23:39:23 +01:00
Ken Barber
464fb1f41b Add some more functional tests. 2011-06-29 23:37:37 +01:00
Ken Barber
790818116e Added tests for each function, fixing functions as we hit bugs. 2011-06-29 21:21:55 +01:00
Ken Barber
e071b05ab6 Added kwalify function. 2011-06-29 12:30:07 +01:00
Ken Barber
e6b5a6dd02 Removed duplicate - is_hash is really now is_hash instead of is_array. 2011-06-26 14:33:53 +02:00
Jeff McCune
4c00cfc610 (#8010) Add validate_hash function
This function validates all passed variables are hashes.  This is
similar to the validate_bool function and is copied from it.
2011-06-21 17:01:33 -07:00
Jeff McCune
2bca41a9c4 (#8010) Add getvar() rvalue function
This isn't directly related to #8010, but rather indirectly fills the
need to allow the end user to configure where data values are looked up.

This allows the namespace to be passed as a class parameter.  A module
may then quickly and easily look up data from the user-defined
namespace.
2011-06-21 15:12:46 -07:00
Jeff McCune
ab70663d15 (#3) Add an anchor type to provide containment
With Puppet 2.6.x we do not have a way to specify containment
relationships.  In the use case of class ntp { } declaring
ntp::{package,config,service} classes, the ntp class itself should allow
the user to specify before and require relationships to the main ntp
class.

The anchor resource type allows module authors to close the loop on
classes composing the main top level module.  For example:

    class ntp {
      class { 'ntp::package': }
      -> class { 'ntp::config': }
      -> class { 'ntp::service': }
      # These two resources "anchor" the composed classes
      # such that the end user may use "require" and "before"
      # relationships with Class['ntp']
      anchor { 'ntp::begin': } -> class { 'ntp::package': }
      class { 'ntp::service': } -> anchor { 'ntp::end': }
    }

Using this pattern, the module user may then simply declare relationships to
the ntp class as they expect:

    class { 'ntp': } -> class { 'mcollective': }
    # OR
    class { 'mcollective': } -> class { 'ntp': }
2011-06-15 09:40:04 -07:00
Jeff McCune
b9f1bb6a63 Add validate_bool() function to stdlib
This function aborts catalog compilation if any of the passed
values are not true or false.  Note, this catches the string
values of true and false correct and will abort catalog
compilation if they are not boolean values.

Paired-with: Dan Bode <dan@puppetlabs.com>
2011-06-03 11:39:45 -07:00
Jeff McCune
d381a5b74f (#7657) Add basic validate_re function
While developing Puppet Modules with class parameters, data from the
user should be validated as per the Style Guide.  Puppet should fail
early and hard in the situation of invalid data being passed into the
module.

This function provides a more concise method to the alternative of using
if statements in the Puppet manifests.
2011-05-25 12:38:15 -07:00
Ken Barber
aafce9c99b Moved more functions into lib/puppet/parser/functions/ 2011-04-30 16:00:49 +02:00
Ken Barber
09abea2d47 Moved type.rb 2011-04-30 15:59:55 +02:00
Ken Barber
99a93d366f Convert to module format. 2011-04-30 15:59:31 +02:00