summaryrefslogtreecommitdiffstats
path: root/lib/puppet/util
Commit message (Collapse)AuthorAgeFilesLines
* (#8662) Don't manage internal file permissions on WindowsJosh Cooper2011-08-221-1/+2
| | | | | | | | | | | | When running as root, puppet will by default manage internal file permissions for file-related settings. However, ruby does not support chown/chgrp functionality on Windows, so puppet will fail to run (puppet apply generates an exception while trying to set the owner, etc). This commit disables internal file permissions handling on Windows until we add support for chown (at least) as part of the larger file type effort on Windows.
* (#8662) Skip user and group resources when applying settings on WindowsJosh Cooper2011-08-221-0/+1
| | | | | | | | | | When running as root, puppet will generate a catalog from its settings to create the various directories, e.g. var, ssl. If mkusers is true and a setting implements owner and/or group methods, then puppet will automatically add user and group resources to the catalog (provided the user name is not root and the group names are not root or wheel). This functionality will not be supported on Windows, and so this step is skipped.
* (#8662) Fix Puppet.features.root? on WindowsJosh Cooper2011-08-221-1/+14
| | | | | | | | | | | | | | | | | | | This commit changes Puppet::Util::SUIDManager.root? (and Puppet.features.root?) to only return true if the user is running with elevated privileges (granted via UAC). If this check fails because elevated privileges are not supported, e.g. pre-Vista, then we fall back to checking if the user is a member of the builtin Administrators group. This means if you are logged in as Administrator on 2008, Puppet.features.root? will return false, unless you are explicitly running puppet as an administrator, e.g. runas /user:Administrator "puppet apply manifest.pp" This commit also adds tests to ensure SUIDManager.asuser is a no-op on Windows, since Windows does not (easily) support switching user contexts without providing a password.
* Stop trying to make config directories in Windows specsNick Lewis2011-08-191-1/+1
| | | | | | | | | | | | | | | | FileSetting#to_resource had a provision to not attempt to manage files in /dev, which effectively stopped spec from trying to make their configuration directories in /dev/null. However, on Windows, the path turns into something like C:/dev/null, so the specs were still trying to manage their configuration directories when this wasn't desired or handled by the spec. Now, we also exclude management of C:/dev (or similar), to mimic the behavior on Windows. Because this isn't a standard path (and thus will not be used for anything else), there seems to be no harm in treating it as though it were really /dev. Reviewed-By: Josh Cooper <josh@puppetlabs.com> (cherry picked from commit 44719fcf9f9053a7be1bea59d516f24d2234ede4)
* (#8408/8409) Add a Windows ADSI helper moduleNick Lewis2011-08-191-0/+278
| | | | | | | | | | | | | | | | This module (Puppet::Util::ADSI) provides access to Active Directory Services Interfaces, using win32ole. The base module has methods for generating resource URIs and connecting to ADSI. It also provides classes Puppet::Util::ADSI::User and Puppet::Util::ADSI::Group for managing Active Directory users and groups, along with their properties and group memberships. This will be used to implement the Windows ADSI user and group providers. Based on work by: Joel Rosario <joel.r@.internal.directi.com> Based on work by: Cameron Thomas <cameron@puppetlabs.com> Reviewed-By: Matt Robinson <matt@puppetlabs.com> (cherry picked from commit b5fd95336e71ad428109cddf6cd2f33bdd31e025)
* (#8660) Default config dir to %PROGRAMDATA% on WindowsJosh Cooper2011-08-191-2/+2
| | | | | | | | | | | | | | | | | | | | | The puppet install.rb script now defaults the config directory to %PROGRAMDATA%\PuppetLabs\puppet\etc on Windows. This is more inline with Windows best-practices, as this directory is used to store application data across all users. The PROGRAMDATA environment variable also takes into account alternate system drives, by using the SYSTEMDRIVE environment variable. Note that the Dir::COMMON_APPDATA constant is so named because it corresponds to the CSIDL_COMMON_APPDATA constant, which on 2000, XP, and 2003 is %ALLUSERSPROFILE%\Application Data, and on Vista, Win7 and 2008 is %SYSTEMDRIVE%\ProgramData. This commit also updates puppet's default run_mode var and conf directories when running as "root" to match the install script, and fixes the spec test, which was looking in the Dir::WINDOWS directory. Reviewed-by: Cameron Thomas <cameron@puppetlabs.com> (cherry picked from commit 95b21dfde7d77a61633555f20f2e3b9675d48415)
* Fix issue with forward and backslashes in Windows pathsJosh Cooper2011-08-191-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The environment validates its modulepath and manifestdir settings, but it uses Dir.getwd to convert a relative path into an absolute path. The problem is that on Windows, Dir.getwd returns a path with backslashes. (Interestingly this only happens when puppet is loaded, not in irb for example.) And since we do not yet support backslashes in Windows paths or UNC paths, the directory is not included in the environment. For the time being, I am using File.expand_path to normalize the path. It has the side-effect of converting backslashes to forward slashes. This is sufficient to work around backslashes in Dir.getwd. In the near future, I will be refactoring how paths are split, validated, tested, etc, and I have a REMIND in place to fix the environment. But as a result of this change it exposed a bug in our rdoc parser dealing with the finding the root of a path. The parser assumed that the root was '/', but caused an infinite loop when passed a Windows path. I added a test for this case, which is only run on Windows, because on Unix File.dirname("C:/") == '.'. After all of that, I had to disable one of the rdoc spec tests, because it attempted to reproduce a specific bug, which caused rdoc to try to create a directory of the form: C:/.../files/C:/.... Of course, this fails because ':' is not a valid filename character on Windows. Paired-with: Nick Lewis <nick@puppetlabs.com> Reviewed-by: Jacob Helwig <jacob@puppetlabs.com> (cherry picked from commit 9279d0954eb20d75e18a666fd572b5492e157608)
* Rework Puppet::Util::Cacher to only expire using TTLsNick Lewis2011-08-191-67/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | We have removed every usage of cached_attr in which the attribute needs to be manually expired. Thus, the only meaningful behavior provided by Puppet::Util::Cacher is expiration based on TTLs. This commit reworks the cacher to only support that behavior. Rather than accepting an options hash, of which :ttl is the only available option, cached_attr now requires a second argument, which is the TTL. TTLs are now used to compute expirations, which are stored and used for expiring values. Previously, we stored a timestamp and used it and the TTL to determine whether the attribute was expired. This had the potentially undesirable side effect that the lifetime of a cached attribute could be extended after its insertion by modifying the TTL setting for the cache. Now, the lifetime of an attribute is determined when it is set, and is thereafter immutable, aside from deliberately re-setting the expiration for that particular attribute. Reviewed-By: Jacob Helwig <jacob@puppetlabs.com> (cherry picked from commit d198fedf65e472b384666fc9ae3bef487852068a) Conflicts: spec/integration/node/facts_spec.rb spec/unit/node_spec.rb
* Remove dead uses of Puppet::Util::Cacher from autoloaderNick Lewis2011-08-191-2/+0
| | | | | | | | | In the past, Puppet::Util::Autoload used a cached_attr for its 'searchpath'. However, it no longer does that, so its references to Puppet::Util::Cacher are unnecessary. Reviewed-By: Jacob Helwig <jacob@puppetlabs.com> (cherry picked from commit ce08cba9eb92abce7f7ab77dcf7eb9f9435d4040)
* Remove Puppet::Util::Cacher usage from Puppet::Util::SettingsNick Lewis2011-08-191-6/+3
| | | | | | | | | | | | | The path attribute was being unnecessarily cached. The value is a LoadedFile instance, which already knows how to check whether it needs to be reloaded. The act of reparsing was being triggered separately from the cacher mechanism. The comment indicated this value was only being cached so it could be easily cleared for tests, but it wasn't being cleared for tests. Thus, there is no reason for this attribute to be cached, so remove it. Reviewed-By: Jacob Helwig <jacob@puppetlabs.com> (cherry picked from commit bdcb9be3b5d7cd54548cbeb7b13bee6fe4e730f7)
* maint: remove inaccurate copyright and license statements.Daniel Pittman2011-08-186-18/+0
| | | | | | | | | | | For a while Luke, and other authors, injected a created tag, copyright statement, and "All rights reserved" into every new file they added to the Puppet project. This isn't really true, and we have a global license covering the code, so we have now stripped out all those old tags. Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
* Merge branch '2.6.x' into 2.7.xJacob Helwig2011-08-171-14/+48
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | * 2.6.x: Reset indirector state after configurer tests. (#8770) Don't fail to set supplementary groups when changing user to root (#8770) Always fully drop privileges when changing user (#8662) Migrate suidmanager test case to rspec (#8740) Do not enumerate files in the root directory. (#3553) Explain that cron resources require time attributes Conflicts: lib/puppet/application/resource.rb test/puppet/tc_suidmanager.rb
| * (#8770) Don't fail to set supplementary groups when changing user to rootNick Lewis2011-08-121-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, Puppet::Util::SUIDManager.change_user would always try to set supplementary groups (Process.initgroups) before changing its EUID. Process.initgroups requires the calling process to have EUID 0 in order to succeed. This worked fine in the case where the process was changing from root to a normal user, as it would set groups as root and then change EUID to 0. However, in the case where the process was changing back to root from a normal user, it would attempt to set groups as the normal user, and fail. Now, we check Process.euid before changing, and will set groups first if root, and will set euid first if not root. This ensures we can freely switch back and forth between root. This behavior is maintained inside of the change_user, rather than being broken into eg. raise_privilege and lower_privilege, because it is a relatively minor behavior difference, and the helper methods on their own would not have been generically useful.
| * (#8770) Always fully drop privileges when changing userNick Lewis2011-08-111-14/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Mac OS X, it is only possible to directly change the euid of a process, and not the uid. Thus, when a puppet master started as root on OS X would change to the service user (puppet), it would leave the uid of its process set to 0. This allowed any type of Ruby plugin executed on the master (a type, provider, function, etc.) to trivially regain root privileges (by setting the euid of its process back to 0) and potentially compromise the master. Now, when permanently changing user, we will first try Process::UID.change_privilege, before falling back to setting the euid/uid ourselves. change_privilege correctly sets the uid of the process to the desired new uid, preventing the process from later escalating itself back to root. Similar behavior is also used when changing group. This has no effect on the behavior when temporarily changing user/group (for instance, to execute a single command or create a file as a particular user). Reviewed-By: Jacob Helwig <jacob@puppetlabs.com>
* | Merge branch '2.6.x' into 2.7.xMatt Robinson2011-07-141-1/+1
|\| | | | | | | | | | | | | | | | | | | | | * 2.6.x: (maint) Cleanup and strengthen acceptance tests (#7144) Update Settings#writesub to convert mode to Fixnum (maint) Fix platform dection for RHEL Manually Resolved Conflicts: acceptance/tests/ticket_5477_master_not_dectect_sitepp.rb spec/unit/util/settings_spec.rb
| * (#7144) Update Settings#writesub to convert mode to FixnumMax Martin2011-07-141-1/+1
| | | | | | | | | | | | | | | | Settings#writesub was not checking the type of the mode value passed in from the defaults, causing it to pass a string for mode to File.open, leading to failures. This commit resolves that issue. Paired-with: Matt Robinson <matt@puppetlabs.com>
* | Merge branch '2.6.x' into 2.7.xNick Lewis2011-06-081-0/+1
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: acceptance/tests/ticket_5477_master_not_dectect_sitepp.rb lib/puppet/application/apply.rb lib/puppet/configurer.rb lib/puppet/configurer/fact_handler.rb spec/unit/application/apply_spec.rb spec/unit/configurer/fact_handler_spec.rb spec/unit/configurer_spec.rb
| * (#650) Allow symlinks for configuration directoriesNick Lewis2011-06-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, pointing a setting like 'confdir' at a symlink to a directory would replace the symlink with a directory. This was because files created by settings implicitly managed links, rather than following them. This behavior is now changed so that file settings will follow links. The behavior of these symlinks is the same as any other file resource. That is, if the target of the symlink doesn't exist, Puppet will consider this an error. Similarly, if the target of the symlink is a file, then the symlink will still be replaced with a directory, rather than replacing its target. Reviewed-By: Jacob Helwig <jacob@puppetlabs.com> Reviewed-By: Dominic Maraglia <dominic@puppetlabs.com>
| * Fixed #7166 - Replaced deprecated stomp "send" method with "publish"James Turnbull2011-04-202-3/+3
| | | | | | | | | | | | | | | | | | | | | | The "send" method in the stomp gem has been deprecated since: http://gitorious.org/stomp/mainline/commit/d542a976028cb4c5badcbb69e3383e746721e44c It's been replaced with the "publish" method. Also renamed the send_message method to publish_message more in keeping with language used in queuing.
* | Merge branch '2.7rc' into 2.7.xMax Martin2011-06-021-5/+86
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 2.7rc: (24 commits) (#7746) Fix bootstrap issues from #7717 fix. (#7683) Use ronn, when available, to render the output. (#7683) Add a 'man' face and subcommand to Puppet. maint: remove obsolete work-around code from help face. (#7699) Don't duplicate inherited action names on faces. (#7177) Deprecate implicit 'puppet apply' for 2.7.0 (#7717) Layout cleanup for subcommand extraction. #7211: Test unknown options don't shadow unknown actions. #7211: nasty logic error with global Face options taking arguments. #7211: more helpful error messages in various cases. (#7708) Delete extended documentation from configuration reference (#7707) Document signals in puppet agent and puppet master help add puppet master polling step for ticket 7117 (#5318) Always notice changes to manifests when compiling. (#7557) Remove Faces Application maint: Fix order dependent spec failure for face indirection (#7690) Don't blow up when listing terminuses available for faces maint: Dedup the loadpath so we don't have to walk it multiple times Maint: Fix ellipses for short descriptions (#7563) DRY: Remove indirector boilerplate from individual faces ... Conflicts (resolved manually): acceptance/tests/ticket_7117_broke_env_criteria_authconf.rb lib/puppet/application/faces.rb lib/puppet/face/help/man.erb lib/puppet/indirector/face.rb spec/shared_behaviours/documentation_on_faces.rb
| * | (#7746) Fix bootstrap issues from #7717 fix.Daniel Pittman2011-06-011-9/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So, turns out the fix in #7717 introduced a failure when starting the Puppet master on some versions of Ruby. Weird stuff. I figured it out, eventually. You see, the process of bootstrapping Puppet is ... complex. This file, like many of our early initialization files, has an incestuous relationship between the order of files loaded, code executed at load time, and code executed in other files at runtime. When we construct this object we have not yet actually loaded the global puppet object, so we can't use any methods in it. That includes all the logging stuff, which is used by the deprecation warning subsystem. On the other hand, we can't just load the logging system, because that depends on the top level Puppet module being bootstrapped. It doesn't actually load the stuff it uses, though, for hysterical raisins. Finally, we can't actually just load the top level Puppet module. This one is precious: it turns out that some of the code loaded in the top level Puppet module has a dependency on the run mode values. Run mode is set correctly *only* when the application is loaded, and if it is wrong when the top level code is brought in we end up with the wrong settings scattered through some of the defaults. Which means that we have a dependency cycle that runs: 1. The binary creates an instance of P::U::CL. 2. That identifies the application to load. 3. It does, then instantiates the application. 4. That sets the run-mode. 5. That then loads the top level Puppet module. 6. Finally, we get to where we can use the top level stuff So, essentially, we see a dependency between runtime code in this file, run-time code in the application, and load-time code in the top level module. Which leads me to our current horrible hack: we stash away the message we wanted to log about deprecation, then send it to our logging system once we have done enough bootstrapping that it will, y'know, actually work. I would have liked to fix this, but that is going to be a whole pile of work digging through and decrufting all the global state from the local state, and working out what depends on what else in the product. Oh, and we use a global because we have *two* instances of a P::U::CL object during the startup sequence. I don't know why. Reviewed-By: Nigel Kersten <nigel@puppetlabs.com> Reviewed-By: Nick Lewis <nick@puppetlabs.com> Reviewed-By: Jacob Helwig <jacob@puppetlabs.com>
| * | (#7177) Deprecate implicit 'puppet apply' for 2.7.0Daniel Pittman2011-06-011-2/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Back in prehistory (eg: 0.25 era), 'puppet' was the name for the agent, and could be used directly to apply a manifest as well as to communicate with the puppet master process. During the 2.6 series we moved to a single binary, but continued to support older scripts by detecting invocations that looked like the traditional scripting uses and implicitly turning those into a call to 'puppet apply'. Now, with the 2.7.0 release, we are moving to deprecate that behaviour. We still do the same detection, and still run the old manifests, but we now emit a deprecation warning directing people to use 'puppet apply' directly. We intend to remove the behaviour entirely in the 2.8 release, which also paves the way to nicer handling of the command line. Reviewed-By: Randall Hansen <randall@puppetlabs.com> Reviewed-By: Nick Fagerlund <nick.fagerlund@puppetlabs.com>
| * | (#7717) Layout cleanup for subcommand extraction.Daniel Pittman2011-06-011-5/+11
| | | | | | | | | | | | | | | | | | This transforms the layout of the code, to make it easier to work with, but makes no functional changes. Done separately to make clearer the functional changes vs the non-functional changes.
| * | (#7690) Don't blow up when listing terminuses available for facesMatt Robinson2011-05-261-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, in order to list the available terminuses for an indirected face we loaded all the the terminuses in order to list them. This meant that if a terminus like active_record didn't have the dependencies it needed, the documentation would raise errors and not list terminuses. <Puppet::Error: Could not autoload filename uninitialized constant Object::ActiveRecord> Now we just list the terminuses available in the load path without trying to load them. The terminus will still raise an error if you try to use it without its dependencies being met. Paired-with: Max Martin <max@puppetlabs.com>
| * | maint: Dedup the loadpath so we don't have to walk it multiple timesMatt Robinson2011-05-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the user's path has duplicate entries, we end up looking at them multiple times. This has bitten people in the past in that if you get a lot of duplication it can make autloading a lot slower. Really the user shouldn't be duplicating their path, but since we can't control that, this is a safe fix to prevent them from having autoload slowness. Paired-with: Max Martin <max@puppetlabs.com>
* | | (#7690) Don't blow up when listing terminuses available for facesMatt Robinson2011-05-261-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, in order to list the available terminuses for an indirected face we loaded all the the terminuses in order to list them. This meant that if a terminus like active_record didn't have the dependencies it needed, the documentation would raise errors and not list terminuses. <Puppet::Error: Could not autoload filename uninitialized constant Object::ActiveRecord> Now we just list the terminuses available in the load path without trying to load them. The terminus will still raise an error if you try to use it without its dependencies being met. Paired-with: Max Martin <max@puppetlabs.com>
* | | maint: Dedup the loadpath so we don't have to walk it multiple timesMatt Robinson2011-05-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the user's path has duplicate entries, we end up looking at them multiple times. This has bitten people in the past in that if you get a lot of duplication it can make autloading a lot slower. Really the user shouldn't be duplicating their path, but since we can't control that, this is a safe fix to prevent them from having autoload slowness. Paired-with: Max Martin <max@puppetlabs.com>
* | | Merge branch '2.7.x' into 2.7.nextPieter van de Bruggen2011-05-171-1/+1
|\| |
| * | (#7291) Fix issues with instance_methods in Ruby 1.9Matt Robinson2011-05-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instance_methods in Ruby 1.8.7 returns an array of strings, but returns an array of symbols in 1.9.2. This manifested itself when running the tests because in 1.9.2 we were trying to call sub on a sybmol. The original proposed solution was to monkey patch symbols to have a sub method, but this didn't deal with the real issue of need to check whether a method was defined, and actually made it worse. Turns out that checking for the presence of a method in an array that may contain symbols and may contain strings is better done by just calling method_defined? instead. This patch addresses all the places ack turned up the code doing this include? check instead of directly calling method_defined?. Thanks to Alex Sharp ajsharp@gmail.com for pointing out the Ruby 1.9 problems and working toward a solution. Reviewed-by: Nick Lewis <nick@puppetlabs.com>
* | | Merge branch '2.7.x' into 2.7.nextMatt Robinson2011-05-131-1/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 2.7.x: (#7469) Add license to test face so tests pass (#7264) Docs: Clarify that subscribe/notify imply require/before (#7468) Stub spec that tries to connect to pypi.python.org Prevent spec failure caused by network device mock leak Fix #7299 - do not require net/ssh for running rake spec Resolved Conflicts: lib/puppet/util/network_device.rb spec/unit/util/network_device_spec.rb
| * | Prevent spec failure caused by network device mock leakBrice Figureau2011-05-071-0/+5
| | | | | | | | | | | | | | | | | | | | | We were leaking some mocks in the network device singleton from tests to tests. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
| * | Fix #7299 - do not require net/ssh for running rake specBrice Figureau2011-05-071-1/+3
| | | | | | | | | | | | | | | | | | | | | This is a different fix than the one proposed by Stefan Schulte, based on Luke comments. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* | | Merge branch '2.7.x' into 2.7.nextDaniel Pittman2011-05-061-7/+2
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: * spec/unit/node/facts_spec.rb Updates: * spec/unit/interface/action{,_builder}_spec.rb => update for 'when_invoked' block being required.
| * | (#7304) Remove full puppet help output when subcommand cannot be foundNigel Kersten2011-05-041-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | In order to make the error message more visible to the user, we tell them about the puppet help command but don't automatically run it, so the error doesn't scroll off the screen. Reviewed-By: Daniel Pittman <daniel@puppetlabs.com>
| * | (#7304) Improve help from `puppet foo`Daniel Pittman2011-05-021-1/+1
| | | | | | | | | | | | | | | | | | | | | This addresses two of the four points: we now quote the subcommand name, and emit 'Usage: ' before the usage information on the puppet command line. Reviewed-By: Nick Lewis <nick@puppetlabs.com>
* | | Merge branch '2.7.x' into 2.7.nextMax Martin2011-04-211-0/+7
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 2.7.x: (#6928) Don't blow up when the method is undefined... (#6928) backport Symbol#to_proc for Ruby < 1.8.7 (#7183) Implement "invisible glob" version matching for faces maint: better disabling of Signal#trap in our tests. maint: more robust listing of valid faces. maint: clean up testing code a fraction... maint: better error report for a missing version of a face. maint: handle face clear/reset sanely in the interface spec. maint: stop stubbing log level setting. Move tests from Puppet-acceptance repo (#7116) Handle application-level options in parse_options maint: fix gratuitous whitespace in the code. maint: remove redundant context from the test. (#7062) better argument handling in the action wrapper methods maint: move method comments outside the comment. Fixed #7166 - Replaced deprecated stomp "send" method with "publish" maint: Remove unused faces code
| * | (#6928) Don't blow up when the method is undefined...Daniel Pittman2011-04-211-6/+4
| | | | | | | | | | | | | | | | | | Use the same model for testing instance methods as the rest of the code. Reviewed-By: Max Martin <max@puppetlabs.com>
| * | (#6928) backport Symbol#to_proc for Ruby < 1.8.7Daniel Pittman2011-04-211-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | We use the &:foo symbol-to-proc syntax in some of our code, so to avoid problems on Ruby earlier than 1.8.7 we should backport the support in our monkey-patch file. Reviewed-By: Max Martin <max@puppetlabs.com>
| * | Fixed #7166 - Replaced deprecated stomp "send" method with "publish"James Turnbull2011-04-192-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "send" method in the stomp gem has been deprecated since: http://gitorious.org/stomp/mainline/commit/d542a976028cb4c5badcbb69e3383e746721e44c It's been replaced with the "publish" method. Also renamed the send_message method to publish_message more in keeping with language used in queuing.
* | | (#7021) Fix order dependent spec failuresMatt Robinson2011-04-211-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Running: rspec spec/unit/util/network_device_spec.rb spec/integration/transaction_spec.rb Caused Mocha::ExpectationError: unexpected invocation: #<Mock:device>.command() The NetworkDevice class had a current reader that once set, never got unset and lived between tests. Paired-with: Josh Cooper <josh@puppetlabs.com>
* | | Merge remote-tracking branch 'jamtur01/tickets/master/7166' into nextJosh Cooper2011-04-192-3/+3
|\ \ \ | |/ / |/| |
| * | Fixed #7166 - Replaced deprecated stomp "send" method with "publish"James Turnbull2011-04-202-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "send" method in the stomp gem has been deprecated since: http://gitorious.org/stomp/mainline/commit/d542a976028cb4c5badcbb69e3383e746721e44c It's been replaced with the "publish" method. Also renamed the send_message method to publish_message more in keeping with language used in queuing.
* | | Merge remote-tracking branch 'community/feature/puppet-device' into 2.7.xPieter van de Bruggen2011-04-188-22/+208
|/ / | | | | | | Reviewed-By: Mike Stahnke
* | Revert "(#6928) Removed --ignoreimport"Nick Lewis2011-04-131-0/+3
| | | | | | | | | | | | | | This reverts commit 24a277c5e805ce16e0b86e17e6cb2fbe1945ae07. Despite not needing --ignoreimport as an option anymore, it's still used internally and has to stay.
* | (#6928) Removed --ignoreimportNick Lewis2011-04-131-3/+0
| | | | | | | | | | | | This was only used with --parseonly, which is gone. Paired-With: Jesse Wolfe
* | (#7056) Use 'face' rather than 'faces' in the production code.Daniel Pittman2011-04-132-3/+3
| | | | | | | | | | | | | | | | | | After some discussion we decided that most uses of the Puppet Face infrastructure were about single faces on their own, not about the collection, and so we were better referring to Puppet::Face[...] in code. This implements that by translating names and references in the Ruby code to the new, s-less, name.
* | maint: whitespace cleanup for puppet/util/command_line.Daniel Pittman2011-04-121-5/+5
| | | | | | | | | | | | This brings bracket spacing in line with our usual coding conventions. Reviewed-By: Matt Robinson <matt@puppetlabs.com>
* | (#6962) delegate global usage to the help face.Daniel Pittman2011-04-121-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | The global --help handler (also invoked when puppet is run without any other command line options at all) used to spit out a brief and generally not so helpful message. Now that we have a help face that can provide the same information in a much more user-friendly form, we should delegate the function to that when required. Reviewed-By: Matt Robinson <matt@puppetlabs.com>
* | (#6992) Expose available_subcommands as a class method.Daniel Pittman2011-04-121-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | We previously treated the list of legacy commands as an instance property of Puppet::Util::CommandLine. This made it difficult to obtain that information outside the context of the instantiated application. In the longer term this should wither and die as we eliminate the legacy applications entirely, but until then exposing that on the class is the lightest mechanism for making that useful. Paired-With: Matt Robinson <matt@puppetlabs.com>
* | (#5027) Use Puppet#warning for deprecation_wanring instead of Kernel#warnNick Lewis2011-04-121-1/+1
| | | | | | | | | | | | Using warning, the deprecation warnings will appear in logs and in color. Paired-With: Jesse Wolfe