puppet 0.24.6 → 0.24.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +115 -0
- data/Rakefile +43 -14
- data/bin/puppetca +6 -5
- data/bin/puppetdoc +109 -15
- data/bin/ralsh +3 -1
- data/conf/redhat/puppet.spec +74 -48
- data/examples/mcx_dock_absent.pp +4 -0
- data/examples/mcx_dock_default.pp +118 -0
- data/examples/mcx_dock_full.pp +125 -0
- data/examples/mcx_dock_invalid.pp +9 -0
- data/examples/mcx_nogroup.pp +118 -0
- data/examples/mcx_notexists_absent.pp +4 -0
- data/ext/emacs/puppet-mode.el +1 -1
- data/lib/puppet.rb +1 -1
- data/lib/puppet/external/nagios/base.rb +114 -71
- data/lib/puppet/feature/base.rb +6 -0
- data/lib/puppet/indirector/yaml.rb +12 -3
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/network/client/master.rb +1 -1
- data/lib/puppet/network/xmlrpc/client.rb +3 -1
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +15 -0
- data/lib/puppet/parser/ast/astarray.rb +1 -2
- data/lib/puppet/parser/ast/casestatement.rb +2 -0
- data/lib/puppet/parser/ast/collection.rb +2 -0
- data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
- data/lib/puppet/parser/ast/definition.rb +2 -0
- data/lib/puppet/parser/ast/else.rb +3 -0
- data/lib/puppet/parser/ast/function.rb +19 -12
- data/lib/puppet/parser/ast/hostclass.rb +9 -1
- data/lib/puppet/parser/ast/ifstatement.rb +3 -0
- data/lib/puppet/parser/ast/node.rb +3 -0
- data/lib/puppet/parser/ast/resource.rb +3 -0
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
- data/lib/puppet/parser/ast/resource_override.rb +3 -0
- data/lib/puppet/parser/ast/vardef.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -0
- data/lib/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/puppet/parser/functions/template.rb +3 -2
- data/lib/puppet/parser/lexer.rb +56 -7
- data/lib/puppet/parser/parser.rb +114 -98
- data/lib/puppet/parser/parser_support.rb +24 -4
- data/lib/puppet/parser/resource/reference.rb +4 -3
- data/lib/puppet/parser/templatewrapper.rb +30 -22
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/list.rb +7 -2
- data/lib/puppet/property/ordered_list.rb +22 -0
- data/lib/puppet/provider/augeas/augeas.rb +189 -0
- data/lib/puppet/provider/computer/computer.rb +22 -0
- data/lib/puppet/provider/confine.rb +4 -1
- data/lib/puppet/provider/confine/variable.rb +13 -2
- data/lib/puppet/provider/confine_collection.rb +4 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +6 -3
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/group/ldap.rb +11 -9
- data/lib/puppet/provider/group/netinfo.rb +8 -4
- data/lib/puppet/provider/group/pw.rb +5 -1
- data/lib/puppet/provider/host/netinfo.rb +5 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
- data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -3
- data/lib/puppet/provider/package/apt.rb +6 -0
- data/lib/puppet/provider/package/rpm.rb +2 -0
- data/lib/puppet/provider/package/yum.rb +5 -1
- data/lib/puppet/provider/package/yumhelper.py +9 -0
- data/lib/puppet/provider/service/base.rb +9 -6
- data/lib/puppet/provider/service/daemontools.rb +25 -15
- data/lib/puppet/provider/service/debian.rb +6 -2
- data/lib/puppet/provider/service/freebsd.rb +5 -2
- data/lib/puppet/provider/service/gentoo.rb +6 -3
- data/lib/puppet/provider/service/init.rb +31 -21
- data/lib/puppet/provider/service/launchd.rb +195 -0
- data/lib/puppet/provider/service/redhat.rb +5 -2
- data/lib/puppet/provider/service/runit.rb +30 -20
- data/lib/puppet/provider/service/smf.rb +7 -4
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/netinfo.rb +9 -3
- data/lib/puppet/provider/user/user_role_add.rb +43 -6
- data/lib/puppet/provider/zfs/solaris.rb +45 -0
- data/lib/puppet/provider/zone/solaris.rb +8 -4
- data/lib/puppet/provider/zpool/solaris.rb +116 -0
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/puppet/rails/database/schema.rb +1 -0
- data/lib/puppet/rails/host.rb +4 -0
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +15 -6
- data/lib/puppet/transaction/change.rb +3 -5
- data/lib/puppet/transportable.rb +1 -0
- data/lib/puppet/type/augeas.rb +155 -0
- data/lib/puppet/type/computer.rb +62 -0
- data/lib/puppet/type/exec.rb +2 -1
- data/lib/puppet/type/file.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +8 -5
- data/lib/puppet/type/file/mode.rb +0 -14
- data/lib/puppet/type/file/owner.rb +32 -64
- data/lib/puppet/type/file/selcontext.rb +3 -8
- data/lib/puppet/type/group.rb +27 -45
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +141 -0
- data/lib/puppet/type/mcx.rb +115 -0
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/puppet/type/ssh_authorized_key.rb +16 -0
- data/lib/puppet/type/tidy.rb +43 -14
- data/lib/puppet/type/user.rb +25 -1
- data/lib/puppet/type/zfs.rb +51 -0
- data/lib/puppet/type/zone.rb +8 -0
- data/lib/puppet/type/zpool.rb +93 -0
- data/lib/puppet/util.rb +17 -38
- data/lib/puppet/util/file_locking.rb +44 -0
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/log.rb +1 -16
- data/lib/puppet/util/metric.rb +0 -5
- data/lib/puppet/util/rdoc.rb +85 -0
- data/lib/puppet/util/rdoc/code_objects.rb +219 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
- data/lib/puppet/util/rdoc/parser.rb +437 -0
- data/lib/puppet/util/selinux.rb +135 -63
- data/lib/puppet/util/settings.rb +136 -126
- data/lib/puppet/util/storage.rb +4 -2
- data/spec/Rakefile +91 -0
- data/spec/integration/checksum.rb +47 -0
- data/spec/integration/defaults.rb +47 -0
- data/spec/integration/file_serving/configuration.rb +43 -0
- data/spec/integration/file_serving/content.rb +18 -0
- data/spec/integration/file_serving/metadata.rb +18 -0
- data/spec/integration/indirector/direct_file_server.rb +80 -0
- data/spec/integration/indirector/file_content/file_server.rb +18 -0
- data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
- data/spec/integration/indirector/module_files.rb +57 -0
- data/spec/integration/indirector/node/ldap.rb +15 -0
- data/spec/integration/indirector/rest.rb +464 -0
- data/spec/integration/network/server/mongrel.rb +48 -0
- data/spec/integration/network/server/webrick.rb +48 -0
- data/spec/integration/node.rb +93 -0
- data/spec/integration/node/catalog.rb +54 -0
- data/spec/integration/node/facts.rb +45 -0
- data/spec/integration/provider/package.rb +26 -0
- data/spec/integration/provider/service/init.rb +32 -0
- data/spec/integration/reference/providers.rb +17 -0
- data/spec/integration/reports.rb +14 -0
- data/spec/integration/transaction/report.rb +26 -0
- data/spec/integration/type/package.rb +22 -0
- data/spec/integration/util/file_locking.rb +36 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
- data/spec/monkey_patches/alias_should_to_must.rb +5 -0
- data/spec/shared_behaviours/file_server_terminus.rb +42 -0
- data/spec/shared_behaviours/file_serving.rb +64 -0
- data/spec/shared_behaviours/memory_terminus.rb +32 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/unit/executables/client/certhandler.rb +122 -0
- data/spec/unit/file_serving/configuration.rb +224 -0
- data/spec/unit/file_serving/configuration/parser.rb +135 -0
- data/spec/unit/file_serving/content.rb +71 -0
- data/spec/unit/file_serving/file_base.rb +124 -0
- data/spec/unit/file_serving/fileset.rb +239 -0
- data/spec/unit/file_serving/indirection_hooks.rb +124 -0
- data/spec/unit/file_serving/metadata.rb +187 -0
- data/spec/unit/file_serving/mount.rb +143 -0
- data/spec/unit/file_serving/terminus_helper.rb +76 -0
- data/spec/unit/indirector.rb +152 -0
- data/spec/unit/indirector/catalog/compiler.rb +156 -0
- data/spec/unit/indirector/catalog/yaml.rb +25 -0
- data/spec/unit/indirector/checksum/file.rb +139 -0
- data/spec/unit/indirector/code.rb +33 -0
- data/spec/unit/indirector/direct_file_server.rb +89 -0
- data/spec/unit/indirector/envelope.rb +47 -0
- data/spec/unit/indirector/exec.rb +51 -0
- data/spec/unit/indirector/facts/facter.rb +76 -0
- data/spec/unit/indirector/facts/yaml.rb +26 -0
- data/spec/unit/indirector/file.rb +154 -0
- data/spec/unit/indirector/file_content/file.rb +18 -0
- data/spec/unit/indirector/file_content/file_server.rb +18 -0
- data/spec/unit/indirector/file_content/modules.rb +18 -0
- data/spec/unit/indirector/file_content/rest.rb +11 -0
- data/spec/unit/indirector/file_metadata/file.rb +52 -0
- data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
- data/spec/unit/indirector/file_metadata/modules.rb +42 -0
- data/spec/unit/indirector/file_metadata/rest.rb +9 -0
- data/spec/unit/indirector/file_server.rb +184 -0
- data/spec/unit/indirector/indirection.rb +731 -0
- data/spec/unit/indirector/ldap.rb +143 -0
- data/spec/unit/indirector/memory.rb +29 -0
- data/spec/unit/indirector/module_files.rb +259 -0
- data/spec/unit/indirector/node/exec.rb +69 -0
- data/spec/unit/indirector/node/ldap.rb +424 -0
- data/spec/unit/indirector/node/memory.rb +19 -0
- data/spec/unit/indirector/node/plain.rb +19 -0
- data/spec/unit/indirector/node/rest.rb +13 -0
- data/spec/unit/indirector/node/yaml.rb +25 -0
- data/spec/unit/indirector/plain.rb +29 -0
- data/spec/unit/indirector/report/processor.rb +81 -0
- data/spec/unit/indirector/request.rb +87 -0
- data/spec/unit/indirector/rest.rb +372 -0
- data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
- data/spec/unit/indirector/terminus.rb +245 -0
- data/spec/unit/indirector/yaml.rb +145 -0
- data/spec/unit/module.rb +247 -0
- data/spec/unit/network/client.rb +45 -0
- data/spec/unit/network/client/master.rb +442 -0
- data/spec/unit/network/handler/fileserver.rb +179 -0
- data/spec/unit/network/http.rb +35 -0
- data/spec/unit/network/http/mongrel.rb +117 -0
- data/spec/unit/network/http/mongrel/rest.rb +377 -0
- data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
- data/spec/unit/network/http/webrick.rb +127 -0
- data/spec/unit/network/http/webrick/rest.rb +323 -0
- data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
- data/spec/unit/network/http_pool.rb +238 -0
- data/spec/unit/network/server.rb +316 -0
- data/spec/unit/network/xmlrpc/client.rb +13 -0
- data/spec/unit/node.rb +167 -0
- data/spec/unit/node/catalog.rb +864 -0
- data/spec/unit/node/environment.rb +37 -0
- data/spec/unit/node/facts.rb +44 -0
- data/spec/unit/other/checksum.rb +92 -0
- data/spec/unit/other/pgraph.rb +210 -0
- data/spec/unit/other/transaction.rb +33 -0
- data/spec/unit/other/transbucket.rb +172 -0
- data/spec/unit/other/transobject.rb +92 -0
- data/spec/unit/parameter.rb +24 -0
- data/spec/unit/parser/ast.rb +37 -0
- data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
- data/spec/unit/parser/ast/astarray.rb +66 -0
- data/spec/unit/parser/ast/boolean_operator.rb +53 -0
- data/spec/unit/parser/ast/collexpr.rb +92 -0
- data/spec/unit/parser/ast/comparison_operator.rb +92 -0
- data/spec/unit/parser/ast/definition.rb +195 -0
- data/spec/unit/parser/ast/function.rb +77 -0
- data/spec/unit/parser/ast/hostclass.rb +148 -0
- data/spec/unit/parser/ast/minus.rb +36 -0
- data/spec/unit/parser/ast/node.rb +125 -0
- data/spec/unit/parser/ast/nop.rb +20 -0
- data/spec/unit/parser/ast/not.rb +30 -0
- data/spec/unit/parser/ast/resource_override.rb +51 -0
- data/spec/unit/parser/ast/resource_reference.rb +63 -0
- data/spec/unit/parser/ast/vardef.rb +47 -0
- data/spec/unit/parser/collector.rb +426 -0
- data/spec/unit/parser/compiler.rb +561 -0
- data/spec/unit/parser/functions.rb +83 -0
- data/spec/unit/parser/functions/inline_template.rb +59 -0
- data/spec/unit/parser/functions/template.rb +62 -0
- data/spec/unit/parser/interpreter.rb +138 -0
- data/spec/unit/parser/lexer.rb +646 -0
- data/spec/unit/parser/parser.rb +228 -0
- data/spec/unit/parser/resource.rb +336 -0
- data/spec/unit/parser/resource/reference.rb +95 -0
- data/spec/unit/parser/scope.rb +87 -0
- data/spec/unit/parser/templatewrapper.rb +129 -0
- data/spec/unit/property.rb +35 -0
- data/spec/unit/property/keyvalue.rb +168 -0
- data/spec/unit/property/list.rb +156 -0
- data/spec/unit/property/ordered_list.rb +64 -0
- data/spec/unit/provider/augeas/augeas.rb +238 -0
- data/spec/unit/provider/confine.rb +78 -0
- data/spec/unit/provider/confine/exists.rb +81 -0
- data/spec/unit/provider/confine/false.rb +53 -0
- data/spec/unit/provider/confine/feature.rb +60 -0
- data/spec/unit/provider/confine/true.rb +53 -0
- data/spec/unit/provider/confine/variable.rb +107 -0
- data/spec/unit/provider/confine_collection.rb +134 -0
- data/spec/unit/provider/confiner.rb +63 -0
- data/spec/unit/provider/group/groupadd.rb +31 -0
- data/spec/unit/provider/group/ldap.rb +105 -0
- data/spec/unit/provider/ldap.rb +248 -0
- data/spec/unit/provider/macauthorization.rb +147 -0
- data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
- data/spec/unit/provider/mount.rb +130 -0
- data/spec/unit/provider/mount/parsed.rb +185 -0
- data/spec/unit/provider/package/apt.rb +138 -0
- data/spec/unit/provider/package/dpkg.rb +163 -0
- data/spec/unit/provider/package/gem.rb +87 -0
- data/spec/unit/provider/package/hpux.rb +52 -0
- data/spec/unit/provider/selboolean.rb +37 -0
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule.rb +66 -0
- data/spec/unit/provider/service/daemontools.rb +124 -0
- data/spec/unit/provider/service/launchd.rb +134 -0
- data/spec/unit/provider/service/runit.rb +117 -0
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
- data/spec/unit/provider/user/hpux.rb +25 -0
- data/spec/unit/provider/user/ldap.rb +279 -0
- data/spec/unit/provider/user/user_role_add.rb +249 -0
- data/spec/unit/provider/user/useradd.rb +115 -0
- data/spec/unit/provider/zfs/solaris.rb +87 -0
- data/spec/unit/provider/zone/solaris.rb +42 -0
- data/spec/unit/provider/zpool/solaris.rb +179 -0
- data/spec/unit/rails.rb +125 -0
- data/spec/unit/relationship.rb +149 -0
- data/spec/unit/reports.rb +61 -0
- data/spec/unit/resource_reference.rb +73 -0
- data/spec/unit/simple_graph.rb +280 -0
- data/spec/unit/transaction/change.rb +187 -0
- data/spec/unit/transaction/event.rb +25 -0
- data/spec/unit/transaction/report.rb +40 -0
- data/spec/unit/type.rb +64 -0
- data/spec/unit/type/augeas.rb +113 -0
- data/spec/unit/type/computer.rb +82 -0
- data/spec/unit/type/exec.rb +91 -0
- data/spec/unit/type/file.rb +155 -0
- data/spec/unit/type/file/ensure.rb +21 -0
- data/spec/unit/type/file/group.rb +118 -0
- data/spec/unit/type/file/owner.rb +132 -0
- data/spec/unit/type/file/selinux.rb +82 -0
- data/spec/unit/type/group.rb +40 -0
- data/spec/unit/type/macauthorization.rb +78 -0
- data/spec/unit/type/mcx.rb +108 -0
- data/spec/unit/type/mount.rb +219 -0
- data/spec/unit/type/nagios.rb +63 -0
- data/spec/unit/type/noop_metaparam.rb +38 -0
- data/spec/unit/type/package.rb +246 -0
- data/spec/unit/type/resources.rb +27 -0
- data/spec/unit/type/schedule.rb +339 -0
- data/spec/unit/type/selboolean.rb +47 -0
- data/spec/unit/type/selmodule.rb +18 -0
- data/spec/unit/type/service.rb +254 -0
- data/spec/unit/type/ssh_authorized_key.rb +106 -0
- data/spec/unit/type/tidy.rb +68 -0
- data/spec/unit/type/user.rb +260 -0
- data/spec/unit/type/zfs.rb +45 -0
- data/spec/unit/type/zone.rb +20 -0
- data/spec/unit/type/zpool.rb +110 -0
- data/spec/unit/util/checksums.rb +99 -0
- data/spec/unit/util/constant_inflector.rb +70 -0
- data/spec/unit/util/file_locking.rb +115 -0
- data/spec/unit/util/ldap/connection.rb +169 -0
- data/spec/unit/util/ldap/generator.rb +54 -0
- data/spec/unit/util/ldap/manager.rb +654 -0
- data/spec/unit/util/loadedfile.rb +65 -0
- data/spec/unit/util/log.rb +107 -0
- data/spec/unit/util/metric.rb +95 -0
- data/spec/unit/util/nagios_maker.rb +128 -0
- data/spec/unit/util/posix.rb +256 -0
- data/spec/unit/util/resource_template.rb +58 -0
- data/spec/unit/util/selinux.rb +219 -0
- data/spec/unit/util/settings.rb +847 -0
- data/spec/unit/util/storage.rb +248 -0
- data/spec/unit/util/tagging.rb +92 -0
- data/spec/unit/util/uri_helper.rb +41 -0
- data/spec/unit/util/user_attr.rb +47 -0
- data/spec/unit/util/warnings.rb +35 -0
- data/test/certmgr/support.rb +0 -6
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
- data/test/data/snippets/multilinecomments.pp +6 -0
- data/test/data/snippets/multipleclass.pp +9 -0
- data/test/language/functions.rb +11 -1
- data/test/language/snippets.rb +16 -0
- data/test/lib/puppettest/runnable_test.rb +1 -1
- data/test/network/handler/fileserver.rb +5 -0
- data/test/other/report.rb +0 -4
- data/test/ral/type/resources.rb +2 -19
- data/test/util/settings.rb +4 -4
- data/test/util/storage.rb +0 -24
- data/test/util/utiltest.rb +0 -33
- metadata +319 -26
- data/conf/debian/README.source +0 -2
- data/conf/debian/TODO.Debian +0 -1
- data/conf/debian/changelog +0 -257
- data/conf/debian/compat +0 -1
- data/conf/debian/control +0 -45
- data/conf/debian/copyright +0 -17
- data/conf/debian/docs +0 -1
- data/conf/debian/fileserver.conf +0 -12
- data/conf/debian/puppet.NEWS +0 -63
- data/conf/debian/puppet.conf +0 -8
- data/conf/debian/puppet.dirs +0 -7
- data/conf/debian/puppet.files +0 -6
- data/conf/debian/puppet.init +0 -64
- data/conf/debian/puppet.logrotate +0 -11
- data/conf/debian/puppet.postinst +0 -9
- data/conf/debian/puppet.postrm +0 -21
- data/conf/debian/puppet.preinst +0 -25
- data/conf/debian/puppetmaster.files +0 -4
- data/conf/debian/puppetmaster.init +0 -58
- data/conf/debian/rules +0 -115
- data/conf/debian/watch +0 -2
- data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/indirector/node/ldap'
|
6
|
+
|
7
|
+
describe Puppet::Node::Ldap do
|
8
|
+
it "should use a restrictive filter when searching for nodes in a class" do
|
9
|
+
ldap = Puppet::Node.indirection.terminus(:ldap)
|
10
|
+
Puppet::Node.indirection.stubs(:terminus).returns ldap
|
11
|
+
ldap.expects(:ldapsearch).with("(&(objectclass=puppetClient)(puppetclass=foo))")
|
12
|
+
|
13
|
+
Puppet::Node.search "eh", :class => "foo"
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,464 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
require 'puppet/network/server'
|
5
|
+
require 'puppet/indirector'
|
6
|
+
require 'puppet/indirector/rest'
|
7
|
+
|
8
|
+
# a fake class that will be indirected via REST
|
9
|
+
class Puppet::TestIndirectedFoo
|
10
|
+
extend Puppet::Indirector
|
11
|
+
indirects :test_indirected_foo, :terminus_setting => :test_indirected_foo_terminus
|
12
|
+
|
13
|
+
attr_reader :value
|
14
|
+
|
15
|
+
def initialize(value = 0)
|
16
|
+
@value = value
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.from_yaml(yaml)
|
20
|
+
YAML.load(yaml)
|
21
|
+
end
|
22
|
+
|
23
|
+
def name
|
24
|
+
"bob"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# empty Terminus class -- this would normally have to be in a directory findable by the autoloader, but we short-circuit that below
|
29
|
+
class Puppet::TestIndirectedFoo::Rest < Puppet::Indirector::REST
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
describe Puppet::Indirector::REST do
|
34
|
+
describe "when using webrick" do
|
35
|
+
before :each do
|
36
|
+
Puppet[:servertype] = 'webrick'
|
37
|
+
@params = { :address => "127.0.0.1", :port => 34343, :handlers => [ :test_indirected_foo ] }
|
38
|
+
@server = Puppet::Network::Server.new(@params)
|
39
|
+
@server.listen
|
40
|
+
|
41
|
+
# the autoloader was clearly not written test-first. We subvert the integration test to get around its bullshit.
|
42
|
+
Puppet::Indirector::Terminus.stubs(:terminus_class).returns(Puppet::TestIndirectedFoo::Rest)
|
43
|
+
Puppet::TestIndirectedFoo.indirection.stubs(:terminus_class).returns :rest
|
44
|
+
|
45
|
+
# Stub the connection information.
|
46
|
+
Puppet::TestIndirectedFoo.indirection.terminus(:rest).stubs(:rest_connection_details).returns(:host => "localhost", :port => 34343)
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "when finding a model instance over REST" do
|
50
|
+
describe "when a matching model instance can be found" do
|
51
|
+
before :each do
|
52
|
+
@model_instance = Puppet::TestIndirectedFoo.new(23)
|
53
|
+
@mock_model = stub('faked model', :find => @model_instance)
|
54
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should not fail" do
|
58
|
+
lambda { Puppet::TestIndirectedFoo.find('bar') }.should_not raise_error
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should return an instance of the model class' do
|
62
|
+
Puppet::TestIndirectedFoo.find('bar').class.should == Puppet::TestIndirectedFoo
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should return the instance of the model class associated with the provided lookup key' do
|
66
|
+
Puppet::TestIndirectedFoo.find('bar').value.should == @model_instance.value
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'should set an expiration on model instance' do
|
70
|
+
Puppet::TestIndirectedFoo.find('bar').expiration.should_not be_nil
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "when no matching model instance can be found" do
|
75
|
+
before :each do
|
76
|
+
@mock_model = stub('faked model', :find => nil)
|
77
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should return nil" do
|
81
|
+
Puppet::TestIndirectedFoo.find('bar').should be_nil
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "when an exception is encountered in looking up a model instance" do
|
86
|
+
before :each do
|
87
|
+
@mock_model = stub('faked model')
|
88
|
+
@mock_model.stubs(:find).raises(RuntimeError)
|
89
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should raise an exception" do
|
93
|
+
lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(RuntimeError)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "when searching for model instances over REST" do
|
99
|
+
describe "when matching model instances can be found" do
|
100
|
+
before :each do
|
101
|
+
@model_instances = [ Puppet::TestIndirectedFoo.new(23), Puppet::TestIndirectedFoo.new(24) ]
|
102
|
+
@mock_model = stub('faked model', :search => @model_instances)
|
103
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should not fail" do
|
107
|
+
lambda { Puppet::TestIndirectedFoo.search('bar') }.should_not raise_error
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should return all matching results' do
|
111
|
+
Puppet::TestIndirectedFoo.search('bar').length.should == @model_instances.length
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'should return model instances' do
|
115
|
+
Puppet::TestIndirectedFoo.search('bar').each do |result|
|
116
|
+
result.class.should == Puppet::TestIndirectedFoo
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should return the instance of the model class associated with the provided lookup key' do
|
121
|
+
Puppet::TestIndirectedFoo.search('bar').collect { |i| i.value }.should == @model_instances.collect { |i| i.value }
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'should set a version timestamp on model instances' do
|
125
|
+
pending("Luke looking at why this version magic might not be working") do
|
126
|
+
Puppet::TestIndirectedFoo.search('bar').each do |result|
|
127
|
+
result.version.should_not be_nil
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe "when no matching model instance can be found" do
|
134
|
+
before :each do
|
135
|
+
@mock_model = stub('faked model', :find => nil)
|
136
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should return nil" do
|
140
|
+
Puppet::TestIndirectedFoo.find('bar').should be_nil
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "when an exception is encountered in looking up a model instance" do
|
145
|
+
before :each do
|
146
|
+
@mock_model = stub('faked model')
|
147
|
+
@mock_model.stubs(:find).raises(RuntimeError)
|
148
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should raise an exception" do
|
152
|
+
lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(RuntimeError)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
describe "when destroying a model instance over REST" do
|
158
|
+
describe "when a matching model instance can be found" do
|
159
|
+
before :each do
|
160
|
+
@mock_model = stub('faked model', :destroy => true)
|
161
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should not fail" do
|
165
|
+
lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should_not raise_error
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'should return success' do
|
169
|
+
Puppet::TestIndirectedFoo.destroy('bar').should == true
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe "when no matching model instance can be found" do
|
174
|
+
before :each do
|
175
|
+
@mock_model = stub('faked model', :destroy => false)
|
176
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should return failure" do
|
180
|
+
Puppet::TestIndirectedFoo.destroy('bar').should == false
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
describe "when an exception is encountered in destroying a model instance" do
|
185
|
+
before :each do
|
186
|
+
@mock_model = stub('faked model')
|
187
|
+
@mock_model.stubs(:destroy).raises(RuntimeError)
|
188
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should raise an exception" do
|
192
|
+
lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should raise_error(RuntimeError)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
describe "when saving a model instance over REST" do
|
198
|
+
before :each do
|
199
|
+
@instance = Puppet::TestIndirectedFoo.new(42)
|
200
|
+
@mock_model = stub('faked model', :from_yaml => @instance)
|
201
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
|
202
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:save_object).returns(@instance)
|
203
|
+
end
|
204
|
+
|
205
|
+
describe "when a successful save can be performed" do
|
206
|
+
before :each do
|
207
|
+
end
|
208
|
+
|
209
|
+
it "should not fail" do
|
210
|
+
lambda { @instance.save }.should_not raise_error
|
211
|
+
end
|
212
|
+
|
213
|
+
it 'should return an instance of the model class' do
|
214
|
+
@instance.save.class.should == Puppet::TestIndirectedFoo
|
215
|
+
end
|
216
|
+
|
217
|
+
it 'should return a matching instance of the model class' do
|
218
|
+
@instance.save.value.should == @instance.value
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
describe "when a save cannot be completed" do
|
223
|
+
before :each do
|
224
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:save_object).returns(false)
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should return failure" do
|
228
|
+
@instance.save.should == false
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
describe "when an exception is encountered in performing a save" do
|
233
|
+
before :each do
|
234
|
+
Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:save_object).raises(RuntimeError)
|
235
|
+
end
|
236
|
+
|
237
|
+
it "should raise an exception" do
|
238
|
+
lambda { @instance.save }.should raise_error(RuntimeError)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
after :each do
|
244
|
+
@server.unlisten
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
describe "when using mongrel" do
|
249
|
+
confine "Mongrel is not available" => Puppet.features.mongrel?
|
250
|
+
|
251
|
+
before :each do
|
252
|
+
Puppet[:servertype] = 'mongrel'
|
253
|
+
@params = { :address => "127.0.0.1", :port => 34343, :handlers => [ :test_indirected_foo ] }
|
254
|
+
@server = Puppet::Network::Server.new(@params)
|
255
|
+
@server.listen
|
256
|
+
|
257
|
+
# the autoloader was clearly not written test-first. We subvert the integration test to get around its bullshit.
|
258
|
+
Puppet::Indirector::Terminus.stubs(:terminus_class).returns(Puppet::TestIndirectedFoo::Rest)
|
259
|
+
Puppet::TestIndirectedFoo.indirection.stubs(:terminus_class).returns :rest
|
260
|
+
|
261
|
+
# Stub the connection information.
|
262
|
+
Puppet::TestIndirectedFoo.indirection.terminus(:rest).stubs(:rest_connection_details).returns(:host => "localhost", :port => 34343)
|
263
|
+
end
|
264
|
+
|
265
|
+
describe "when finding a model instance over REST" do
|
266
|
+
describe "when a matching model instance can be found" do
|
267
|
+
before :each do
|
268
|
+
@model_instance = Puppet::TestIndirectedFoo.new(23)
|
269
|
+
@mock_model = stub('faked model', :find => @model_instance)
|
270
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
271
|
+
end
|
272
|
+
|
273
|
+
it "should not fail" do
|
274
|
+
lambda { Puppet::TestIndirectedFoo.find('bar') }.should_not raise_error
|
275
|
+
end
|
276
|
+
|
277
|
+
it 'should return an instance of the model class' do
|
278
|
+
Puppet::TestIndirectedFoo.find('bar').class.should == Puppet::TestIndirectedFoo
|
279
|
+
end
|
280
|
+
|
281
|
+
it 'should return the instance of the model class associated with the provided lookup key' do
|
282
|
+
Puppet::TestIndirectedFoo.find('bar').value.should == @model_instance.value
|
283
|
+
end
|
284
|
+
|
285
|
+
it 'should set an expiration on model instance' do
|
286
|
+
Puppet::TestIndirectedFoo.find('bar').expiration.should_not be_nil
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
describe "when no matching model instance can be found" do
|
291
|
+
before :each do
|
292
|
+
@mock_model = stub('faked model', :find => nil)
|
293
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
294
|
+
end
|
295
|
+
|
296
|
+
it "should return nil" do
|
297
|
+
Puppet::TestIndirectedFoo.find('bar').should be_nil
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
describe "when an exception is encountered in looking up a model instance" do
|
302
|
+
before :each do
|
303
|
+
@mock_model = stub('faked model')
|
304
|
+
@mock_model.stubs(:find).raises(RuntimeError)
|
305
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
306
|
+
end
|
307
|
+
|
308
|
+
it "should raise an exception" do
|
309
|
+
lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(RuntimeError)
|
310
|
+
end
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
314
|
+
describe "when searching for model instances over REST" do
|
315
|
+
describe "when matching model instances can be found" do
|
316
|
+
before :each do
|
317
|
+
@model_instances = [ Puppet::TestIndirectedFoo.new(23), Puppet::TestIndirectedFoo.new(24) ]
|
318
|
+
@mock_model = stub('faked model', :search => @model_instances)
|
319
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
320
|
+
end
|
321
|
+
|
322
|
+
it "should not fail" do
|
323
|
+
lambda { Puppet::TestIndirectedFoo.search('bar') }.should_not raise_error
|
324
|
+
end
|
325
|
+
|
326
|
+
it 'should return all matching results' do
|
327
|
+
Puppet::TestIndirectedFoo.search('bar').length.should == @model_instances.length
|
328
|
+
end
|
329
|
+
|
330
|
+
it 'should return model instances' do
|
331
|
+
Puppet::TestIndirectedFoo.search('bar').each do |result|
|
332
|
+
result.class.should == Puppet::TestIndirectedFoo
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
it 'should return the instance of the model class associated with the provided lookup key' do
|
337
|
+
Puppet::TestIndirectedFoo.search('bar').collect { |i| i.value }.should == @model_instances.collect { |i| i.value }
|
338
|
+
end
|
339
|
+
|
340
|
+
it 'should set an expiration on model instances' do
|
341
|
+
Puppet::TestIndirectedFoo.search('bar').each do |result|
|
342
|
+
result.expiration.should_not be_nil
|
343
|
+
end
|
344
|
+
end
|
345
|
+
end
|
346
|
+
|
347
|
+
describe "when no matching model instance can be found" do
|
348
|
+
before :each do
|
349
|
+
@mock_model = stub('faked model', :find => nil)
|
350
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
351
|
+
end
|
352
|
+
|
353
|
+
it "should return nil" do
|
354
|
+
Puppet::TestIndirectedFoo.find('bar').should be_nil
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
describe "when an exception is encountered in looking up a model instance" do
|
359
|
+
before :each do
|
360
|
+
@mock_model = stub('faked model')
|
361
|
+
@mock_model.stubs(:find).raises(RuntimeError)
|
362
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
363
|
+
end
|
364
|
+
|
365
|
+
it "should raise an exception" do
|
366
|
+
lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(RuntimeError)
|
367
|
+
end
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
371
|
+
describe "when destroying a model instance over REST" do
|
372
|
+
describe "when a matching model instance can be found" do
|
373
|
+
before :each do
|
374
|
+
@mock_model = stub('faked model', :destroy => true)
|
375
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
376
|
+
end
|
377
|
+
|
378
|
+
it "should not fail" do
|
379
|
+
lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should_not raise_error
|
380
|
+
end
|
381
|
+
|
382
|
+
it 'should return success' do
|
383
|
+
Puppet::TestIndirectedFoo.destroy('bar').should == true
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
387
|
+
describe "when no matching model instance can be found" do
|
388
|
+
before :each do
|
389
|
+
@mock_model = stub('faked model', :destroy => false)
|
390
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
391
|
+
end
|
392
|
+
|
393
|
+
it "should return failure" do
|
394
|
+
Puppet::TestIndirectedFoo.destroy('bar').should == false
|
395
|
+
end
|
396
|
+
end
|
397
|
+
|
398
|
+
describe "when an exception is encountered in destroying a model instance" do
|
399
|
+
before :each do
|
400
|
+
@mock_model = stub('faked model')
|
401
|
+
@mock_model.stubs(:destroy).raises(RuntimeError)
|
402
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
403
|
+
end
|
404
|
+
|
405
|
+
it "should raise an exception" do
|
406
|
+
lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should raise_error(RuntimeError)
|
407
|
+
end
|
408
|
+
end
|
409
|
+
end
|
410
|
+
|
411
|
+
describe "when saving a model instance over REST" do
|
412
|
+
before :each do
|
413
|
+
@instance = Puppet::TestIndirectedFoo.new(42)
|
414
|
+
@mock_model = stub('faked model', :from_yaml => @instance)
|
415
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
|
416
|
+
|
417
|
+
# LAK:NOTE This stub is necessary to prevent the REST call from calling
|
418
|
+
# REST.save again, thus producing painful infinite recursion.
|
419
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:save_object).returns(@instance)
|
420
|
+
end
|
421
|
+
|
422
|
+
describe "when a successful save can be performed" do
|
423
|
+
before :each do
|
424
|
+
end
|
425
|
+
|
426
|
+
it "should not fail" do
|
427
|
+
lambda { @instance.save }.should_not raise_error
|
428
|
+
end
|
429
|
+
|
430
|
+
it 'should return an instance of the model class' do
|
431
|
+
@instance.save.class.should == Puppet::TestIndirectedFoo
|
432
|
+
end
|
433
|
+
|
434
|
+
it 'should return a matching instance of the model class' do
|
435
|
+
@instance.save.value.should == @instance.value
|
436
|
+
end
|
437
|
+
end
|
438
|
+
|
439
|
+
describe "when a save cannot be completed" do
|
440
|
+
before :each do
|
441
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:save_object).returns(false)
|
442
|
+
end
|
443
|
+
|
444
|
+
it "should return failure" do
|
445
|
+
@instance.save.should == false
|
446
|
+
end
|
447
|
+
end
|
448
|
+
|
449
|
+
describe "when an exception is encountered in performing a save" do
|
450
|
+
before :each do
|
451
|
+
Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:save_object).raises(RuntimeError)
|
452
|
+
end
|
453
|
+
|
454
|
+
it "should raise an exception" do
|
455
|
+
lambda { @instance.save }.should raise_error(RuntimeError)
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
|
460
|
+
after :each do
|
461
|
+
@server.unlisten
|
462
|
+
end
|
463
|
+
end
|
464
|
+
end
|