summaryrefslogtreecommitdiffstats
path: root/lib/puppet
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge remote branch 'paul/4472-4483-4496-4521-4522'Jesse Wolfe2010-08-1714-1601/+1755
|\ \ | |/ |/| | | a.k.a. "make_taller_trees"
| * [#4496]+[#4521]+[#4522] Add structures to the AST to represent type ↵Paul Berry2010-08-1314-1517/+1666
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | definitions (classes, definitions, and nodes). Previously, type definitions were not represented directly in the AST. Instead, the parser would instantiate types and insert them into known_resource_types as soon as they were parsed. This made it difficult to distinguish which types had come from the file that was just parsed and which types had been loaded previously, which led to bug 4496. A side-effect of this change is that the user is no longer allowed to define types inside of conditional constructs (such as if/else). This was allowed before but had unexpected semantics (bugs 4521 and 4522). It is still possible, however, to place an "include" statement inside a conditional construct, and have that "include" statement trigger the autoloading of a file that instantiates types.
| * Moved perform_initial_import from Puppet::Resource::TypeCollection to ↵Paul Berry2010-08-132-19/+21
| | | | | | | | | | | | | | | | | | | | | | | | Puppet::Node::Environment. This change is part of an ongoing effort to remove functionality from TypeCollection that is not related to keeping track of a collection of types. This reduces TypeCollection's linkage to the environment, which is a step toward decoupling it from the type loading mechanism. Also, added a spec test to verify that TypeCollection.version is correctly recomputed when types are re-imported.
| * [#4472]+[#4483] Moved type-name resolution out of Puppet::Parser::TypeLoader.Paul Berry2010-08-123-83/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Moved type-name resolution out of Puppet::Parser::TypeLoader, and into its primary client, Puppet::Resource::TypeCollection. TypeCollection now always passes fully qualified type names to TypeLoader. This avoids duplicate type-name resolution logic between TypeLoader and TypeCollection. That in turn fixes bug 4472, which resulted from flaws in the type-name resolution logic in TypeLoader. In addition, it fixes bug 4483, which resulted from improper interleaving between looking up names using the TypeCollection and the TypeLoader.
| * [#4397]+[#4344] Move type-name resolution out of Puppet::Resource into the ↵Jesse Wolfe2010-07-306-130/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AST resources. Move type-name resolution out of Puppet::Resource into the AST resources. Move find_resource_type out of Puppet::Resource into Scope Thus, never pass unqualified type names to Puppet::Resource objects. Thus, Puppet::Resource objects don't need the namespace property, and Puppet::Resource objects never consult the harddrive to look for .pp files that might contain their type definitions, Thus, performance is improved. Also removes the temporary fix for #4257 that caused #4397 (The code was too eager to look for a class in the topscope) Paired-With: Paul Berry <paul@puppetlabs.com> Signed-off-by: Jesse Wolfe <jes5199@gmail.com>
* | Further RST to Markdown fixes for types, values, testsJames Turnbull2010-08-1214-183/+130
| |
* | Updated all types to Markdown outputJames Turnbull2010-08-1168-445/+410
| | | | | | | | | | | | | | | | | | | | Updated defaults.rb to Markdown Migrated report documentation to Markdown Migrated Naginator doco to Markdown Updated provider documentation to Markdown
* | Updated reference output to generate valid MarkdownJames Turnbull2010-08-113-15/+9
| |
* | Reformatting documentation from RST to MarkDown (#4509)Jes Fraser2010-08-115-64/+64
| | | | | | | | Signed-off-by: Jes Fraser <jes@gadget.geek.nz>
* | Rewrote functions documentation to MarkdownJames Turnbull2010-08-1118-119/+114
| |
* | Removed legacy Trac codeJames Turnbull2010-08-112-34/+3
| |
* | Fix for #4476 -- rails calling yaml internalsMarkus Roberts2010-08-061-1/+1
| | | | | | | | | | | | | | | | Some recent versions of rails have started calling yaml with the internal (and IIRC depricated) signature; this does nothing special in yaml but it breaks with zaml, so we add an ignored parameter to simulate the non-behavior. *sigh* I love rails.
* | Fixes #4485 -- single quoted strings should not treat \n as new lineMarkus Roberts2010-08-051-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | This is the rest of the change for #4303; James and I discussed various ways the solution to that ticket needed to be extended but, as neither of us committed code, nothing changed. This is the least implact extension, which mimics the behaviour of prior versions. It leaves open the question: should '\\x' start with a single or double backslash? If, as now, '\\x' starts with a double backslash (i.e. single quote is the only escapable characterin single quoted strings) a string ending in a backslash can not be represented in a single quoted string.
* | Passenger needs HTTP headers values to be stringBrice Figureau2010-08-051-1/+1
| | | | | | | | | | | | | | | | | | When streaming a file through rack, we set the Content-Length header to be the size of the transmitted file. This size is an int, and recent passenger versions only support string values. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* | [#4404] Remove requirement for source on Parser::Resource::ParamNick Lewis2010-08-041-1/+1
| | | | | | | | | | | | | | | | Stage[main] is created without an associated source, to which Parser::Resource::Param objects. This patch observes that the source attribute of both Parser::Resource and Parser::Resource::Param seem not to be used anywhere, and removes the requirement that it be supplied.
* | Fix #4458 - Do not dump the whole environment when instances can't be foundBrice Figureau2010-08-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When generating the error message when we can't find any instances for a search request, we were "inspect"ing the request which now contains an environment instance which itself contains a lots of things (including all the known resource types). Thus it was generating a very large "reason" (ie the HTTP error string). On some environments (ie proxied mongrel) this was too large and the proxy would produce an error 500. I just changed the error message to just log the indirection name and request key (which should be enough to understand what is wrong). Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* | Fix for #4465 -- earlier "feature" patch broke ldapMarkus Roberts2010-08-041-52/+8
| | | | | | | | | | | | | | | | | | The patch for #3904 should not have been accepted; it's buggy and the use case (supporting having nodes in ldap more than once with the same name but distinct records) is ill-conceived. This commit reverts the patch (a7884b47) and the previous attempt to fix it (e6709da4), restoring the old (0.25.x) behaviour.
* | [#4467] Make Puppet Master respect facts_terminus settingsRein Henrichs2010-08-042-4/+1
| | | | | | | | | | | | | | | | | | * Remove hard-coded facts terminus in master * Change facts_terminus default to 'yaml' for master and 'facter' for everything else. Paired-with: Matt Robinson <matt@puppetlabs.com> Signed-off-by: Rein Henrichs <rein@puppetlabs.com>
* | added md5 support as requested in ↵Alice Kærast2010-08-031-0/+5
| | | | | | | | http://serverfault.com/questions/166199/puppet-md5-sum-of-string
* | [#4381] extlookup shouldn't trigger reparses of .pp filesJesse Wolfe2010-08-031-3/+0
| | | | | | | | | | | | | | extlookup was adding its data files to the list of watched source files. This causes the .pp manifests to be re-parsed whenever the .csv files change, which is no longer necessary, as the .csv files are already reparsed on every function call.
* | [#4370] Fixes extlookup precedence getting overwritten between runsMatt Robinson2010-08-033-12/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We found the gsub! in extlookup was actually modifying the value for extlookup_precedence, so the next node to call it just got the interpolated value from the first run. We did two things in the code to prevent this: 1. We returned a dup of the ast string object so that modifying it wouldn’t change puppet’s state. We didn’t do this for all possible return values because we depend on using the original ast array object to do array concatenation 2. We fixed extlookup to not do a destructive gsub Reviewed by: Jesse Wolfe
* | Fixed #4364 - Reduced audit msg from info to debugJames Turnbull2010-08-031-1/+1
| |
* | [#4347] run_mode was colliding with --mode for "puppet doc"Jesse Wolfe2010-08-032-2/+2
| | | | | | | | | | | | The run_mode value was incorrectly getting stored to Puppet[:mode], which was confusing the optparser for applications that declare a --mode parameter.
* | [#4423] repair parameterized class instantiationJesse Wolfe2010-08-033-17/+25
| | | | | | | | | | | | My earlier #4397 patch was not aware of the parameterized class instantiation syntax, and failed on manifests that instantiate parameterized classes.
* | [#4423] class { shouldn't get stored on the namespace stackJesse Wolfe2010-08-031-1/+1
| | | | | | | | | | | | | | The new syntax for instantiating parameterized classes was confusing the lexer's notion of namespaces. This is a simple fix to prevent that syntax from polluting the namespaces.
* | [#4397]+[#4344] Move type-name resolution out of Puppet::Resource into the ↵Jesse Wolfe2010-08-036-130/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AST resources. Move type-name resolution out of Puppet::Resource into the AST resources. Move find_resource_type out of Puppet::Resource into Scope Thus, never pass unqualified type names to Puppet::Resource objects. Thus, Puppet::Resource objects don't need the namespace property, and Puppet::Resource objects never consult the harddrive to look for .pp files that might contain their type definitions, Thus, performance is improved. Also removes the temporary fix for #4257 that caused #4397 (The code was too eager to look for a class in the topscope) Paired-With: Paul Berry <paul@puppetlabs.com> Signed-off-by: Jesse Wolfe <jes5199@gmail.com>
* | [#4344] Temporary fix to stop agent from importing modulesNick Lewis2010-08-031-0/+4
| | | | | | | | | | | | | | Due to type collection madness, agent tries to import modules to resolve resource types. That is wrong, decreases performance, and causes problems. This patch forces agent to not import any files by setting ignoreimport to true.
* | [#4344] Fix for failing templates when module name matches file in local dir.Paul Berry2010-08-031-1/+1
| | | | | | | | | | | | | | | | | | When the name of a module matches the name of a file in the local directory, puppet agent would sometimes try to read that file and interpret it as puppet code. This happened because files.rb was unintentionally permitting puppet files without an extension. Fixed by changing the glob pattern to only permit ".pp" and ".rb" extensions.
* | [#4336] "reportdir" was in the wrong sectionJesse Wolfe2010-08-031-10/+10
| | | | | | | | | | | | | | Correctly revert damage done by c00285c, which incorrectly reverted in a7e4fe8. The result was that "puppet agent" and others were trying to create a reportdir that they don't actually use.
* | Fixed #4311 - Typo in defaults.rbJames Turnbull2010-08-031-1/+1
| |
* | Fix #4461 - attempt to fix another performance issueBrice Figureau2010-08-033-5/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During a profiling of a 2.6.1rc1 puppet master, I found that we spend a lot of time and efforts in Puppet::Util::Autoload#module_directories. Since this method is doing a bunch of filesystem access, this process is slow. In fact each time we were evaluating a resource or trying to find if a given resource was a builtin type we ended up scanning the whole module directories for the given environment. This patch attempts to fix this performance issue by caching the module_directories output for the either the time of the compilation or an agent configurer run (since this stuff looks like to be shared for both compilation and catalog evaluation). With this patch, my compilation time for 2k resources went from 5.91s to 3.71s (second run each time to allievate parsing time).. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com> Edited to fix a typo [#4434] Signed-off-by: Jesse Wolfe <jes5199@gmail.com>
* | Removed eventual documentation line ... eventually cameJames Turnbull2010-07-301-2/+0
|/
* Fix #4245 - default insertion of ACL is not thread safeBrice Figureau2010-07-251-3/+6
| | | | | | This can happen under jruby with native threads. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix race condition in rack autoloading of request/responseBrice Figureau2010-07-251-0/+3
| | | | | | | | Ruby autoloader seems to not be thread-safe. Since rack uses it to lazily load the Rack::Request and Rack::Response classes, on jruby it fails if the first compilation is done with multiple concurrent threads. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix #4244 - Cached Attributes is not thread safeBrice Figureau2010-07-251-10/+15
| | | | | | | | | | The underlying hash is not protected and thus two threads accessing the cached value at the same time and one expiring the value can result in a race condition. This patch synchronizes the access to the value_cache underlying hash. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* JRuby doesn't implement Process.maxgroupsBrice Figureau2010-07-251-1/+4
| | | | | | So let's not call it :) Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix #4349 - Parsing with ignoreimport=true was always loading site.ppMarkus Roberts2010-07-251-0/+1
| | | | | | | | | With the type collection refactoring, when accessing a fresh collection puppet tries to import the site.pp manifest (perfrom_initial_import). In the case of puppetdoc, we are parsing site.pp by ourselves, so we ended parsing it twice, resulting in an "import loop detected" error. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix #4348 - Puppet doc single manifest brokenBrice Figureau2010-07-251-1/+1
| | | | | | | | The refactoring of using environment instances instead of strings for initializing the parser, rdoc wasn't updated, thus was unable to initialize the parser. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* extlookup() is a builtinJesse Wolfe2010-07-251-0/+173
| | | | | | This patch promotes extlookup() to being a builtin function. It also adds test and makes some minor tweaks to the code. The behavior of extlookup has been left unchanged.
* [#4333] old optparse doesn't support default_argv=Jesse Wolfe2010-07-251-2/+1
| | | | | optparse hasn't always had the concept of default_argv. Fortunately, we don't really need it.
* Fix #4319 - source file url sent to the master is invalidBrice Figureau2010-07-251-1/+1
| | | | | | | | | | | We were sending an incorrect (containing a //) url for sourced file content since the file streaming patches. Depending on the webserver in front of puppet it could fail (for instance nginx+mongrel). This patch fixes the offending // in each sourced file urls. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix for 4314 -- Need to allow '-' in class name for refsMarkus Roberts2010-07-251-1/+1
| | | | | | | I almost changed this to correspond to the lexer pattern ([a-z0-9][-\w]*) but that isn't quite right either (it would reintroduce the '::' problem). Another option I considered was [^\[]+, but that has it's own problems. In the end I just made the minimal change, adding '-' to the acceptable characters.
* Fixed #4304 - Changed logging level for auto import messageJames Turnbull2010-07-251-1/+1
|
* Fix for #4303 -- reverting to old escaping in '-stringsMarkus Roberts2010-07-251-5/+4
| | | | | Single quoted used to allow escape on single quotes and pass all other characters through without comment; now the do again.
* Tweak to fix for #4302--dangling ref to known_resource_typesMarkus Roberts2010-07-251-6/+5
| | | | | | | | | | | | | | | | Since we were clearing the thread variable containing the compiler's reference to it's environment's known resource types at the start of each compile the reference remaining at the end of a compilation could never be used and was thus just garbage that we were arbitrarily retaining. This patch moves the clearing of the thread var to the _end_ of compilation so that it's always nil except in the middle of a compile. This raises an interesting question; should the ref just live on the compiler object and we could dispense with the thread-var? It might require things that now only know about the environment to need a ref to the compiler and introduce other thread issues (e.g. we might just end up needing a :current_compiler thread variable, for no net gain in simplicity).
* Fix #4302 - Compilation speed regression compared to 2.6Brice Figureau2010-07-252-5/+20
| | | | | | | | | | | | | | | | | | | | | Each time the compiler was accessing the loaded types, we were checking if the manifests had changed. This incurred a large performance cost compared to 0.25 and introduced race conditions if manifests changed while a thread was in the middle of a compilation. This tentative fix, based on Brice's, makes sure each thread will get access to the same loaded types collection for the durration of a compilation, even if the manifests change. We now only check for changed files at the start of a compilation or if the environment changes, and we maintain a per environment thread lock so that only one thread at a time can be reloading any particular environment (and the need-check is done inside the synchronize block so that only the first will actually load it). As long as the manifests don't change, the threads will share the same collection, so there is only duplication in memory for a brief window surrounding a change. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com> Second-author: Markus Roberts <markus@puppetlabs.com>
* Minimal fix for #4297, with notes for follow-upMarkus Roberts2010-07-251-1/+18
| | | | | | | | | In retrospect it appears that the fix for #4270 was incomplete and somewhat off target. This patch fixes the one demonstrably incorrect part (the namespace) and adds a comment outlining what remains to be done to clean up the code; these additional changes, while needed for maintanability, are inappropriate for a quick turnaround crucial bug fix release such as 2.6.1, at which this patch is targeted.
* Fix #4286 - rename puppetdoc global module <site> to __site__Brice Figureau2010-07-251-3/+5
| | | | | | | | | < and > might be invalid or borderline chars to use for a file name or an url. This patch changes those characters to __. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fixed yumrepo type deprecation wanringJames Turnbull2010-07-251-1/+1
| | | | `
* [#4242] Fixed recursion due to parents including their childrenNick Lewis2010-07-251-2/+1
| | | | | | | | | | | | | | | Resources mark themselves as evaluated to prevent being evaluated again. Unfortunately, they were not marking themselves until after they had finished being completely evaluated. Thus, there was nothing actually stopping recursive evaluations. This patch just makes resources mark themselves as evaluated when they start evaluating, and adds tests. The original setting of evaluated was done in an ensure block, so this doesn't change the behavior of a resource which fails to evaluate. The only places evaluated? is checked aren't affected by this change, as they wouldn't want to evaluate it when it's already being evaluated anyway.