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,185 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-9-12.
|
4
|
+
# Copyright (c) 2006. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppettest/support/utils'
|
9
|
+
require 'puppettest/fileparsing'
|
10
|
+
|
11
|
+
module ParsedMountTesting
|
12
|
+
include PuppetTest::Support::Utils
|
13
|
+
include PuppetTest::FileParsing
|
14
|
+
|
15
|
+
def fake_fstab
|
16
|
+
os = Facter['operatingsystem']
|
17
|
+
if os == "Solaris"
|
18
|
+
name = "solaris.fstab"
|
19
|
+
elsif os == "FreeBSD"
|
20
|
+
name = "freebsd.fstab"
|
21
|
+
else
|
22
|
+
# Catchall for other fstabs
|
23
|
+
name = "linux.fstab"
|
24
|
+
end
|
25
|
+
oldpath = @provider_class.default_target
|
26
|
+
return fakefile(File::join("data/types/mount", name))
|
27
|
+
end
|
28
|
+
|
29
|
+
def mkmountargs
|
30
|
+
mount = nil
|
31
|
+
|
32
|
+
if defined? @pcount
|
33
|
+
@pcount += 1
|
34
|
+
else
|
35
|
+
@pcount = 1
|
36
|
+
end
|
37
|
+
args = {
|
38
|
+
:name => "/fspuppet%s" % @pcount,
|
39
|
+
:device => "/dev/dsk%s" % @pcount,
|
40
|
+
}
|
41
|
+
|
42
|
+
@provider_class.fields(:parsed).each do |field|
|
43
|
+
unless args.include? field
|
44
|
+
args[field] = "fake%s%s" % [field, @pcount]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
return args
|
49
|
+
end
|
50
|
+
|
51
|
+
def mkmount
|
52
|
+
hash = mkmountargs()
|
53
|
+
#hash[:provider] = @provider_class.name
|
54
|
+
|
55
|
+
fakeresource = stub :type => :mount, :name => hash[:name]
|
56
|
+
fakeresource.stubs(:[]).with(:name).returns(hash[:name])
|
57
|
+
fakeresource.stubs(:should).with(:target).returns(nil)
|
58
|
+
|
59
|
+
mount = @provider_class.new(fakeresource)
|
60
|
+
hash[:record_type] = :parsed
|
61
|
+
hash[:ensure] = :present
|
62
|
+
mount.property_hash = hash
|
63
|
+
|
64
|
+
return mount
|
65
|
+
end
|
66
|
+
|
67
|
+
# Here we just create a fake host type that answers to all of the methods
|
68
|
+
# but does not modify our actual system.
|
69
|
+
def mkfaketype
|
70
|
+
@provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
provider_class = Puppet::Type.type(:mount).provider(:parsed)
|
75
|
+
|
76
|
+
describe provider_class do
|
77
|
+
before :each do
|
78
|
+
@mount_class = Puppet.type(:mount)
|
79
|
+
@provider_class = @mount_class.provider(:parsed)
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
describe provider_class do
|
84
|
+
include ParsedMountTesting
|
85
|
+
|
86
|
+
it "should be able to parse all of the example mount tabs" do
|
87
|
+
tab = fake_fstab
|
88
|
+
@provider = @provider_class
|
89
|
+
|
90
|
+
# LAK:FIXME Again, a relatively bad test, but I don't know how to rspec-ify this.
|
91
|
+
# I suppose this is more of an integration test? I dunno.
|
92
|
+
fakedataparse(tab) do
|
93
|
+
# Now just make we've got some mounts we know will be there
|
94
|
+
hashes = @provider_class.target_records(tab).find_all { |i| i.is_a? Hash }
|
95
|
+
(hashes.length > 0).should be_true
|
96
|
+
root = hashes.find { |i| i[:name] == "/" }
|
97
|
+
|
98
|
+
proc { @provider_class.to_file(hashes) }.should_not raise_error
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# LAK:FIXME I can't mock Facter because this test happens at parse-time.
|
103
|
+
it "should default to /etc/vfstab on Solaris and /etc/fstab everywhere else" do
|
104
|
+
should = case Facter.value(:operatingsystem)
|
105
|
+
when "Solaris": "/etc/vfstab"
|
106
|
+
else
|
107
|
+
"/etc/fstab"
|
108
|
+
end
|
109
|
+
Puppet::Type.type(:mount).provider(:parsed).default_target.should == should
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe provider_class, " when mounting an absent filesystem" do
|
114
|
+
include ParsedMountTesting
|
115
|
+
|
116
|
+
# #730 - Make sure 'flush' is called when a mount is moving from absent to mounted
|
117
|
+
it "should flush the fstab to disk" do
|
118
|
+
mount = mkmount
|
119
|
+
|
120
|
+
# Mark the mount as absent
|
121
|
+
mount.property_hash[:ensure] = :absent
|
122
|
+
|
123
|
+
mount.stubs(:mountcmd) # just so we don't actually try to mount anything
|
124
|
+
|
125
|
+
mount.expects(:flush)
|
126
|
+
mount.mount
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
describe provider_class, " when modifying the filesystem tab" do
|
131
|
+
include ParsedMountTesting
|
132
|
+
before do
|
133
|
+
# Never write to disk, only to RAM.
|
134
|
+
@provider_class.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
|
135
|
+
|
136
|
+
@mount = mkmount
|
137
|
+
@target = @provider_class.default_target
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should write the mount to disk when :flush is called" do
|
141
|
+
@mount.flush
|
142
|
+
|
143
|
+
text = @provider_class.target_object(@provider_class.default_target).read
|
144
|
+
text.should == @mount.class.to_line(@mount.property_hash) + "\n"
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe provider_class, " when parsing information about the root filesystem" do
|
149
|
+
confine "Mount type not tested on Darwin" => Facter["operatingsystem"].value != "Darwin"
|
150
|
+
include ParsedMountTesting
|
151
|
+
|
152
|
+
before do
|
153
|
+
@mount = @mount_class.create :name => "/"
|
154
|
+
@provider = @mount.provider
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should have a filesystem tab" do
|
158
|
+
FileTest.should be_exist(@provider_class.default_target)
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should find the root filesystem" do
|
162
|
+
@provider_class.prefetch("/" => @mount)
|
163
|
+
@mount.provider.property_hash[:ensure].should == :present
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should determine that the root fs is mounted" do
|
167
|
+
@provider_class.prefetch("/" => @mount)
|
168
|
+
@mount.provider.should be_mounted
|
169
|
+
end
|
170
|
+
|
171
|
+
after do
|
172
|
+
Puppet::Type.allclear
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe provider_class, " when mounting and unmounting" do
|
177
|
+
include ParsedMountTesting
|
178
|
+
|
179
|
+
it "should call the 'mount' command to mount the filesystem"
|
180
|
+
|
181
|
+
it "should call the 'unmount' command to unmount the filesystem"
|
182
|
+
|
183
|
+
it "should specify the filesystem when remounting a filesystem"
|
184
|
+
end
|
185
|
+
end
|
@@ -0,0 +1,138 @@
|
|
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 = Puppet::Type.type(:package).provider(:apt)
|
6
|
+
|
7
|
+
describe provider do
|
8
|
+
before do
|
9
|
+
@resource = stub 'resource', :[] => "asdf"
|
10
|
+
@provider = provider.new(@resource)
|
11
|
+
|
12
|
+
@fakeresult = "install ok installed asdf 1.0\n"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should be versionable" do
|
16
|
+
provider.should be_versionable
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should use :install to update" do
|
20
|
+
@provider.expects(:install)
|
21
|
+
@provider.update
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should use 'apt-get remove' to uninstall" do
|
25
|
+
@provider.expects(:aptget).with("-y", "-q", :remove, "asdf")
|
26
|
+
|
27
|
+
@provider.uninstall
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should use 'apt-get purge' and 'dpkg purge' to purge" do
|
31
|
+
@provider.expects(:aptget).with("-y", "-q", :remove, "--purge", "asdf")
|
32
|
+
@provider.expects(:dpkg).with("--purge", "asdf")
|
33
|
+
|
34
|
+
@provider.purge
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should use 'apt-cache policy' to determine the latest version of a package" do
|
38
|
+
@provider.expects(:aptcache).with(:policy, "asdf").returns "asdf:
|
39
|
+
Installed: 1:1.0
|
40
|
+
Candidate: 1:1.1
|
41
|
+
Version table:
|
42
|
+
1:1.0
|
43
|
+
650 http://ftp.osuosl.org testing/main Packages
|
44
|
+
*** 1:1.1
|
45
|
+
100 /var/lib/dpkg/status"
|
46
|
+
|
47
|
+
@provider.latest.should == "1:1.1"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should print and error and return nil if no policy is found" do
|
51
|
+
@provider.expects(:aptcache).with(:policy, "asdf").returns "asdf:"
|
52
|
+
|
53
|
+
@provider.expects(:err)
|
54
|
+
@provider.latest.should be_nil
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should be able to preseed" do
|
58
|
+
@provider.should respond_to(:run_preseed)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should preseed with the provided responsefile when preseeding is called for" do
|
62
|
+
@resource.expects(:[]).with(:responsefile).returns "/my/file"
|
63
|
+
FileTest.expects(:exist?).with("/my/file").returns true
|
64
|
+
|
65
|
+
@provider.expects(:info)
|
66
|
+
@provider.expects(:preseed).with("/my/file")
|
67
|
+
|
68
|
+
@provider.run_preseed
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should not preseed if no responsefile is provided" do
|
72
|
+
@resource.expects(:[]).with(:responsefile).returns nil
|
73
|
+
|
74
|
+
@provider.expects(:info)
|
75
|
+
@provider.expects(:preseed).never
|
76
|
+
|
77
|
+
@provider.run_preseed
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should fail if a cdrom is listed in the sources list and :allowcdrom is not specified"
|
81
|
+
|
82
|
+
describe "when installing" do
|
83
|
+
it "should preseed if a responsefile is provided" do
|
84
|
+
@resource.expects(:[]).with(:responsefile).returns "/my/file"
|
85
|
+
@provider.expects(:run_preseed)
|
86
|
+
|
87
|
+
@provider.stubs(:aptget)
|
88
|
+
@provider.install
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should check for a cdrom" do
|
92
|
+
@provider.expects(:checkforcdrom)
|
93
|
+
|
94
|
+
@provider.stubs(:aptget)
|
95
|
+
@provider.install
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should use 'apt-get install' with the package name if no version is asked for" do
|
99
|
+
@resource.expects(:[]).with(:ensure).returns :installed
|
100
|
+
@provider.expects(:aptget).with { |*command| command[-1] == "asdf" and command[-2] == :install }
|
101
|
+
|
102
|
+
@provider.install
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should specify the package version if one is asked for" do
|
106
|
+
@resource.expects(:[]).with(:ensure).returns "1.0"
|
107
|
+
@provider.expects(:aptget).with { |*command| command[-1] == "asdf=1.0" }
|
108
|
+
|
109
|
+
@provider.install
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should do a quiet install" do
|
113
|
+
@provider.expects(:aptget).with { |*command| command.include?("-q") }
|
114
|
+
|
115
|
+
@provider.install
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should default to 'yes' for all questions" do
|
119
|
+
@provider.expects(:aptget).with { |*command| command.include?("-y") }
|
120
|
+
|
121
|
+
@provider.install
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should keep config files if asked" do
|
125
|
+
@resource.expects(:[]).with(:configfiles).returns :keep
|
126
|
+
@provider.expects(:aptget).with { |*command| command.include?("DPkg::Options::=--force-confold") }
|
127
|
+
|
128
|
+
@provider.install
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should replace config files if asked" do
|
132
|
+
@resource.expects(:[]).with(:configfiles).returns :replace
|
133
|
+
@provider.expects(:aptget).with { |*command| command.include?("DPkg::Options::=--force-confnew") }
|
134
|
+
|
135
|
+
@provider.install
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -0,0 +1,163 @@
|
|
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 = Puppet::Type.type(:package).provider(:dpkg)
|
6
|
+
|
7
|
+
describe provider do
|
8
|
+
before do
|
9
|
+
@resource = stub 'resource', :[] => "asdf"
|
10
|
+
@provider = provider.new(@resource)
|
11
|
+
|
12
|
+
@fakeresult = "install ok installed asdf 1.0\n"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have documentation" do
|
16
|
+
provider.doc.should be_instance_of(String)
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "when listing all instances" do
|
20
|
+
before do
|
21
|
+
provider.stubs(:command).with(:dpkgquery).returns "myquery"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should use dpkg-query" do
|
25
|
+
provider.expects(:command).with(:dpkgquery).returns "myquery"
|
26
|
+
provider.expects(:execpipe).with("myquery -W --showformat '${Status} ${Package} ${Version}\\n'").returns @fakeresult
|
27
|
+
|
28
|
+
provider.instances
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should create and return an instance with each parsed line from dpkg-query" do
|
32
|
+
pipe = mock 'pipe'
|
33
|
+
pipe.expects(:each).yields @fakeresult
|
34
|
+
provider.expects(:execpipe).yields pipe
|
35
|
+
|
36
|
+
asdf = mock 'pkg1'
|
37
|
+
provider.expects(:new).with(:ensure => "1.0", :error => "ok", :desired => "install", :name => "asdf", :status => "installed", :provider => :dpkg).returns asdf
|
38
|
+
|
39
|
+
provider.instances.should == [asdf]
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should warn on and ignore any lines it does not understand" do
|
43
|
+
pipe = mock 'pipe'
|
44
|
+
pipe.expects(:each).yields "foobar"
|
45
|
+
provider.expects(:execpipe).yields pipe
|
46
|
+
|
47
|
+
Puppet.expects(:warning)
|
48
|
+
provider.expects(:new).never
|
49
|
+
|
50
|
+
provider.instances.should == []
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "when querying the current state" do
|
55
|
+
it "should use dpkg-query" do
|
56
|
+
@provider.expects(:dpkgquery).with("-W", "--showformat",'${Status} ${Package} ${Version}\\n', "asdf").returns @fakeresult
|
57
|
+
|
58
|
+
@provider.query
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should consider the package purged if dpkg-query fails" do
|
62
|
+
@provider.expects(:dpkgquery).raises Puppet::ExecutionFailure.new("eh")
|
63
|
+
|
64
|
+
@provider.query[:ensure].should == :purged
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should return a hash of the found status with the desired state, error state, status, name, and 'ensure'" do
|
68
|
+
@provider.expects(:dpkgquery).returns @fakeresult
|
69
|
+
|
70
|
+
@provider.query.should == {:ensure => "1.0", :error => "ok", :desired => "install", :name => "asdf", :status => "installed", :provider => :dpkg}
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should consider the package absent if the dpkg-query result cannot be interpreted" do
|
74
|
+
@provider.expects(:dpkgquery).returns "somebaddata"
|
75
|
+
|
76
|
+
@provider.query[:ensure].should == :absent
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should fail if an error is discovered" do
|
80
|
+
@provider.expects(:dpkgquery).returns @fakeresult.sub("ok", "error")
|
81
|
+
|
82
|
+
lambda { @provider.query }.should raise_error(Puppet::Error)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should consider the package purged if it is marked 'not-installed'" do
|
86
|
+
@provider.expects(:dpkgquery).returns @fakeresult.sub("installed", "not-installed")
|
87
|
+
|
88
|
+
@provider.query[:ensure].should == :purged
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should consider the package absent if its status is neither 'installed' nor 'not-installed'" do
|
92
|
+
@provider.expects(:dpkgquery).returns @fakeresult.sub("installed", "foo")
|
93
|
+
|
94
|
+
@provider.query[:ensure].should == :absent
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should be able to install" do
|
99
|
+
@provider.should respond_to(:install)
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "when installing" do
|
103
|
+
before do
|
104
|
+
@resource.stubs(:[]).with(:source).returns "mypkg"
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should fail to install if no source is specified in the resource" do
|
108
|
+
@resource.expects(:[]).with(:source).returns nil
|
109
|
+
|
110
|
+
lambda { @provider.install }.should raise_error(ArgumentError)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should use 'dpkg -i' to install the package" do
|
114
|
+
@resource.expects(:[]).with(:source).returns "mypackagefile"
|
115
|
+
@provider.expects(:dpkg).with { |*command| command[-1] == "mypackagefile" and command[-2] == "-i" }
|
116
|
+
|
117
|
+
@provider.install
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should keep old config files if told to do so" do
|
121
|
+
@resource.expects(:[]).with(:configfiles).returns :keep
|
122
|
+
@provider.expects(:dpkg).with { |*command| command[0] == "--force-confold" }
|
123
|
+
|
124
|
+
@provider.install
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should replace old config files if told to do so" do
|
128
|
+
@resource.expects(:[]).with(:configfiles).returns :replace
|
129
|
+
@provider.expects(:dpkg).with { |*command| command[0] == "--force-confnew" }
|
130
|
+
|
131
|
+
@provider.install
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should use :install to update" do
|
136
|
+
@provider.expects(:install)
|
137
|
+
@provider.update
|
138
|
+
end
|
139
|
+
|
140
|
+
describe "when determining latest available version" do
|
141
|
+
it "should return the version found by dpkg-deb" do
|
142
|
+
@resource.expects(:[]).with(:source).returns "myfile"
|
143
|
+
@provider.expects(:dpkg_deb).with { |*command| command[-1] == "myfile" }.returns "asdf\t1.0"
|
144
|
+
@provider.latest.should == "1.0"
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should warn if the package file contains a different package" do
|
148
|
+
@provider.expects(:dpkg_deb).returns("foo\tversion")
|
149
|
+
@provider.expects(:warning)
|
150
|
+
@provider.latest
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should use 'dpkg -r' to uninstall" do
|
155
|
+
@provider.expects(:dpkg).with("-r", "asdf")
|
156
|
+
@provider.uninstall
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should use 'dpkg --purge' to purge" do
|
160
|
+
@provider.expects(:dpkg).with("--purge", "asdf")
|
161
|
+
@provider.purge
|
162
|
+
end
|
163
|
+
end
|