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,33 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
require 'puppet/indirector/code'
|
5
|
+
|
6
|
+
describe Puppet::Indirector::Code do
|
7
|
+
before do
|
8
|
+
Puppet::Indirector::Terminus.stubs(:register_terminus_class)
|
9
|
+
@model = mock 'model'
|
10
|
+
@indirection = stub 'indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model
|
11
|
+
Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
|
12
|
+
|
13
|
+
@code_class = Class.new(Puppet::Indirector::Code) do
|
14
|
+
def self.to_s
|
15
|
+
"Mystuff::Testing"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
@searcher = @code_class.new
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not have a find() method defined" do
|
23
|
+
@searcher.should_not respond_to(:find)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should not have a save() method defined" do
|
27
|
+
@searcher.should_not respond_to(:save)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should not have a destroy() method defined" do
|
31
|
+
@searcher.should_not respond_to(:destroy)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-24.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/indirector/direct_file_server'
|
9
|
+
|
10
|
+
describe Puppet::Indirector::DirectFileServer do
|
11
|
+
before :each 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
|
+
@direct_file_class = Class.new(Puppet::Indirector::DirectFileServer) do
|
18
|
+
def self.to_s
|
19
|
+
"Testing::Mytype"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
@server = @direct_file_class.new
|
24
|
+
|
25
|
+
@uri = "file:///my/local"
|
26
|
+
|
27
|
+
@request = stub 'request', :key => @uri, :options => {}
|
28
|
+
end
|
29
|
+
|
30
|
+
describe Puppet::Indirector::DirectFileServer, "when finding a single file" do
|
31
|
+
|
32
|
+
it "should return nil if the file does not exist" do
|
33
|
+
FileTest.expects(:exists?).with("/my/local").returns false
|
34
|
+
@server.find(@request).should be_nil
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should return a Content instance created with the full path to the file if the file exists" do
|
38
|
+
FileTest.expects(:exists?).with("/my/local").returns true
|
39
|
+
@model.expects(:new).returns(:mycontent)
|
40
|
+
@server.find(@request).should == :mycontent
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe Puppet::Indirector::DirectFileServer, "when creating the instance for a single found file" do
|
45
|
+
|
46
|
+
before do
|
47
|
+
@data = mock 'content'
|
48
|
+
@data.stubs(:collect_attributes)
|
49
|
+
FileTest.expects(:exists?).with("/my/local").returns true
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should create the Content instance with the original key as the key" do
|
53
|
+
@model.expects(:new).with { |key, options| key == @uri }.returns(@data)
|
54
|
+
@server.find(@request)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should pass the full path to the instance" do
|
58
|
+
@model.expects(:new).with { |key, options| options[:path] == "/my/local" }.returns(@data)
|
59
|
+
@server.find(@request)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should pass the :links setting on to the created Content instance if the file exists and there is a value for :links" do
|
63
|
+
@model.expects(:new).returns(@data)
|
64
|
+
@data.expects(:links=).with(:manage)
|
65
|
+
|
66
|
+
@request.stubs(:options).returns(:links => :manage)
|
67
|
+
@server.find(@request)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe Puppet::Indirector::DirectFileServer, "when searching for multiple files" do
|
72
|
+
it "should return nil if the file does not exist" do
|
73
|
+
FileTest.expects(:exists?).with("/my/local").returns false
|
74
|
+
@server.find(@request).should be_nil
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should use :path2instances from the terminus_helper to return instances if the file exists" do
|
78
|
+
FileTest.expects(:exists?).with("/my/local").returns true
|
79
|
+
@server.expects(:path2instances)
|
80
|
+
@server.search(@request)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should pass the original request to :path2instances" do
|
84
|
+
FileTest.expects(:exists?).with("/my/local").returns true
|
85
|
+
@server.expects(:path2instances).with(@request, "/my/local")
|
86
|
+
@server.search(@request)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
require 'puppet/indirector/envelope'
|
5
|
+
|
6
|
+
describe Puppet::Indirector::Envelope do
|
7
|
+
before do
|
8
|
+
@instance = Object.new
|
9
|
+
@instance.extend(Puppet::Indirector::Envelope)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should have an expiration accessor" do
|
13
|
+
@instance.expiration = "testing"
|
14
|
+
@instance.expiration.should == "testing"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have an expiration setter" do
|
18
|
+
@instance.should respond_to(:expiration=)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have a means of testing whether it is expired" do
|
22
|
+
@instance.should respond_to(:expired?)
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "when testing if it is expired" do
|
26
|
+
it "should return false if there is no expiration set" do
|
27
|
+
@instance.should_not be_expired
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return true if the current date is after the expiration date" do
|
31
|
+
@instance.expiration = Time.now - 10
|
32
|
+
@instance.should be_expired
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return false if the current date is prior to the expiration date" do
|
36
|
+
@instance.expiration = Time.now + 10
|
37
|
+
@instance.should_not be_expired
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return false if the current date is equal to the expiration date" do
|
41
|
+
now = Time.now
|
42
|
+
Time.stubs(:now).returns(now)
|
43
|
+
@instance.expiration = now
|
44
|
+
@instance.should_not be_expired
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/indirector/exec'
|
6
|
+
|
7
|
+
describe Puppet::Indirector::Exec do
|
8
|
+
before do
|
9
|
+
@indirection = stub 'indirection', :name => :testing
|
10
|
+
Puppet::Indirector::Indirection.expects(:instance).with(:testing).returns(@indirection)
|
11
|
+
@exec_class = Class.new(Puppet::Indirector::Exec) do
|
12
|
+
def self.to_s
|
13
|
+
"Testing::Mytype"
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_accessor :command
|
17
|
+
end
|
18
|
+
|
19
|
+
@searcher = @exec_class.new
|
20
|
+
@searcher.command = ["/echo"]
|
21
|
+
|
22
|
+
@request = stub 'request', :key => "foo"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should throw an exception if the command is not an array" do
|
26
|
+
@searcher.command = "/usr/bin/echo"
|
27
|
+
proc { @searcher.find(@request) }.should raise_error(Puppet::DevError)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should throw an exception if the command is not fully qualified" do
|
31
|
+
@searcher.command = ["mycommand"]
|
32
|
+
proc { @searcher.find(@request) }.should raise_error(ArgumentError)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should execute the command with the object name as the only argument" do
|
36
|
+
@searcher.expects(:execute).with(%w{/echo foo})
|
37
|
+
@searcher.find(@request)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return the output of the script" do
|
41
|
+
@searcher.expects(:execute).with(%w{/echo foo}).returns("whatever")
|
42
|
+
@searcher.find(@request).should == "whatever"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return nil when the command produces no output" do
|
46
|
+
@searcher.expects(:execute).with(%w{/echo foo}).returns(nil)
|
47
|
+
@searcher.find(@request).should be_nil
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should be able to execute commands with multiple arguments"
|
51
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-9-23.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/indirector/facts/facter'
|
9
|
+
|
10
|
+
describe Puppet::Node::Facts::Facter do
|
11
|
+
it "should be a subclass of the Code terminus" do
|
12
|
+
Puppet::Node::Facts::Facter.superclass.should equal(Puppet::Indirector::Code)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have documentation" do
|
16
|
+
Puppet::Node::Facts::Facter.doc.should_not be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be registered with the configuration store indirection" do
|
20
|
+
indirection = Puppet::Indirector::Indirection.instance(:facts)
|
21
|
+
Puppet::Node::Facts::Facter.indirection.should equal(indirection)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should have its name set to :facter" do
|
25
|
+
Puppet::Node::Facts::Facter.name.should == :facter
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should load facts on initialization" do
|
29
|
+
Puppet::Node::Facts::Facter.expects(:loadfacts)
|
30
|
+
Puppet::Node::Facts::Facter.new
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe Puppet::Node::Facts::Facter do
|
35
|
+
before :each do
|
36
|
+
@facter = Puppet::Node::Facts::Facter.new
|
37
|
+
Facter.stubs(:to_hash).returns({})
|
38
|
+
@name = "me"
|
39
|
+
@request = stub 'request', :key => @name
|
40
|
+
end
|
41
|
+
|
42
|
+
describe Puppet::Node::Facts::Facter, " when finding facts" do
|
43
|
+
|
44
|
+
it "should return a Facts instance" do
|
45
|
+
@facter.find(@request).should be_instance_of(Puppet::Node::Facts)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return a Facts instance with the provided key as the name" do
|
49
|
+
@facter.find(@request).name.should == @name
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should return the Facter facts as the values in the Facts instance" do
|
53
|
+
Facter.expects(:to_hash).returns("one" => "two")
|
54
|
+
facts = @facter.find(@request)
|
55
|
+
facts.values["one"].should == "two"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe Puppet::Node::Facts::Facter, " when saving facts" do
|
60
|
+
|
61
|
+
it "should fail" do
|
62
|
+
proc { @facter.save(@facts) }.should raise_error(Puppet::DevError)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe Puppet::Node::Facts::Facter, " when destroying facts" do
|
67
|
+
|
68
|
+
it "should fail" do
|
69
|
+
proc { @facter.destroy(@facts) }.should raise_error(Puppet::DevError)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe Puppet::Node::Facts::Facter, " when loading facts from the factpath" do
|
74
|
+
it "should load every fact in each factpath directory"
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/node/facts'
|
6
|
+
require 'puppet/indirector/facts/yaml'
|
7
|
+
|
8
|
+
describe Puppet::Node::Facts::Yaml do
|
9
|
+
it "should be a subclass of the Yaml terminus" do
|
10
|
+
Puppet::Node::Facts::Yaml.superclass.should equal(Puppet::Indirector::Yaml)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
it "should have documentation" do
|
15
|
+
Puppet::Node::Facts::Yaml.doc.should_not be_nil
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should be registered with the facts indirection" do
|
19
|
+
indirection = Puppet::Indirector::Indirection.instance(:facts)
|
20
|
+
Puppet::Node::Facts::Yaml.indirection.should equal(indirection)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should have its name set to :facts" do
|
24
|
+
Puppet::Node::Facts::Yaml.name.should == :yaml
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
require 'puppet/indirector/file'
|
5
|
+
|
6
|
+
|
7
|
+
describe Puppet::Indirector::File do
|
8
|
+
before :each do
|
9
|
+
Puppet::Indirector::Terminus.stubs(:register_terminus_class)
|
10
|
+
@model = mock 'model'
|
11
|
+
@indirection = stub 'indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model
|
12
|
+
Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
|
13
|
+
|
14
|
+
@file_class = Class.new(Puppet::Indirector::File) do
|
15
|
+
def self.to_s
|
16
|
+
"Testing::Mytype"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
@searcher = @file_class.new
|
21
|
+
|
22
|
+
@path = "/my/file"
|
23
|
+
@dir = "/my"
|
24
|
+
|
25
|
+
@request = stub 'request', :key => @path
|
26
|
+
end
|
27
|
+
|
28
|
+
describe Puppet::Indirector::File, " when finding files" do
|
29
|
+
|
30
|
+
it "should provide a method to return file contents at a specified path" do
|
31
|
+
@searcher.should respond_to(:find)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should return file contents as an instance of the model" do
|
35
|
+
content = "my content"
|
36
|
+
|
37
|
+
file = mock 'file'
|
38
|
+
@model.expects(:new).with(content).returns(file)
|
39
|
+
|
40
|
+
File.expects(:exist?).with(@path).returns(true)
|
41
|
+
File.expects(:read).with(@path).returns(content)
|
42
|
+
@searcher.find(@request)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should create the model instance with the content as the only argument to initialization" do
|
46
|
+
content = "my content"
|
47
|
+
|
48
|
+
file = mock 'file'
|
49
|
+
@model.expects(:new).with(content).returns(file)
|
50
|
+
|
51
|
+
File.expects(:exist?).with(@path).returns(true)
|
52
|
+
File.expects(:read).with(@path).returns(content)
|
53
|
+
@searcher.find(@request).should equal(file)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should return nil if no file is found" do
|
57
|
+
File.expects(:exist?).with(@path).returns(false)
|
58
|
+
@searcher.find(@request).should be_nil
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should fail intelligently if a found file cannot be read" do
|
62
|
+
File.expects(:exist?).with(@path).returns(true)
|
63
|
+
File.expects(:read).with(@path).raises(RuntimeError)
|
64
|
+
proc { @searcher.find(@request) }.should raise_error(Puppet::Error)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should use the path() method to calculate the path if it exists" do
|
68
|
+
@searcher.meta_def(:path) do |name|
|
69
|
+
name.upcase
|
70
|
+
end
|
71
|
+
|
72
|
+
File.expects(:exist?).with(@path.upcase).returns(false)
|
73
|
+
@searcher.find(@request)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe Puppet::Indirector::File, " when saving files" do
|
78
|
+
before do
|
79
|
+
@content = "my content"
|
80
|
+
@file = stub 'file', :content => @content, :path => @path, :name => @path
|
81
|
+
@request.stubs(:instance).returns @file
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should provide a method to save file contents at a specified path" do
|
85
|
+
filehandle = mock 'file'
|
86
|
+
File.expects(:directory?).with(@dir).returns(true)
|
87
|
+
File.expects(:open).with(@path, "w").yields(filehandle)
|
88
|
+
filehandle.expects(:print).with(@content)
|
89
|
+
|
90
|
+
@searcher.save(@request)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should fail intelligently if the file's parent directory does not exist" do
|
94
|
+
File.expects(:directory?).with(@dir).returns(false)
|
95
|
+
|
96
|
+
proc { @searcher.save(@request) }.should raise_error(Puppet::Error)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should fail intelligently if a file cannot be written" do
|
100
|
+
filehandle = mock 'file'
|
101
|
+
File.expects(:directory?).with(@dir).returns(true)
|
102
|
+
File.expects(:open).with(@path, "w").yields(filehandle)
|
103
|
+
filehandle.expects(:print).with(@content).raises(ArgumentError)
|
104
|
+
|
105
|
+
proc { @searcher.save(@request) }.should raise_error(Puppet::Error)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should use the path() method to calculate the path if it exists" do
|
109
|
+
@searcher.meta_def(:path) do |name|
|
110
|
+
name.upcase
|
111
|
+
end
|
112
|
+
|
113
|
+
# Reset the key to something without a parent dir, so no checks are necessary
|
114
|
+
@request.stubs(:key).returns "/my"
|
115
|
+
|
116
|
+
File.expects(:open).with("/MY", "w")
|
117
|
+
@searcher.save(@request)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe Puppet::Indirector::File, " when removing files" do
|
122
|
+
|
123
|
+
it "should provide a method to remove files at a specified path" do
|
124
|
+
File.expects(:exist?).with(@path).returns(true)
|
125
|
+
File.expects(:unlink).with(@path)
|
126
|
+
|
127
|
+
@searcher.destroy(@request)
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should throw an exception if the file is not found" do
|
131
|
+
File.expects(:exist?).with(@path).returns(false)
|
132
|
+
|
133
|
+
proc { @searcher.destroy(@request) }.should raise_error(Puppet::Error)
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should fail intelligently if the file cannot be removed" do
|
137
|
+
File.expects(:exist?).with(@path).returns(true)
|
138
|
+
File.expects(:unlink).with(@path).raises(ArgumentError)
|
139
|
+
|
140
|
+
proc { @searcher.destroy(@request) }.should raise_error(Puppet::Error)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should use the path() method to calculate the path if it exists" do
|
144
|
+
@searcher.meta_def(:path) do |thing|
|
145
|
+
thing.to_s.upcase
|
146
|
+
end
|
147
|
+
|
148
|
+
File.expects(:exist?).with("/MY/FILE").returns(true)
|
149
|
+
File.expects(:unlink).with("/MY/FILE")
|
150
|
+
|
151
|
+
@searcher.destroy(@request)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|