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,143 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/indirector/ldap'
|
6
|
+
|
7
|
+
describe Puppet::Indirector::Ldap do
|
8
|
+
before do
|
9
|
+
@indirection = stub 'indirection', :name => :testing
|
10
|
+
Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
|
11
|
+
@ldap_class = Class.new(Puppet::Indirector::Ldap) do
|
12
|
+
def self.to_s
|
13
|
+
"Testing::Mytype"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
@connection = mock 'ldap'
|
18
|
+
|
19
|
+
@searcher = @ldap_class.new
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "when searching ldap" do
|
23
|
+
before do
|
24
|
+
# Stub everything, and we can selectively replace with an expect as
|
25
|
+
# we need to for testing.
|
26
|
+
@searcher.stubs(:connection).returns(@connection)
|
27
|
+
@searcher.stubs(:search_filter).returns(:filter)
|
28
|
+
@searcher.stubs(:search_base).returns(:base)
|
29
|
+
@searcher.stubs(:process)
|
30
|
+
|
31
|
+
@request = stub 'request', :key => "yay"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should call the ldapsearch method with the search filter" do
|
35
|
+
@searcher.expects(:search_filter).with("yay").returns("yay's filter")
|
36
|
+
@searcher.expects(:ldapsearch).with("yay's filter")
|
37
|
+
@searcher.find @request
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should fail if no block is passed to the ldapsearch method" do
|
41
|
+
proc { @searcher.ldapsearch("blah") }.should raise_error(ArgumentError)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should use the results of the ldapbase method as the ldap search base" do
|
45
|
+
@searcher.stubs(:search_base).returns("mybase")
|
46
|
+
@connection.expects(:search).with do |*args|
|
47
|
+
args[0].should == "mybase"
|
48
|
+
true
|
49
|
+
end
|
50
|
+
@searcher.find @request
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should default to the value of the :search_base setting as the result of the ldapbase method" do
|
54
|
+
Puppet.expects(:[]).with(:ldapbase).returns("myldapbase")
|
55
|
+
searcher = @ldap_class.new
|
56
|
+
searcher.search_base.should == "myldapbase"
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should use the results of the :search_attributes method as the list of attributes to return" do
|
60
|
+
@searcher.stubs(:search_attributes).returns(:myattrs)
|
61
|
+
@connection.expects(:search).with do |*args|
|
62
|
+
args[3].should == :myattrs
|
63
|
+
true
|
64
|
+
end
|
65
|
+
@searcher.find @request
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should use depth 2 when searching" do
|
69
|
+
@connection.expects(:search).with do |*args|
|
70
|
+
args[1].should == 2
|
71
|
+
true
|
72
|
+
end
|
73
|
+
@searcher.find @request
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should call process() on the first found entry" do
|
77
|
+
@connection.expects(:search).yields("myresult")
|
78
|
+
@searcher.expects(:process).with("myresult")
|
79
|
+
@searcher.find @request
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should reconnect and retry the search if there is a failure" do
|
83
|
+
run = false
|
84
|
+
@connection.stubs(:search).with do |*args|
|
85
|
+
if run
|
86
|
+
true
|
87
|
+
else
|
88
|
+
run = true
|
89
|
+
raise "failed"
|
90
|
+
end
|
91
|
+
end.yields("myresult")
|
92
|
+
@searcher.expects(:process).with("myresult")
|
93
|
+
|
94
|
+
@searcher.find @request
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should not reconnect on failure more than once" do
|
98
|
+
count = 0
|
99
|
+
@connection.stubs(:search).with do |*args|
|
100
|
+
count += 1
|
101
|
+
raise ArgumentError, "yay"
|
102
|
+
end
|
103
|
+
proc { @searcher.find(@request) }.should raise_error(Puppet::Error)
|
104
|
+
count.should == 2
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should return true if an entry is found" do
|
108
|
+
@connection.expects(:search).yields("result")
|
109
|
+
@searcher.ldapsearch("whatever") { |r| }.should be_true
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "when connecting to ldap" do
|
114
|
+
confine "LDAP is not available" => Puppet.features.ldap?
|
115
|
+
|
116
|
+
it "should create and start a Util::Ldap::Connection instance" do
|
117
|
+
conn = mock 'connection', :connection => "myconn", :start => nil
|
118
|
+
Puppet::Util::Ldap::Connection.expects(:instance).returns conn
|
119
|
+
|
120
|
+
@searcher.connection.should == "myconn"
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should only create the ldap connection when asked for it the first time" do
|
124
|
+
conn = mock 'connection', :connection => "myconn", :start => nil
|
125
|
+
Puppet::Util::Ldap::Connection.expects(:instance).returns conn
|
126
|
+
|
127
|
+
@searcher.connection
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should cache the connection" do
|
131
|
+
conn = mock 'connection', :connection => "myconn", :start => nil
|
132
|
+
Puppet::Util::Ldap::Connection.expects(:instance).returns conn
|
133
|
+
|
134
|
+
@searcher.connection.should equal(@searcher.connection)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe "when reconnecting to ldap" do
|
139
|
+
confine "Not running on culain as root" => (Puppet::Util::SUIDManager.uid == 0 and Facter.value("hostname") == "culain")
|
140
|
+
|
141
|
+
it "should reconnect to ldap when connections are lost"
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
require 'puppet/indirector/memory'
|
5
|
+
|
6
|
+
require 'shared_behaviours/memory_terminus'
|
7
|
+
|
8
|
+
describe Puppet::Indirector::Memory do
|
9
|
+
it_should_behave_like "A Memory Terminus"
|
10
|
+
|
11
|
+
before do
|
12
|
+
Puppet::Indirector::Terminus.stubs(:register_terminus_class)
|
13
|
+
@model = mock 'model'
|
14
|
+
@indirection = stub 'indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model
|
15
|
+
Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
|
16
|
+
|
17
|
+
@memory_class = Class.new(Puppet::Indirector::Memory) do
|
18
|
+
def self.to_s
|
19
|
+
"Mystuff::Testing"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
@searcher = @memory_class.new
|
24
|
+
@name = "me"
|
25
|
+
@instance = stub 'instance', :name => @name
|
26
|
+
|
27
|
+
@request = stub 'request', :key => @name, :instance => @instance
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,259 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-19.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/indirector/module_files'
|
9
|
+
|
10
|
+
|
11
|
+
describe Puppet::Indirector::ModuleFiles do
|
12
|
+
|
13
|
+
before :each do
|
14
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
15
|
+
Puppet::Indirector::Terminus.stubs(:register_terminus_class)
|
16
|
+
@model = mock 'model'
|
17
|
+
@indirection = stub 'indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model
|
18
|
+
Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
|
19
|
+
|
20
|
+
@module_files_class = Class.new(Puppet::Indirector::ModuleFiles) do
|
21
|
+
def self.to_s
|
22
|
+
"Testing::Mytype"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
@module_files = @module_files_class.new
|
27
|
+
|
28
|
+
@uri = "puppetmounts://host/modules/my/local/file"
|
29
|
+
@module = Puppet::Module.new("mymod", "/module/path")
|
30
|
+
|
31
|
+
@request = stub 'request', :key => @uri, :options => {}, :node => nil, :ip => nil, :method => :find
|
32
|
+
end
|
33
|
+
|
34
|
+
describe Puppet::Indirector::ModuleFiles, " when finding files" do
|
35
|
+
|
36
|
+
it "should strip off the leading '/modules' mount name" do
|
37
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
38
|
+
@module_files.find(@request)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should not strip off leading terms that start with '/modules' but are longer words" do
|
42
|
+
@request.stubs(:key).returns "puppetmounts://host/modulestart/my/local/file"
|
43
|
+
Puppet::Module.expects(:find).with('modulestart', "myenv").returns nil
|
44
|
+
@module_files.find(@request)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should search for a module whose name is the first term in the remaining file path" do
|
48
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
49
|
+
@module_files.find(@request)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should search for a file relative to the module's files directory" do
|
53
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
54
|
+
FileTest.expects(:exists?).with("/module/path/files/local/file")
|
55
|
+
@module_files.find(@request)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should return nil if the module does not exist" do
|
59
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns nil
|
60
|
+
@module_files.find(@request).should be_nil
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should return nil if the module exists but the file does not" do
|
64
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
65
|
+
FileTest.expects(:exists?).with("/module/path/files/local/file").returns(false)
|
66
|
+
@module_files.find(@request).should be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should return an instance of the model if a module is found and the file exists" do
|
70
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
71
|
+
FileTest.expects(:exists?).with("/module/path/files/local/file").returns(true)
|
72
|
+
@model.expects(:new).returns(:myinstance)
|
73
|
+
@module_files.find(@request).should == :myinstance
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should use the node's environment to look up the module if the node name is provided" do
|
77
|
+
node = stub "node", :environment => "testing"
|
78
|
+
Puppet::Node.expects(:find).with("mynode").returns(node)
|
79
|
+
Puppet::Module.expects(:find).with('my', "testing")
|
80
|
+
|
81
|
+
@request.stubs(:node).returns "mynode"
|
82
|
+
@module_files.find(@request)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should use the default environment setting to look up the module if the node name is not provided" do
|
86
|
+
env = stub "environment", :name => "testing"
|
87
|
+
Puppet::Node::Environment.stubs(:new).returns(env)
|
88
|
+
Puppet::Module.expects(:find).with('my', "testing")
|
89
|
+
@module_files.find(@request)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe Puppet::Indirector::ModuleFiles, " when returning instances" do
|
94
|
+
|
95
|
+
before do
|
96
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
97
|
+
FileTest.expects(:exists?).with("/module/path/files/local/file").returns(true)
|
98
|
+
@instance = mock 'instance'
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should create the instance with the key used to find the instance" do
|
102
|
+
@model.expects(:new).with { |key, *options| key == @uri }
|
103
|
+
@module_files.find(@request)
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should create the instance with the path at which the instance was found" do
|
107
|
+
@model.expects(:new).with { |key, options| options[:path] == "/module/path/files/local/file" }
|
108
|
+
@module_files.find(@request)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should set the provided :links setting on to the instance if one is provided" do
|
112
|
+
@model.expects(:new).returns(@instance)
|
113
|
+
@instance.expects(:links=).with(:mytest)
|
114
|
+
|
115
|
+
@request.options[:links] = :mytest
|
116
|
+
@module_files.find(@request)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should not set a :links value if no :links parameter is provided" do
|
120
|
+
@model.expects(:new).returns(@instance)
|
121
|
+
@module_files.find(@request)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe Puppet::Indirector::ModuleFiles, " when authorizing" do
|
126
|
+
|
127
|
+
before do
|
128
|
+
@configuration = mock 'configuration'
|
129
|
+
Puppet::FileServing::Configuration.stubs(:create).returns(@configuration)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should have an authorization hook" do
|
133
|
+
@module_files.should respond_to(:authorized?)
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should deny the :destroy method" do
|
137
|
+
@request.expects(:method).returns :destroy
|
138
|
+
@module_files.authorized?(@request).should be_false
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should deny the :save method" do
|
142
|
+
@request.expects(:method).returns :save
|
143
|
+
@module_files.authorized?(@request).should be_false
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should use the file server configuration to determine authorization" do
|
147
|
+
@configuration.expects(:authorized?)
|
148
|
+
@module_files.authorized?(@request)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should use the path directly from the URI if it already includes /modules" do
|
152
|
+
@request.expects(:key).returns "puppetmounts://host/modules/my/file"
|
153
|
+
@configuration.expects(:authorized?).with { |uri, *args| uri == "/modules/my/file" }
|
154
|
+
@module_files.authorized?(@request)
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should add /modules to the file path if it's not included in the URI" do
|
158
|
+
@request.expects(:key).returns "puppetmounts://host/my/file"
|
159
|
+
@configuration.expects(:authorized?).with { |uri, *args| uri == "/modules/my/file" }
|
160
|
+
@module_files.authorized?(@request)
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should pass the node name to the file server configuration" do
|
164
|
+
@request.expects(:key).returns "puppetmounts://host/my/file"
|
165
|
+
@configuration.expects(:authorized?).with { |key, options| options[:node] == "mynode" }
|
166
|
+
@request.stubs(:node).returns "mynode"
|
167
|
+
@module_files.authorized?(@request)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should pass the IP address to the file server configuration" do
|
171
|
+
@request.expects(:ip).returns "myip"
|
172
|
+
@configuration.expects(:authorized?).with { |key, options| options[:ipaddress] == "myip" }
|
173
|
+
@module_files.authorized?(@request)
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should return false if the file server configuration denies authorization" do
|
177
|
+
@configuration.expects(:authorized?).returns(false)
|
178
|
+
@module_files.authorized?(@request).should be_false
|
179
|
+
end
|
180
|
+
|
181
|
+
it "should return true if the file server configuration approves authorization" do
|
182
|
+
@configuration.expects(:authorized?).returns(true)
|
183
|
+
@module_files.authorized?(@request).should be_true
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe Puppet::Indirector::ModuleFiles, " when searching for files" do
|
188
|
+
|
189
|
+
it "should strip off the leading '/modules' mount name" do
|
190
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
191
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
192
|
+
@module_files.search(@request)
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should not strip off leading terms that start with '/modules' but are longer words" do
|
196
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
197
|
+
Puppet::Module.expects(:find).with('modulestart', "myenv").returns nil
|
198
|
+
@request.stubs(:key).returns "puppetmounts://host/modulestart/my/local/file"
|
199
|
+
@module_files.search @request
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should search for a module whose name is the first term in the remaining file path" do
|
203
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
204
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
205
|
+
@module_files.search(@request)
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should search for a file relative to the module's files directory" do
|
209
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
210
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
211
|
+
FileTest.expects(:exists?).with("/module/path/files/local/file")
|
212
|
+
@module_files.search(@request)
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should return nil if the module does not exist" do
|
216
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
217
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns nil
|
218
|
+
@module_files.search(@request).should be_nil
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should return nil if the module exists but the file does not" do
|
222
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
223
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
224
|
+
FileTest.expects(:exists?).with("/module/path/files/local/file").returns(false)
|
225
|
+
@module_files.search(@request).should be_nil
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should use the node's environment to look up the module if the node name is provided" do
|
229
|
+
node = stub "node", :environment => "testing"
|
230
|
+
Puppet::Node.expects(:find).with("mynode").returns(node)
|
231
|
+
Puppet::Module.expects(:find).with('my', "testing")
|
232
|
+
@request.stubs(:node).returns "mynode"
|
233
|
+
@module_files.search(@request)
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should use the default environment setting to look up the module if the node name is not provided and the environment is not set to ''" do
|
237
|
+
env = stub 'env', :name => "testing"
|
238
|
+
Puppet::Node::Environment.stubs(:new).returns(env)
|
239
|
+
Puppet::Module.expects(:find).with('my', "testing")
|
240
|
+
@module_files.search(@request)
|
241
|
+
end
|
242
|
+
|
243
|
+
it "should use :path2instances from the terminus_helper to return instances if a module is found and the file exists" do
|
244
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
245
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
246
|
+
FileTest.expects(:exists?).with("/module/path/files/local/file").returns(true)
|
247
|
+
@module_files.expects(:path2instances).with(@request, "/module/path/files/local/file")
|
248
|
+
@module_files.search(@request)
|
249
|
+
end
|
250
|
+
|
251
|
+
it "should pass the request directly to :path2instances" do
|
252
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
253
|
+
Puppet::Module.expects(:find).with('my', "myenv").returns @module
|
254
|
+
FileTest.expects(:exists?).with("/module/path/files/local/file").returns(true)
|
255
|
+
@module_files.expects(:path2instances).with(@request, "/module/path/files/local/file")
|
256
|
+
@module_files.search(@request)
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/indirector/node/exec'
|
6
|
+
|
7
|
+
describe Puppet::Node::Exec do
|
8
|
+
before do
|
9
|
+
@indirection = mock 'indirection'
|
10
|
+
Puppet.settings.stubs(:value).with(:external_nodes).returns("/echo")
|
11
|
+
@searcher = Puppet::Node::Exec.new
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "when constructing the command to run" do
|
15
|
+
it "should use the external_node script as the command" do
|
16
|
+
Puppet.expects(:[]).with(:external_nodes).returns("/bin/echo")
|
17
|
+
@searcher.command.should == %w{/bin/echo}
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should throw an exception if no external node command is set" do
|
21
|
+
Puppet.expects(:[]).with(:external_nodes).returns("none")
|
22
|
+
proc { @searcher.find(stub('request', :key => "foo")) }.should raise_error(ArgumentError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "when handling the results of the command" do
|
27
|
+
before do
|
28
|
+
@node = stub 'node', :fact_merge => nil
|
29
|
+
@name = "yay"
|
30
|
+
Puppet::Node.expects(:new).with(@name).returns(@node)
|
31
|
+
@result = {}
|
32
|
+
# Use a local variable so the reference is usable in the execute() definition.
|
33
|
+
result = @result
|
34
|
+
@searcher.meta_def(:execute) do |command|
|
35
|
+
return YAML.dump(result)
|
36
|
+
end
|
37
|
+
|
38
|
+
@request = stub 'request', :key => @name
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should translate the YAML into a Node instance" do
|
42
|
+
# Use an empty hash
|
43
|
+
@searcher.find(@request).should equal(@node)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should set the resulting parameters as the node parameters" do
|
47
|
+
@result[:parameters] = {"a" => "b", "c" => "d"}
|
48
|
+
@node.expects(:parameters=).with "a" => "b", "c" => "d"
|
49
|
+
@searcher.find(@request)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should set the resulting classes as the node classes" do
|
53
|
+
@result[:classes] = %w{one two}
|
54
|
+
@node.expects(:classes=).with %w{one two}
|
55
|
+
@searcher.find(@request)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should merge the node's facts with its parameters" do
|
59
|
+
@node.expects(:fact_merge)
|
60
|
+
@searcher.find(@request)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should set the node's environment if one is provided" do
|
64
|
+
@result[:environment] = "yay"
|
65
|
+
@node.expects(:environment=).with "yay"
|
66
|
+
@searcher.find(@request)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|