puppet 5.5.17-x86-mingw32 → 5.5.18-x86-mingw32
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.
- checksums.yaml +4 -4
- data/CODEOWNERS +1 -1
- data/Gemfile +2 -3
- data/Gemfile.lock +35 -31
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- data/ext/puppet-test +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/windows/service/daemon.rb +54 -8
- data/install.rb +6 -6
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/lookup.rb +1 -1
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/configurer.rb +86 -28
- data/lib/puppet/configurer/downloader.rb +2 -6
- data/lib/puppet/defaults.rb +17 -4
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/face/ca.rb +1 -1
- data/lib/puppet/face/module/list.rb +5 -5
- data/lib/puppet/face/module/search.rb +1 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/module/upgrade.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_system.rb +0 -8
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +3 -2
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +6 -5
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +2 -0
- data/lib/puppet/indirector/resource/ral.rb +1 -3
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
- data/lib/puppet/module_tool/tar/mini.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +12 -11
- data/lib/puppet/network/http/connection.rb +10 -12
- data/lib/puppet/network/http/pool.rb +2 -0
- data/lib/puppet/network/http/rack/rest.rb +2 -2
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +4 -2
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/functions.rb +1 -1
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/loaders.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +22 -18
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/pn_parser.rb +17 -16
- data/lib/puppet/pops/puppet_stack.rb +51 -48
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/string_converter.rb +10 -10
- data/lib/puppet/pops/types/types.rb +3 -3
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec.rb +6 -2
- data/lib/puppet/provider/mount.rb +1 -1
- data/lib/puppet/provider/mount/parsed.rb +8 -8
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package/dnfmodule.rb +87 -0
- data/lib/puppet/provider/package/dpkg.rb +3 -12
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +34 -9
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/rpm.rb +6 -6
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -8
- data/lib/puppet/provider/service/systemd.rb +8 -8
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +22 -13
- data/lib/puppet/provider/user/windows_adsi.rb +4 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +1 -3
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/reference/type.rb +3 -9
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/settings.rb +3 -3
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/type.rb +2 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +7 -3
- data/lib/puppet/type/file.rb +1 -2
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/group.rb +4 -2
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/notify.rb +3 -2
- data/lib/puppet/type/package.rb +2 -2
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/user.rb +4 -2
- data/lib/puppet/util.rb +35 -12
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +8 -14
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/provider_features.rb +2 -4
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +3 -1
- data/lib/puppet/util/windows/adsi.rb +58 -28
- data/lib/puppet/util/windows/registry.rb +7 -5
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +115 -95
- data/man/man5/puppet.conf.5 +21 -5
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list-installed.txt +11 -0
- data/spec/integration/configurer_spec.rb +52 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/unit/configurer_spec.rb +380 -397
- data/spec/unit/forge/forge_spec.rb +1 -3
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/network/http/connection_spec.rb +26 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/provider/exec_spec.rb +209 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +186 -0
- data/spec/unit/provider/package/dpkg_spec.rb +15 -3
- data/spec/unit/provider/package/pip_spec.rb +51 -6
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/service/daemontools_spec.rb +24 -0
- data/spec/unit/provider/service/runit_spec.rb +24 -0
- data/spec/unit/provider/service/systemd_spec.rb +22 -22
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/useradd_spec.rb +46 -0
- data/spec/unit/type/exec_spec.rb +6 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +97 -0
- data/spec/unit/util/log/destinations_spec.rb +7 -3
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/windows/adsi_spec.rb +51 -0
- data/tasks/manpages.rake +1 -0
- metadata +12 -5
- data/lib/puppet/pops/loader/null_loader.rb +0 -60
- data/locales/ja/puppet.po +0 -12114
@@ -92,7 +92,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
|
|
92
92
|
updates = Hash.new { |h, k| h[k] = [] }
|
93
93
|
body.split.each_slice(3) do |tuple|
|
94
94
|
break if tuple[0] =~ /^(Obsoleting|Security:|Update)/
|
95
|
-
break unless tuple[1]
|
95
|
+
break unless tuple[1] =~ /^(?:(\d+):)?(\S+)-(\S+)$/
|
96
96
|
hash = update_to_hash(*tuple[0..1])
|
97
97
|
# Create entries for both the package name without a version and a
|
98
98
|
# version since yum considers those as mostly interchangeable.
|
@@ -25,24 +25,25 @@ require 'puppet/provider/package'
|
|
25
25
|
class Puppet::Provider::Package::Targetable < Puppet::Provider::Package
|
26
26
|
# Prefetch our package list, yo.
|
27
27
|
def self.prefetch(packages)
|
28
|
-
catalog_packages = packages.first
|
28
|
+
catalog_packages = packages.values.first.catalog.resources.select{ |p| p.provider.class == self }
|
29
29
|
package_commands = catalog_packages.map { |catalog_package| catalog_package::original_parameters[:command] }.uniq
|
30
30
|
package_commands.each do |command|
|
31
31
|
instances(command).each do |instance|
|
32
32
|
catalog_packages.each do |catalog_package|
|
33
|
-
if catalog_package[:name] == instance.name && catalog_package
|
33
|
+
if catalog_package[:name] == instance.name && catalog_package.original_parameters[:command] == command
|
34
34
|
catalog_package.provider = instance
|
35
|
-
self.debug "Prefetched instance: %{name} via command: %{
|
35
|
+
self.debug "Prefetched instance: %{name} via command: %{cmd}" % { name: instance.name, cmd: (command || :default) }
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
+
package_commands
|
40
41
|
end
|
41
42
|
|
42
43
|
# Returns the resource command or provider command.
|
43
44
|
|
44
45
|
def resource_or_provider_command
|
45
|
-
resource
|
46
|
+
resource.original_parameters[:command] || self.class.provider_command
|
46
47
|
end
|
47
48
|
|
48
49
|
# Targetable providers use has_command/is_optional to defer validation of provider suitability.
|
@@ -71,7 +71,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
|
|
71
71
|
|
72
72
|
flushed = []
|
73
73
|
begin
|
74
|
-
@modified.
|
74
|
+
@modified.sort_by(&:to_s).uniq.each do |target|
|
75
75
|
Puppet.debug "Flushing #{@resource_type.name} provider target #{target}"
|
76
76
|
flushed << target
|
77
77
|
flush_target(target)
|
@@ -200,12 +200,12 @@ Puppet::Type.type(:scheduled_task).provide(:win32_taskscheduler) do
|
|
200
200
|
def user=(value)
|
201
201
|
self.fail("Invalid user: #{value}") unless Puppet::Util::Windows::SID.name_to_sid(value)
|
202
202
|
|
203
|
-
if value.to_s.
|
204
|
-
task.set_account_information(value, resource[:password])
|
205
|
-
else
|
203
|
+
if value.to_s.casecmp('system').zero?
|
206
204
|
# Win32::TaskScheduler treats a nil/empty username & password as
|
207
205
|
# requesting the SYSTEM account.
|
208
206
|
task.set_account_information(nil, nil)
|
207
|
+
else
|
208
|
+
task.set_account_information(value, resource[:password])
|
209
209
|
end
|
210
210
|
end
|
211
211
|
|
@@ -46,14 +46,8 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
|
|
46
46
|
|
47
47
|
# Determine the daemon path.
|
48
48
|
def defpath
|
49
|
-
|
50
|
-
|
51
|
-
if Puppet::FileSystem.exist?(path)
|
52
|
-
@defpath = path
|
53
|
-
break
|
54
|
-
end
|
55
|
-
end
|
56
|
-
raise "Could not find the daemon directory (tested [/var/lib/service,/etc])" unless @defpath
|
49
|
+
@defpath ||= ["/var/lib/service", "/etc"].find do |path|
|
50
|
+
Puppet::FileSystem.exist?(path) && FileTest.directory?(path)
|
57
51
|
end
|
58
52
|
@defpath
|
59
53
|
end
|
@@ -65,6 +59,10 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
|
|
65
59
|
# ie enabled or not
|
66
60
|
def self.instances
|
67
61
|
path = self.defpath
|
62
|
+
unless path
|
63
|
+
Puppet.info("#{self.name} is unsuitable because service directory is nil")
|
64
|
+
return
|
65
|
+
end
|
68
66
|
unless FileTest.directory?(path)
|
69
67
|
Puppet.notice "Service path #{path} does not exist"
|
70
68
|
return
|
@@ -109,7 +107,9 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
|
|
109
107
|
# note that this path can be overridden in the resource
|
110
108
|
# definition
|
111
109
|
def daemon
|
112
|
-
|
110
|
+
path = resource[:path]
|
111
|
+
raise Puppet::Error.new("#{self.class.name} must specify a path for daemon directory") unless path
|
112
|
+
File.join(path, resource[:name])
|
113
113
|
end
|
114
114
|
|
115
115
|
def status
|
@@ -79,7 +79,7 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :init do
|
|
79
79
|
def running?
|
80
80
|
output = execute([command(:rcctl), "check", @resource[:name]],
|
81
81
|
:failonfail => false, :combine => false, :squelch => false).chomp
|
82
|
-
return true if output
|
82
|
+
return true if output =~ /\(ok\)/
|
83
83
|
end
|
84
84
|
|
85
85
|
# Uses the wrapper to prevent failure when the service is not running;
|
@@ -17,7 +17,7 @@ Puppet::Type.type(:service).provide :rcng, :parent => :bsd do
|
|
17
17
|
if Puppet::FileSystem.exist?(rcfile)
|
18
18
|
File.open(rcfile).readlines.each do |line|
|
19
19
|
# Now look for something that looks like "service=${service:=YES}" or "service=YES"
|
20
|
-
if line
|
20
|
+
if line =~ /^\s*#{@resource[:name]}=(?:YES|\${#{@resource[:name]}:=YES})/
|
21
21
|
return :true
|
22
22
|
end
|
23
23
|
end
|
@@ -34,7 +34,7 @@ Puppet::Type.type(:service).provide :rcng, :parent => :bsd do
|
|
34
34
|
if Puppet::FileSystem.exist?(rcfile)
|
35
35
|
newcontents = []
|
36
36
|
File.open(rcfile).readlines.each do |line|
|
37
|
-
if line
|
37
|
+
if line =~ /^\s*#{@resource[:name]}=(NO|\$\{#{@resource[:name]}:NO\})/
|
38
38
|
line = "#{@resource[:name]}=${#{@resource[:name]}:=YES}"
|
39
39
|
end
|
40
40
|
newcontents.push(line)
|
@@ -40,14 +40,8 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
|
|
40
40
|
# this is necessary to autodetect a valid resource
|
41
41
|
# default path, since there is no standard for such directory.
|
42
42
|
def defpath
|
43
|
-
|
44
|
-
|
45
|
-
if Puppet::FileSystem.exist?(path)
|
46
|
-
@defpath = path
|
47
|
-
break
|
48
|
-
end
|
49
|
-
end
|
50
|
-
raise "Could not find the daemon directory (tested [/etc/sv,/var/lib/service])" unless @defpath
|
43
|
+
@defpath ||= ["/var/lib/service", "/etc/sv"].find do |path|
|
44
|
+
Puppet::FileSystem.exist?(path) && FileTest.directory?(path)
|
51
45
|
end
|
52
46
|
@defpath
|
53
47
|
end
|
@@ -40,7 +40,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
40
40
|
# in the provider's believed state of the service and the actual state.
|
41
41
|
# @param action [String,Symbol] One of 'enable', 'disable', 'mask' or 'unmask'
|
42
42
|
def systemctl_change_enable(action)
|
43
|
-
output = systemctl(action, @resource[:name])
|
43
|
+
output = systemctl(action, '--', @resource[:name])
|
44
44
|
rescue
|
45
45
|
raise Puppet::Error, "Could not #{action} #{self.name}: #{output}", $!.backtrace
|
46
46
|
ensure
|
@@ -53,7 +53,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
53
53
|
|
54
54
|
def get_start_link_count
|
55
55
|
# Start links don't include '.service'. Just search for the service name.
|
56
|
-
if @resource[:name]
|
56
|
+
if @resource[:name] =~ /\.service/
|
57
57
|
link_name = @resource[:name].split('.')[0]
|
58
58
|
else
|
59
59
|
link_name = @resource[:name]
|
@@ -64,7 +64,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
64
64
|
|
65
65
|
def cached_enabled?
|
66
66
|
return @cached_enabled if @cached_enabled
|
67
|
-
cmd = [command(:systemctl), 'is-enabled', @resource[:name]]
|
67
|
+
cmd = [command(:systemctl), 'is-enabled', '--', @resource[:name]]
|
68
68
|
@cached_enabled = execute(cmd, :failonfail => false).strip
|
69
69
|
end
|
70
70
|
|
@@ -83,7 +83,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
83
83
|
# The indirect state indicates that the unit is not enabled.
|
84
84
|
return :false if output == 'indirect'
|
85
85
|
return :true if (code == 0)
|
86
|
-
if (output.empty?) && (code > 0) && (Facter.value(:osfamily).
|
86
|
+
if (output.empty?) && (code > 0) && (Facter.value(:osfamily).casecmp('debian').zero?)
|
87
87
|
ret = debian_enabled?
|
88
88
|
return ret if ret
|
89
89
|
end
|
@@ -131,20 +131,20 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def restartcmd
|
134
|
-
[command(:systemctl), "restart", @resource[:name]]
|
134
|
+
[command(:systemctl), "restart", '--', @resource[:name]]
|
135
135
|
end
|
136
136
|
|
137
137
|
def startcmd
|
138
138
|
self.unmask
|
139
|
-
[command(:systemctl), "start", @resource[:name]]
|
139
|
+
[command(:systemctl), "start", '--', @resource[:name]]
|
140
140
|
end
|
141
141
|
|
142
142
|
def stopcmd
|
143
|
-
[command(:systemctl), "stop", @resource[:name]]
|
143
|
+
[command(:systemctl), "stop", '--', @resource[:name]]
|
144
144
|
end
|
145
145
|
|
146
146
|
def statuscmd
|
147
|
-
[command(:systemctl), "is-active", @resource[:name]]
|
147
|
+
[command(:systemctl), "is-active", '--', @resource[:name]]
|
148
148
|
end
|
149
149
|
|
150
150
|
def restart
|
@@ -503,7 +503,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
503
503
|
def next_system_id(min_id=20)
|
504
504
|
dscl_output = dscl '.', '-list', '/Users', 'uid'
|
505
505
|
# We're ok with throwing away negative uids here. Also, remove nil values.
|
506
|
-
user_ids = dscl_output.split.compact.collect { |l| l.to_i if l
|
506
|
+
user_ids = dscl_output.split.compact.collect { |l| l.to_i if l =~ /^\d+$/ }
|
507
507
|
ids = user_ids.compact!.sort! { |a,b| a.to_f <=> b.to_f }
|
508
508
|
# We're just looking for an unused id in our sorted array.
|
509
509
|
ids.each_index do |i|
|
@@ -29,7 +29,7 @@ Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
|
|
29
29
|
|
30
30
|
def modifycmd(param,value)
|
31
31
|
cmd = super(param, value)
|
32
|
-
cmd
|
32
|
+
cmd.insert(1,"-F")
|
33
33
|
if trusted then
|
34
34
|
# Append an additional command to reset the password age to 0
|
35
35
|
# until a workaround with expiry module can be found for trusted
|
@@ -36,7 +36,7 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
|
|
36
36
|
has_features :manages_homedir, :allows_duplicates, :manages_solaris_rbac, :manages_passwords, :manages_password_age, :manages_shell
|
37
37
|
|
38
38
|
def check_valid_shell
|
39
|
-
unless File.
|
39
|
+
unless File.exist?(@resource.should(:shell))
|
40
40
|
raise(Puppet::Error, "Shell #{@resource.should(:shell)} must exist")
|
41
41
|
end
|
42
42
|
unless File.executable?(@resource.should(:shell).to_s)
|
@@ -55,35 +55,44 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
|
|
55
55
|
get(:uid)
|
56
56
|
end
|
57
57
|
|
58
|
+
def comment
|
59
|
+
return localcomment if @resource.forcelocal?
|
60
|
+
get(:comment)
|
61
|
+
end
|
62
|
+
|
58
63
|
def finduser(key, value)
|
59
64
|
passwd_file = "/etc/passwd"
|
60
|
-
passwd_keys = [
|
65
|
+
passwd_keys = [:account, :password, :uid, :gid, :gecos, :directory, :shell]
|
61
66
|
index = passwd_keys.index(key)
|
62
67
|
File.open(passwd_file) do |f|
|
63
68
|
f.each_line do |line|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
69
|
+
user = line.split(":")
|
70
|
+
if user[index] == value
|
71
|
+
return Hash[passwd_keys.zip(user)]
|
72
|
+
end
|
69
73
|
end
|
70
74
|
end
|
71
75
|
false
|
72
76
|
end
|
73
77
|
|
74
78
|
def local_username
|
75
|
-
finduser(
|
79
|
+
finduser(:uid, @resource.uid)
|
76
80
|
end
|
77
81
|
|
78
82
|
def localuid
|
79
|
-
user = finduser(
|
80
|
-
return user[
|
83
|
+
user = finduser(:account, resource[:name])
|
84
|
+
return user[:uid] if user
|
81
85
|
false
|
82
86
|
end
|
83
87
|
|
88
|
+
def localcomment
|
89
|
+
user = finduser(:account, resource[:name])
|
90
|
+
user[:gecos]
|
91
|
+
end
|
92
|
+
|
84
93
|
def shell=(value)
|
85
94
|
check_valid_shell
|
86
|
-
set(
|
95
|
+
set(:shell, value)
|
87
96
|
end
|
88
97
|
|
89
98
|
verify :gid, "GID must be an integer" do |value|
|
@@ -106,8 +115,8 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
|
|
106
115
|
# to ensure consistent behaviour of the useradd provider when
|
107
116
|
# using both useradd and luseradd
|
108
117
|
if (!@resource.allowdupe?) && @resource.forcelocal?
|
109
|
-
if @resource.should(:uid) && finduser(
|
110
|
-
raise(Puppet::Error, "UID #{@resource.should(:uid)
|
118
|
+
if @resource.should(:uid) && finduser(:uid, @resource.should(:uid).to_s)
|
119
|
+
raise(Puppet::Error, "UID #{@resource.should(:uid)} already exists, use allowdupe to force user creation")
|
111
120
|
end
|
112
121
|
elsif @resource.allowdupe? && (!@resource.forcelocal?)
|
113
122
|
return ["-o"]
|
@@ -116,7 +125,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
|
|
116
125
|
end
|
117
126
|
|
118
127
|
def check_valid_shell
|
119
|
-
unless File.
|
128
|
+
unless File.exist?(@resource.should(:shell))
|
120
129
|
raise(Puppet::Error, "Shell #{@resource.should(:shell)} must exist")
|
121
130
|
end
|
122
131
|
unless File.executable?(@resource.should(:shell).to_s)
|
@@ -125,14 +125,13 @@ Puppet::Type.type(:user).provide :windows_adsi do
|
|
125
125
|
|
126
126
|
def password=(value)
|
127
127
|
if user.disabled?
|
128
|
-
|
128
|
+
info _("The user account '%s' is disabled; The password will still be changed" % @resource[:name])
|
129
129
|
elsif user.locked_out?
|
130
|
-
|
130
|
+
info _("The user account '%s' is locked out; The password will still be changed" % @resource[:name])
|
131
131
|
elsif user.expired?
|
132
|
-
|
133
|
-
else
|
134
|
-
user.password = value
|
132
|
+
info _("The user account '%s' is expired; The password will still be changed" % @resource[:name])
|
135
133
|
end
|
134
|
+
user.password = value
|
136
135
|
end
|
137
136
|
|
138
137
|
def uid
|
@@ -76,8 +76,8 @@ Puppet::Type.type(:yumrepo).provide(:inifile) do
|
|
76
76
|
# Use directories in reposdir if they are set instead of default
|
77
77
|
if reposdir
|
78
78
|
# Follow the code from the yum/config.py
|
79
|
-
reposdir.
|
80
|
-
reposdir.
|
79
|
+
reposdir.tr!("\n", ' ')
|
80
|
+
reposdir.tr!(',', ' ')
|
81
81
|
dirs = reposdir.split
|
82
82
|
end
|
83
83
|
dirs.select! { |dir| Puppet::FileSystem.exist?(dir) }
|
@@ -5,14 +5,14 @@ require 'puppet/file_serving/metadata'
|
|
5
5
|
|
6
6
|
reference = Puppet::Util::Reference.newreference :indirection, :doc => "Indirection types and their terminus classes" do
|
7
7
|
text = ""
|
8
|
-
Puppet::Indirector::Indirection.instances.
|
8
|
+
Puppet::Indirector::Indirection.instances.sort_by(&:to_s).each do |indirection|
|
9
9
|
ind = Puppet::Indirector::Indirection.instance(indirection)
|
10
10
|
name = indirection.to_s.capitalize
|
11
11
|
text << "## " + indirection.to_s + "\n\n"
|
12
12
|
|
13
13
|
text << Puppet::Util::Docs.scrub(ind.doc) + "\n\n"
|
14
14
|
|
15
|
-
Puppet::Indirector::Terminus.terminus_classes(ind.name).
|
15
|
+
Puppet::Indirector::Terminus.terminus_classes(ind.name).sort_by(&:to_s).each do |terminus|
|
16
16
|
terminus_name = terminus.to_s
|
17
17
|
term_class = Puppet::Indirector::Terminus.terminus_class(ind.name, terminus)
|
18
18
|
if term_class
|
@@ -19,9 +19,7 @@ etc.), prevent Puppet from making changes (`noop`), and change logging verbosity
|
|
19
19
|
params << param
|
20
20
|
}
|
21
21
|
|
22
|
-
params.
|
23
|
-
a.to_s <=> b.to_s
|
24
|
-
}.each { |param|
|
22
|
+
params.sort_by(&:to_s).each { |param|
|
25
23
|
str << markdown_header(param.to_s, 3)
|
26
24
|
str << scrub(Puppet::Type.metaparamdoc(param))
|
27
25
|
str << "\n\n"
|
@@ -35,7 +35,7 @@ providers = Puppet::Util::Reference.newreference :providers, :title => "Provider
|
|
35
35
|
functional = false
|
36
36
|
notes = []
|
37
37
|
default = type.defaultprovider ? type.defaultprovider.name : 'none'
|
38
|
-
type.providers.
|
38
|
+
type.providers.sort_by(&:to_s).each do |pname|
|
39
39
|
data = []
|
40
40
|
table_data[pname] = data
|
41
41
|
provider = type.provider(pname)
|
@@ -49,9 +49,7 @@ Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types a
|
|
49
49
|
|
50
50
|
}
|
51
51
|
|
52
|
-
types.
|
53
|
-
a.to_s <=> b.to_s
|
54
|
-
}.each { |name,type|
|
52
|
+
types.sort_by(&:to_s).each { |name,type|
|
55
53
|
|
56
54
|
str << "
|
57
55
|
|
@@ -69,9 +67,7 @@ Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types a
|
|
69
67
|
end
|
70
68
|
|
71
69
|
docs = {}
|
72
|
-
type.validproperties.
|
73
|
-
a.to_s <=> b.to_s
|
74
|
-
}.reject { |sname|
|
70
|
+
type.validproperties.sort_by(&:to_s).reject { |sname|
|
75
71
|
property = type.propertybyname(sname)
|
76
72
|
property.nodoc
|
77
73
|
}.each { |sname|
|
@@ -91,9 +87,7 @@ Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types a
|
|
91
87
|
}
|
92
88
|
|
93
89
|
str << markdown_header("Parameters", 4) + "\n"
|
94
|
-
type.parameters.
|
95
|
-
a.to_s <=> b.to_s
|
96
|
-
}.each { |type_name, param|
|
90
|
+
type.parameters.sort_by(&:to_s).each { |type_name, param|
|
97
91
|
docs[type_name] = scrub(type.paramdoc(type_name))
|
98
92
|
}
|
99
93
|
|
data/lib/puppet/reports.rb
CHANGED
@@ -74,7 +74,7 @@ class Puppet::Reports
|
|
74
74
|
|
75
75
|
# Use this method so they all get loaded
|
76
76
|
instance_loader(:report).loadall
|
77
|
-
loaded_instances(:report).
|
77
|
+
loaded_instances(:report).sort_by(&:to_s).each do |name|
|
78
78
|
mod = self.report(name)
|
79
79
|
docs << "#{name}\n#{"-" * name.to_s.length}\n"
|
80
80
|
|