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,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
resources = Puppet::Type.type(:resources)
|
6
|
+
|
7
|
+
# There are still plenty of tests to port over from test/.
|
8
|
+
describe resources do
|
9
|
+
describe "when initializing" do
|
10
|
+
before do
|
11
|
+
resources.clear
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should fail if the specified resource type does not exist" do
|
15
|
+
Puppet::Type.expects(:type).with("nosuchtype").returns nil
|
16
|
+
lambda { resources.create :name => "nosuchtype" }.should raise_error(Puppet::Error)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should not fail when the specified resource type exists" do
|
20
|
+
lambda { resources.create :name => "file" }.should_not raise_error
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should set its :resource_type attribute" do
|
24
|
+
resources.create(:name => "file").resource_type.should == Puppet::Type.type(:file)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,339 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
module ScheduleTesting
|
6
|
+
|
7
|
+
def format(time)
|
8
|
+
time.strftime("%H:%M:%S")
|
9
|
+
end
|
10
|
+
|
11
|
+
def diff(unit, incr, method, count)
|
12
|
+
diff = Time.now.to_i.send(method, incr * count)
|
13
|
+
Time.at(diff)
|
14
|
+
end
|
15
|
+
|
16
|
+
def month(method, count)
|
17
|
+
diff(:hour, 3600 * 24 * 30, method, count)
|
18
|
+
end
|
19
|
+
|
20
|
+
def week(method, count)
|
21
|
+
diff(:hour, 3600 * 24 * 7, method, count)
|
22
|
+
end
|
23
|
+
|
24
|
+
def day(method, count)
|
25
|
+
diff(:hour, 3600 * 24, method, count)
|
26
|
+
end
|
27
|
+
|
28
|
+
def hour(method, count)
|
29
|
+
diff(:hour, 3600, method, count)
|
30
|
+
end
|
31
|
+
|
32
|
+
def min(method, count)
|
33
|
+
diff(:min, 60, method, count)
|
34
|
+
end
|
35
|
+
|
36
|
+
def sec(method, count)
|
37
|
+
diff(:sec, 1, method, count)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
describe Puppet::Type.type(:schedule) do
|
43
|
+
|
44
|
+
before :each do
|
45
|
+
Puppet.settings.stubs(:value).with(:ignoreschedules).returns(false)
|
46
|
+
|
47
|
+
@schedule = Puppet::Type.type(:schedule).create(:name => "testing")
|
48
|
+
end
|
49
|
+
|
50
|
+
after :each do
|
51
|
+
Puppet::Type.type(:schedule).clear
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
describe Puppet::Type.type(:schedule) do
|
56
|
+
include ScheduleTesting
|
57
|
+
|
58
|
+
it "should default to :distance for period-matching" do
|
59
|
+
@schedule[:periodmatch].should == :distance
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should default to a :repeat of 1" do
|
63
|
+
@schedule[:repeat].should == 1
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should never match when the period is :never" do
|
67
|
+
@schedule[:period] = :never
|
68
|
+
@schedule.match?.should be_false
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe Puppet::Type.type(:schedule), "when producing default schedules" do
|
73
|
+
include ScheduleTesting
|
74
|
+
|
75
|
+
%w{hourly daily weekly monthly never}.each do |period|
|
76
|
+
period = period.to_sym
|
77
|
+
it "should produce a #{period} schedule with the period set appropriately" do
|
78
|
+
schedules = Puppet::Type.type(:schedule).mkdefaultschedules
|
79
|
+
schedules.find { |s| s[:name] == period.to_s and s[:period] == period }.should be_instance_of(Puppet::Type.type(:schedule))
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should produce a schedule named puppet with a period of hourly and a repeat of 2" do
|
84
|
+
schedules = Puppet::Type.type(:schedule).mkdefaultschedules
|
85
|
+
schedules.find { |s|
|
86
|
+
s[:name] == "puppet" and s[:period] == :hourly and s[:repeat] == 2
|
87
|
+
}.should be_instance_of(Puppet::Type.type(:schedule))
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe Puppet::Type.type(:schedule), "when matching ranges" do
|
92
|
+
include ScheduleTesting
|
93
|
+
|
94
|
+
it "should match when the start time is before the current time and the end time is after the current time" do
|
95
|
+
@schedule[:range] = "%s - %s" % [format(Time.now - 10), format(Time.now + 10)]
|
96
|
+
@schedule.match?.should be_true
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should not match when the start time is after the current time" do
|
100
|
+
@schedule[:range] = "%s - %s" % [format(Time.now + 5), format(Time.now + 10)]
|
101
|
+
@schedule.match?.should be_false
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should not match when the end time is previous to the current time" do
|
105
|
+
@schedule[:range] = "%s - %s" % [format(Time.now - 10), format(Time.now - 5)]
|
106
|
+
@schedule.match?.should be_false
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe Puppet::Type.type(:schedule), "when matching hourly by distance" do
|
111
|
+
include ScheduleTesting
|
112
|
+
|
113
|
+
before do
|
114
|
+
@schedule[:period] = :hourly
|
115
|
+
@schedule[:periodmatch] = :distance
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should match an hour ago" do
|
119
|
+
@schedule.match?(hour("-", 1)).should be_true
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should not match now" do
|
123
|
+
@schedule.match?(Time.now).should be_false
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should not match 59 minutes ago" do
|
127
|
+
@schedule.match?(min("-", 59)).should be_false
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe Puppet::Type.type(:schedule), "when matching daily by distance" do
|
132
|
+
include ScheduleTesting
|
133
|
+
|
134
|
+
before do
|
135
|
+
@schedule[:period] = :daily
|
136
|
+
@schedule[:periodmatch] = :distance
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should match when the previous time was one day ago" do
|
140
|
+
@schedule.match?(day("-", 1)).should be_true
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should not match when the previous time is now" do
|
144
|
+
@schedule.match?(Time.now).should be_false
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should not match when the previous time was 23 hours ago" do
|
148
|
+
@schedule.match?(hour("-", 23)).should be_false
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe Puppet::Type.type(:schedule), "when matching weekly by distance" do
|
153
|
+
include ScheduleTesting
|
154
|
+
|
155
|
+
before do
|
156
|
+
@schedule[:period] = :weekly
|
157
|
+
@schedule[:periodmatch] = :distance
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should match seven days ago" do
|
161
|
+
@schedule.match?(day("-", 7)).should be_true
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should not match now" do
|
165
|
+
@schedule.match?(Time.now).should be_false
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should not match six days ago" do
|
169
|
+
@schedule.match?(day("-", 6)).should be_false
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe Puppet::Type.type(:schedule), "when matching monthly by distance" do
|
174
|
+
include ScheduleTesting
|
175
|
+
|
176
|
+
before do
|
177
|
+
@schedule[:period] = :monthly
|
178
|
+
@schedule[:periodmatch] = :distance
|
179
|
+
end
|
180
|
+
|
181
|
+
it "should match 32 days ago" do
|
182
|
+
@schedule.match?(day("-", 32)).should be_true
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should not match now" do
|
186
|
+
@schedule.match?(Time.now).should be_false
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should not match 27 days ago" do
|
190
|
+
@schedule.match?(day("-", 27)).should be_false
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
describe Puppet::Type.type(:schedule), "when matching hourly by number" do
|
195
|
+
include ScheduleTesting
|
196
|
+
|
197
|
+
before do
|
198
|
+
@schedule[:period] = :hourly
|
199
|
+
@schedule[:periodmatch] = :number
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should match if the times are one minute apart and the current minute is 0" do
|
203
|
+
current = Time.now
|
204
|
+
|
205
|
+
# Subtract an hour, reset the minute to zero, then add 59 minutes, so we're the previous hour plus 59 minutes.
|
206
|
+
previous = (current - 3600 - (current.min * 60) + (59 * 60))
|
207
|
+
|
208
|
+
# Now set the "current" time to the zero minute of the current hour.
|
209
|
+
now = (current - (current.min * 60))
|
210
|
+
Time.stubs(:now).returns(now)
|
211
|
+
@schedule.match?(previous).should be_true
|
212
|
+
end
|
213
|
+
|
214
|
+
it "should not match if the times are 58 minutes apart and the current minute is 59" do
|
215
|
+
current = Time.now
|
216
|
+
|
217
|
+
# reset the minute to zero
|
218
|
+
previous = current - (current.min * 60)
|
219
|
+
|
220
|
+
# Now set the "current" time to the 59th minute of the current hour.
|
221
|
+
now = (current - (current.min * 60) + (59 * 60))
|
222
|
+
Time.stubs(:now).returns(now)
|
223
|
+
@schedule.match?(previous).should be_false
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
describe Puppet::Type.type(:schedule), "when matching daily by number" do
|
228
|
+
include ScheduleTesting
|
229
|
+
|
230
|
+
before do
|
231
|
+
@schedule[:period] = :daily
|
232
|
+
@schedule[:periodmatch] = :number
|
233
|
+
end
|
234
|
+
|
235
|
+
it "should match if the times are one minute apart and the current minute and hour are 0" do
|
236
|
+
zero = Time.now
|
237
|
+
|
238
|
+
# Reset the current time to X:00:00
|
239
|
+
current = zero - (zero.hour * 3600) - (zero.min * 60) - zero.sec
|
240
|
+
|
241
|
+
# Now set the previous time to one minute before that
|
242
|
+
previous = current - 60
|
243
|
+
|
244
|
+
Time.stubs(:now).returns(current)
|
245
|
+
@schedule.match?(previous).should be_true
|
246
|
+
end
|
247
|
+
|
248
|
+
it "should not match if the times are 23 hours and 58 minutes apart and the current hour is 23 and the current minute is 59" do
|
249
|
+
zero = Time.now
|
250
|
+
|
251
|
+
# Reset the previous time to 00:00:00
|
252
|
+
previous = zero - (zero.hour * 3600) - (zero.min * 60) - zero.sec
|
253
|
+
|
254
|
+
# Set the current time to 23:59
|
255
|
+
now = previous + (23 * 3600) + (59 * 60)
|
256
|
+
|
257
|
+
Time.stubs(:now).returns(now)
|
258
|
+
@schedule.match?(previous).should be_false
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
describe Puppet::Type.type(:schedule), "when matching weekly by number" do
|
263
|
+
include ScheduleTesting
|
264
|
+
|
265
|
+
before do
|
266
|
+
@schedule[:period] = :weekly
|
267
|
+
@schedule[:periodmatch] = :number
|
268
|
+
end
|
269
|
+
|
270
|
+
it "should match if the previous time is prior to the most recent Sunday" do
|
271
|
+
now = Time.now
|
272
|
+
|
273
|
+
# Subtract the number days we've progressed into the week, plus one because we're zero-indexed.
|
274
|
+
previous = now - (3600 * 24 * (now.wday + 1))
|
275
|
+
|
276
|
+
@schedule.match?(previous).should be_true
|
277
|
+
end
|
278
|
+
|
279
|
+
it "should not match if the previous time is after the most recent Saturday" do
|
280
|
+
now = Time.now
|
281
|
+
|
282
|
+
# Subtract the number days we've progressed into the week
|
283
|
+
previous = now - (3600 * 24 * now.wday)
|
284
|
+
|
285
|
+
@schedule.match?(previous).should be_false
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
describe Puppet::Type.type(:schedule), "when matching monthly by number" do
|
290
|
+
include ScheduleTesting
|
291
|
+
|
292
|
+
before do
|
293
|
+
@schedule[:period] = :monthly
|
294
|
+
@schedule[:periodmatch] = :number
|
295
|
+
end
|
296
|
+
|
297
|
+
it "should match when the previous time is prior to the first day of this month" do
|
298
|
+
now = Time.now
|
299
|
+
|
300
|
+
# Subtract the number days we've progressed into the month
|
301
|
+
previous = now - (3600 * 24 * now.day)
|
302
|
+
|
303
|
+
@schedule.match?(previous).should be_true
|
304
|
+
end
|
305
|
+
|
306
|
+
it "should not match when the previous time is after the last day of last month" do
|
307
|
+
now = Time.now
|
308
|
+
|
309
|
+
# Subtract the number days we've progressed into the month, minus one
|
310
|
+
previous = now - (3600 * 24 * (now.day - 1))
|
311
|
+
|
312
|
+
@schedule.match?(previous).should be_false
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
describe Puppet::Type.type(:schedule), "when matching with a repeat greater than one" do
|
317
|
+
include ScheduleTesting
|
318
|
+
|
319
|
+
before do
|
320
|
+
@schedule[:period] = :daily
|
321
|
+
@schedule[:repeat] = 2
|
322
|
+
end
|
323
|
+
|
324
|
+
it "should fail if the periodmatch is 'number'" do
|
325
|
+
@schedule[:periodmatch] = :number
|
326
|
+
proc { @schedule[:repeat] = 2 }.should raise_error(Puppet::Error)
|
327
|
+
end
|
328
|
+
|
329
|
+
it "should match if the previous run was further away than the distance divided by the repeat" do
|
330
|
+
previous = Time.now - (3600 * 13)
|
331
|
+
@schedule.match?(previous).should be_true
|
332
|
+
end
|
333
|
+
|
334
|
+
it "should not match if the previous run was closer than the distance divided by the repeat" do
|
335
|
+
previous = Time.now - (3600 * 11)
|
336
|
+
@schedule.match?(previous).should be_false
|
337
|
+
end
|
338
|
+
end
|
339
|
+
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
|
+
describe Puppet::Type.type(:selboolean), "when validating attributes" do
|
6
|
+
[:name, :persistent].each do |param|
|
7
|
+
it "should have a #{param} parameter" do
|
8
|
+
Puppet::Type.type(:selboolean).attrtype(param).should == :param
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should have a value property" do
|
13
|
+
Puppet::Type.type(:selboolean).attrtype(:value).should == :property
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe Puppet::Type.type(:selboolean), "when validating values" do
|
18
|
+
before do
|
19
|
+
@class = Puppet::Type.type(:selboolean)
|
20
|
+
|
21
|
+
@provider_class = stub 'provider_class', :name => "fake", :suitable? => true, :supports_parameter? => true
|
22
|
+
@class.stubs(:defaultprovider).returns(@provider_class)
|
23
|
+
@class.stubs(:provider).returns(@provider_class)
|
24
|
+
|
25
|
+
@provider = stub 'provider', :class => @provider_class, :clear => nil
|
26
|
+
@provider_class.stubs(:new).returns(@provider)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should support :on as a value to :value" do
|
30
|
+
Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should support :off as a value to :value" do
|
34
|
+
Puppet::Type.type(:selboolean).create(:name => "yay", :value => :off)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should support :true as a value to :persistent" do
|
38
|
+
Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on, :persistent => :true)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should support :false as a value to :persistent" do
|
42
|
+
Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on, :persistent => :false)
|
43
|
+
end
|
44
|
+
|
45
|
+
after { Puppet::Type.type(:selboolean).clear }
|
46
|
+
end
|
47
|
+
|
@@ -0,0 +1,18 @@
|
|
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
|
+
describe Puppet::Type.type(:selmodule), "when validating attributes" do
|
6
|
+
[:name, :selmoduledir, :selmodulepath].each do |param|
|
7
|
+
it "should have a #{param} parameter" do
|
8
|
+
Puppet::Type.type(:selmodule).attrtype(param).should == :param
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
[:ensure, :syncversion].each do |param|
|
13
|
+
it "should have a #{param} property" do
|
14
|
+
Puppet::Type.type(:selmodule).attrtype(param).should == :property
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,254 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Type.type(:service) do
|
6
|
+
it "should have an :enableable feature that requires the :enable, :disable, and :enabled? methods" do
|
7
|
+
Puppet::Type.type(:service).provider_feature(:enableable).methods.should == [:disable, :enable, :enabled?]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have a :refreshable feature that requires the :restart method" do
|
11
|
+
Puppet::Type.type(:service).provider_feature(:refreshable).methods.should == [:restart]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe Puppet::Type.type(:service), "when validating attributes" do
|
16
|
+
[:name, :binary, :hasstatus, :path, :pattern, :start, :restart, :stop, :status, :hasrestart, :control].each do |param|
|
17
|
+
it "should have a #{param} parameter" do
|
18
|
+
Puppet::Type.type(:service).attrtype(param).should == :param
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
[:ensure, :enable].each do |param|
|
23
|
+
it "should have an #{param} property" do
|
24
|
+
Puppet::Type.type(:service).attrtype(param).should == :property
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe Puppet::Type.type(:service), "when validating attribute values" do
|
30
|
+
before do
|
31
|
+
@provider = stub 'provider', :class => Puppet::Type.type(:service).defaultprovider, :clear => nil, :controllable? => false
|
32
|
+
Puppet::Type.type(:service).defaultprovider.stubs(:new).returns(@provider)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should support :running as a value to :ensure" do
|
36
|
+
Puppet::Type.type(:service).create(:name => "yay", :ensure => :running)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should support :stopped as a value to :ensure" do
|
40
|
+
Puppet::Type.type(:service).create(:name => "yay", :ensure => :stopped)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should alias the value :true to :running in :ensure" do
|
44
|
+
svc = Puppet::Type.type(:service).create(:name => "yay", :ensure => true)
|
45
|
+
svc.should(:ensure).should == :running
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should alias the value :false to :stopped in :ensure" do
|
49
|
+
svc = Puppet::Type.type(:service).create(:name => "yay", :ensure => false)
|
50
|
+
svc.should(:ensure).should == :stopped
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should support :true as a value to :enable" do
|
54
|
+
Puppet::Type.type(:service).create(:name => "yay", :enable => :true)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should support :false as a value to :enable" do
|
58
|
+
Puppet::Type.type(:service).create(:name => "yay", :enable => :false)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should support :true as a value to :hasstatus" do
|
62
|
+
Puppet::Type.type(:service).create(:name => "yay", :hasstatus => :true)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should support :false as a value to :hasstatus" do
|
66
|
+
Puppet::Type.type(:service).create(:name => "yay", :hasstatus => :false)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should support :true as a value to :hasrestart" do
|
70
|
+
Puppet::Type.type(:service).create(:name => "yay", :hasrestart => :true)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should support :false as a value to :hasrestart" do
|
74
|
+
Puppet::Type.type(:service).create(:name => "yay", :hasrestart => :false)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should allow setting the :enable parameter if the provider has the :enableable feature" do
|
78
|
+
Puppet::Type.type(:service).defaultprovider.stubs(:supports_parameter?).returns(true)
|
79
|
+
Puppet::Type.type(:service).defaultprovider.expects(:supports_parameter?).with(Puppet::Type.type(:service).attrclass(:enable)).returns(true)
|
80
|
+
svc = Puppet::Type.type(:service).create(:name => "yay", :enable => true)
|
81
|
+
svc.should(:enable).should == :true
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should not allow setting the :enable parameter if the provider is missing the :enableable feature" do
|
85
|
+
Puppet::Type.type(:service).defaultprovider.stubs(:supports_parameter?).returns(true)
|
86
|
+
Puppet::Type.type(:service).defaultprovider.expects(:supports_parameter?).with(Puppet::Type.type(:service).attrclass(:enable)).returns(false)
|
87
|
+
svc = Puppet::Type.type(:service).create(:name => "yay", :enable => true)
|
88
|
+
svc.should(:enable).should be_nil
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should discard paths that do not exist" do
|
92
|
+
FileTest.stubs(:exist?).returns(false)
|
93
|
+
FileTest.stubs(:directory?).returns(false)
|
94
|
+
svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two")
|
95
|
+
svc[:path].should be_empty
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should discard paths that are not directories" do
|
99
|
+
FileTest.stubs(:exist?).returns(true)
|
100
|
+
FileTest.stubs(:directory?).returns(false)
|
101
|
+
svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two")
|
102
|
+
svc[:path].should be_empty
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should split paths on ':'" do
|
106
|
+
FileTest.stubs(:exist?).returns(true)
|
107
|
+
FileTest.stubs(:directory?).returns(true)
|
108
|
+
svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two:/three/four")
|
109
|
+
svc[:path].should == %w{/one/two /three/four}
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should accept arrays of paths joined by ':'" do
|
113
|
+
FileTest.stubs(:exist?).returns(true)
|
114
|
+
FileTest.stubs(:directory?).returns(true)
|
115
|
+
svc = Puppet::Type.type(:service).create(:name => "yay", :path => ["/one:/two", "/three:/four"])
|
116
|
+
svc[:path].should == %w{/one /two /three /four}
|
117
|
+
end
|
118
|
+
|
119
|
+
after { Puppet::Type.type(:service).clear }
|
120
|
+
end
|
121
|
+
|
122
|
+
describe Puppet::Type.type(:service), "when setting default attribute values" do
|
123
|
+
it "should default to the provider's default path if one is available" do
|
124
|
+
FileTest.stubs(:directory?).returns(true)
|
125
|
+
FileTest.stubs(:exist?).returns(true)
|
126
|
+
|
127
|
+
Puppet::Type.type(:service).defaultprovider.stubs(:respond_to?).returns(true)
|
128
|
+
Puppet::Type.type(:service).defaultprovider.stubs(:defpath).returns("testing")
|
129
|
+
svc = Puppet::Type.type(:service).create(:name => "other")
|
130
|
+
svc[:path].should == ["testing"]
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should default 'pattern' to the binary if one is provided" do
|
134
|
+
svc = Puppet::Type.type(:service).create(:name => "other", :binary => "/some/binary")
|
135
|
+
svc[:pattern].should == "/some/binary"
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should default 'pattern' to the name if no pattern is provided" do
|
139
|
+
svc = Puppet::Type.type(:service).create(:name => "other")
|
140
|
+
svc[:pattern].should == "other"
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should default 'control' to the upcased service name with periods replaced by underscores if the provider supports the 'controllable' feature" do
|
144
|
+
provider = stub 'provider', :controllable? => true, :class => Puppet::Type.type(:service).defaultprovider, :clear => nil
|
145
|
+
Puppet::Type.type(:service).defaultprovider.stubs(:new).returns(provider)
|
146
|
+
svc = Puppet::Type.type(:service).create(:name => "nfs.client")
|
147
|
+
svc[:control].should == "NFS_CLIENT_START"
|
148
|
+
end
|
149
|
+
|
150
|
+
after { Puppet::Type.type(:service).clear }
|
151
|
+
end
|
152
|
+
|
153
|
+
describe Puppet::Type.type(:service), "when retrieving the host's current state" do
|
154
|
+
before do
|
155
|
+
@service = Puppet::Type.type(:service).create(:name => "yay")
|
156
|
+
end
|
157
|
+
|
158
|
+
it "should use the provider's status to determine whether the service is running" do
|
159
|
+
@service.provider.expects(:status).returns(:yepper)
|
160
|
+
@service[:ensure] = :running
|
161
|
+
@service.property(:ensure).retrieve.should == :yepper
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should ask the provider whether it is enabled" do
|
165
|
+
@service.provider.class.stubs(:supports_parameter?).returns(true)
|
166
|
+
@service.provider.expects(:enabled?).returns(:yepper)
|
167
|
+
@service[:enable] = true
|
168
|
+
@service.property(:enable).retrieve.should == :yepper
|
169
|
+
end
|
170
|
+
|
171
|
+
after { Puppet::Type.type(:service).clear }
|
172
|
+
end
|
173
|
+
|
174
|
+
describe Puppet::Type.type(:service), "when changing the host" do
|
175
|
+
before do
|
176
|
+
@service = Puppet::Type.type(:service).create(:name => "yay")
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should start the service if it is supposed to be running" do
|
180
|
+
@service[:ensure] = :running
|
181
|
+
@service.provider.expects(:start)
|
182
|
+
@service.property(:ensure).sync
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should stop the service if it is supposed to be stopped" do
|
186
|
+
@service[:ensure] = :stopped
|
187
|
+
@service.provider.expects(:stop)
|
188
|
+
@service.property(:ensure).sync
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should enable the service if it is supposed to be enabled" do
|
192
|
+
@service.provider.class.stubs(:supports_parameter?).returns(true)
|
193
|
+
@service[:enable] = true
|
194
|
+
@service.provider.expects(:enable)
|
195
|
+
@service.property(:enable).sync
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should disable the service if it is supposed to be disabled" do
|
199
|
+
@service.provider.class.stubs(:supports_parameter?).returns(true)
|
200
|
+
@service[:enable] = false
|
201
|
+
@service.provider.expects(:disable)
|
202
|
+
@service.property(:enable).sync
|
203
|
+
end
|
204
|
+
|
205
|
+
it "should sync the service's enable state when changing the state of :ensure if :enable is being managed" do
|
206
|
+
@service.provider.class.stubs(:supports_parameter?).returns(true)
|
207
|
+
@service[:enable] = false
|
208
|
+
@service[:ensure] = :stopped
|
209
|
+
|
210
|
+
@service.property(:enable).expects(:retrieve).returns("whatever")
|
211
|
+
@service.property(:enable).expects(:insync?).returns(false)
|
212
|
+
@service.property(:enable).expects(:sync)
|
213
|
+
|
214
|
+
@service.provider.stubs(:stop)
|
215
|
+
|
216
|
+
@service.property(:ensure).sync
|
217
|
+
end
|
218
|
+
|
219
|
+
after { Puppet::Type.type(:service).clear }
|
220
|
+
end
|
221
|
+
|
222
|
+
describe Puppet::Type.type(:service), "when refreshing the service" do
|
223
|
+
before do
|
224
|
+
@service = Puppet::Type.type(:service).create(:name => "yay")
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should restart the service if it is running" do
|
228
|
+
@service[:ensure] = :running
|
229
|
+
@service.provider.expects(:status).returns(:running)
|
230
|
+
@service.provider.expects(:restart)
|
231
|
+
@service.refresh
|
232
|
+
end
|
233
|
+
|
234
|
+
it "should restart the service if it is running, even if it is supposed to stopped" do
|
235
|
+
@service[:ensure] = :stopped
|
236
|
+
@service.provider.expects(:status).returns(:running)
|
237
|
+
@service.provider.expects(:restart)
|
238
|
+
@service.refresh
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should not restart the service if it is not running" do
|
242
|
+
@service[:ensure] = :running
|
243
|
+
@service.provider.expects(:status).returns(:stopped)
|
244
|
+
@service.refresh
|
245
|
+
end
|
246
|
+
|
247
|
+
it "should add :ensure as a property if it is not being managed" do
|
248
|
+
@service.provider.expects(:status).returns(:running)
|
249
|
+
@service.provider.expects(:restart)
|
250
|
+
@service.refresh
|
251
|
+
end
|
252
|
+
|
253
|
+
after { Puppet::Type.type(:service).clear }
|
254
|
+
end
|