summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* #7211: nasty logic error with global Face options taking arguments.Daniel Pittman2011-05-311-1/+1
| | | | | | | | | | | | A logic error meant that global Face options that took arguments were mishandled: we never consumed the argument, so we read this: puppet facts --render-as json find $(hostname) ...as meaning "invoke the 'json' action on the 'facts' face"... This fixes that problem, so we now correctly handle both optional and non-optional arguments to global Face options.
* #7211: more helpful error messages in various cases.Daniel Pittman2011-05-313-10/+46
| | | | | | | | | | | | We were emitting a bunch of unhelpful failure messages, surrounding invalid actions and especially default actions interacting with the command-line. This cleans those up, to give a helpful, informative, and correct message in all cases. Notably, we no longer report that there is no "default" action when you specify an unknown action on a face. This change revealed some other weaknesses in our unit tests, now correctly, that result in slightly more robust code.
* Merge branch 'ticket/2.7rc/7708-reorganize-config-refs' into 2.7rcnfagerlund2011-05-273-101/+48
|\
| * (#7708) Delete extended documentation from configuration referencenfagerlund2011-05-271-101/+26
| | | | | | | | | | | | | | | | | | | | The auto-generated references are meant to be pithy, dense, and fast -- to be references, not guides. The configuration reference was front-loaded with several pages of explanatory text that properly belongs in the guides on the docs site. This commit removes that text in preparation for a reorganization of the docs. This is a doc string only commit.
| * (#7707) Document signals in puppet agent and puppet master helpnfagerlund2011-05-272-0/+22
|/ | | | | | | | | Previously, the signals accepted by the agent and master daemons were only documented in the configuration reference, which didn't make any particular sense. This commit moves their documentation to a blurb in the relevant man pages. This is a doc string only commit.
* add puppet master polling step for ticket 7117Dominic Maraglia2011-05-271-2/+10
| | | | | | | | The test for ticket 7117 producedes spurious failures due to timing: a curl command is executed from an agent to a freshly started Puppet Master; if the Puppet Master is not ready to accept the connection the test will fail. Added an until loop that issues simple curl command to see if the Puppet Master is up and ready
* (#5318) Always notice changes to manifests when compiling.Daniel Pittman2011-05-271-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we are asked to compile a catalog we need to update the set of known resource types, along with the node declaration, from the pool of manifests on disk. This is, obviously, a per-environment pool of resource types. To reduce the scope of the race where an update to those manifest files on disk can be updated during a compilation, we tried to cache the set of known resources in the current thread at the start of compilation, then flush it after compile finished and used the cache unconditionally if it was set. Theoretically, this would assure us that we would parse the set of manifests once, use them for the entire compile, flush the cache, and then carry on. Practically, this was enforced as described: flush *after* the compile, assume this would mean that it was clear at the start of the next compile. That presumably worked more or less right until a change was made to push extra data into the catalog at the start of the 2.6 series; that made serialization of the catalog depend on the pool of known resource types. When that happened we would reload the cache (and reparse the manifests) during serialization, but after compilation ... and leave that in the thread cache, so the precondition for the compiler was no longer true. It would see the cache as of the end of the previous compile run, not the start of the next compile run. This, in turn, was what made Puppet wait for multiple runs of the agent before showing you a change in your manifests under Passenger, but *not* under Webrick: Passenger would reuse the same thread for the next request, cache in place, while Webrick would create a new thread and (by side-effect) "flush" the cache as the compiler expected. To minimally fix this, with as little change of side-effect as possible, we move the cache flush from after compile runs to before compile runs. This might have minimal memory cost until another compile request runs in the same thread, because we cache the data longer, but most models won't cause that to be too much trouble. Reviewed-By: Matt Robinson <matt@puppetlabs.com>
* Merge branch 'ticket/2.7rc/7557-remove_faces_application' into 2.7rcMatt Robinson2011-05-262-136/+0
|\ | | | | | | | | * ticket/2.7rc/7557-remove_faces_application: (#7557) Remove Faces Application
| * (#7557) Remove Faces ApplicationMatt Robinson2011-05-262-136/+0
|/ | | | | | | | It used to be that to list the faces available and their actions and options, you had this legacy based face application. This functionality has all been moved into the puppet help face application. Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
* Merge branch 'ticket/2.7rc/maint-faces_docs_spec_fixes' into ↵Matt Robinson2011-05-268-32/+43
|\ | | | | | | | | | | | | | | | | | | | | | | | | ticket/2.7rc/maint-doc_changes_without_failures * ticket/2.7rc/maint-faces_docs_spec_fixes: 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 Resolved Conflicts: lib/puppet/interface/documentation.rb
| * maint: Fix order dependent spec failure for face indirectionMatt Robinson2011-05-261-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An indirected face is being created in spec/unit/application/indirection_base_spec.rb that uses a stubbed out indirection. This stub didn't have a name method defined, which caused the documentation_spec.rb, that does checks against every available face, to blow up with: expected no Exception, got #<NoMethodError: undefined method `to_sym' for nil:NilClass> in lib/puppet/face/indirector/face.rb when listing the indirections for the help text. I toyed with creating a real indirection for the test, but that was harder than expected. Paired-with: Max Martin <max@puppetlabs.com>
| * (#7690) Don't blow up when listing terminuses available for facesMatt Robinson2011-05-264-24/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-262-3/+3
| | | | | | | | | | | | | | | | | | | | 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>
| * Maint: Fix ellipses for short descriptionsnfagerlund2011-05-262-3/+12
| | | | | | | | | | | | | | | | | | | | | | Previously, we were adding ellipsis to any short_description, which was misleading; they were only necessary when we were truncating in the _middle_ of a paragraph. This commit changes the behavior, and updates the tests to show when we expect ellipsis. Paired-with: Matt Robinson <matt@puppetlabs.com>
* | (#7563) DRY: Remove indirector boilerplate from individual facesnfagerlund2011-05-2612-113/+0
| | | | | | | | | | Termini lists are now being generated in the help templates. This commit removes the hardcoded lists from each of the affected faces.
* | (#7564) Finish templatesnfagerlund2011-05-265-60/+270
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a rebase of the following commits: * (#7563) Add a template for manpages In order to generate manpages in a reasonably maintainable way, we need to format text from the Faces help API for use with Ronn (https://github.com/rtomayko/ronn/). This commit adds a man template to the help templates folder; it has been verified to generate Ronn-friendly input text. It isn't currently called by any applications, but can be demonstrated by exchanging it for face.erb. * (#7634) Change ERB trim mode used in the Faces help API <%= something -%> tags (note the minus) are unavoidably necessary at at least one point in the Faces help templates. ERB objects instantiated with the % trim mode will blow up horribly whenever one of these tags appears. This commit changes the trim mode to `-` and refactors all help templates accordingly. * (#7563) Refactor short help templates This commit attempts to bring the short face and action help templates closer to the goals of fitting cleanly on one screen, fitting the prevailing *nix aesthetic, and being useful without overwhelming the user.
* | (#7561) Complete help text for all faces and actionsnfagerlund2011-05-2622-257/+628
| | | | | | | | | | | | Faces help output relies on input from the documentation methods in each of the faces to be documented. This commit calls those methods in each of our faces, with varying levels of detail depending on their complexity.
* | Maint: Add ellipsis to generated short_descriptions.nfagerlund2011-05-261-1/+1
| | | | | | | | | | | | | | Auto-generated short descriptions cut off at five lines with no indication that they are truncated. This commit adds ellipsis in brackets to indicate incompleteness.
* | (#6962) Add "arguments" method to help APInfagerlund2011-05-261-0/+2
|/ | | | | | | | | | Since some actions take arguments and some do not, action synopses were incomplete and ambiguous. This commit adds a method for explicitly declaring what argument(s) an action takes, and places the arguments at the appropriate spot in the action's synopsis. By convention, individual arguments should be wrapped in angle brackets.
* Merge branch 'ticket/2.7rc/7681' into 2.7rcNick Lewis2011-05-263-6/+47
|\
| * (#7681) Add an acceptance test for resource refs with array variablesNick Lewis2011-05-261-0/+27
| | | | | | | | | | Paired-with: Jacob Helwig <jacob@puppetlabs.com> Reviewed-by: Dominic Maraglia <dominic@puppetlabs.com>
| * (#7681) Allow array variables as resource referencesNick Lewis2011-05-262-6/+20
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | The commit df088c9ba16dce50c17a79920c1ac186db67b9e9 introduced a regression where $files = ["/tmp/one", "/tmp/two"] file { "/tmp/one": content => "one", } file { "/tmp/two": content => "two", } file { "/tmp/three": content => "three", require => File[$files], } no longer worked. File[$files] was concatenating the elements of $files to create a single title, instead of expanding to multiple File dependencies. Since resource reference titles are implicitly wrapped in an array, if one of the elements of that array is a variable containing an array, the list of titles is a nested array. Prior to the change causing the regression, we would flatten arrays when evaluating them, under certain circumstances. We no longer ever flatten AST arrays when evaluating them, so anywhere that we really do need a flattened array, we have to manually flatten it. ResourceReference expects its list of titles to be a single, flat list of titles, so we have to make it so. Paired-with: Jacob Helwig <jacob@puppetlabs.com>
* (#7507) Add exclude filter for ruby 1.9 spec failuresJosh Cooper2011-05-201-2/+2
| | | | | | | Exclude spec test for multiple writer processes as this fails intermittently on ruby 1.9. Reviewed-by: Jacob Helwig <jacob@puppetlabs.com>
* Merge branch 'ticket/2.7.x/maint-stub_trap' into 2.7.xMatt Robinson2011-05-194-8/+2
|\ | | | | | | | | * ticket/2.7.x/maint-stub_trap: maint: move trap call to Signal so we can stub it for specs
| * maint: move trap call to Signal so we can stub it for specsMatt Robinson2011-05-194-8/+2
|/ | | | | | | | | | Also removed some monkey patching on Signal that would have theoretically done this without having to explicitly call trap on Signal in order to stub it, but it's not working. This allows us to ctrl+c (send SIGINT) in the middle of a spec run. Paired-with: Josh Cooper <josh@puppetlabs.com>
* Updated CHANGELOG for 2.7.0rc3Michael Stahnke2011-05-181-0/+20
|
* Merge branch 'tickets/2.7.x/7259' into 2.7.xPieter van de Bruggen2011-05-182-3/+12
|\
| * (#7259) Remove ActiveRecord requirement from indirector face specJacob Helwig2011-05-181-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "should be able to return a list of terminuses for a given indirection" was calling Puppet::Indirector::Face.terminus_classes, which is just a thin wrapper around Puppet::Indirector::Terminus.terminus_classes, which would attempt to load all Terminus classes. This would cause problems if not all of the prerequisites for all of the Terminus classes were installed (For example: ActiveRecord). Now we only test that the thin wrapper appropriately munges the output from Puppet::Indirector::Terminus.terminus_classes, since the method being wrapped should have its own tests for the behavior that was being tested originally. Paired-with: Nick Lewis <nick@puppetlabs.com>
| * (#7259) Do not try to load all Terminus classes when configuring the IndirectorJacob Helwig2011-05-181-1/+1
|/ | | | | | | | | | | | When configuring the Indirector routes, we should only try loading the Terminus classes that are referenced by the configuration. Previously, we were loading all Terminus classes, which would cause errors if we didn't have all of the prerequisites for all of them, even if the ones with missing prerequisites weren't being used by the configuration. Paired-with: Nick Lewis <nick@puppetlabs.com>
* Adding a sleep state post starting masterDominic Maraglia2011-05-171-0/+3
| | | | | | | Occasional spurious errors seen when running this test -- curl reports an SSL protocol error; I suspect this is actually a timing issue related to starting up the master and not being ready to to accecpt connections.
* Merge branch 'tickets/2.7.x/7507' into 2.7.xPieter van de Bruggen2011-05-172-2/+2
|\
| * (#7507) Add more filters for Ruby 1.9 spec failuresPieter van de Bruggen2011-05-172-2/+2
|/ | | Paired-With: Matt Robinson
* Merge branch 'ticket/2.7.x/7507-filter_19_failures' into 2.7.xMatt Robinson2011-05-1763-189/+188
|\ | | | | | | | | | | * ticket/2.7.x/7507-filter_19_failures: (#7507) Add ability to filter Ruby 1.9 spec failures (#7507) Fix when_invoked action specs in Ruby 1.9
| * (#7507) Add ability to filter Ruby 1.9 spec failuresMatt Robinson2011-05-1759-102/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By running: rspec spec --tag ~@fails_on_ruby_1.9.2 We can now just run the specs that pass under Ruby 1.9. Obviously in the long term we want to have all the specs passing, but until then we need notification when we regress. From now on new code will be required to pass under Ruby 1.9, and Jenkins will give us email notification if it doesn't or if we break something that was already working. Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
| * (#7507) Fix when_invoked action specs in Ruby 1.9Matt Robinson2011-05-174-87/+86
| | | | | | | | | | | | | | | | Ruby 1.9 is strict about argument arity for methods that are metaprogrammatically defined. A ton of specs that were setting up when_invoked didn't pass options even though they should have been. Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
* | Merge branch 'ticket/2.7.x/7297' into 2.7.xNick Lewis2011-05-161-1/+1
|\ \
| * | (#7297) Fix Puppet::Resource#to_manifest in Ruby 1.9Nick Lewis2011-05-161-1/+1
|/ / | | | | | | | | | | | | | | | | | | | | This method was relying on the implicit join in Ruby 1.8's Array#to_s, eg. [1,2,3].to_s => "123". The behavior in Ruby 1.9 is more akin to Array#inspect, eg. [1,2,3].to_s => "[1, 2, 3]". Since the array we were building was lines to be printed, the latter behavior is incorrect. So we just join into a single string, which prints consistently in all versions of Ruby. Paired-With: Josh Cooper Original patch by Aria Stewart <aredridel@nbtsc.org>
* | Merge branch 'ticket/2.7.x/7298' into 2.7.xNick Lewis2011-05-161-0/+1
|\ \ | |/ |/|
| * (#7298) require 'English' to provide $CHILD_STATUS in Ruby 1.9Nick Lewis2011-05-161-0/+1
|/ | | | | | | | | This had been coming from 'cgi', but in Ruby 1.9, cgi no longer requires English. Since we use $CHILD_STATUS when execing, we need to have it available, so require it manually. This also provides the other named special globals, should we choose to use them. Paired-With: Josh Cooper
* Merge branch 'ticket/2.7.x/7291-ruby19-fixes' into 2.7.xMatt Robinson2011-05-169-11/+11
|\ | | | | | | | | | | | | | | * ticket/2.7.x/7291-ruby19-fixes: (#7291) Fix issues with instance_methods in Ruby 1.9 (#7291) Fixed ascii problem with Ruby 1.9.2 (#7291) Fix Ruby 1.9 face failures (#7291) The 'script' version of actions needs options argument
| * (#7291) Fix issues with instance_methods in Ruby 1.9Matt Robinson2011-05-165-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * (#7291) Fixed ascii problem with Ruby 1.9.2Matt Robinson2011-05-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As with the previous commit, there was a problem loading a face because Ruby 1.9.2 doesn't like using non-standard ascii characters without declaring the encoding at the top of the file. SyntaxError Exception: /Users/matthewrobinson/work/puppet/lib/puppet/face/resource.rb:10: invalid multibyte char (US-ASCII) Rather than declare the encoding to allow the French word, I've translated it (after having to look it up myself). Reviewed-by: Pieter van de Bruggen <pieter@puppetlabs.com>
| * (#7291) Fix Ruby 1.9 face failuresMatt Robinson2011-05-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The certificate face wasn't being loaded, but it wasn't clear from the test failure why: lib/puppet/interface.rb:61:in `[]': Could not find Puppet Face :certificate (Puppet::Error) The problem is that when the certificate face is required you get: SyntaxError Exception: /Users/matthewrobinson/work/puppet/lib/puppet/face/certificate.rb:11: invalid multibyte char (US-ASCII) However this error is caught and logged, but then ignored. This behavior was a decision in #7314 and is currently under review. A space character in the description was ASCII 160 instead of the typical ASCII 32 Reviewed-by: Pieter van de Bruggen <pieter@puppetlabs.com>
| * (#7291) The 'script' version of actions needs options argumentMatt Robinson2011-05-162-2/+2
|/ | | | | | | | | | Ruby 1.9 is stricter about arity for for arguments passed as a block. A test case just hadn't been updated to take this into account for Face scripts (a simpler form of action), which isn't surprising since script isn't used anywhere in the code, which makes it a prime candidate for removal as far as I'm concerned, but apparently Luke wants it in there. Reviewed-by: Pieter van de Bruggen <pieter@puppetlabs.com>
* Merge branch 'ticket/2.7.x/7469-rake-failures' into 2.7.xMax Martin2011-05-121-0/+2
|\ | | | | | | | | * ticket/2.7.x/7469-rake-failures: (#7469) Add license to test face so tests pass
| * (#7469) Add license to test face so tests passMax Martin2011-05-121-0/+2
|/ | | | | | | | | | The TestIndirection test face defined in indirection_base_spec did not have copyright or license information defined; this was causing order-dependent test failures when unit tests were run before other specs (as in rake spec). This commit adds license and copyright info to the test face to prevent these failures. Paired-with: Daniel Pittman <daniel@puppetlabs.com>
* Merge branch 'ticket/2.7.x/7264-metaparameter_reference' into 2.7.xnfagerlund2011-05-121-40/+44
|\
| * (#7264) Docs: Clarify that subscribe/notify imply require/beforenfagerlund2011-05-121-40/+44
|/ | | | | | | | This is a doc string only commit. The metaparameter reference was not clear about subscribe and notify being supersets of require and before, respectively. This commit also cleans up some unrelated quoting, arrow-alignment, and language flow issues.
* Merge branch 'tickets/2.7.x/7299' into 2.7.xMax Martin2011-05-103-1/+12
|\ | | | | | | | | | | * tickets/2.7.x/7299: Prevent spec failure caused by network device mock leak Fix #7299 - do not require net/ssh for running rake spec
| * Prevent spec failure caused by network device mock leakBrice Figureau2011-05-072-0/+9
| | | | | | | | | | | | | | We were leaking some mocks in the network device singleton from tests to tests. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>