| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
Modified the launchd provider to use OSX's "plutil" command to read
plists. This allows it to handle properly lists in both XML format
and binary format.
Launchd continues to write out propertly lists in XML format. This is
not a problem because the operating system is able to understand both
formats.
|
|
|
|
|
|
|
|
| |
Part of the ongoing refinement / cleanup of the string interpolation semantics.
When scanning for an unescaped string terminator we now also allow an 0 or more
pairs of backslashes (that is, escaped backslashes) before the terminator.
Thanks to Jacob for the test I should have added.
|
|
|
|
|
| |
This is another case where our test objects were overly mocked so they
didn't alert us to problems with our implementation.
|
|
|
|
|
|
|
|
| |
Having a root ca_name that matches the fqdn of the puppet master would
cause certificate lookup problems on some clients, resulting in failed SSL
negotiation.
Signed-off-by: Jacob Helwig <jacob@puppetlabs.com>
|
|
|
|
| |
Signed-off-by: Jacob Helwig <jacob@puppetlabs.com>
|
|
|
|
|
|
|
|
|
| |
Whits are inserted into the dependency graph in the place where an empty
class is being required. Unfortunately, when such a class is involved in
a loop, the error message shows the cycle as involving Whit[Classname].
This patch changes it to say Class[Classname], which is much easier to
understand. It also fixes puppetdoc from generating documentation on the
Whit type.
|
|
|
|
|
|
|
|
|
|
| |
Calling this method caused storeconfigs not to run.
ActiveRecord::Base.allow_concurrency was deprecated in Rails 2.2. We
support activerecord 2.1 and higher, so we still need to call this
method for 2.1. I factored out the code that determines our
activerecord version to a method in util so that the code was easier to
read and test.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The global "-o" option ("--onetime") was overriding the
application-specific option "-o" because global options were being
sent to the OptionParser after application-specific options.
Modified the order in which options are sent to the OptionParser to
have the correct behavior. Also merged together the two methods that
were applying options so that the order is more explicit.
|
|
|
|
|
|
|
|
|
|
|
|
| |
When running puppet doc, if the directory containing the user's
specified manifest file overlaps with the modules directory (i.e. they
are the same directory or one contains the other), Puppet doc would
try to parse the overlapping files twice, triggering an exception
which made the documentation run fail.
Fixed the bug by adding a check to the RDoc::Parser#scan method to
prevent re-parsing of files that have already been parsed. Also added
a spec test to verify that this works.
|
|
|
|
|
|
|
|
|
|
| |
The :undef symbol, which we use internally to distinguish between
undefined variables and variables whose value is the empty string, is
being leaked in calls to functions (e.g. "split"). This is a
departure from 0.25.x behavior, where undefined variables evaluated to
"".
This patch restores the 0.25.x behavior.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Made the following modifications to ResourceTypeAPI:
(1) returned nil from “define”, “hostclass”, and “node”.
(2) renamed “mk_resource_type” and “munge_type_arguments” to
“__mk_resource_type__” and “__munge_type_arguments__” to discourage
customers from calling them.
(3) Made ResourceTypeAPI a class rather than a module, and changed the
parser to evaluate the contents of pure ruby manifests using a
instances of this class.
(4) Changed ResourceTypeAPI to insert newly instantiated types into
Thread.current[:known_resource_types] rather than the default
environment's known_resource_types.
This effectively backports the fix for issue #4657 to 2.6.x.
Also backported the new spec tests from #4657.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The function import_if_possible, which was supposed to be responsible
for making sure that no two threads tried to import the same file at
the same time, was not making this decision based on the full pathname
of the file, since it was being invoked before pathnames were
resolved. As a result, if we attempted to import two distinct files
with the same name at the same time (either in two threads or in a
single thread due to recursion), one of the files would not always get
imported.
Fixed this problem by moving the thread-safety logic to happen after
filenames are resolved to absolute paths. This made it possible to
simplify the thread-safety logic significantly.
|
|
|
|
| |
changed the regex so that tagmail allows . in tagname.
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes spec and unit tests indirectly related to the previous
patch-revert.
One failure was from trying to test the User Type's roles, when,
on many platforms, the roles feature wasn't supported by the default
Provider.
Other tests could fail on some platforms because they assumed that
unsupported attributes would be ignored with a warning, but the code was
crashing instead.
|
|
|
|
| |
Restored deleted lines from type.rb and reinstated unit tests
|
|
|
|
| |
The test was expecting a stub object but wasn't providing one.
|
|
|
|
|
|
| |
If the file streaming is to be thwarted when running standalone the test for
standalone needs to be stubbed when running specs, lest the tests inexplicably
fail.
|
|
|
|
|
|
|
|
|
| |
The less stuff being done in the spec_helper the better for reasoning
about what's happening in the tests. puppettest.rb does a lot of things
that aren't necessary for the specs, so this patch gets those things out
of the spec_helper.
Reviewed by: Jesse Wolfe
|
| |
|
|
|
|
|
|
| |
This commit unifies the code paths on which classes are added, alters the default
stage to respect the stage of the parent if any, and assures that the resource is
notified if its stage is assigned (turning an implicit stage into an explicit one).
|
|
|
|
|
|
|
| |
The responsibility for adding classes to the compiler's classes list (for use
in constructing classes.txt) moved around a bit in the 0.25 to 2.6 transition
before being dropped in a merge conflict resolution. Ooops. This restores it,
and adds tests to prevent regression.
|
|
|
|
|
| |
The method that these specs were testing has been removed, causing the
specs to fail.
|
|
|
|
|
|
|
| |
This basically involved adding a search method to the yaml indirector, which I
did by copying the one from ssl_file and fiddling with it until the tests
passed. Since the most straight forward way to do this required extending the
interface to the path method I added tests for the additional behaviour.
|
|
|
|
|
|
|
|
| |
Also warns you it's skipping files if you pass it more than one file to
apply.
Reviewed-by: Nick Lewis <nick@puppetlabs.com>
Signed-off-by: Matt Robinson <matt@puppetlabs.com>
|
| |
|
|
|
|
| |
The content-length fix for passenger broke a test; this fixes it.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
A spec was failing since it wasn't updated when the #4364 change was
made.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
* 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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
My earlier #4397 patch was not aware of the parameterized class
instantiation syntax, and failed on manifests that instantiate
parameterized classes.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This test ran into a mocha bug, and was stubbing too much anyway.
It's being moved to an acceptance test.
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
optparse hasn't always had the concept of default_argv. Fortunately, we
don't really need it.
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Single quoted used to allow escape on single quotes and pass all other
characters through without comment; now the do again.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
< 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>
|
|
|
|
|
|
|
| |
The tests introduced with the fix for #4242 have isolation issues apparently
due to the creation of a stage resource which is global and persistent. This
patch stubs the creation, marks the one test which is thus invalidated pending,
and adds comments noting the problem.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
As Brice discovered, the problem was that we simply ignored empty classes in
the graph when determining application order. This patch instead replaces them
with a resource of a new type which we've frequently noted the (internal) need
for: a whit, the smallest possible resource, which has no properties or other
semantics apart from its existence and its name.
This resource then ensures application order through the normal mechanisms.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The problem is that the environment list gets cleared
when Settings#set_value is called, and it was being
called every time Settings#use was called, which is
more often than obvious but especially if reporting
is enabled.
Previously we ignored noop when running inside of Settings,
and this essentially adds that back in, so we can remove
the special noop behaviour in Settings itself.
Signed-off-by: Luke Kanies <luke@puppetlabs.com>
|