Puppet 2.7.14 is a maintenance release in the 2.7.x branch. Detailed feature release notes are available: https://projects.puppetlabs.com/projects/puppet/wiki/Release_Notes#2.7.14 This release is available for download at: http://puppetlabs.com/downloads/puppet/puppet-2.7.14.tar.gz RPM''s are available at http://yum.puppetlabs.com/el or /fedora Debs are available on http://apt.puppetlabs.com (lenny requires backports enabled) Windows packages are available at http://downloads.puppetlabs.com/windows/puppet-2.7.14.msi Mac packages are available at http://downloads.puppetlabs.com/mac/puppet-2.7.14.dmg Puppet is also available via Rubygems at http://rubygems.org See the Verifying Puppet Download section at: http://projects.puppetlabs.com/projects/puppet/wiki/Downloading_Puppet Please report feedback via the Puppet Labs Redmine site, using an affected puppet version of 2.7.14 http://projects.puppetlabs.com/projects/puppet/ ## Puppet 2.7.14 Highlights ## ## Features ## Puppet Module Tool Face - the module tool has seen a host of improvements including dependency resolution, environment handling, and searching the forge. There are more details available at http://docs.puppetlabs.com/puppet/2.7/reference/modules_installing.html ## Bug Fixes ## (#13682) Rename Puppet::Module::Tool to Puppet::ModuleTool Without this patch, Puppet will monkey patch the existing implementation of the puppet-module Gem if it is used. This is bad because the two implementations are all jumbled up inside of one another and behavior may become unpredictable. Warnings are also displayed directly to the end user in the form of redefined constants. This patch fixes the problem by renaming Puppet::Module::Tool inside of Puppet to Puppet::ModuleTool This fixes the problem because Puppet will no longer monkey-patch the Puppet::Module::Tool module inside of the puppet-module Gem. This patch also has the added benefit of making the Module''s name match up with the CamelCase filepath (puppet/module_tool/ => Puppet::ModuleTool) As a result, no file moves are necessary. (#13682) Fix acceptance test failures On Lucid, /usr/share/puppet may not exist. The module upgrade tests all make the assumption that this parent directory exists. This causes false positive failures when running systest against a Lucid system. This patch modifies the setup code for all of the tests to ensure the parent directory exists. (maint) Ensure every file has a trailing newline Without this patch some files exist in the tree that don''t have trailing newlines. This is annoying because perl -pli.bak -e will automatically add a newline to every file it modifies in place. The files that actually have modifications by the global search and replace need to be separated from the files that only have newlines added. This patch simply adds newlines to everything if they don''t exist on the last line. Yes, the PNG''s are perfectly fine with a trailing newline as well. (#14036) Handle upstart better Change the upstart provider to better handle the mix of some services (#14060) Fix quoting of commands to interpolate inside the shell. The `shell` exec provider was supposed to emulate the behaviour of 0.25 exec, which was to pass the content through the default shell to get it executed. Unfortunately, it got quoting a bit wrong, and ended up interpolating variables at the wrong point - it used double quotes where single quotes were really what was desired. Thanks to Matthew Byng-Maddick for the report, and a fix to the quoting; in the end we should not be in this position - we shouldn''t be using string execution where we can pass an array instead. That avoids any chance that there is more than one round of shell interpolation entirely. As a bonus, this fixes the base exec type to support specifying the command to run that very way, and making it good. (#14101) Improve deprecation warning for dynamic lookup The new message will tell the user how to get more information about what is occuring. More information will be provided at debug level so that a user can see what the change to the lookup will be. Better warnings about scoping Make new scoping look through inherited scopes Previous to this commit, Puppet would look through a given scope hierarchy and give deprecation warnings when a value was found in either an inherited class scope or included class scope, when it should only give the warning in the case of the included class scope. This commit makes the new-scope behavior also examine inherited scopes, though continuing to ignore included scopes. Implement newlookupvar() to replace dynamic scope lookupvar() is shifted to oldlookupvar() and newlookupvar() is added. An intermediary lookupvar() function will query both and if the answer varies then it will throw a deprecation warning for dynamic scoping. The intermediary and old lookup functions may be removed at a later date, thus completing the transition. A test case has been introduced to detect dynamic scoping and the deprecation warning. Slight modifications to the spec test scoping objects were made to bring them more in line with the real world. All scope tests pass. When oldlookupvar is replaced, the deprecated dynamic scoping test case will fail and all other scope test cases will pass. Augeas Improvements (#11988) Work around Augeas reload bug when changing save modes After saving a file in one save mode and switching to another, Augeas realise to reload the file when Augeas#load is called again. Work around this by explicitly reloading all files we saved while using the first save mode. (#11988) Don''t overwrite symlinks in augeas provider Previously, if not running with `force` set, we would try to write the file in SAVE_NEWFILE mode to create a <filename>.augnew file with the changes. We determined whether there were changes to be made based on that file (and used it to show a diff). When it came time to actually make the changes, we would simply move the .augnew file over the file being managed. Unfortunately, if the file being managed were a symlink, this would clobber it. There was a fallback path in the case of force (or older versions of augeas not supporting SAVE_NEWFILE) in which we would make the changes in SAVE_OVERWRITE mode as normal. Now, the behavior is a combination of the two; we still use SAVE_NEWFILE to determine whether changes need to be made and to show a diff, but then remove the .augnew file and always run again in SAVE_OVERWRITE mode to save the changes. This effectively delegates the behavior of preserving the file, etc. to augeas, so we don''t duplicate effort or bugs. (#13204) Don''t ignore missing PATH.augnew files The original fix for #13204 may have masked other potential bugs if the PATH.augnew file was missing. It simply tested for the file existance and not only when duplicate save events occurred. This change de-duplicates the list of save events instead, so if a bug appeared where PATH.augnew was genuinely missing, the error wouldn''t be squashed. (#13204) Workaround duplicate Augeas save events Bug #264 in Augeas causes duplicate save events to be returned when editing under /boot in newfile mode. Because we loop around these events, diffing and unlinking the files, this causes an ENOENT error when we process the same event twice. This commit checks that the file we intend to operate on exists. (#7592) Remove redundant call to String#to_s Previously, the augeas provider made calls like the following: @aug.get(key).to_s Since the Augeas#get method returns a String not an array, the to_s call is redundant. (Note the #match method does return an array.) The augeas tests were stubbing the #get method to return an array in some places (and a string in others). Prior to 1.9.2, ruby will automatically convert ["foo"].to_s to "foo", so everything worked as expected. However, under 1.9.2, ["foo"].to_s becomes "[\"foo\"]". These failures weren''t noticed earlier, because our 1.9.2@allFeatures jenkins nodes do not have ruby-augeas installed. In other words, tests that require Puppet.features.augeas? were never running in Jenkins. The recent change to improve augeas testing, removed the dependency on this feature being installed, so these tests started failing. This commit just removes the redundant call to String#to_s, and updates the spec tests to match what the Augeas#get method really returns. Zypper Provider Improvements (#8312) Fix zypper provider so ensure => ''latest'' now works Previously the regular expression to match the correct column from ''zypper list-updates'' was wrong, it seems to have been based on the command ''zypper packages'' instead. This was caused ensure => ''latest'' to fail as the provider couldn''t adequately figure out what newer versions were actually availabe. So I''ve fixed the regular expression (based on Felix Frank''s patch) and updated the spec test so that it uses the real output from zypper list-updates and now references an external spec file, as apposed to referencing the content inline. Windows Bugfixes (#12392) Created Windows eventlog message resource dll This commit adds the ability to build a message resource dll used to display localized eventlog messages on Windows. Windows eventlog expects that each log event has a unique id, which can then be localized in a resource dll, one for each locale. However, puppet does not yet support this, see #11076. So this commit defines three puppet event ids corresponding to the three levels of Windows events that we support (info, warn, and error). In order to build the dll, you need the Windows SDK installed that contains the mc, rc, and link utilities. (Maint) Don''t assume eventlog gem is installed on Windows Previously, the test would fail when run on a Windows box that didn''t have the eventlog gem installed. Since the Windows agent should be able to run without the gem installed, and fall back to writing to a log file, this commit changes the test to only run when the gem is installed. There is already a test that verifies that we fall back if the eventlog feature is not available. This release includes contributions from the following people: Andrew Parker, Chris Price, Daniel Pittman, Dominic Cleal, Gary Larizza, Hunter Haugen, Jeff McCune, Jeff Weiss, Josh Cooper, Justin Stoller, Kelsey Hightower, Ken Barber, Lauri Tirkkonen, Matt Robinson, Matthaus Litteken, Moses Mendoza, Nicholas Hubbard, Nick Lewis, Nick Fagerlund, Nigel Kersten, Patrick Carlisle, Pieter van de Bruggen, Reid Vandewiele, and Stefan Schulte Puppet 2.7.14 Changelog ==Andrew Parker (10): 934ec89 Improve deprecation warning for dynamic lookup b85cdc9 Fixup tests to work on CentOS 5 9aa302f Increased test coverage of scoping rules 9711d50 Created test that shows enc warning problem 72d3b56 Default autoflushing of log files to true 878127f Make sure the log file writable fb96747 Fixed old log test to match new autoflush behavior 2d3cc63 Fixing problem caused by activerecord d67711d Cleaner test for create_resources doing nothing 0d9e852 Removed duplication of compiling a catalog Chris Price (5): e24755d (#13397) fix gem provider ensure=>latest bug fc2964f fix bug in Util#symbolizehash! b6ee08a (#13690) Update 2.7.x for spec_helper compatibility with external projects 2ff6fe4 (#13690) add comments to spec_helper 2957ffe Fix tempfile cleanup in specs Daniel Pittman (25): 796a072 Modernize the style of the shell exec provider tests. 74e462f (#14060) Fix quoting of commands to interpolate inside the shell. 2732f25 (#12479) Don''t make undef regexp match as the string undef. d00c5cc (#12457) add users primary group, not Process.gid, in initgroups 50909b9 (#12458) default to users primary group, not root, in `asuser` 76d0749 (#12459) drop supplementary groups when permanently dropping UID 0ad532a (#12463) add secure `replace_file` to Puppet::Util 8461203 (#12462) user_role_add: use `replace_file` for /etc/shadow 1469538 (#12460) use `replace_file` for the .k5login file ead36ff (#12463) eliminate `secure_open` in favour of `replace_file` dd6d36c Fix Rails compatibility code to be less stupid. 3857e2b Fix stubbing of ActiveRecord that doesn''t work in AR 3.2.* 17a5302 Make PuppetSpec::Files methods available at module level. 600a6e7 Clean up and unify scratch database setup logic. 30a23ac (#4862) Stop using EventLoop in the Puppet daemon. 11501a7 (#4862) `returning` is not a standard Ruby method. 8e11766 (#4862) define_method is not a public method in Ruby. dba27c9 (#4862) Finally remove the event-loop library. 01c8623 Don''t stub the database in Puppet::Rails tests. d27af92 Stubbing time is risky, better an approximate compare. d6da1b7 Fix hash comparison under RSpec with 1.8.5 ec5c4bf Document the problem with the `apply_to_device` and related methods. eb2c71b Clean up "foo" name in global resource state. 245f1b9 Clean up the "foo" name in create_resources_spec. 40ee256 Finally, stop using the `foo` name in the type_spec test. Dominic Cleal (3): 2973d5c (#11988) Work around Augeas reload bug when changing save modes 0498d55 (#13204) Workaround duplicate Augeas save events c01cac9 (#13204) Don''t ignore missing PATH.augnew files Gary Larizza (1): a26ff16 [#13686] Fix directoryservices ShadowHashData code Hunter Haugen (6): 9c94586 Tests for deprecation warnings for dynamic scoping 2e78aad Implement newlookupvar() to replace dynamic scope 48bce6b Remove dynamic option for lookupvar b519e24 Add tests for mixed inheritence/inclusion 2ddb3d6 Make new scoping look through inherited scopes 163ab8c Use more descriptive terms for the differing scopes Jeff McCune (4): 1306611 (maint) Remove unnecessary step from puppet module build help 42b20be (#13682) Fix acceptance test failures dce3c32 (#13682) Rename Puppet::Module::Tool to Puppet::ModuleTool 5117e12 (maint) Ensure every file has a trailing newlines Jeff Weiss (3): db17d7c (#13380) Cron acceptance tests don''t ensure cron actually installed c255414 (#14036) Add upstart tests dc3bb9f (#14036) Handle upstart better Josh Cooper (8): 452e2c4 (#7592) Remove redundant call to String#to_s bdb5922 (Maint) Don''t change permissions on /etc/hosts 43003f5 (Maint) Consistently use the same agent fqdn f0625ef (#12392) Created Windows eventlog message resource dll 8d2ff89 (#12392) Add eventlog destination and log to it by default on Windows 100f42c (#12392) Don''t require eventlog gem on non-Windows platforms f531400 (Maint) Don''t assume eventlog gem is installed on Windows d54100d (Maint) Fix order-dependent test failure Justin Stoller (1): 60b7aa5 Prior to this commit we hard coded paths in two tests that depended on our CI system directory structure. This made it hard to use our acceptance suite without also including the exact same setup. It also increased the cost of maintaining our CI setup. Kelsey Hightower (10): 1b810b1 (#3581) Stop forking around: Add fork helper method 245c6b7 (#9167) Do not send email when nothing changes a2990a8 (#13737) Swap build_tree and format_tree method names 45f8009 (#13638) Add SemVer#pre function 28531f8 (#13639) Don''t send errors directly to stderr 6819cf3 (#13642) Move search notice message 9cbda49 (#13643) Make the use of FileUtils.rm_rf secure e7d3911 (#13649) Restrict module name matching bca4849 (#13636) Update Module Face copyright date 7afcb04 (#9167) Do not send email when nothing changes Ken Barber (1): 27bd6bc (#8312) Fix zypper provider so ensure => ''latest'' now works Lauri Tirkkonen (1): 6a31287 (#12981) Fix external subcommand exit status Matt Robinson (3): 1342558 Monkey patch FileUtils.mv in Ruby 1.8.5 271c7f2 Make core changes needed for the puppet module tool 1de8bd7 Add Module Tool Matthaus Litteken (3): a61c785 Updating CHANGELOG and lib/puppet.rb for 2.6.14 5178adc Update puppet.spec for rpm packaging 3a4ac60 Updating CHANGELOG, lib/puppet.rb for 2.7.14rc1 Moses Mendoza (1): 8f84207 (#12466) unset X-Forwarded-For header Nicholas Hubbard (1): 27a5eb7 options[:ca_location] is a string not a symbol. Safer to pull Puppet::SSL::Host.ca_location since it is already set correctly. Nick Lewis (5): 2599d56 Copy owner/group in replace_file 0a09a64 Document uid/gid-related methods in Puppet::Util ade5965 Remove unnecessary fallbacks in change_{user,group} dfefc23 (#11988) Don''t overwrite symlinks in augeas provider 49eabd4 Quote strings containing hex numbers when generating ZAML Nigel Kersten (1): ee554eb (#10722) Display errors on HTTP report submission failures Patrick Carlisle (14): c4b3c84 (#9491) Preserve trailing slashes in FileSettings 7207b68 (#10722) Refactor http_spec to use expectations a2208d0 (#10722) Add spec to verify that an error is logged on bad http ca32364 (#13117) Fix selmodule error on each_lines 95c2b90 Stub execpipe using StringIO 772f756 (#12101) Add shared context for specs to imitate windows or posix 3f28268 (#12101) Make Puppet::Util::absolute_path? usable in autoloader 7e78094 (#13659) Convert fact values to string when searching database a7181c8 (#13640) Only agents should use next_agent_run 876785a Use :as_platform in the redhat service spec 7d27cd2 Use :as_platform in the smf service spec e2d6915 Fix communication_error acceptance test 79bf4fa (#13299) Fix error message when agent is disabled f1331ba Put back require ''puppet'' in Puppet::Util Pieter van de Bruggen (1): 7994400 (#13367) Patch SemVer to permit ranges including pre-release components. Reid Vandewiele (1): 46d8973 (#13567) Fix create_resources name parameter bug Stefan Schulte (13): 36e6642 (#8193) Support new keytypes for ssh_authorized_key 5dfc436 (#8193) Support new keytypes for sshkey 0efc65d (#8193) Add unit tests for new ssh keytypes a62f711 (#8193) Add support for new ssh keytypes in authorized_key provider d28c62a Maint: Remove unused variable in user spec 7eb4f5b Maint: Add a real provider class to user spec bc64d9b Maint: Use real objects in user spec e1f9957 Maint: Remove unused mock objects in user spec c6d656a (#1076) Show warning if an empty group is specified 113fc54 (#7986) Cleanup pkg provider #1 2e32924 (#7986) Cleanup pkg provider #2 54e5d18 (#7986) Modify pkg provider to handle publisher 0b7841a (#12960) Fix puppet resource <type> if type has no providers cprice (1): f5487bd (#13439) refactor spec helper for spec compatibility between 2.7 and master nfagerlund (1): 7048e88 (#3022) File type''s force attribute''s description is incomplete -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to puppet-dev@googlegroups.com. To unsubscribe from this group, send email to puppet-dev+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.