| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
This fix implements the same logic as Nick & Paul's patch in a different way.
There aren't any tests yet and I'm still working out if I agree with the
handling of some edge cases, so this should be considered premliminary.
|
|
|
|
|
|
|
|
|
|
| |
This patch adds an options hash to lookupvar analogous to the one taken by
setvar and uses it to pass in source location for error reporting. It also
fixes the mechanism used by setvar (file was not being passed correctly), adds
line and file information to errors in templates, and extends/corrects tests.
As presently written it does not gather userful line numbers from inline
templates and there are no tests for the template line number generation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The logic for distinguishing dynamic / static scopes was borrowed from Nick &
Paul's patch, the main differences here being 1) calling it "dynamic" (true/
false) rather than "parent_relationship" (:inherited/:dynamic) 2) aligning the
default so that it only needs to get set in one place (the one that will
eventually go away) and 3) setting it on createion rather than with a setter.
Setting it in one place, on creation, also makes it easier to see that anytime
we access a scope it will have the correct setting of Scope#dynamic and that
this does not change.
This commit also contains a minor refactor (removing Type#subscope) that is not
strictly tied to the main purpose but lies in the direction we are needing to
go and it simplified things to do it now.
|
|
|
|
|
|
|
|
|
| |
This commit adds a method analogous to Puppet.warn which 1) only logs each
message the first time it is received and 2) only logs the first 100 messages
it receives. Messages are logged via warn.
This could easily be made more flexible by making the hard limit and effective
log level user settable, if desired.
|
|
|
|
|
|
|
| |
One of the uses of lookupvar was in the method Scope#strinterp; this method
is no longer used (string interpolation is now handled by the parser (for
the syntax) and AST nodes (for the semantics)) so this use of lookupvar can
be excised, along with a fair amount of surrounding code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The usestring parameter to lookupvar was objectionable for several reasons;
first, it performed a function orthogonal to the main purpose of the method,
second its default was the least common value, and third it was causing other
code to work for reasons that were not obvious (extlookup).
This refactor breaks the value-transforming function out into a seperate
method which allows the user to specify the value to be used in lieu of :undef
and removes the parameter. The function, Scope#undef_as(default,exp) is
written so that it can be used in user code (templates, functions, etc.) if
needed.
This refactor will introduce a user-visible behaviour change in the case where
users were counting on lookupvar to return "" for undefined variables. The
best solution is to have them use undef_as, replacing:
lookupvar('myvar')
with
undef_as('',lookupvar('myvar'))
(with the option to specify another default value if desired). If this is too
objectionable, we could rename the existing lookupvar as raw_lookupvar and
define
def lookupvar(v)
undef_as('',raw_lookupvar(v))
end
to restore the present behaviour.
|
|
|
|
|
| |
When we lookup a global variable / fact from code we should explicitly look
in the global scope.
|
|
|
|
| |
This attribute is apparently no longer set or accessed.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If this option is true, a certificate request with the same CN as an existing
certificate will override the existing certificate when signed. With the option
false, the new certificate request will be rejected. This option will default
to false.
Paired-With: Max Martin
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* tickets/master/7021:
Updated confine in Spec test for RSpec 2
Add management of router/switchs global vlans
Cisco Switch/Router Interface management
Base class for network device based providers
Ssh transport for network device management
Telnet transport to connect to remote network device
Remote Network Device transport system
Introduce a module for some IP computations
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This allows to manage the global device list of vlans.
Currently supports only cisco IOS devices.
This is as easy as:
Vlan {
device_url => "ssh://user:pass@switch.domain.com/"
}
vlan {
"200": description => "R&D";
"99": description => "Management";
}
The device_url conforms to the same specs as for the interface
type.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This patch introduces managing remotely cisco IOS network devices
through ssh or telnet with a puppet type/provider.
This patch allows to manage router/switch interface
with the interface type:
interface {
"FastEthernet 0/1":
device_url => "ssh://user:pass@cisco2960.domain.com/",
mode => trunk,
encapsulation => dot1q,
trunk_allowed_vlans => "1-99,200,253",
description => "to back bone router"
}
It is possible with this patch to set interface:
* mode (access or trunk)
* native vlan (only for access mode)
* speed (auto or a given speed)
* duplex (auto, half or full)
* trunk encapsulation
* allowed trunk vlan
* ipv4 addresses
* ipv6 addresses
* etherchannel membership
The interface name (at least for the cisco provider) can be any
shorthand interface name a switch or router can use.
The device url should conform to:
* scheme: either telnet or ssh
* user: can be absent depending on switch/router line config
* pass: must be present
* port: optional
* an optional enable password can be mentioned in the url query string
Ex:
To connect to a switch with a line password and an enable password:
"telnet://:letmein@cisco29224XL.domain.com/?enable=letmeinagain"
To connect to a switch/router through ssh and a privileged user:
"ssh://brice:letmein@cisco1841L.domain.com/"
Note:
This patch only includes a Cisco IOS provider. Also terminology adopted
in the various types are mostly the ones used in Cisco devices.
This patch was tested against:
* (really old) Cisco switch 2924XL with ios 12.0(5)WC10
* Cisco router 1841 with ios 12.4(15)T8
* Cisco router 877 with ios 12.4(11)XJ4
* Cisco switch 2960G with ios 12.2(44)SE
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is the common bits of all future network device providers
that are using prefetching/flushing to limit the number of
calls to the remote network device.
The idea is that we need one transaction to prefetch and one
to flush each instance.
Implementors needs to implement lookup which returns a hash
of the found entity, and flush to update the remote device.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It is an adapatation of net-ssh-telnet, so that net-ssh conforms to
a saner interface for consumer.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
It is based on net/telnet.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is the base for upcoming telnet and ssh transport mechanism
to send commands to network devices.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Those will be used to parse IPs, compute netmaks or prefix length.
Unfortunately ruby IPAddr doesn't support those directly.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
For details of why we're moving please see:
https://groups.google.com/d/topic/puppet-users/NuspYhMpE5o/discussion
Removed explicit GPL licenses where appropriate
Replaced selected GPL licenses with Apache 2.0
Replaced LICENSE with Apache 2.0
Updated README
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It was previously failing to load at all if couch was missing,
but now it only fails on initialization.
This means that you can tell that the terminus is there when
you're missing couch, but you just can't use it.
Signed-off-by: Luke Kanies <luke@puppetlabs.com>
Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It only had one available method, and the errors incorrectly
specified what it was.
This just defaults to listing all the time, and I've updated
the docs to be correct, too.
Signed-off-by: Luke Kanies <luke@puppetlabs.com>
Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It had not been updated for quite a while.
Signed-off-by: Luke Kanies <luke@puppetlabs.com>
Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
ActiveRecord::StatementInvalid: SQLite3::IOException: disk I/O error
This happened if you ran these tests in the following order since Rails
wasn't disconnecting between tests.
rspec spec/unit/indirector/facts/inventory_active_record_spec.rb
spec/unit/indirector/node/active_record_spec.rb
Paired-with: Nick Lewis <nick@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
You need to specifically rescue LoadError if you want requires to be
optional.
Paired-with: Nick Lewis
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
rspec2 automatically sets a bunch of load-path stuff we were by hand, so we
can just stop. As a side-effect we can now avoid a whole pile of stupid things
to try and include the spec_helper.rb file...
...and then we can stop protecting spec_helper from evaluating twice, since we
now require it with a consistent name. Yay.
Reviewed-By: Pieter van de Bruggen <pieter@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We had a problem where we installed a signal handler during a :before block,
which wasn't stubbed, so ended up leaving that in place forever. Which bites.
We stub it out locally, which is ugly but functional.
Paired-With: Matt Robinson <matt@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We used to shell out to chmod and rm to clean up temporary files; this lead to
the cleanup method here being one of the largest consumers of walltime.
Replacing that with FileUtil calls is as, or more, secure, and performs
sufficiently well that we can just delegate.
Reviewed-By: Matt Robinson <matt@puppetlabs.com>
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reduced overhead of garbage collection from 50 percent to 20 percent in
my test runs, and reduced wall-time to match. This seems to be a reasonable
win: we allow the GC to run on demand, but only outside the testing.
Memory use went from ~ 300MB to ~550MB between runs, which suggests that we
are generating a *lot* of garbage at times, but that we also benefit from
cleaning it automatically on a regular basis.
Reviewed-By: Matt Robinson <matt@puppetlabs.com>
|
|\ \
| | |
| | |
| | |
| | |
| | | |
* ticket/next/maint-fix_tests_for_old_rubies:
maint: Ruby < 1.8.7 knows size but not count
maint: Get tests passing on Ruby < 1.8.7
|
| | |
| | |
| | |
| | | |
Reviewd-by: Nick Lewis
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Fixing test errors:
wrong argument type Symbol (expected Proc)
undefined method `lines' for #<Array:0x1020823e0>
Reviewed-by: Nick Lewis <nick@puppetlabs.com>
|
|\ \ \
| |/ /
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Resource statuses and metrics for Whits were being added to reports. Since they
are transient internal data, they shouldn't be included in the report. This
change adds a Puppet::Transaction::Report#prune_internal_data method, called by
Puppet::Transaction::Report#finalize_report, providing a central place for this
sort of pruning in the future.
Paired-With: Max Martin
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Ruby < 1.8.7 doesn't have this method and we're using it in a test, so
tests won't run on 1.8.6 until this is in place.
It's probably a good thing to use much in implementation since it's
written in pure Ruby when using < 1.8.7 and in C when in > 1.8.7, but
then if you're using older Rubies you're probably not expecting much for
performance anyway.
Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Changes elsewhere in the tree break these two tests, but getting the merge in
is worth marking them pending. :/
Paired-With: Nick Lewis <nick@puppetlabs.com>
|
|\ \ \
| |_|/
|/| |
| | |
| | | |
This joins the two repositories, including full history, into a single run, as
well as landing the interfaces work on the next branch ready for release.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It turns out that mocking require on objects can cause random "stack depth
exceeded" failures, usually triggered by otherwise innocent changes to load
order or the use of require in the rest of the code.
Disable the currently failing test, which needs rewriting, and let it go for
now. We need to systematically purge these problems once the build is stable.
Paired-With: Dan Bode <dan@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Many indirectors need to take a hash as the last argument.
This was not allowed b/c the last hash argument was assumed to
be the options hash.
I resolved this by assuming that the hash needed by an indirector
would be the same as the options hash.
Reviewed-By: Daniel Pittman <daniel@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Source files should resolve their own deps.
This is required for the spec tests to run individually.
Reviewed-By: Daniel Pittman <daniel@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This splits out the plumbing into the Puppet::Interface namespace, and uses
Puppet::Faces for all the public-facing code.
The fault line is "what you care about if you are using or writing a face",
which is public, against "what you care about to enable either of those two",
which is the plumbing.
|
| | |
| | |
| | |
| | |
| | | |
The codebase is now using the new name, faces, uniformly to reference the
objects contained. All tests pass.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This just changes filenames and directories; files are exact copies rather
than having additional modifications to make clearer each step of this
process.
This does leave a currently broken build. :/
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The certificate string is broken, and won't allow you to either search or save
certificates. Given that, mark the test on it broken until that is completed.
Reviewed-By: Dan Bode <dan@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This ports the existing certificate location configuration to be a string
option, and then uses that to change the configuration. This will leak state
between calls, which is somewhat unavoidable, but should at least get the
basic stuff right for the CLI.
We eventually need the CA string to be supported by a stateless internal CA
implementation that allows us to do the right thing overall.
Reviewed-By: Dan Bode <dan@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This extends the CLI pre-parse phase to identify both string *and* global
options out of the Puppet settings/defaults system. This makes the regular
CLI support for setting Puppet configuration globals work as expected.
This moves us along the line of supporting these options more fully.
Reviewed-By: Dan Bode <dan@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We do this by implementing a standard mechanism for finding the current
version out of the default file, and only supporting that one file. This
implements our decision to lazy-evaluate the extra version support stuff as
much as possible.
Reviewed-By: Dan Bode <dan@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We had a pattern where we wanted to routinely write scratch strings to disk,
on the load path, so we could reference them later. This extracts that into a
helper, and starts to use it in tests that should follow that pattern.
Reviewed-By: Dan Bode <dan@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We had some incorrect indentation in the file; we fix that up now before we
make any substantive changes.
Paired-With: Dan Bode <dan@puppetlabs.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We were flushing loaded string versions in the test suite, but were not
clearing out the $" array used to determine if we had previously loaded that
file.
This lead to situations where tests cross-polluted because require though the
code was in memory, but the effects of loading that code had all been rolled
back.
Reviewed-By: Dan Bode <dan@puppetlabs.com>
|