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,248 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'yaml'
|
6
|
+
require 'tempfile'
|
7
|
+
|
8
|
+
require 'puppet/util/storage'
|
9
|
+
|
10
|
+
describe Puppet::Util::Storage do
|
11
|
+
before(:all) do
|
12
|
+
Puppet[:statedir] = Dir.tmpdir()
|
13
|
+
end
|
14
|
+
|
15
|
+
before(:each) do
|
16
|
+
Puppet::Util::Storage.clear()
|
17
|
+
end
|
18
|
+
|
19
|
+
after do
|
20
|
+
Puppet::Type.type(:file).clear
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "when caching a symbol" do
|
24
|
+
it "should return an empty hash" do
|
25
|
+
Puppet::Util::Storage.cache(:yayness).should == {}
|
26
|
+
Puppet::Util::Storage.cache(:more_yayness).should == {}
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should add the symbol to its internal state" do
|
30
|
+
Puppet::Util::Storage.cache(:yayness)
|
31
|
+
Puppet::Util::Storage.state().should == {:yayness=>{}}
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should not clobber existing state when caching additional objects" do
|
35
|
+
Puppet::Util::Storage.cache(:yayness)
|
36
|
+
Puppet::Util::Storage.state().should == {:yayness=>{}}
|
37
|
+
Puppet::Util::Storage.cache(:bubblyness)
|
38
|
+
Puppet::Util::Storage.state().should == {:yayness=>{},:bubblyness=>{}}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "when caching a Puppet::Type" do
|
43
|
+
before(:all) do
|
44
|
+
@file_test = Puppet.type(:file).create(:name => "/yayness", :check => %w{checksum type})
|
45
|
+
@exec_test = Puppet.type(:exec).create(:name => "/bin/ls /yayness")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return an empty hash" do
|
49
|
+
Puppet::Util::Storage.cache(@file_test).should == {}
|
50
|
+
Puppet::Util::Storage.cache(@exec_test).should == {}
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should add the resource ref to its internal state" do
|
54
|
+
Puppet::Util::Storage.state().should == {}
|
55
|
+
Puppet::Util::Storage.cache(@file_test)
|
56
|
+
Puppet::Util::Storage.state().should == {"File[/yayness]"=>{}}
|
57
|
+
Puppet::Util::Storage.cache(@exec_test)
|
58
|
+
Puppet::Util::Storage.state().should == {"File[/yayness]"=>{}, "Exec[/bin/ls /yayness]"=>{}}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "when caching invalid objects" do
|
63
|
+
before(:all) do
|
64
|
+
@bogus_objects = [ {}, [], "foo", 42, nil, Tempfile.new('storage_test') ]
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should raise an ArgumentError" do
|
68
|
+
@bogus_objects.each do |object|
|
69
|
+
proc { Puppet::Util::Storage.cache(object) }.should raise_error()
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should not add anything to its internal state" do
|
74
|
+
@bogus_objects.each do |object|
|
75
|
+
begin
|
76
|
+
Puppet::Util::Storage.cache(object)
|
77
|
+
rescue
|
78
|
+
Puppet::Util::Storage.state().should == {}
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should clear its internal state when clear() is called" do
|
85
|
+
Puppet::Util::Storage.cache(:yayness)
|
86
|
+
Puppet::Util::Storage.state().should == {:yayness=>{}}
|
87
|
+
Puppet::Util::Storage.clear()
|
88
|
+
Puppet::Util::Storage.state().should == {}
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "when loading from the state file" do
|
92
|
+
before do
|
93
|
+
Puppet.settings.stubs(:use).returns(true)
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "when the state file/directory does not exist" do
|
97
|
+
before(:each) do
|
98
|
+
transient = Tempfile.new('storage_test')
|
99
|
+
@path = transient.path()
|
100
|
+
transient.close!()
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should not fail to load()" do
|
104
|
+
FileTest.exists?(@path).should be_false()
|
105
|
+
Puppet[:statedir] = @path
|
106
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
107
|
+
Puppet[:statefile] = @path
|
108
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should not lose its internal state when load() is called" do
|
112
|
+
FileTest.exists?(@path).should be_false()
|
113
|
+
|
114
|
+
Puppet::Util::Storage.cache(:yayness)
|
115
|
+
Puppet::Util::Storage.state().should == {:yayness=>{}}
|
116
|
+
|
117
|
+
Puppet[:statefile] = @path
|
118
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
119
|
+
|
120
|
+
Puppet::Util::Storage.state().should == {:yayness=>{}}
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe "when the state file/directory exists" do
|
125
|
+
before(:each) do
|
126
|
+
@state_file = Tempfile.new('storage_test')
|
127
|
+
@saved_statefile = Puppet[:statefile]
|
128
|
+
Puppet[:statefile] = @state_file.path()
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should overwrite its internal state if load() is called" do
|
132
|
+
# Should the state be overwritten even if Puppet[:statefile] is not valid YAML?
|
133
|
+
Puppet::Util::Storage.cache(:yayness)
|
134
|
+
Puppet::Util::Storage.state().should == {:yayness=>{}}
|
135
|
+
|
136
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
137
|
+
Puppet::Util::Storage.state().should == {}
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should restore its internal state if the state file contains valid YAML" do
|
141
|
+
test_yaml = {'File["/yayness"]'=>{"name"=>{:a=>:b,:c=>:d}}}
|
142
|
+
YAML.expects(:load).returns(test_yaml)
|
143
|
+
|
144
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
145
|
+
Puppet::Util::Storage.state().should == test_yaml
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should initialize with a clear internal state if the state file does not contain valid YAML" do
|
149
|
+
@state_file.write(:booness)
|
150
|
+
@state_file.flush()
|
151
|
+
|
152
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
153
|
+
Puppet::Util::Storage.state().should == {}
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should raise an error if the state file does not contain valid YAML and cannot be renamed" do
|
157
|
+
@state_file.write(:booness)
|
158
|
+
@state_file.flush()
|
159
|
+
YAML.expects(:load).raises(Puppet::Error)
|
160
|
+
File.expects(:rename).raises(SystemCallError)
|
161
|
+
|
162
|
+
proc { Puppet::Util::Storage.load() }.should raise_error()
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should attempt to rename the state file if the file is corrupted" do
|
166
|
+
# We fake corruption by causing YAML.load to raise an exception
|
167
|
+
YAML.expects(:load).raises(Puppet::Error)
|
168
|
+
File.expects(:rename).at_least_once
|
169
|
+
|
170
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should fail gracefully on load() if the state file is not a regular file" do
|
174
|
+
@state_file.close!()
|
175
|
+
Dir.mkdir(Puppet[:statefile])
|
176
|
+
File.expects(:rename).returns(0)
|
177
|
+
|
178
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
179
|
+
|
180
|
+
Dir.rmdir(Puppet[:statefile])
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should fail gracefully on load() if it cannot get a read lock on the state file" do
|
184
|
+
Puppet::Util::FileLocking.expects(:readlock).yields(false)
|
185
|
+
test_yaml = {'File["/yayness"]'=>{"name"=>{:a=>:b,:c=>:d}}}
|
186
|
+
YAML.expects(:load).returns(test_yaml)
|
187
|
+
|
188
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
189
|
+
Puppet::Util::Storage.state().should == test_yaml
|
190
|
+
end
|
191
|
+
|
192
|
+
after(:each) do
|
193
|
+
@state_file.close!()
|
194
|
+
Puppet[:statefile] = @saved_statefile
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
describe "when storing to the state file" do
|
200
|
+
before(:each) do
|
201
|
+
@state_file = Tempfile.new('storage_test')
|
202
|
+
@saved_statefile = Puppet[:statefile]
|
203
|
+
Puppet[:statefile] = @state_file.path()
|
204
|
+
end
|
205
|
+
|
206
|
+
it "should create the state file if it does not exist" do
|
207
|
+
@state_file.close!()
|
208
|
+
FileTest.exists?(Puppet[:statefile]).should be_false()
|
209
|
+
Puppet::Util::Storage.cache(:yayness)
|
210
|
+
|
211
|
+
proc { Puppet::Util::Storage.store() }.should_not raise_error()
|
212
|
+
FileTest.exists?(Puppet[:statefile]).should be_true()
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should raise an exception if the state file is not a regular file" do
|
216
|
+
@state_file.close!()
|
217
|
+
Dir.mkdir(Puppet[:statefile])
|
218
|
+
Puppet::Util::Storage.cache(:yayness)
|
219
|
+
|
220
|
+
proc { Puppet::Util::Storage.store() }.should raise_error()
|
221
|
+
|
222
|
+
Dir.rmdir(Puppet[:statefile])
|
223
|
+
end
|
224
|
+
|
225
|
+
it "should raise an exception if it cannot get a write lock on the state file" do
|
226
|
+
Puppet::Util::FileLocking.expects(:writelock).yields(false)
|
227
|
+
Puppet::Util::Storage.cache(:yayness)
|
228
|
+
|
229
|
+
proc { Puppet::Util::Storage.store() }.should raise_error()
|
230
|
+
end
|
231
|
+
|
232
|
+
it "should load() the same information that it store()s" do
|
233
|
+
Puppet::Util::Storage.cache(:yayness)
|
234
|
+
|
235
|
+
Puppet::Util::Storage.state().should == {:yayness=>{}}
|
236
|
+
proc { Puppet::Util::Storage.store() }.should_not raise_error()
|
237
|
+
Puppet::Util::Storage.clear()
|
238
|
+
Puppet::Util::Storage.state().should == {}
|
239
|
+
proc { Puppet::Util::Storage.load() }.should_not raise_error()
|
240
|
+
Puppet::Util::Storage.state().should == {:yayness=>{}}
|
241
|
+
end
|
242
|
+
|
243
|
+
after(:each) do
|
244
|
+
@state_file.close!()
|
245
|
+
Puppet[:statefile] = @saved_statefile
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2008-01-19.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/util/tagging'
|
9
|
+
|
10
|
+
describe Puppet::Util::Tagging, "when adding tags" do
|
11
|
+
before do
|
12
|
+
@tagger = Object.new
|
13
|
+
@tagger.extend(Puppet::Util::Tagging)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should have a method for adding tags" do
|
17
|
+
@tagger.should be_respond_to(:tag)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should have a method for returning all tags" do
|
21
|
+
@tagger.should be_respond_to(:tags)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should add tags to the returned tag list" do
|
25
|
+
@tagger.tag("one")
|
26
|
+
@tagger.tags.should be_include("one")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not add duplicate tags to the returned tag list" do
|
30
|
+
@tagger.tag("one")
|
31
|
+
@tagger.tag("one")
|
32
|
+
@tagger.tags.should == ["one"]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return a duplicate of the tag list, rather than the original" do
|
36
|
+
@tagger.tag("one")
|
37
|
+
tags = @tagger.tags
|
38
|
+
tags << "two"
|
39
|
+
@tagger.tags.should_not be_include("two")
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should add all provided tags to the tag list" do
|
43
|
+
@tagger.tag("one", "two")
|
44
|
+
@tagger.tags.should be_include("one")
|
45
|
+
@tagger.tags.should be_include("two")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should fail on tags containing '*' characters" do
|
49
|
+
lambda { @tagger.tag("bad*tag") }.should raise_error(Puppet::ParseError)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should fail on tags starting with '-' characters" do
|
53
|
+
lambda { @tagger.tag("-badtag") }.should raise_error(Puppet::ParseError)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should fail on tags containing ' ' characters" do
|
57
|
+
lambda { @tagger.tag("bad tag") }.should raise_error(Puppet::ParseError)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should allow alpha tags" do
|
61
|
+
lambda { @tagger.tag("good_tag") }.should_not raise_error(Puppet::ParseError)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should allow tags containing '.' characters" do
|
65
|
+
lambda { @tagger.tag("good.tag") }.should_not raise_error(Puppet::ParseError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should provide a method for testing tag validity" do
|
69
|
+
@tagger.metaclass.publicize_methods(:valid_tag?) { @tagger.should be_respond_to(:valid_tag?) }
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should add qualified classes as tags" do
|
73
|
+
@tagger.tag("one::two")
|
74
|
+
@tagger.tags.should be_include("one::two")
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should add each part of qualified classes as tags" do
|
78
|
+
@tagger.tag("one::two::three")
|
79
|
+
@tagger.tags.should be_include("one")
|
80
|
+
@tagger.tags.should be_include("two")
|
81
|
+
@tagger.tags.should be_include("three")
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should indicate when the object is tagged with a provided tag" do
|
85
|
+
@tagger.tag("one")
|
86
|
+
@tagger.should be_tagged("one")
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should indicate when the object is not tagged with a provided tag" do
|
90
|
+
@tagger.should_not be_tagged("one")
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,41 @@
|
|
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/util/uri_helper'
|
9
|
+
|
10
|
+
describe Puppet::Util::URIHelper, " when converting a key to a URI" do
|
11
|
+
before do
|
12
|
+
@helper = Object.new
|
13
|
+
@helper.extend(Puppet::Util::URIHelper)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return the URI instance" do
|
17
|
+
URI.expects(:parse).with("file:///myhost/blah").returns(:myuri)
|
18
|
+
@helper.key2uri("/myhost/blah").should == :myuri
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should escape the key before parsing" do
|
22
|
+
URI.expects(:escape).with("mykey").returns("http://myhost/blah")
|
23
|
+
URI.expects(:parse).with("http://myhost/blah").returns(:myuri)
|
24
|
+
@helper.key2uri("mykey").should == :myuri
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should use the URI class to parse the key" do
|
28
|
+
URI.expects(:parse).with("http://myhost/blah").returns(:myuri)
|
29
|
+
@helper.key2uri("http://myhost/blah").should == :myuri
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should set the scheme to 'file' if the key is a fully qualified path" do
|
33
|
+
URI.expects(:parse).with("file:///myhost/blah").returns(:myuri)
|
34
|
+
@helper.key2uri("/myhost/blah").should == :myuri
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should set the host to 'nil' if the key is a fully qualified path" do
|
38
|
+
URI.expects(:parse).with("file:///myhost/blah").returns(:myuri)
|
39
|
+
@helper.key2uri("/myhost/blah").should == :myuri
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
|
4
|
+
|
5
|
+
require 'puppet/util/user_attr'
|
6
|
+
|
7
|
+
describe UserAttr do
|
8
|
+
before do
|
9
|
+
user_attr = ["foo::::type=role", "bar::::type=normal;profile=foobar"]
|
10
|
+
File.stubs(:readlines).returns(user_attr)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when getting attributes by name" do
|
14
|
+
it "should return nil if there is no entry for that name" do
|
15
|
+
UserAttr.get_attributes_by_name('baz').should == nil
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return a hash if there is an entry in /etc/user_attr" do
|
19
|
+
UserAttr.get_attributes_by_name('foo').class.should == Hash
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return a hash with the name value from /etc/user_attr" do
|
23
|
+
UserAttr.get_attributes_by_name('foo')[:name].should == 'foo'
|
24
|
+
end
|
25
|
+
|
26
|
+
#this test is contrived
|
27
|
+
#there are a bunch of possible parameters that could be in the hash
|
28
|
+
#the role/normal is just a the convention of the file
|
29
|
+
describe "when the name is a role" do
|
30
|
+
it "should contain :type = role" do
|
31
|
+
UserAttr.get_attributes_by_name('foo')[:type].should == 'role'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "when the name is not a role" do
|
36
|
+
it "should contain :type = normal" do
|
37
|
+
UserAttr.get_attributes_by_name('bar')[:type].should == 'normal'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "when the name has more attributes" do
|
42
|
+
it "should contain all the attributes" do
|
43
|
+
UserAttr.get_attributes_by_name('bar')[:profile].should == 'foobar'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Util::Warnings, " when registering a warning message" do
|
6
|
+
before(:all) do
|
7
|
+
@msg1 = "booness"
|
8
|
+
@msg2 = "more booness"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should always return nil" do
|
12
|
+
Puppet::Util::Warnings.warnonce(@msg1).should be(nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should issue a warning" do
|
16
|
+
Puppet.expects(:warning).with(@msg1)
|
17
|
+
Puppet::Util::Warnings.warnonce(@msg1)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should issue a warning exactly once per unique message" do
|
21
|
+
Puppet.expects(:warning).with(@msg1).once
|
22
|
+
Puppet::Util::Warnings.warnonce(@msg1)
|
23
|
+
Puppet::Util::Warnings.warnonce(@msg1)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should issue multiple warnings for multiple unique messages" do
|
27
|
+
Puppet.expects(:warning).times(2)
|
28
|
+
Puppet::Util::Warnings.warnonce(@msg1)
|
29
|
+
Puppet::Util::Warnings.warnonce(@msg2)
|
30
|
+
end
|
31
|
+
|
32
|
+
after(:each) do
|
33
|
+
Puppet::Util::Warnings.clear_warnings()
|
34
|
+
end
|
35
|
+
end
|