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,106 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
ssh_authorized_key = Puppet::Type.type(:ssh_authorized_key)
|
6
|
+
|
7
|
+
describe ssh_authorized_key do
|
8
|
+
before do
|
9
|
+
@class = Puppet::Type.type(:ssh_authorized_key)
|
10
|
+
|
11
|
+
@provider_class = stub 'provider_class', :name => "fake", :suitable? => true, :supports_parameter? => true
|
12
|
+
@class.stubs(:defaultprovider).returns(@provider_class)
|
13
|
+
@class.stubs(:provider).returns(@provider_class)
|
14
|
+
|
15
|
+
@provider = stub 'provider', :class => @provider_class, :file_path => "/tmp/whatever", :clear => nil
|
16
|
+
@provider_class.stubs(:new).returns(@provider)
|
17
|
+
@catalog = Puppet::Node::Catalog.new
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should have a name parameter" do
|
21
|
+
@class.attrtype(:name).should == :param
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should have :name be its namevar" do
|
25
|
+
@class.namevar.should == :name
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have a :provider parameter" do
|
29
|
+
@class.attrtype(:provider).should == :param
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should have an ensure property" do
|
33
|
+
@class.attrtype(:ensure).should == :property
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should support :present as a value for :ensure" do
|
37
|
+
proc { @class.create(:name => "whev", :ensure => :present, :user => "nobody") }.should_not raise_error
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should support :absent as a value for :ensure" do
|
41
|
+
proc { @class.create(:name => "whev", :ensure => :absent, :user => "nobody") }.should_not raise_error
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should have an type property" do
|
45
|
+
@class.attrtype(:type).should == :property
|
46
|
+
end
|
47
|
+
it "should support ssh-dss as an type value" do
|
48
|
+
proc { @class.create(:name => "whev", :type => "ssh-dss", :user => "nobody") }.should_not raise_error
|
49
|
+
end
|
50
|
+
it "should support ssh-rsa as an type value" do
|
51
|
+
proc { @class.create(:name => "whev", :type => "ssh-rsa", :user => "nobody") }.should_not raise_error
|
52
|
+
end
|
53
|
+
it "should support :dsa as an type value" do
|
54
|
+
proc { @class.create(:name => "whev", :type => :dsa, :user => "nobody") }.should_not raise_error
|
55
|
+
end
|
56
|
+
it "should support :rsa as an type value" do
|
57
|
+
proc { @class.create(:name => "whev", :type => :rsa, :user => "nobody") }.should_not raise_error
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should not support values other than ssh-dss, ssh-rsa, dsa, rsa in the ssh_authorized_key_type" do
|
61
|
+
proc { @class.create(:name => "whev", :type => :something) }.should raise_error(Puppet::Error)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should have an key property" do
|
65
|
+
@class.attrtype(:key).should == :property
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should have an user property" do
|
69
|
+
@class.attrtype(:user).should == :property
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should have an options property" do
|
73
|
+
@class.attrtype(:options).should == :property
|
74
|
+
end
|
75
|
+
|
76
|
+
it "'s options property should return well formed string of arrays from is_to_s" do
|
77
|
+
resource = @class.create(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
|
78
|
+
|
79
|
+
resource.property(:options).is_to_s(["a","b","c"]).should == "a,b,c"
|
80
|
+
end
|
81
|
+
|
82
|
+
it "'s options property should return well formed string of arrays from is_to_s" do
|
83
|
+
resource = @class.create(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
|
84
|
+
|
85
|
+
resource.property(:options).should_to_s(["a","b","c"]).should == "a,b,c"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should have a target property" do
|
89
|
+
@class.attrtype(:target).should == :property
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should raise an error when neither user nor target is given" do
|
93
|
+
proc do
|
94
|
+
@class.create(
|
95
|
+
:name => "Test",
|
96
|
+
:key => "AAA",
|
97
|
+
:type => "ssh-rsa",
|
98
|
+
:ensure => :present)
|
99
|
+
end.should raise_error(Puppet::Error)
|
100
|
+
end
|
101
|
+
|
102
|
+
after do
|
103
|
+
@class.clear
|
104
|
+
@catalog.clear
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
tidy = Puppet::Type.type(:tidy)
|
6
|
+
|
7
|
+
describe tidy do
|
8
|
+
after { tidy.clear }
|
9
|
+
|
10
|
+
it "should be in sync if the targeted file does not exist" do
|
11
|
+
File.expects(:lstat).with("/tmp/foonesslaters").raises Errno::ENOENT
|
12
|
+
@tidy = tidy.create :path => "/tmp/foonesslaters", :age => "100d"
|
13
|
+
|
14
|
+
@tidy.property(:ensure).must be_insync({})
|
15
|
+
end
|
16
|
+
|
17
|
+
[:ensure, :age, :size].each do |property|
|
18
|
+
it "should have a %s property" % property do
|
19
|
+
tidy.attrclass(property).ancestors.should be_include(Puppet::Property)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have documentation for its %s property" % property do
|
23
|
+
tidy.attrclass(property).doc.should be_instance_of(String)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
[:path, :matches, :type, :recurse, :rmdirs].each do |param|
|
28
|
+
it "should have a %s parameter" % param do
|
29
|
+
tidy.attrclass(param).ancestors.should be_include(Puppet::Parameter)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should have documentation for its %s param" % param do
|
33
|
+
tidy.attrclass(param).doc.should be_instance_of(String)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "when validating parameter values" do
|
38
|
+
describe "for 'recurse'" do
|
39
|
+
before do
|
40
|
+
@tidy = tidy.create :path => "/tmp", :age => "100d"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should allow 'true'" do
|
44
|
+
lambda { @tidy[:recurse] = true }.should_not raise_error
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should allow 'false'" do
|
48
|
+
lambda { @tidy[:recurse] = false }.should_not raise_error
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should allow integers" do
|
52
|
+
lambda { @tidy[:recurse] = 10 }.should_not raise_error
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should allow string representations of integers" do
|
56
|
+
lambda { @tidy[:recurse] = "10" }.should_not raise_error
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should allow 'inf'" do
|
60
|
+
lambda { @tidy[:recurse] = "inf" }.should_not raise_error
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should not allow arbitrary values" do
|
64
|
+
lambda { @tidy[:recurse] = "whatever" }.should raise_error
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,260 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
user = Puppet::Type.type(:user)
|
6
|
+
|
7
|
+
describe user do
|
8
|
+
before do
|
9
|
+
@provider = stub 'provider'
|
10
|
+
@resource = stub 'resource', :resource => nil, :provider => @provider, :line => nil, :file => nil
|
11
|
+
end
|
12
|
+
|
13
|
+
after { user.clear }
|
14
|
+
|
15
|
+
it "should have a default provider inheriting from Puppet::Provider" do
|
16
|
+
user.defaultprovider.ancestors.should be_include(Puppet::Provider)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be able to create a instance" do
|
20
|
+
user.create(:name => "foo").should_not be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should have an allows_duplicates feature" do
|
24
|
+
user.provider_feature(:allows_duplicates).should_not be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should have an manages_homedir feature" do
|
28
|
+
user.provider_feature(:manages_homedir).should_not be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should have an manages_passwords feature" do
|
32
|
+
user.provider_feature(:manages_passwords).should_not be_nil
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should have a manages_solaris_rbac feature" do
|
36
|
+
user.provider_feature(:manages_solaris_rbac).should_not be_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "instances" do
|
40
|
+
it "should have a valid provider" do
|
41
|
+
user.create(:name => "foo").provider.class.ancestors.should be_include(Puppet::Provider)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
properties = [:ensure, :uid, :gid, :home, :comment, :shell, :password, :groups, :roles, :auths, :profiles, :project, :keys]
|
46
|
+
|
47
|
+
properties.each do |property|
|
48
|
+
it "should have a %s property" % property do
|
49
|
+
user.attrclass(property).ancestors.should be_include(Puppet::Property)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should have documentation for its %s property" % property do
|
53
|
+
user.attrclass(property).doc.should be_instance_of(String)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
list_properties = [:groups, :roles, :auths]
|
58
|
+
|
59
|
+
list_properties.each do |property|
|
60
|
+
it "should have a list '%s'" % property do
|
61
|
+
user.attrclass(property).ancestors.should be_include(Puppet::Property::List)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should have an ordered list 'profiles'" do
|
66
|
+
user.attrclass(:profiles).ancestors.should be_include(Puppet::Property::OrderedList)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should have key values 'keys'" do
|
70
|
+
user.attrclass(:keys).ancestors.should be_include(Puppet::Property::KeyValue)
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "when retrieving all current values" do
|
74
|
+
before do
|
75
|
+
@user = user.create(:name => "foo", :uid => 10, :gid => 10)
|
76
|
+
@properties = {}
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should return a hash containing values for all set properties" do
|
80
|
+
values = @user.retrieve
|
81
|
+
[@user.property(:uid), @user.property(:gid)].each { |property| values.should be_include(property) }
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should set all values to :absent if the user is absent" do
|
85
|
+
@user.property(:ensure).expects(:retrieve).returns :absent
|
86
|
+
@user.property(:uid).expects(:retrieve).never
|
87
|
+
@user.retrieve[@user.property(:uid)].should == :absent
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should include the result of retrieving each property's current value if the user is present" do
|
91
|
+
@user.property(:ensure).expects(:retrieve).returns :present
|
92
|
+
@user.property(:uid).expects(:retrieve).returns 15
|
93
|
+
@user.retrieve[@user.property(:uid)].should == 15
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "when managing the ensure property" do
|
98
|
+
before do
|
99
|
+
@ensure = user.attrclass(:ensure).new(:resource => @resource)
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should support a :present value" do
|
103
|
+
lambda { @ensure.should = :present }.should_not raise_error
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should support an :absent value" do
|
107
|
+
lambda { @ensure.should = :absent }.should_not raise_error
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should call :create on the provider when asked to sync to the :present state" do
|
111
|
+
@provider.expects(:create)
|
112
|
+
@ensure.should = :present
|
113
|
+
@ensure.sync
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should call :delete on the provider when asked to sync to the :absent state" do
|
117
|
+
@provider.expects(:delete)
|
118
|
+
@ensure.should = :absent
|
119
|
+
@ensure.sync
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "and determining the current state" do
|
123
|
+
it "should return :present when the provider indicates the user exists" do
|
124
|
+
@provider.expects(:exists?).returns true
|
125
|
+
@ensure.retrieve.should == :present
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should return :absent when the provider indicates the user does not exist" do
|
129
|
+
@provider.expects(:exists?).returns false
|
130
|
+
@ensure.retrieve.should == :absent
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
describe "when managing the uid property" do
|
136
|
+
it "should convert number-looking strings into actual numbers" do
|
137
|
+
uid = user.attrclass(:uid).new(:resource => @resource)
|
138
|
+
uid.should = "50"
|
139
|
+
uid.should.must == 50
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should support UIDs as numbers" do
|
143
|
+
uid = user.attrclass(:uid).new(:resource => @resource)
|
144
|
+
uid.should = 50
|
145
|
+
uid.should.must == 50
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should :absent as a value" do
|
149
|
+
uid = user.attrclass(:uid).new(:resource => @resource)
|
150
|
+
uid.should = :absent
|
151
|
+
uid.should.must == :absent
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe "when managing the gid" do
|
156
|
+
it "should :absent as a value" do
|
157
|
+
gid = user.attrclass(:gid).new(:resource => @resource)
|
158
|
+
gid.should = :absent
|
159
|
+
gid.should.must == :absent
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should convert number-looking strings into actual numbers" do
|
163
|
+
gid = user.attrclass(:gid).new(:resource => @resource)
|
164
|
+
gid.should = "50"
|
165
|
+
gid.should.must == 50
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should support GIDs specified as integers" do
|
169
|
+
gid = user.attrclass(:gid).new(:resource => @resource)
|
170
|
+
gid.should = 50
|
171
|
+
gid.should.must == 50
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should support groups specified by name" do
|
175
|
+
gid = user.attrclass(:gid).new(:resource => @resource)
|
176
|
+
gid.should = "foo"
|
177
|
+
gid.should.must == "foo"
|
178
|
+
end
|
179
|
+
|
180
|
+
describe "when testing whether in sync" do
|
181
|
+
before do
|
182
|
+
@gid = user.attrclass(:gid).new(:resource => @resource, :should => %w{foo bar})
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should return true if any of the specified groups are equal to the current integer" do
|
186
|
+
Puppet::Util.expects(:gid).with("foo").returns 300
|
187
|
+
Puppet::Util.expects(:gid).with("bar").returns 500
|
188
|
+
|
189
|
+
@gid.must be_insync(500)
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should return false if none of the specified groups are equal to the current integer" do
|
193
|
+
Puppet::Util.expects(:gid).with("foo").returns 300
|
194
|
+
Puppet::Util.expects(:gid).with("bar").returns 500
|
195
|
+
|
196
|
+
@gid.should_not be_insync(700)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe "when syncing" do
|
201
|
+
before do
|
202
|
+
@gid = user.attrclass(:gid).new(:resource => @resource, :should => %w{foo bar})
|
203
|
+
end
|
204
|
+
|
205
|
+
it "should use the first found, specified group as the desired value and send it to the provider" do
|
206
|
+
Puppet::Util.expects(:gid).with("foo").returns nil
|
207
|
+
Puppet::Util.expects(:gid).with("bar").returns 500
|
208
|
+
|
209
|
+
@provider.expects(:gid=).with 500
|
210
|
+
|
211
|
+
@gid.sync
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
describe "when managing passwords" do
|
217
|
+
before do
|
218
|
+
@password = user.attrclass(:password).new(:resource => @resource, :should => "mypass")
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should not include the password in the change log when adding the password" do
|
222
|
+
@password.change_to_s(:absent, "mypass").should_not be_include("mypass")
|
223
|
+
end
|
224
|
+
|
225
|
+
it "should not include the password in the change log when changing the password" do
|
226
|
+
@password.change_to_s("other", "mypass").should_not be_include("mypass")
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
describe "when manages_solaris_rbac is enabled" do
|
231
|
+
before do
|
232
|
+
@provider.stubs(:satisfies?).returns(false)
|
233
|
+
@provider.expects(:satisfies?).with(:manages_solaris_rbac).returns(true)
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should support a :role value for ensure" do
|
237
|
+
@ensure = user.attrclass(:ensure).new(:resource => @resource)
|
238
|
+
lambda { @ensure.should = :role }.should_not raise_error
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
describe "when user has roles" do
|
243
|
+
it "should autorequire roles" do
|
244
|
+
#this is a little funky because the autorequire depends on a property with a feature
|
245
|
+
testuser = Puppet.type(:user).create(:name => "testuser")
|
246
|
+
testuser.provider.class.expects(:feature?).with(:manages_solaris_rbac).returns(true)
|
247
|
+
testuser[:roles] = "testrole"
|
248
|
+
|
249
|
+
testrole = Puppet.type(:user).create(:name => "testrole")
|
250
|
+
|
251
|
+
config = Puppet::Node::Catalog.new :testing do |conf|
|
252
|
+
[testuser, testrole].each { |resource| conf.add_resource resource }
|
253
|
+
end
|
254
|
+
|
255
|
+
rel = testuser.autorequire[0]
|
256
|
+
rel.source.ref.should == testrole.ref
|
257
|
+
rel.target.ref.should == testuser.ref
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
@@ -0,0 +1,45 @@
|
|
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
|
+
zfs = Puppet::Type.type(:zfs)
|
6
|
+
|
7
|
+
describe zfs do
|
8
|
+
properties = [:ensure, :mountpoint, :compression, :copies, :quota, :reservation, :sharenfs, :snapdir]
|
9
|
+
|
10
|
+
properties.each do |property|
|
11
|
+
it "should have a %s property" % property do
|
12
|
+
zfs.attrclass(property).ancestors.should be_include(Puppet::Property)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
parameters = [:name]
|
17
|
+
|
18
|
+
parameters.each do |parameter|
|
19
|
+
it "should have a %s parameter" % parameter do
|
20
|
+
zfs.attrclass(parameter).ancestors.should be_include(Puppet::Parameter)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should autorequire the containing zfss and the zpool" do
|
25
|
+
provider = mock "provider"
|
26
|
+
provider.stubs(:name).returns(:solaris)
|
27
|
+
zfs.stubs(:defaultprovider).returns(provider)
|
28
|
+
Puppet.type(:zpool).stubs(:defaultprovider).returns(provider)
|
29
|
+
|
30
|
+
|
31
|
+
foo_pool = Puppet.type(:zpool).create(:name => "foo")
|
32
|
+
|
33
|
+
foo_bar_zfs = Puppet.type(:zfs).create(:name => "foo/bar")
|
34
|
+
foo_bar_baz_zfs = Puppet.type(:zfs).create(:name => "foo/bar/baz")
|
35
|
+
foo_bar_baz_buz_zfs = Puppet.type(:zfs).create(:name => "foo/bar/baz/buz")
|
36
|
+
|
37
|
+
config = Puppet::Node::Catalog.new :testing do |conf|
|
38
|
+
[foo_pool, foo_bar_zfs, foo_bar_baz_zfs, foo_bar_baz_buz_zfs].each { |resource| conf.add_resource resource }
|
39
|
+
end
|
40
|
+
|
41
|
+
req = foo_bar_baz_buz_zfs.autorequire.collect { |edge| edge.source.ref }
|
42
|
+
|
43
|
+
[foo_pool.ref, foo_bar_zfs.ref, foo_bar_baz_zfs.ref].each { |ref| req.include?(ref).should == true }
|
44
|
+
end
|
45
|
+
end
|