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,116 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-9-22.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/sslcertificates/monkey_patch'
|
9
|
+
require 'puppet/indirector/ssl_rsa/file'
|
10
|
+
|
11
|
+
|
12
|
+
describe Puppet::Indirector::SslRsa::File do
|
13
|
+
|
14
|
+
it "should be a subclass of the File terminus class" do
|
15
|
+
Puppet::Indirector::SslRsa::File.superclass.should equal(Puppet::Indirector::File)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have documentation" do
|
19
|
+
Puppet::Indirector::SslRsa::File.doc.should be_instance_of(String)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe Puppet::Indirector::SslRsa::File, " when choosing a path for a ca key" do
|
24
|
+
before do
|
25
|
+
@file = Puppet::Indirector::SslRsa::File.new
|
26
|
+
@name = :ca
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should use the cadir" do
|
30
|
+
Puppet.settings.stubs(:value).with(:cadir).returns("/dir")
|
31
|
+
@file.path(@name).should =~ /^\/dir/
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should use 'ca_key.pem' as the file name" do
|
35
|
+
@file.path(@name).should =~ /ca_key\.pem$/
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe Puppet::Indirector::SslRsa::File, " when choosing a path for a non-ca key" do
|
40
|
+
before do
|
41
|
+
@file = Puppet::Indirector::SslRsa::File.new
|
42
|
+
@name = :publickey
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should use the publickeydir" do
|
46
|
+
Puppet.settings.stubs(:value).with(:publickeydir).returns("/dir")
|
47
|
+
@file.path(@name).should =~ /^\/dir/
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should use the key name with the pem file extension" do
|
51
|
+
@file.path(@name).should =~ /#{@name}\.pem$/
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe Puppet::Indirector::SslRsa::File, " when saving" do
|
56
|
+
before do
|
57
|
+
@file = Puppet::Indirector::SslRsa::File.new
|
58
|
+
|
59
|
+
Puppet.settings.stubs(:value).with(:publickeydir).returns("/dir")
|
60
|
+
@key = stub "key", :name => "foo"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should store the rsa key to disk in pem format" do
|
64
|
+
@key.expects(:to_pem).returns(:data)
|
65
|
+
@path = "/dir/foo.pem"
|
66
|
+
filehandle = mock "filehandle"
|
67
|
+
File.expects(:open).with(@path, "w").yields(filehandle)
|
68
|
+
filehandle.expects(:print).with(:data)
|
69
|
+
@file.save(@key)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe Puppet::Indirector::SslRsa::File, " when finding a key by name" do
|
74
|
+
before do
|
75
|
+
@file = Puppet::Indirector::SslRsa::File.new
|
76
|
+
|
77
|
+
Puppet.settings.stubs(:value).with(:publickeydir).returns("/dir")
|
78
|
+
@name = "foo"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should return the key as a key object on success" do
|
82
|
+
@path = "/dir/foo.pem"
|
83
|
+
FileTest.stubs(:exists?).with(@path).returns(true)
|
84
|
+
File.stubs(:read).with(@path).returns(:data)
|
85
|
+
OpenSSL::PKey::RSA.expects(:new).with(:data).returns(:mykey)
|
86
|
+
@file.find(@name).should == :mykey
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should return 'nil' on failure" do
|
90
|
+
@path = "/dir/foo.pem"
|
91
|
+
FileTest.stubs(:exists?).with(@path).returns(false)
|
92
|
+
@file.find(@name).should == nil
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe Puppet::Indirector::SslRsa::File, " when removing a key" do
|
97
|
+
before do
|
98
|
+
@file = Puppet::Indirector::SslRsa::File.new
|
99
|
+
|
100
|
+
Puppet.settings.stubs(:value).with(:publickeydir).returns("/dir")
|
101
|
+
@name = "foo"
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should remove the key from disk and return true" do
|
105
|
+
@path = "/dir/foo.pem"
|
106
|
+
FileTest.stubs(:exists?).with(@path).returns(true)
|
107
|
+
File.stubs(:unlink).with(@path).returns(true)
|
108
|
+
@file.destroy(@name).should == true
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should return an exception on failure" do
|
112
|
+
@path = "/dir/foo.pem"
|
113
|
+
FileTest.stubs(:exists?).with(@path).returns(false)
|
114
|
+
@file.destroy(@name).should == nil
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,245 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
require 'puppet/defaults'
|
5
|
+
require 'puppet/indirector'
|
6
|
+
require 'puppet/indirector/file'
|
7
|
+
|
8
|
+
describe Puppet::Indirector::Terminus do
|
9
|
+
before :each do
|
10
|
+
Puppet::Indirector::Terminus.stubs(:register_terminus_class)
|
11
|
+
@indirection = stub 'indirection', :name => :my_stuff, :register_terminus_type => nil
|
12
|
+
Puppet::Indirector::Indirection.stubs(:instance).with(:my_stuff).returns(@indirection)
|
13
|
+
@abstract_terminus = Class.new(Puppet::Indirector::Terminus) do
|
14
|
+
def self.to_s
|
15
|
+
"Testing::Abstract"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
@terminus_class = Class.new(@abstract_terminus) do
|
19
|
+
def self.to_s
|
20
|
+
"MyStuff::TermType"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
@terminus = @terminus_class.new
|
24
|
+
end
|
25
|
+
|
26
|
+
describe Puppet::Indirector::Terminus do
|
27
|
+
|
28
|
+
it "should provide a method for setting terminus class documentation" do
|
29
|
+
@terminus_class.should respond_to(:desc)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should support a class-level name attribute" do
|
33
|
+
@terminus_class.should respond_to(:name)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should support a class-level indirection attribute" do
|
37
|
+
@terminus_class.should respond_to(:indirection)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should support a class-level terminus-type attribute" do
|
41
|
+
@terminus_class.should respond_to(:terminus_type)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should support a class-level model attribute" do
|
45
|
+
@terminus_class.should respond_to(:model)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should accept indirection instances as its indirection" do
|
49
|
+
indirection = stub 'indirection', :is_a? => true, :register_terminus_type => nil
|
50
|
+
proc { @terminus_class.indirection = indirection }.should_not raise_error
|
51
|
+
@terminus_class.indirection.should equal(indirection)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should look up indirection instances when only a name has been provided" do
|
55
|
+
indirection = mock 'indirection'
|
56
|
+
Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns(indirection)
|
57
|
+
@terminus_class.indirection = :myind
|
58
|
+
@terminus_class.indirection.should equal(indirection)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should fail when provided a name that does not resolve to an indirection" do
|
62
|
+
Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns(nil)
|
63
|
+
proc { @terminus_class.indirection = :myind }.should raise_error(ArgumentError)
|
64
|
+
|
65
|
+
# It shouldn't overwrite our existing one (or, more normally, it shouldn't set
|
66
|
+
# anything).
|
67
|
+
@terminus_class.indirection.should equal(@indirection)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe Puppet::Indirector::Terminus, " when creating terminus classes" do
|
72
|
+
it "should associate the subclass with an indirection based on the subclass constant" do
|
73
|
+
@terminus.indirection.should equal(@indirection)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should set the subclass's type to the abstract terminus name" do
|
77
|
+
@terminus.terminus_type.should == :abstract
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should set the subclass's name to the indirection name" do
|
81
|
+
@terminus.name.should == :term_type
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should set the subclass's model to the indirection model" do
|
85
|
+
@indirection.expects(:model).returns :yay
|
86
|
+
@terminus.model.should == :yay
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe Puppet::Indirector::Terminus, " when a terminus instance" do
|
91
|
+
|
92
|
+
it "should return the class's name as its name" do
|
93
|
+
@terminus.name.should == :term_type
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should return the class's indirection as its indirection" do
|
97
|
+
@terminus.indirection.should equal(@indirection)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should set the instances's type to the abstract terminus type's name" do
|
101
|
+
@terminus.terminus_type.should == :abstract
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should set the instances's model to the indirection's model" do
|
105
|
+
@indirection.expects(:model).returns :yay
|
106
|
+
@terminus.model.should == :yay
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
# LAK: This could reasonably be in the Indirection instances, too. It doesn't make
|
112
|
+
# a whole heckuva lot of difference, except that with the instance loading in
|
113
|
+
# the Terminus base class, we have to have a check to see if we're already
|
114
|
+
# instance-loading a given terminus class type.
|
115
|
+
describe Puppet::Indirector::Terminus, " when managing terminus classes" do
|
116
|
+
it "should provide a method for registering terminus classes" do
|
117
|
+
Puppet::Indirector::Terminus.should respond_to(:register_terminus_class)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should provide a method for returning terminus classes by name and type" do
|
121
|
+
terminus = stub 'terminus_type', :name => :abstract, :indirection_name => :whatever
|
122
|
+
Puppet::Indirector::Terminus.register_terminus_class(terminus)
|
123
|
+
Puppet::Indirector::Terminus.terminus_class(:whatever, :abstract).should equal(terminus)
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should set up autoloading for any terminus class types requested" do
|
127
|
+
Puppet::Indirector::Terminus.expects(:instance_load).with(:test2, "puppet/indirector/test2")
|
128
|
+
Puppet::Indirector::Terminus.terminus_class(:test2, :whatever)
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should load terminus classes that are not found" do
|
132
|
+
# Set up instance loading; it would normally happen automatically
|
133
|
+
Puppet::Indirector::Terminus.instance_load :test1, "puppet/indirector/test1"
|
134
|
+
|
135
|
+
Puppet::Indirector::Terminus.instance_loader(:test1).expects(:load).with(:yay)
|
136
|
+
Puppet::Indirector::Terminus.terminus_class(:test1, :yay)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should fail when no indirection can be found" do
|
140
|
+
Puppet::Indirector::Indirection.expects(:instance).with(:my_indirection).returns(nil)
|
141
|
+
|
142
|
+
@abstract_terminus = Class.new(Puppet::Indirector::Terminus) do
|
143
|
+
def self.to_s
|
144
|
+
"Abstract"
|
145
|
+
end
|
146
|
+
end
|
147
|
+
proc {
|
148
|
+
@terminus = Class.new(@abstract_terminus) do
|
149
|
+
def self.to_s
|
150
|
+
"MyIndirection::TestType"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
}.should raise_error(ArgumentError)
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should register the terminus class with the terminus base class" do
|
157
|
+
Puppet::Indirector::Terminus.expects(:register_terminus_class).with do |type|
|
158
|
+
type.indirection_name == :my_indirection and type.name == :test_terminus
|
159
|
+
end
|
160
|
+
@indirection = stub 'indirection', :name => :my_indirection, :register_terminus_type => nil
|
161
|
+
Puppet::Indirector::Indirection.expects(:instance).with(:my_indirection).returns(@indirection)
|
162
|
+
|
163
|
+
@abstract_terminus = Class.new(Puppet::Indirector::Terminus) do
|
164
|
+
def self.to_s
|
165
|
+
"Abstract"
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
@terminus = Class.new(@abstract_terminus) do
|
170
|
+
def self.to_s
|
171
|
+
"MyIndirection::TestTerminus"
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
describe Puppet::Indirector::Terminus, " when parsing class constants for indirection and terminus names" do
|
178
|
+
before do
|
179
|
+
@subclass = mock 'subclass'
|
180
|
+
@subclass.stubs(:to_s).returns("TestInd::OneTwo")
|
181
|
+
@subclass.stubs(:mark_as_abstract_terminus)
|
182
|
+
Puppet::Indirector::Terminus.stubs(:register_terminus_class)
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should fail when anonymous classes are used" do
|
186
|
+
proc { Puppet::Indirector::Terminus.inherited(Class.new) }.should raise_error(Puppet::DevError)
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should use the last term in the constant for the terminus class name" do
|
190
|
+
@subclass.expects(:name=).with(:one_two)
|
191
|
+
@subclass.stubs(:indirection=)
|
192
|
+
Puppet::Indirector::Terminus.inherited(@subclass)
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should convert the terminus name to a downcased symbol" do
|
196
|
+
@subclass.expects(:name=).with(:one_two)
|
197
|
+
@subclass.stubs(:indirection=)
|
198
|
+
Puppet::Indirector::Terminus.inherited(@subclass)
|
199
|
+
end
|
200
|
+
|
201
|
+
it "should use the second to last term in the constant for the indirection name" do
|
202
|
+
@subclass.expects(:indirection=).with(:test_ind)
|
203
|
+
@subclass.stubs(:name=)
|
204
|
+
@subclass.stubs(:terminus_type=)
|
205
|
+
Puppet::Indirector::File.inherited(@subclass)
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should convert the indirection name to a downcased symbol" do
|
209
|
+
@subclass.expects(:indirection=).with(:test_ind)
|
210
|
+
@subclass.stubs(:name=)
|
211
|
+
@subclass.stubs(:terminus_type=)
|
212
|
+
Puppet::Indirector::File.inherited(@subclass)
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should convert camel case to lower case with underscores as word separators" do
|
216
|
+
@subclass.expects(:name=).with(:one_two)
|
217
|
+
@subclass.stubs(:indirection=)
|
218
|
+
|
219
|
+
Puppet::Indirector::Terminus.inherited(@subclass)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
describe Puppet::Indirector::Terminus, " when creating terminus class types" do
|
224
|
+
before do
|
225
|
+
Puppet::Indirector::Terminus.stubs(:register_terminus_class)
|
226
|
+
@subclass = Class.new(Puppet::Indirector::Terminus) do
|
227
|
+
def self.to_s
|
228
|
+
"Puppet::Indirector::Terminus::MyTermType"
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should set the name of the abstract subclass to be its class constant" do
|
234
|
+
@subclass.name.should equal(:my_term_type)
|
235
|
+
end
|
236
|
+
|
237
|
+
it "should mark abstract terminus types as such" do
|
238
|
+
@subclass.should be_abstract_terminus
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should not allow instances of abstract subclasses to be created" do
|
242
|
+
proc { @subclass.new }.should raise_error(Puppet::DevError)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
@@ -0,0 +1,145 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/indirector/yaml'
|
6
|
+
|
7
|
+
describe Puppet::Indirector::Yaml, " when choosing file location" do
|
8
|
+
before :each do
|
9
|
+
@indirection = stub 'indirection', :name => :my_yaml, :register_terminus_type => nil
|
10
|
+
Puppet::Indirector::Indirection.stubs(:instance).with(:my_yaml).returns(@indirection)
|
11
|
+
@store_class = Class.new(Puppet::Indirector::Yaml) do
|
12
|
+
def self.to_s
|
13
|
+
"MyYaml::MyType"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
@store = @store_class.new
|
17
|
+
|
18
|
+
@subject = Object.new
|
19
|
+
@subject.metaclass.send(:attr_accessor, :name)
|
20
|
+
@subject.name = :me
|
21
|
+
|
22
|
+
@dir = "/what/ever"
|
23
|
+
Puppet.settings.stubs(:value).returns("fakesettingdata")
|
24
|
+
Puppet.settings.stubs(:value).with(:clientyamldir).returns(@dir)
|
25
|
+
|
26
|
+
@request = stub 'request', :key => :me, :instance => @subject
|
27
|
+
end
|
28
|
+
|
29
|
+
describe Puppet::Indirector::Yaml, " when choosing file location" do
|
30
|
+
it "should use the yamldir if the process name is 'puppetmasterd'" do
|
31
|
+
Puppet.settings.expects(:value).with(:name).returns "puppetmasterd"
|
32
|
+
Puppet.settings.expects(:value).with(:yamldir).returns "/main/yaml/dir"
|
33
|
+
@store.path(:me).should =~ %r{^/main/yaml/dir}
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should use the client yamldir if the process name is not 'puppetmasterd'" do
|
37
|
+
Puppet.settings.expects(:value).with(:name).returns "cient"
|
38
|
+
Puppet.settings.expects(:value).with(:clientyamldir).returns "/client/yaml/dir"
|
39
|
+
@store.path(:me).should =~ %r{^/client/yaml/dir}
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should store all files in a single file root set in the Puppet defaults" do
|
43
|
+
@store.path(:me).should =~ %r{^#{@dir}}
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should use the terminus name for choosing the subdirectory" do
|
47
|
+
@store.path(:me).should =~ %r{^#{@dir}/my_yaml}
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should use the object's name to determine the file name" do
|
51
|
+
@store.path(:me).should =~ %r{me.yaml$}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe Puppet::Indirector::Yaml, " when storing objects as YAML" do
|
56
|
+
it "should only store objects that respond to :name" do
|
57
|
+
@request.stubs(:instance).returns Object.new
|
58
|
+
proc { @store.save(@request) }.should raise_error(ArgumentError)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should convert Ruby objects to YAML and write them to disk using a write lock" do
|
62
|
+
yaml = @subject.to_yaml
|
63
|
+
file = mock 'file'
|
64
|
+
path = @store.send(:path, @subject.name)
|
65
|
+
FileTest.expects(:exist?).with(File.dirname(path)).returns(true)
|
66
|
+
@store.expects(:writelock).with(path, 0660).yields(file)
|
67
|
+
file.expects(:print).with(yaml)
|
68
|
+
|
69
|
+
@store.save(@request)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should create the indirection subdirectory if it does not exist" do
|
73
|
+
yaml = @subject.to_yaml
|
74
|
+
file = mock 'file'
|
75
|
+
path = @store.send(:path, @subject.name)
|
76
|
+
dir = File.dirname(path)
|
77
|
+
|
78
|
+
FileTest.expects(:exist?).with(dir).returns(false)
|
79
|
+
Dir.expects(:mkdir).with(dir)
|
80
|
+
|
81
|
+
@store.expects(:writelock).yields(file)
|
82
|
+
file.expects(:print).with(yaml)
|
83
|
+
|
84
|
+
@store.save(@request)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe Puppet::Indirector::Yaml, " when retrieving YAML" do
|
89
|
+
it "should read YAML in from disk using a read lock and convert it to Ruby objects" do
|
90
|
+
path = @store.send(:path, @subject.name)
|
91
|
+
|
92
|
+
yaml = @subject.to_yaml
|
93
|
+
FileTest.expects(:exist?).with(path).returns(true)
|
94
|
+
|
95
|
+
fh = mock 'filehandle'
|
96
|
+
@store.expects(:readlock).with(path).yields fh
|
97
|
+
fh.expects(:read).returns yaml
|
98
|
+
|
99
|
+
@store.find(@request).instance_variable_get("@name").should == :me
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should fail coherently when the stored YAML is invalid" do
|
103
|
+
path = @store.send(:path, @subject.name)
|
104
|
+
FileTest.expects(:exist?).with(path).returns(true)
|
105
|
+
|
106
|
+
# Something that will fail in yaml
|
107
|
+
yaml = "--- !ruby/object:Hash"
|
108
|
+
|
109
|
+
fh = mock 'filehandle'
|
110
|
+
@store.expects(:readlock).yields fh
|
111
|
+
fh.expects(:read).returns yaml
|
112
|
+
|
113
|
+
proc { @store.find(@request) }.should raise_error(Puppet::Error)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe Puppet::Indirector::Yaml, " when searching" do
|
118
|
+
it "should return an array of fact instances with one instance for each file when globbing *" do
|
119
|
+
@request = stub 'request', :key => "*", :instance => @subject
|
120
|
+
@one = mock 'one'
|
121
|
+
@two = mock 'two'
|
122
|
+
@store.expects(:base).returns "/my/yaml/dir"
|
123
|
+
Dir.expects(:glob).with(File.join("/my/yaml/dir", @store.class.indirection_name.to_s, @request.key)).returns(%w{one.yaml two.yaml})
|
124
|
+
YAML.expects(:load_file).with("one.yaml").returns @one;
|
125
|
+
YAML.expects(:load_file).with("two.yaml").returns @two;
|
126
|
+
@store.search(@request).should == [@one, @two]
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should return an array containing a single instance of fact when globbing 'one*'" do
|
130
|
+
@request = stub 'request', :key => "one*", :instance => @subject
|
131
|
+
@one = mock 'one'
|
132
|
+
@store.expects(:base).returns "/my/yaml/dir"
|
133
|
+
Dir.expects(:glob).with(File.join("/my/yaml/dir", @store.class.indirection_name.to_s, @request.key)).returns(%w{one.yaml})
|
134
|
+
YAML.expects(:load_file).with("one.yaml").returns @one;
|
135
|
+
@store.search(@request).should == [@one]
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should return an empty array when the glob doesn't match anything" do
|
139
|
+
@request = stub 'request', :key => "f*ilglobcanfail*", :instance => @subject
|
140
|
+
@store.expects(:base).returns "/my/yaml/dir"
|
141
|
+
Dir.expects(:glob).with(File.join("/my/yaml/dir", @store.class.indirection_name.to_s, @request.key)).returns([])
|
142
|
+
@store.search(@request).should == []
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|