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
data/lib/puppet/type/user.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'etc'
|
2
2
|
require 'facter'
|
3
3
|
require 'puppet/property/list'
|
4
|
+
require 'puppet/property/ordered_list'
|
4
5
|
require 'puppet/property/keyvalue'
|
5
6
|
|
6
7
|
module Puppet
|
@@ -98,6 +99,16 @@ module Puppet
|
|
98
99
|
end
|
99
100
|
end
|
100
101
|
|
102
|
+
def insync?(is)
|
103
|
+
# We know the 'is' is a number, so we need to convert the 'should' to a number,
|
104
|
+
# too.
|
105
|
+
@should.each do |value|
|
106
|
+
return true if number = Puppet::Util.gid(value) and is == number
|
107
|
+
end
|
108
|
+
|
109
|
+
return false
|
110
|
+
end
|
111
|
+
|
101
112
|
def sync
|
102
113
|
found = false
|
103
114
|
@should.each do |value|
|
@@ -109,6 +120,8 @@ module Puppet
|
|
109
120
|
end
|
110
121
|
|
111
122
|
fail "Could not find group(s) %s" % @should.join(",") unless found
|
123
|
+
|
124
|
+
# Use the default event.
|
112
125
|
end
|
113
126
|
end
|
114
127
|
|
@@ -266,6 +279,17 @@ module Puppet
|
|
266
279
|
end
|
267
280
|
end
|
268
281
|
|
282
|
+
#autorequire the roles that the user has
|
283
|
+
autorequire(:user) do
|
284
|
+
reqs = []
|
285
|
+
|
286
|
+
if roles_property = @parameters[:roles] and roles = roles_property.should
|
287
|
+
reqs += roles.split(',')
|
288
|
+
end
|
289
|
+
|
290
|
+
reqs
|
291
|
+
end
|
292
|
+
|
269
293
|
newparam(:role_membership) do
|
270
294
|
desc "Whether specified roles should be treated as the only roles
|
271
295
|
of which the user is a member or whether they should merely
|
@@ -304,7 +328,7 @@ module Puppet
|
|
304
328
|
defaultto :minimum
|
305
329
|
end
|
306
330
|
|
307
|
-
newproperty(:profiles, :parent => Puppet::Property::
|
331
|
+
newproperty(:profiles, :parent => Puppet::Property::OrderedList, :required_features => :manages_solaris_rbac) do
|
308
332
|
desc "The profiles the user has. Multiple profiles should be
|
309
333
|
specified as an array."
|
310
334
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Puppet
|
2
|
+
newtype(:zfs) do
|
3
|
+
@doc = "Manage zfs. Create destroy and set properties on zfs instances."
|
4
|
+
|
5
|
+
ensurable
|
6
|
+
|
7
|
+
newparam(:name) do
|
8
|
+
desc "The full name for this filesystem. (including the zpool)"
|
9
|
+
end
|
10
|
+
|
11
|
+
newproperty(:mountpoint) do
|
12
|
+
desc "The mountpoint property."
|
13
|
+
end
|
14
|
+
|
15
|
+
newproperty(:compression) do
|
16
|
+
desc "The compression property."
|
17
|
+
end
|
18
|
+
|
19
|
+
newproperty(:copies) do
|
20
|
+
desc "The copies property."
|
21
|
+
end
|
22
|
+
|
23
|
+
newproperty(:quota) do
|
24
|
+
desc "The quota property."
|
25
|
+
end
|
26
|
+
|
27
|
+
newproperty(:reservation) do
|
28
|
+
desc "The reservation property."
|
29
|
+
end
|
30
|
+
|
31
|
+
newproperty(:sharenfs) do
|
32
|
+
desc "The sharenfs property."
|
33
|
+
end
|
34
|
+
|
35
|
+
newproperty(:snapdir) do
|
36
|
+
desc "The sharenfs property."
|
37
|
+
end
|
38
|
+
|
39
|
+
autorequire(:zpool) do
|
40
|
+
#strip the zpool off the zfs name and autorequire it
|
41
|
+
[@parameters[:name].value.split('/')[0]]
|
42
|
+
end
|
43
|
+
|
44
|
+
autorequire(:zfs) do
|
45
|
+
#slice and dice, we want all the zfs before this one
|
46
|
+
names = @parameters[:name].value.split('/')
|
47
|
+
names.slice(1..-2).inject([]) { |a,v| a << "#{a.last}/#{v}" }.collect { |fs| names[0] + fs }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
data/lib/puppet/type/zone.rb
CHANGED
@@ -357,6 +357,14 @@ end
|
|
357
357
|
end
|
358
358
|
end
|
359
359
|
|
360
|
+
newparam(:create_args) do
|
361
|
+
desc "Arguments to the zonecfg create command. This can be used to create branded zones."
|
362
|
+
end
|
363
|
+
|
364
|
+
newparam(:install_args) do
|
365
|
+
desc "Arguments to the zoneadm install command. This can be used to create branded zones."
|
366
|
+
end
|
367
|
+
|
360
368
|
newparam(:realhostname) do
|
361
369
|
desc "The actual hostname of the zone."
|
362
370
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module Puppet
|
2
|
+
class Property
|
3
|
+
|
4
|
+
class VDev < Property
|
5
|
+
|
6
|
+
def flatten_and_sort(array)
|
7
|
+
array.collect { |a| a.split(' ') }.flatten.sort
|
8
|
+
end
|
9
|
+
|
10
|
+
def insync?(is)
|
11
|
+
return true unless self.should
|
12
|
+
|
13
|
+
return @should == [:absent] if is == :absent
|
14
|
+
|
15
|
+
flatten_and_sort(is) == flatten_and_sort(@should)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class MultiVDev < VDev
|
20
|
+
def insync?(is)
|
21
|
+
return true unless self.should
|
22
|
+
|
23
|
+
return @should == [:absent] if is == :absent
|
24
|
+
|
25
|
+
return false unless is.length == @should.length
|
26
|
+
|
27
|
+
is.each_with_index { |list, i| return false unless flatten_and_sort(list) == flatten_and_sort(@should[i]) }
|
28
|
+
|
29
|
+
#if we made it this far we are in sync
|
30
|
+
true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
newtype(:zpool) do
|
36
|
+
@doc = "Manage zpools. Create and delete zpools. The provider WILL NOT SYNC, only report differences.
|
37
|
+
|
38
|
+
Supports vdevs with mirrors, raidz, logs and spares."
|
39
|
+
|
40
|
+
ensurable
|
41
|
+
|
42
|
+
newproperty(:disk, :array_matching => :all, :parent => Puppet::Property::VDev) do
|
43
|
+
desc "The disk(s) for this pool. Can be an array or space separated string"
|
44
|
+
end
|
45
|
+
|
46
|
+
newproperty(:mirror, :array_matching => :all, :parent => Puppet::Property::MultiVDev) do
|
47
|
+
desc "List of all the devices to mirror for this pool. Each mirror should be a space separated string.
|
48
|
+
mirror => [\"disk1 disk2\", \"disk3 disk4\"]"
|
49
|
+
|
50
|
+
validate do |value|
|
51
|
+
if value.include?(",")
|
52
|
+
raise ArgumentError, "mirror names must be provided as string separated, not a comma-separated list"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
newproperty(:raidz, :array_matching => :all, :parent => Puppet::Property::MultiVDev) do
|
58
|
+
desc "List of all the devices to raid for this pool. Should be an array of space separated strings.
|
59
|
+
raidz => [\"disk1 disk2\", \"disk3 disk4\"]"
|
60
|
+
|
61
|
+
validate do |value|
|
62
|
+
if value.include?(",")
|
63
|
+
raise ArgumentError, "raid names must be provided as string separated, not a comma-separated list"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
newproperty(:spare, :array_matching => :all, :parent => Puppet::Property::VDev) do
|
69
|
+
desc "Spare disk(s) for this pool."
|
70
|
+
end
|
71
|
+
|
72
|
+
newproperty(:log, :array_matching => :all, :parent => Puppet::Property::VDev) do
|
73
|
+
desc "Log disks for this pool. (doesn't support mirroring yet)"
|
74
|
+
end
|
75
|
+
|
76
|
+
newparam(:pool) do
|
77
|
+
desc "The name for this pool."
|
78
|
+
isnamevar
|
79
|
+
end
|
80
|
+
|
81
|
+
newparam(:raid_parity) do
|
82
|
+
desc "Determines parity when using raidz property."
|
83
|
+
end
|
84
|
+
|
85
|
+
validate do
|
86
|
+
has_should = [:disk, :mirror, :raidz].select { |prop| self.should(prop) }
|
87
|
+
if has_should.length > 1
|
88
|
+
self.fail "You cannot specify %s on this type (only one)" % has_should.join(" and ")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
data/lib/puppet/util.rb
CHANGED
@@ -10,6 +10,8 @@ module Puppet
|
|
10
10
|
module Util
|
11
11
|
require 'benchmark'
|
12
12
|
|
13
|
+
# These are all for backward compatibility -- these are methods that used
|
14
|
+
# to be in Puppet::Util but have been moved into external modules.
|
13
15
|
require 'puppet/util/posix'
|
14
16
|
extend Puppet::Util::POSIX
|
15
17
|
|
@@ -66,40 +68,6 @@ module Util
|
|
66
68
|
end
|
67
69
|
end
|
68
70
|
|
69
|
-
# Create a shared lock for reading
|
70
|
-
def self.readlock(file)
|
71
|
-
self.sync(file).synchronize(Sync::SH) do
|
72
|
-
File.open(file) { |f|
|
73
|
-
f.lock_shared { |lf| yield lf }
|
74
|
-
}
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
# Create an exclusive lock for writing, and do the writing in a
|
79
|
-
# tmp file.
|
80
|
-
def self.writelock(file, mode = 0600)
|
81
|
-
tmpfile = file + ".tmp"
|
82
|
-
unless FileTest.directory?(File.dirname(tmpfile))
|
83
|
-
raise Puppet::DevError, "Cannot create %s; directory %s does not exist" %
|
84
|
-
[file, File.dirname(file)]
|
85
|
-
end
|
86
|
-
self.sync(file).synchronize(Sync::EX) do
|
87
|
-
File.open(file, "w", mode) do |rf|
|
88
|
-
rf.lock_exclusive do |lrf|
|
89
|
-
File.open(tmpfile, "w", mode) do |tf|
|
90
|
-
yield tf
|
91
|
-
end
|
92
|
-
begin
|
93
|
-
File.rename(tmpfile, file)
|
94
|
-
rescue => detail
|
95
|
-
Puppet.err "Could not rename %s to %s: %s" %
|
96
|
-
[file, tmpfile, detail]
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
71
|
# Create instance methods for each of the log levels. This allows
|
104
72
|
# the messages to be a little richer. Most classes will be calling this
|
105
73
|
# method.
|
@@ -268,7 +236,10 @@ module Util
|
|
268
236
|
|
269
237
|
# Execute the desired command, and return the status and output.
|
270
238
|
# def execute(command, failonfail = true, uid = nil, gid = nil)
|
271
|
-
|
239
|
+
# :combine sets whether or not to combine stdout/stderr in the output
|
240
|
+
# :stdinfile sets a file that can be used for stdin. Passing a string
|
241
|
+
# for stdin is not currently supported.
|
242
|
+
def execute(command, arguments = {:failonfail => true, :combine => true})
|
272
243
|
if command.is_a?(Array)
|
273
244
|
command = command.flatten.collect { |i| i.to_s }
|
274
245
|
str = command.join(" ")
|
@@ -301,9 +272,13 @@ module Util
|
|
301
272
|
|
302
273
|
# The idea here is to avoid IO#read whenever possible.
|
303
274
|
output_file="/dev/null"
|
275
|
+
error_file="/dev/null"
|
304
276
|
if ! arguments[:squelch]
|
305
277
|
require "tempfile"
|
306
278
|
output_file = Tempfile.new("puppet")
|
279
|
+
if arguments[:combine]
|
280
|
+
error_file=output_file
|
281
|
+
end
|
307
282
|
end
|
308
283
|
|
309
284
|
oldverb = $VERBOSE
|
@@ -317,9 +292,14 @@ module Util
|
|
317
292
|
# Child process executes this
|
318
293
|
Process.setsid
|
319
294
|
begin
|
320
|
-
|
295
|
+
if arguments[:stdinfile]
|
296
|
+
$stdin.reopen(arguments[:stdinfile])
|
297
|
+
else
|
298
|
+
$stdin.reopen("/dev/null")
|
299
|
+
end
|
321
300
|
$stdout.reopen(output_file)
|
322
|
-
$stderr.reopen(
|
301
|
+
$stderr.reopen(error_file)
|
302
|
+
|
323
303
|
3.upto(256){|fd| IO::new(fd).close rescue nil}
|
324
304
|
if arguments[:gid]
|
325
305
|
Process.egid = arguments[:gid]
|
@@ -461,4 +441,3 @@ require 'puppet/util/execution'
|
|
461
441
|
require 'puppet/util/logging'
|
462
442
|
require 'puppet/util/package'
|
463
443
|
require 'puppet/util/warnings'
|
464
|
-
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'puppet/util'
|
2
|
+
|
3
|
+
module Puppet::Util::FileLocking
|
4
|
+
module_function
|
5
|
+
|
6
|
+
# Create a shared lock for reading
|
7
|
+
def readlock(file)
|
8
|
+
Puppet::Util.sync(file).synchronize(Sync::SH) do
|
9
|
+
File.open(file) { |f|
|
10
|
+
f.lock_shared { |lf| yield lf }
|
11
|
+
}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# Create an exclusive lock for writing, and do the writing in a
|
16
|
+
# tmp file.
|
17
|
+
def writelock(file, mode = nil)
|
18
|
+
unless FileTest.directory?(File.dirname(file))
|
19
|
+
raise Puppet::DevError, "Cannot create %s; directory %s does not exist" % [file, File.dirname(file)]
|
20
|
+
end
|
21
|
+
tmpfile = file + ".tmp"
|
22
|
+
|
23
|
+
unless mode
|
24
|
+
# It's far more likely that the file will be there than not, so it's
|
25
|
+
# better to stat once to check for existence and mode.
|
26
|
+
# If we can't stat, it's most likely because the file's not there,
|
27
|
+
# but could also be because the directory isn't readable, in which case
|
28
|
+
# we won't be able to write anyway.
|
29
|
+
begin
|
30
|
+
mode = File.stat(file).mode
|
31
|
+
rescue
|
32
|
+
mode = 0600
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
Puppet::Util.sync(file).synchronize(Sync::EX) do
|
37
|
+
File.open(file, "w", mode) do |rf|
|
38
|
+
rf.lock_exclusive do |lrf|
|
39
|
+
yield lrf
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/puppet/util/filetype.rb
CHANGED
@@ -213,10 +213,10 @@ class Puppet::Util::FileType
|
|
213
213
|
begin
|
214
214
|
output = Puppet::Util.execute(%w{crontab -l}, :uid => @path)
|
215
215
|
return "" if output.include?("can't open your crontab")
|
216
|
+
raise Puppet::Error, "User %s not authorized to use cron" % @path if output.include?("you are not authorized to use cron")
|
216
217
|
return output
|
217
|
-
rescue
|
218
|
-
|
219
|
-
return ""
|
218
|
+
rescue => detail
|
219
|
+
raise Puppet::Error, "Could not read crontab for %s: %s" % [@path, detail]
|
220
220
|
end
|
221
221
|
end
|
222
222
|
|
data/lib/puppet/util/log.rb
CHANGED
@@ -369,11 +369,7 @@ class Puppet::Util::Log
|
|
369
369
|
end
|
370
370
|
|
371
371
|
def handle(msg)
|
372
|
-
|
373
|
-
# probably unrelated to this run.
|
374
|
-
if msg.objectsource?
|
375
|
-
@report.newlog(msg)
|
376
|
-
end
|
372
|
+
@report.newlog(msg)
|
377
373
|
end
|
378
374
|
end
|
379
375
|
|
@@ -505,15 +501,6 @@ class Puppet::Util::Log
|
|
505
501
|
Log.newmessage(self)
|
506
502
|
end
|
507
503
|
|
508
|
-
# Was the source of this log a Puppet resource or parameter?
|
509
|
-
def objectsource?
|
510
|
-
if defined? @objectsource and @objectsource
|
511
|
-
@objectsource
|
512
|
-
else
|
513
|
-
false
|
514
|
-
end
|
515
|
-
end
|
516
|
-
|
517
504
|
# If they pass a source in to us, we make sure it is a string, and
|
518
505
|
# we retrieve any tags we can.
|
519
506
|
def source=(source)
|
@@ -521,10 +508,8 @@ class Puppet::Util::Log
|
|
521
508
|
# We can't just check for whether it responds to :path, because
|
522
509
|
# plenty of providers respond to that in their normal function.
|
523
510
|
if (source.is_a?(Puppet::Type) or source.is_a?(Puppet::Parameter)) and source.respond_to?(:path)
|
524
|
-
@objectsource = true
|
525
511
|
@source = source.path
|
526
512
|
else
|
527
|
-
@objectsource = false
|
528
513
|
@source = source.to_s
|
529
514
|
end
|
530
515
|
if source.respond_to?(:tags)
|
data/lib/puppet/util/metric.rb
CHANGED
@@ -4,11 +4,6 @@ require 'puppet'
|
|
4
4
|
# A class for handling metrics. This is currently ridiculously hackish.
|
5
5
|
class Puppet::Util::Metric
|
6
6
|
|
7
|
-
# Load the library as a feature, so we can test its presence.
|
8
|
-
# It's only used by this class, so there's no reason to move it
|
9
|
-
# to the main feature list.
|
10
|
-
Puppet.features.add :rrd, :libs => 'RRDtool'
|
11
|
-
|
12
7
|
attr_accessor :type, :name, :value, :label
|
13
8
|
attr_writer :values
|
14
9
|
|
@@ -0,0 +1,85 @@
|
|
1
|
+
|
2
|
+
module Puppet::Util::RDoc
|
3
|
+
|
4
|
+
module_function
|
5
|
+
|
6
|
+
# launch a rdoc documenation process
|
7
|
+
# with the files/dir passed in +files+
|
8
|
+
def rdoc(outputdir, files)
|
9
|
+
begin
|
10
|
+
Puppet[:ignoreimport] = true
|
11
|
+
|
12
|
+
# then rdoc
|
13
|
+
require 'rdoc/rdoc'
|
14
|
+
|
15
|
+
# load our parser
|
16
|
+
require 'puppet/util/rdoc/parser'
|
17
|
+
|
18
|
+
r = RDoc::RDoc.new
|
19
|
+
RDoc::RDoc::GENERATORS["puppet"] = RDoc::RDoc::Generator.new("puppet/util/rdoc/generators/puppet_generator.rb",
|
20
|
+
"PuppetGenerator".intern,
|
21
|
+
"puppet")
|
22
|
+
# specify our own format & where to output
|
23
|
+
options = [ "--fmt", "puppet",
|
24
|
+
"--quiet",
|
25
|
+
"--op", outputdir ]
|
26
|
+
|
27
|
+
options += files
|
28
|
+
|
29
|
+
# launch the documentation process
|
30
|
+
r.document(options)
|
31
|
+
rescue RDoc::RDocError => e
|
32
|
+
raise Puppet::ParseError.new("RDoc error %s" % e)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# launch a output to console manifest doc
|
37
|
+
def manifestdoc(files)
|
38
|
+
Puppet[:ignoreimport] = true
|
39
|
+
files.select { |f| FileTest.file?(f) }.each do |f|
|
40
|
+
parser = Puppet::Parser::Parser.new(:environment => Puppet[:environment])
|
41
|
+
parser.file = f
|
42
|
+
ast = parser.parse
|
43
|
+
output(f, ast)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# Ouputs to the console the documentation
|
48
|
+
# of a manifest
|
49
|
+
def output(file, ast)
|
50
|
+
astobj = []
|
51
|
+
ast[:nodes].each do |name, k|
|
52
|
+
astobj << k if k.file == file
|
53
|
+
end
|
54
|
+
ast[:classes].each do |name, k|
|
55
|
+
astobj << k if k.file == file
|
56
|
+
end
|
57
|
+
ast[:definitions].each do |name, k|
|
58
|
+
astobj << k if k.file == file
|
59
|
+
end
|
60
|
+
astobj.sort! {|a,b| a.line <=> b.line }.each do |k|
|
61
|
+
output_astnode_doc(k)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def output_astnode_doc(ast)
|
66
|
+
puts ast.doc if !ast.doc.nil? and !ast.doc.empty?
|
67
|
+
if Puppet.settings[:document_all]
|
68
|
+
# scan each underlying resources to produce documentation
|
69
|
+
code = ast.code.children if ast.code.is_a?(Puppet::Parser::AST::ASTArray)
|
70
|
+
code ||= ast.code
|
71
|
+
output_resource_doc(code) unless code.nil?
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def output_resource_doc(code)
|
76
|
+
code.sort { |a,b| a.line <=> b.line }.each do |stmt|
|
77
|
+
output_resource_doc(stmt.children) if stmt.is_a?(Puppet::Parser::AST::ASTArray)
|
78
|
+
|
79
|
+
if stmt.is_a?(Puppet::Parser::AST::Resource)
|
80
|
+
puts stmt.doc if !stmt.doc.nil? and !stmt.doc.empty?
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|