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
data/lib/puppet/util/storage.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'sync'
|
3
3
|
|
4
|
+
require 'puppet/util/file_locking'
|
5
|
+
|
4
6
|
# a class for storing state
|
5
7
|
class Puppet::Util::Storage
|
6
8
|
include Singleton
|
@@ -59,7 +61,7 @@ class Puppet::Util::Storage
|
|
59
61
|
return
|
60
62
|
end
|
61
63
|
Puppet::Util.benchmark(:debug, "Loaded state") do
|
62
|
-
Puppet::Util.readlock(Puppet[:statefile]) do |file|
|
64
|
+
Puppet::Util::FileLocking.readlock(Puppet[:statefile]) do |file|
|
63
65
|
begin
|
64
66
|
@@state = YAML.load(file)
|
65
67
|
rescue => detail
|
@@ -97,7 +99,7 @@ class Puppet::Util::Storage
|
|
97
99
|
end
|
98
100
|
|
99
101
|
Puppet::Util.benchmark(:debug, "Stored state") do
|
100
|
-
Puppet::Util.writelock(Puppet[:statefile], 0660) do |file|
|
102
|
+
Puppet::Util::FileLocking.writelock(Puppet[:statefile], 0660) do |file|
|
101
103
|
file.print YAML.dump(@@state)
|
102
104
|
end
|
103
105
|
end
|
data/spec/Rakefile
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper.rb")
|
2
|
+
require 'rake'
|
3
|
+
require 'spec/rake/spectask'
|
4
|
+
|
5
|
+
basedir = File.dirname(__FILE__)
|
6
|
+
puppetlibdir = File.join(basedir, "../lib")
|
7
|
+
puppettestlibdir = File.join(basedir, "../test/lib")
|
8
|
+
speclibdir = File.join(basedir, "lib")
|
9
|
+
|
10
|
+
require 'find'
|
11
|
+
|
12
|
+
include Find
|
13
|
+
include FileTest
|
14
|
+
|
15
|
+
$exclusions = %W(lib)
|
16
|
+
|
17
|
+
filemap = Hash.new { |hash, key| hash[key] = [] }
|
18
|
+
|
19
|
+
allfiles = []
|
20
|
+
|
21
|
+
# First collect the entire file list.
|
22
|
+
find(".") do |f|
|
23
|
+
# Get rid of the leading ./
|
24
|
+
f = f.sub(/^\.\//, '')
|
25
|
+
|
26
|
+
file = File.basename(f)
|
27
|
+
dir = File.dirname(f)
|
28
|
+
|
29
|
+
# Prune . directories and excluded dirs
|
30
|
+
if (file =~ /^\./ and f != ".") or $exclusions.include?(File.basename(file))
|
31
|
+
prune
|
32
|
+
next
|
33
|
+
end
|
34
|
+
next if f == "."
|
35
|
+
next if dir == "."
|
36
|
+
|
37
|
+
# If we're a ruby script, then add it to the list of files for that dir
|
38
|
+
if file =~ /\.rb$/
|
39
|
+
allfiles << f
|
40
|
+
# Add it to all of the parent dirs, not just our own
|
41
|
+
parts = File.split(dir)
|
42
|
+
if parts[0] == "."
|
43
|
+
parts.shift
|
44
|
+
end
|
45
|
+
parts.each_with_index { |part, i|
|
46
|
+
path = File.join(parts[0..i])
|
47
|
+
filemap[path] << f
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
libs = [puppetlibdir, puppettestlibdir, speclibdir]
|
54
|
+
desc "Run all specs"
|
55
|
+
Spec::Rake::SpecTask.new('all') do |t|
|
56
|
+
t.spec_files = FileList['integration/**/*.rb', 'unit/**/*.rb']
|
57
|
+
t.libs = libs
|
58
|
+
t.spec_opts = ['--options', 'spec.opts']
|
59
|
+
end
|
60
|
+
|
61
|
+
task :default => [:all]
|
62
|
+
|
63
|
+
# Now create a task for every directory
|
64
|
+
filemap.each do |dir, files|
|
65
|
+
ns = dir.gsub "/", ":"
|
66
|
+
|
67
|
+
# First create a separate task for each file in the namespace.
|
68
|
+
namespace ns do
|
69
|
+
files.each do |file|
|
70
|
+
Spec::Rake::SpecTask.new(file) do |t|
|
71
|
+
t.spec_files = File.basename(file, '.rb')
|
72
|
+
t.libs = libs
|
73
|
+
t.spec_opts = ['--options', 'spec.opts']
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# Then create a task that matches the directory itself.
|
79
|
+
Spec::Rake::SpecTask.new(dir) do |t|
|
80
|
+
if ENV["TESTFILES"]
|
81
|
+
t.spec_files = ENV["TESTFILES"].split(/\s+/)
|
82
|
+
else
|
83
|
+
t.spec_files = files.sort
|
84
|
+
end
|
85
|
+
t.libs = libs
|
86
|
+
t.spec_opts = ['--options', 'spec.opts']
|
87
|
+
end
|
88
|
+
|
89
|
+
# And alias it with a slash on the end
|
90
|
+
task(dir + "/" => dir)
|
91
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-9-22.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/checksum'
|
9
|
+
|
10
|
+
describe Puppet::Checksum, " when using the file terminus" do
|
11
|
+
before do
|
12
|
+
Puppet::Checksum.terminus_class = :file
|
13
|
+
@content = "this is some content"
|
14
|
+
@sum = Puppet::Checksum.new(@content)
|
15
|
+
|
16
|
+
@file = Puppet::Checksum.indirection.terminus.path(@sum.checksum)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should store content at a path determined by its checksum" do
|
20
|
+
File.stubs(:directory?).returns(true)
|
21
|
+
filehandle = mock 'filehandle'
|
22
|
+
filehandle.expects(:print).with(@content)
|
23
|
+
File.expects(:open).with(@file, "w").yields(filehandle)
|
24
|
+
|
25
|
+
@sum.save
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should retrieve stored content when the checksum is provided as the key" do
|
29
|
+
File.stubs(:exist?).returns(true)
|
30
|
+
File.expects(:read).with(@file).returns(@content)
|
31
|
+
|
32
|
+
newsum = Puppet::Checksum.find(@sum.checksum)
|
33
|
+
|
34
|
+
newsum.content.should == @content
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should remove specified files when asked" do
|
38
|
+
File.stubs(:exist?).returns(true)
|
39
|
+
File.expects(:unlink).with(@file)
|
40
|
+
|
41
|
+
Puppet::Checksum.destroy(@sum.name)
|
42
|
+
end
|
43
|
+
|
44
|
+
after do
|
45
|
+
Puppet.settings.clear
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/defaults'
|
6
|
+
|
7
|
+
describe "Puppet defaults" do
|
8
|
+
after { Puppet.settings.clear }
|
9
|
+
|
10
|
+
describe "when setting the :factpath" do
|
11
|
+
|
12
|
+
it "should add the :factpath to Facter's search paths" do
|
13
|
+
Facter.expects(:search).with("/my/fact/path")
|
14
|
+
|
15
|
+
Puppet.settings[:factpath] = "/my/fact/path"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
describe "when setting the :certname" do
|
19
|
+
it "should fail if the certname is not downcased" do
|
20
|
+
lambda { Puppet.settings[:certname] = "Host.Domain.Com" }.should raise_error(ArgumentError)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should have a clientyamldir setting" do
|
25
|
+
Puppet.settings[:clientyamldir].should_not be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have different values for the yamldir and clientyamldir" do
|
29
|
+
Puppet.settings[:yamldir].should_not == Puppet.settings[:clientyamldir]
|
30
|
+
end
|
31
|
+
|
32
|
+
# See #1232
|
33
|
+
it "should not specify a user or group for the clientyamldir" do
|
34
|
+
Puppet.settings.element(:clientyamldir).owner.should be_nil
|
35
|
+
Puppet.settings.element(:clientyamldir).group.should be_nil
|
36
|
+
end
|
37
|
+
|
38
|
+
# See #1232
|
39
|
+
it "should not specify a user or group for the rundir" do
|
40
|
+
Puppet.settings.element(:rundir).owner.should be_nil
|
41
|
+
Puppet.settings.element(:rundir).group.should be_nil
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should default to yaml as the catalog format" do
|
45
|
+
Puppet.settings[:catalog_format].should == "yaml"
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-18.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/file_serving/configuration'
|
9
|
+
|
10
|
+
describe Puppet::FileServing::Configuration, " when finding files with Puppet::FileServing::Mount" do
|
11
|
+
before do
|
12
|
+
# Just in case it already exists.
|
13
|
+
Puppet::FileServing::Configuration.clear_cache
|
14
|
+
|
15
|
+
@mount = Puppet::FileServing::Mount.new("mymount")
|
16
|
+
FileTest.stubs(:exists?).with("/my/path").returns(true)
|
17
|
+
FileTest.stubs(:readable?).with("/my/path").returns(true)
|
18
|
+
FileTest.stubs(:directory?).with("/my/path").returns(true)
|
19
|
+
@mount.path = "/my/path"
|
20
|
+
|
21
|
+
FileTest.stubs(:exists?).with(Puppet[:fileserverconfig]).returns(true)
|
22
|
+
@parser = mock 'parser'
|
23
|
+
@parser.stubs(:parse).returns("mymount" => @mount)
|
24
|
+
@parser.stubs(:changed?).returns(true)
|
25
|
+
Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
|
26
|
+
|
27
|
+
@config = Puppet::FileServing::Configuration.create
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return nil if the file does not exist" do
|
31
|
+
FileTest.expects(:exists?).with("/my/path/my/file").returns(false)
|
32
|
+
@config.file_path("/mymount/my/file").should be_nil
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return the full file path if the file exists" do
|
36
|
+
FileTest.expects(:exists?).with("/my/path/my/file").returns(true)
|
37
|
+
@config.file_path("/mymount/my/file").should == "/my/path/my/file"
|
38
|
+
end
|
39
|
+
|
40
|
+
after do
|
41
|
+
Puppet::FileServing::Configuration.clear_cache
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-18.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/file_serving/content'
|
9
|
+
require 'shared_behaviours/file_serving'
|
10
|
+
|
11
|
+
describe Puppet::FileServing::Content, " when finding files" do
|
12
|
+
it_should_behave_like "Puppet::FileServing::Files"
|
13
|
+
|
14
|
+
before do
|
15
|
+
@test_class = Puppet::FileServing::Content
|
16
|
+
@indirection = Puppet::FileServing::Content.indirection
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-18.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/file_serving/metadata'
|
9
|
+
require 'shared_behaviours/file_serving'
|
10
|
+
|
11
|
+
describe Puppet::FileServing::Metadata, " when finding files" do
|
12
|
+
it_should_behave_like "Puppet::FileServing::Files"
|
13
|
+
|
14
|
+
before do
|
15
|
+
@test_class = Puppet::FileServing::Metadata
|
16
|
+
@indirection = Puppet::FileServing::Metadata.indirection
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,80 @@
|
|
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/file_content/file'
|
9
|
+
require 'puppet/indirector/module_files'
|
10
|
+
|
11
|
+
describe Puppet::Indirector::DirectFileServer, " when interacting with the filesystem and the model" do
|
12
|
+
before do
|
13
|
+
# We just test a subclass, since it's close enough.
|
14
|
+
@terminus = Puppet::Indirector::FileContent::File.new
|
15
|
+
|
16
|
+
@filepath = "/path/to/my/file"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return an instance of the model" do
|
20
|
+
FileTest.expects(:exists?).with(@filepath).returns(true)
|
21
|
+
|
22
|
+
@terminus.find(@terminus.indirection.request(:find, "file://host#{@filepath}")).should be_instance_of(Puppet::FileServing::Content)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should return an instance capable of returning its content" do
|
26
|
+
FileTest.expects(:exists?).with(@filepath).returns(true)
|
27
|
+
File.stubs(:lstat).with(@filepath).returns(stub("stat", :ftype => "file"))
|
28
|
+
File.expects(:read).with(@filepath).returns("my content")
|
29
|
+
|
30
|
+
instance = @terminus.find(@terminus.indirection.request(:find, "file://host#{@filepath}"))
|
31
|
+
|
32
|
+
instance.content.should == "my content"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe Puppet::Indirector::DirectFileServer, " when interacting with FileServing::Fileset and the model" do
|
37
|
+
before do
|
38
|
+
@terminus = Puppet::Indirector::FileContent::File.new
|
39
|
+
|
40
|
+
@filepath = "/my/file"
|
41
|
+
FileTest.stubs(:exists?).with(@filepath).returns(true)
|
42
|
+
|
43
|
+
stat = stub 'stat', :directory? => true
|
44
|
+
File.stubs(:lstat).with(@filepath).returns(stat)
|
45
|
+
|
46
|
+
@subfiles = %w{one two}
|
47
|
+
@subfiles.each do |f|
|
48
|
+
path = File.join(@filepath, f)
|
49
|
+
FileTest.stubs(:exists?).with(@path).returns(true)
|
50
|
+
end
|
51
|
+
|
52
|
+
Dir.expects(:entries).with(@filepath).returns @subfiles
|
53
|
+
|
54
|
+
@request = @terminus.indirection.request(:search, "file:///my/file", :recurse => true)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return an instance for every file in the fileset" do
|
58
|
+
result = @terminus.search(@request)
|
59
|
+
result.should be_instance_of(Array)
|
60
|
+
result.length.should == 3
|
61
|
+
result.each { |r| r.should be_instance_of(Puppet::FileServing::Content) }
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should return instances capable of returning their content" do
|
65
|
+
@subfiles.each do |name|
|
66
|
+
File.stubs(:lstat).with(File.join(@filepath, name)).returns stub("#{name} stat", :ftype => "file", :directory? => false)
|
67
|
+
File.expects(:read).with(File.join(@filepath, name)).returns("#{name} content")
|
68
|
+
end
|
69
|
+
|
70
|
+
@terminus.search(@request).each do |instance|
|
71
|
+
case instance.key
|
72
|
+
when /one/: instance.content.should == "one content"
|
73
|
+
when /two/: instance.content.should == "two content"
|
74
|
+
when /\.$/:
|
75
|
+
else
|
76
|
+
raise "No valid key for %s" % instance.key.inspect
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-18.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/indirector/file_content/file_server'
|
9
|
+
require 'shared_behaviours/file_server_terminus'
|
10
|
+
|
11
|
+
describe Puppet::Indirector::FileContent::FileServer, " when finding files" do
|
12
|
+
it_should_behave_like "Puppet::Indirector::FileServerTerminus"
|
13
|
+
|
14
|
+
before do
|
15
|
+
@terminus = Puppet::Indirector::FileContent::FileServer.new
|
16
|
+
@test_class = Puppet::FileServing::Content
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-18.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/indirector/file_metadata/file_server'
|
9
|
+
require 'shared_behaviours/file_server_terminus'
|
10
|
+
|
11
|
+
describe Puppet::Indirector::FileMetadata::FileServer, " when finding files" do
|
12
|
+
it_should_behave_like "Puppet::Indirector::FileServerTerminus"
|
13
|
+
|
14
|
+
before do
|
15
|
+
@terminus = Puppet::Indirector::FileMetadata::FileServer.new
|
16
|
+
@test_class = Puppet::FileServing::Metadata
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,57 @@
|
|
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/file_content/modules'
|
9
|
+
require 'puppet/indirector/module_files'
|
10
|
+
|
11
|
+
describe Puppet::Indirector::ModuleFiles, " when interacting with Puppet::Module and FileServing::Content" do
|
12
|
+
it "should look for files in the module's 'files' directory" do
|
13
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
14
|
+
# We just test a subclass, since it's close enough.
|
15
|
+
@terminus = Puppet::Indirector::FileContent::Modules.new
|
16
|
+
@module = Puppet::Module.new("mymod", "/some/path/mymod")
|
17
|
+
Puppet::Module.expects(:find).with("mymod", "myenv").returns(@module)
|
18
|
+
|
19
|
+
filepath = "/some/path/mymod/files/myfile"
|
20
|
+
|
21
|
+
FileTest.expects(:exists?).with(filepath).returns(true)
|
22
|
+
|
23
|
+
@request = Puppet::Indirector::Request.new(:content, :find, "puppetmounts://host/modules/mymod/myfile")
|
24
|
+
|
25
|
+
@terminus.find(@request).should be_instance_of(Puppet::FileServing::Content)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe Puppet::Indirector::ModuleFiles, " when interacting with FileServing::Fileset and FileServing::Content" do
|
30
|
+
it "should return an instance for every file in the fileset" do
|
31
|
+
Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
|
32
|
+
@terminus = Puppet::Indirector::FileContent::Modules.new
|
33
|
+
@module = Puppet::Module.new("mymod", "/some/path/mymod")
|
34
|
+
Puppet::Module.expects(:find).with("mymod", "myenv").returns(@module)
|
35
|
+
|
36
|
+
filepath = "/some/path/mymod/files/myfile"
|
37
|
+
FileTest.stubs(:exists?).with(filepath).returns(true)
|
38
|
+
|
39
|
+
stat = stub 'stat', :directory? => true
|
40
|
+
File.stubs(:lstat).with(filepath).returns(stat)
|
41
|
+
|
42
|
+
subfiles = %w{one two}
|
43
|
+
subfiles.each do |f|
|
44
|
+
path = File.join(filepath, f)
|
45
|
+
FileTest.stubs(:exists?).with(path).returns(true)
|
46
|
+
end
|
47
|
+
|
48
|
+
Dir.expects(:entries).with(filepath).returns(%w{one two})
|
49
|
+
|
50
|
+
@request = Puppet::Indirector::Request.new(:content, :search, "puppetmounts://host/modules/mymod/myfile", :recurse => true)
|
51
|
+
|
52
|
+
result = @terminus.search(@request)
|
53
|
+
result.should be_instance_of(Array)
|
54
|
+
result.length.should == 3
|
55
|
+
result.each { |r| r.should be_instance_of(Puppet::FileServing::Content) }
|
56
|
+
end
|
57
|
+
end
|