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,87 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
provider_class = Puppet::Type.type(:package).provider(:gem)
|
6
|
+
|
7
|
+
describe provider_class do
|
8
|
+
it "should have an install method" do
|
9
|
+
@provider = provider_class.new
|
10
|
+
@provider.should respond_to(:install)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when installing" do
|
14
|
+
before do
|
15
|
+
# Create a mock resource
|
16
|
+
@resource = stub 'resource'
|
17
|
+
|
18
|
+
# A catch all; no parameters set
|
19
|
+
@resource.stubs(:[]).returns nil
|
20
|
+
|
21
|
+
# We have to set a name, though
|
22
|
+
@resource.stubs(:[]).with(:name).returns "myresource"
|
23
|
+
@resource.stubs(:[]).with(:ensure).returns :installed
|
24
|
+
|
25
|
+
@provider = provider_class.new
|
26
|
+
@provider.stubs(:resource).returns @resource
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should use the path to the gem" do
|
30
|
+
provider_class.stubs(:command).with(:gemcmd).returns "/my/gem"
|
31
|
+
@provider.expects(:execute).with { |args| args[0] == "/my/gem" }.returns ""
|
32
|
+
@provider.install
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should specify that the gem is being installed" do
|
36
|
+
@provider.expects(:execute).with { |args| args[1] == "install" }.returns ""
|
37
|
+
@provider.install
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should specify that dependencies should be included" do
|
41
|
+
@provider.expects(:execute).with { |args| args[2] == "--include-dependencies" }.returns ""
|
42
|
+
@provider.install
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should specify the package name" do
|
46
|
+
@provider.expects(:execute).with { |args| args[3] == "myresource" }.returns ""
|
47
|
+
@provider.install
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "when a source is specified" do
|
51
|
+
describe "as a normal file" do
|
52
|
+
it "should use the file name instead of the gem name" do
|
53
|
+
@resource.stubs(:[]).with(:source).returns "/my/file"
|
54
|
+
@provider.expects(:execute).with { |args| args[3] == "/my/file" }.returns ""
|
55
|
+
@provider.install
|
56
|
+
end
|
57
|
+
end
|
58
|
+
describe "as a file url" do
|
59
|
+
it "should use the file name instead of the gem name" do
|
60
|
+
@resource.stubs(:[]).with(:source).returns "file:///my/file"
|
61
|
+
@provider.expects(:execute).with { |args| args[3] == "/my/file" }.returns ""
|
62
|
+
@provider.install
|
63
|
+
end
|
64
|
+
end
|
65
|
+
describe "as a puppet url" do
|
66
|
+
it "should fail" do
|
67
|
+
@resource.stubs(:[]).with(:source).returns "puppet://my/file"
|
68
|
+
lambda { @provider.install }.should raise_error(Puppet::Error)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
describe "as a non-file and non-puppet url" do
|
72
|
+
it "should treat the source as a gem repository" do
|
73
|
+
@resource.stubs(:[]).with(:source).returns "http://host/my/file"
|
74
|
+
@provider.expects(:execute).with { |args| args[3..5] == ["--source", "http://host/my/file", "myresource"] }.returns ""
|
75
|
+
@provider.install
|
76
|
+
end
|
77
|
+
end
|
78
|
+
describe "with an invalid uri" do
|
79
|
+
it "should fail" do
|
80
|
+
URI.expects(:parse).raises(ArgumentError)
|
81
|
+
@resource.stubs(:[]).with(:source).returns "http:::::uppet:/:/my/file"
|
82
|
+
lambda { @provider.install }.should raise_error(Puppet::Error)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
provider_class = Puppet::Type.type(:package).provider(:hpux)
|
6
|
+
|
7
|
+
describe provider_class do
|
8
|
+
before(:each) do
|
9
|
+
# Create a mock resource
|
10
|
+
@resource = stub 'resource'
|
11
|
+
|
12
|
+
# A catch all; no parameters set
|
13
|
+
@resource.stubs(:[]).returns(nil)
|
14
|
+
|
15
|
+
# But set name and source
|
16
|
+
@resource.stubs(:[]).with(:name).returns "mypackage"
|
17
|
+
@resource.stubs(:[]).with(:source).returns "mysource"
|
18
|
+
@resource.stubs(:[]).with(:ensure).returns :installed
|
19
|
+
|
20
|
+
@provider = provider_class.new
|
21
|
+
@provider.stubs(:resource).returns @resource
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should have an install method" do
|
25
|
+
@provider = provider_class.new
|
26
|
+
@provider.should respond_to(:install)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have an uninstall method" do
|
30
|
+
@provider = provider_class.new
|
31
|
+
@provider.should respond_to(:uninstall)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should have a swlist method" do
|
35
|
+
@provider = provider_class.new
|
36
|
+
@provider.should respond_to(:swlist)
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "when installing" do
|
40
|
+
it "should use a command-line like 'swinstall -x mount_all_filesystems=false -s SOURCE PACKAGE-NAME'" do
|
41
|
+
@provider.expects(:swinstall).with('-x', 'mount_all_filesystems=false', '-s', 'mysource', 'mypackage')
|
42
|
+
@provider.install
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "when uninstalling" do
|
47
|
+
it "should use a command-line like 'swremove -x mount_all_filesystems=false PACKAGE-NAME'" do
|
48
|
+
@provider.expects(:swremove).with('-x', 'mount_all_filesystems=false', 'mypackage')
|
49
|
+
@provider.uninstall
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,37 @@
|
|
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
|
+
provider_class = Puppet::Type.type(:selboolean).provider(:getsetsebool)
|
6
|
+
|
7
|
+
describe provider_class do
|
8
|
+
before :each do
|
9
|
+
@resource = stub("resource", :name => "foo")
|
10
|
+
@resource.stubs(:[]).returns "foo"
|
11
|
+
@provider = provider_class.new(@resource)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should return :on when getsebool returns on" do
|
15
|
+
@provider.expects(:getsebool).with("foo").returns "foo --> on\n"
|
16
|
+
@provider.value.should == :on
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return :off when getsebool returns on" do
|
20
|
+
@provider.expects(:getsebool).with("foo").returns "foo --> off\n"
|
21
|
+
@provider.value.should == :off
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should call execpipe when updating boolean setting" do
|
25
|
+
@provider.expects(:command).with(:setsebool).returns "/usr/sbin/setsebool"
|
26
|
+
@provider.expects(:execpipe).with("/usr/sbin/setsebool foo off")
|
27
|
+
@provider.value = :off
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should call execpipe with -P when updating persistent boolean setting" do
|
31
|
+
@resource.stubs(:[]).with(:persistent).returns :true
|
32
|
+
@provider.expects(:command).with(:setsebool).returns "/usr/sbin/setsebool"
|
33
|
+
@provider.expects(:execpipe).with("/usr/sbin/setsebool -P foo off")
|
34
|
+
@provider.value = :off
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
Binary file
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Note: This unit test depends on having a sample SELinux policy file
|
4
|
+
# in the same directory as this test called selmodule-example.pp
|
5
|
+
# with version 1.5.0. The provided selmodule-example.pp is the first
|
6
|
+
# 256 bytes taken from /usr/share/selinux/targeted/nagios.pp on Fedora 9
|
7
|
+
|
8
|
+
Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
|
9
|
+
|
10
|
+
provider_class = Puppet::Type.type(:selmodule).provider(:semodule)
|
11
|
+
|
12
|
+
describe provider_class do
|
13
|
+
before :each do
|
14
|
+
@resource = stub("resource", :name => "foo")
|
15
|
+
@resource.stubs(:[]).returns "foo"
|
16
|
+
@provider = provider_class.new(@resource)
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "exists? method" do
|
20
|
+
it "should find a module if it is already loaded" do
|
21
|
+
@provider.expects(:command).with(:semodule).returns "/usr/sbin/semodule"
|
22
|
+
@provider.expects(:execpipe).with("/usr/sbin/semodule --list").yields ["bar\t1.2.3\n", "foo\t4.4.4\n", "bang\t1.0.0\n"]
|
23
|
+
@provider.exists?.should == :true
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return nil if not loaded" do
|
27
|
+
@provider.expects(:command).with(:semodule).returns "/usr/sbin/semodule"
|
28
|
+
@provider.expects(:execpipe).with("/usr/sbin/semodule --list").yields ["bar\t1.2.3\n", "bang\t1.0.0\n"]
|
29
|
+
@provider.exists?.should be_nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should return nil if no modules are loaded" do
|
33
|
+
@provider.expects(:command).with(:semodule).returns "/usr/sbin/semodule"
|
34
|
+
@provider.expects(:execpipe).with("/usr/sbin/semodule --list").yields []
|
35
|
+
@provider.exists?.should be_nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "selmodversion_file" do
|
40
|
+
it "should return 1.5.0 for the example policy file" do
|
41
|
+
@provider.expects(:selmod_name_to_filename).returns "#{File.dirname(__FILE__)}/selmodule-example.pp"
|
42
|
+
@provider.selmodversion_file.should == "1.5.0"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "syncversion" do
|
47
|
+
it "should return :true if loaded and file modules are in sync" do
|
48
|
+
@provider.expects(:selmodversion_loaded).returns "1.5.0"
|
49
|
+
@provider.expects(:selmodversion_file).returns "1.5.0"
|
50
|
+
@provider.syncversion.should == :true
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should return :false if loaded and file modules are not in sync" do
|
54
|
+
@provider.expects(:selmodversion_loaded).returns "1.4.0"
|
55
|
+
@provider.expects(:selmodversion_file).returns "1.5.0"
|
56
|
+
@provider.syncversion.should == :false
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should return before checking file version if no loaded policy" do
|
60
|
+
@provider.expects(:selmodversion_loaded).returns nil
|
61
|
+
@provider.syncversion.should == :false
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Unit testing for the Daemontools service Provider
|
4
|
+
#
|
5
|
+
# author Brice Figureau
|
6
|
+
#
|
7
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
8
|
+
|
9
|
+
provider_class = Puppet::Type.type(:service).provider(:daemontools)
|
10
|
+
|
11
|
+
describe provider_class do
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
# Create a mock resource
|
15
|
+
@resource = stub 'resource'
|
16
|
+
|
17
|
+
@provider = provider_class.new
|
18
|
+
@servicedir = "/etc/service"
|
19
|
+
@provider.servicedir=@servicedir
|
20
|
+
@daemondir = "/var/lib/service"
|
21
|
+
@provider.class.defpath=@daemondir
|
22
|
+
|
23
|
+
# A catch all; no parameters set
|
24
|
+
@resource.stubs(:[]).returns(nil)
|
25
|
+
|
26
|
+
# But set name, source and path (because we won't run
|
27
|
+
# the thing that will fetch the resource path from the provider)
|
28
|
+
@resource.stubs(:[]).with(:name).returns "myservice"
|
29
|
+
@resource.stubs(:[]).with(:ensure).returns :enabled
|
30
|
+
@resource.stubs(:[]).with(:path).returns @daemondir
|
31
|
+
@resource.stubs(:ref).returns "Service[myservice]"
|
32
|
+
|
33
|
+
@provider.stubs(:resource).returns @resource
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should have a restartcmd method" do
|
37
|
+
@provider.should respond_to(:restartcmd)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should have a start method" do
|
41
|
+
@provider.should respond_to(:start)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should have a stop method" do
|
45
|
+
@provider.should respond_to(:stop)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should have an enabled? method" do
|
49
|
+
@provider.should respond_to(:enabled?)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should have an enable method" do
|
53
|
+
@provider.should respond_to(:enable)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should have a disable method" do
|
57
|
+
@provider.should respond_to(:disable)
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "when starting" do
|
61
|
+
it "should call enable" do
|
62
|
+
@provider.expects(:enable)
|
63
|
+
@provider.start
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "when stopping" do
|
68
|
+
it "should call disable" do
|
69
|
+
@provider.expects(:disable)
|
70
|
+
@provider.stop
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "when enabling" do
|
75
|
+
it "should create a symlink between daemon dir and service dir" do
|
76
|
+
FileTest.stubs(:symlink?).returns(false)
|
77
|
+
File.expects(:symlink).with(File.join(@daemondir,"myservice"), File.join(@servicedir,"myservice")).returns(0)
|
78
|
+
@provider.enable
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "when disabling" do
|
83
|
+
it "should stop and then remove the symlink between daemon dir and service dir" do
|
84
|
+
FileTest.stubs(:directory?).returns(false)
|
85
|
+
FileTest.stubs(:symlink?).returns(true)
|
86
|
+
File.expects(:unlink).with(File.join(@servicedir,"myservice")).returns(0)
|
87
|
+
@provider.stubs(:texecute).returns("")
|
88
|
+
@provider.disable
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "when disabling" do
|
93
|
+
it "should also call 'svc -dx /etc/service/myservice'" do
|
94
|
+
FileTest.stubs(:directory?).returns(false)
|
95
|
+
FileTest.stubs(:symlink?).returns(true)
|
96
|
+
File.expects(:unlink).with(File.join(@servicedir,"myservice")).returns(0)
|
97
|
+
@provider.expects(:texecute).with("stop", [nil, '-dx', File.join(@servicedir,"myservice")]).returns ""
|
98
|
+
@provider.disable
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "when checking status" do
|
103
|
+
it "should call the external command 'svstat /etc/service/myservice'" do
|
104
|
+
@provider.expects(:svstat).with(File.join(@servicedir,"myservice"))
|
105
|
+
@provider.status
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "when checking status" do
|
110
|
+
it "and svstat fails, properly raise a Puppet::Error" do
|
111
|
+
@provider.expects(:svstat).with(File.join(@servicedir,"myservice")).raises(Puppet::ExecutionFailure, "failure")
|
112
|
+
lambda { @provider.status }.should raise_error(Puppet::Error, 'Could not get status for service Service[myservice]: failure')
|
113
|
+
end
|
114
|
+
it "and svstat returns up, then return :running" do
|
115
|
+
@provider.expects(:svstat).with(File.join(@servicedir,"myservice")).returns("/etc/service/myservice: up (pid 454) 954326 seconds")
|
116
|
+
@provider.status.should == :running
|
117
|
+
end
|
118
|
+
it "and svstat returns not running, then return :stopped" do
|
119
|
+
@provider.expects(:svstat).with(File.join(@servicedir,"myservice")).returns("/etc/service/myservice: supervise not running")
|
120
|
+
@provider.status.should == :stopped
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Unit testing for the launchd service provider
|
4
|
+
#
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet'
|
9
|
+
|
10
|
+
provider_class = Puppet::Type.type(:service).provider(:launchd)
|
11
|
+
|
12
|
+
describe provider_class do
|
13
|
+
|
14
|
+
before :each do
|
15
|
+
# Create a mock resource
|
16
|
+
@resource = stub 'resource'
|
17
|
+
|
18
|
+
@provider = provider_class.new
|
19
|
+
@joblabel = "com.foo.food"
|
20
|
+
@jobplist = {}
|
21
|
+
|
22
|
+
# A catch all; no parameters set
|
23
|
+
@resource.stubs(:[]).returns(nil)
|
24
|
+
|
25
|
+
# But set name, ensure and enable
|
26
|
+
@resource.stubs(:[]).with(:name).returns @joblabel
|
27
|
+
@resource.stubs(:[]).with(:ensure).returns :enabled
|
28
|
+
@resource.stubs(:[]).with(:enable).returns :true
|
29
|
+
@resource.stubs(:ref).returns "Service[#{@joblabel}]"
|
30
|
+
|
31
|
+
# stub out the provider methods that actually touch the filesystem
|
32
|
+
# or execute commands
|
33
|
+
@provider.stubs(:plist_from_label).returns([@joblabel, @jobplist])
|
34
|
+
@provider.stubs(:execute).returns("")
|
35
|
+
@provider.stubs(:resource).returns @resource
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should have a start method for #{@provider.object_id}" do
|
39
|
+
@provider.should respond_to(:start)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should have a stop method" do
|
43
|
+
@provider.should respond_to(:stop)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should have an enabled? method" do
|
47
|
+
@provider.should respond_to(:enabled?)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should have an enable method" do
|
51
|
+
@provider.should respond_to(:enable)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should have a disable method" do
|
55
|
+
@provider.should respond_to(:disable)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should have a status method" do
|
59
|
+
@provider.should respond_to(:status)
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
describe "when checking status" do
|
64
|
+
it "should call the external command 'launchctl list' once" do
|
65
|
+
@provider.expects(:launchctl).with(:list, @resource[:name]).returns(:running).once
|
66
|
+
@provider.status
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "when starting the service" do
|
71
|
+
it "should look for the relevant plist once" do
|
72
|
+
@provider.expects(:plist_from_label).once
|
73
|
+
@provider.start
|
74
|
+
end
|
75
|
+
it "should execute 'launchctl load' once without writing to the plist if the job is enabled" do
|
76
|
+
@provider.stubs(:enabled?).returns :true
|
77
|
+
@provider.expects(:execute).with([:launchctl, :load, @resource[:name]]).once
|
78
|
+
@provider.start
|
79
|
+
end
|
80
|
+
it "should execute 'launchctl load' with writing to the plist once if the job is disabled" do
|
81
|
+
@provider.stubs(:enabled?).returns :false
|
82
|
+
@provider.expects(:execute).with([:launchctl, :load, "-w", @resource[:name]]).once
|
83
|
+
@provider.start
|
84
|
+
end
|
85
|
+
it "should disable the job once if the job is disabled and should be disabled at boot" do
|
86
|
+
@provider.stubs(:enabled?).returns :false
|
87
|
+
@resource.stubs(:[]).with(:enable).returns :false
|
88
|
+
@provider.expects(:disable).once
|
89
|
+
@provider.start
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "when stopping the service" do
|
94
|
+
it "should look for the relevant plist once" do
|
95
|
+
@provider.expects(:plist_from_label).once
|
96
|
+
@provider.stop
|
97
|
+
end
|
98
|
+
it "should execute 'launchctl unload' once without writing to the plist if the job is disabled" do
|
99
|
+
@provider.stubs(:enabled?).returns :false
|
100
|
+
@provider.expects(:execute).with([:launchctl, :unload, @resource[:name]]).once
|
101
|
+
@provider.stop
|
102
|
+
end
|
103
|
+
it "should execute 'launchctl unload' with writing to the plist once if the job is enabled" do
|
104
|
+
@provider.stubs(:enabled?).returns :true
|
105
|
+
@provider.expects(:execute).with([:launchctl, :unload, "-w", @resource[:name]]).once
|
106
|
+
@provider.stop
|
107
|
+
end
|
108
|
+
it "should enable the job once if the job is enabled and should be enabled at boot" do
|
109
|
+
@provider.stubs(:enabled?).returns :true
|
110
|
+
@resource.stubs(:[]).with(:enable).returns :true
|
111
|
+
@provider.expects(:enable).once
|
112
|
+
@provider.stop
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "when enabling the service" do
|
117
|
+
it "should look for the relevant plist once" do
|
118
|
+
@provider.expects(:plist_from_label).once
|
119
|
+
@provider.stop
|
120
|
+
end
|
121
|
+
it "should check if the job is enabled once" do
|
122
|
+
@provider.expects(:enabled?).once
|
123
|
+
@provider.stop
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe "when disabling the service" do
|
128
|
+
it "should look for the relevant plist once" do
|
129
|
+
@provider.expects(:plist_from_label).once
|
130
|
+
@provider.stop
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|