puppet 7.10.0 → 7.11.0
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/Gemfile +2 -2
- data/Gemfile.lock +9 -9
- data/lib/puppet/application/agent.rb +4 -0
- data/lib/puppet/application/apply.rb +20 -2
- data/lib/puppet/application/resource.rb +15 -13
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer.rb +14 -4
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +9 -3
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/file_serving/mount/file.rb +4 -4
- data/lib/puppet/file_system/file_impl.rb +3 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +3 -3
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
- data/lib/puppet/pal/pal_impl.rb +1 -1
- data/lib/puppet/parser/scope.rb +8 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
- data/lib/puppet/pops/model/ast.rb +1 -0
- data/lib/puppet/pops/model/factory.rb +14 -13
- data/lib/puppet/pops/parser/egrammar.ra +2 -2
- data/lib/puppet/pops/parser/eparser.rb +752 -753
- data/lib/puppet/pops/parser/lexer2.rb +69 -68
- data/lib/puppet/pops/parser/slurp_support.rb +1 -0
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +7 -6
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +1 -1
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +10 -7
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/type_collection.rb +2 -1
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings/file_setting.rb +3 -8
- data/lib/puppet/settings.rb +2 -2
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/type/exec.rb +9 -1
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/user.rb +0 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/log.rb +1 -2
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +1 -2
- data/lib/puppet/util/tagging.rb +1 -0
- data/lib/puppet/util/windows/user.rb +0 -1
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +2 -6
- data/man/man5/puppet.conf.5 +10 -2
- data/man/man8/puppet-agent.8 +4 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.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-lookup.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-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/integration/application/agent_spec.rb +16 -0
- data/spec/integration/configurer_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +3 -3
- data/spec/integration/transaction/report_spec.rb +1 -1
- data/spec/integration/type/file_spec.rb +2 -2
- data/spec/integration/type/package_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +1 -9
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/configurer_spec.rb +13 -3
- data/spec/unit/facter_impl_spec.rb +31 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_system_spec.rb +7 -0
- data/spec/unit/functions/lookup_spec.rb +64 -0
- data/spec/unit/indirector/indirection_spec.rb +10 -3
- data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +1 -1
- data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/settings/file_setting_spec.rb +10 -7
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/logging_spec.rb +2 -0
- data/tasks/parallel.rake +3 -3
- metadata +5 -2
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# The Lexer is responsible for turning source text into tokens.
|
2
3
|
# This version is a performance enhanced lexer (in comparison to the 3.x and earlier "future parser" lexer.
|
3
4
|
#
|
@@ -30,85 +31,85 @@ class Lexer2
|
|
30
31
|
# The length is pre-calculated for all singleton tokens. The length is used both to signal the length of
|
31
32
|
# the token, and to advance the scanner position (without having to advance it with a scan(regexp)).
|
32
33
|
#
|
33
|
-
TOKEN_LBRACK = [:LBRACK, '['
|
34
|
-
TOKEN_LISTSTART = [:LISTSTART, '['
|
35
|
-
TOKEN_RBRACK = [:RBRACK, ']'
|
36
|
-
TOKEN_LBRACE = [:LBRACE, '{'
|
37
|
-
TOKEN_RBRACE = [:RBRACE, '}'
|
38
|
-
TOKEN_SELBRACE = [:SELBRACE, '{'
|
39
|
-
TOKEN_LPAREN = [:LPAREN, '('
|
40
|
-
TOKEN_WSLPAREN = [:WSLPAREN, '('
|
41
|
-
TOKEN_RPAREN = [:RPAREN, ')'
|
42
|
-
|
43
|
-
TOKEN_EQUALS = [:EQUALS, '='
|
44
|
-
TOKEN_APPENDS = [:APPENDS, '+='
|
45
|
-
TOKEN_DELETES = [:DELETES, '-='
|
46
|
-
|
47
|
-
TOKEN_ISEQUAL = [:ISEQUAL, '=='
|
48
|
-
TOKEN_NOTEQUAL = [:NOTEQUAL, '!='
|
49
|
-
TOKEN_MATCH = [:MATCH, '=~'
|
50
|
-
TOKEN_NOMATCH = [:NOMATCH, '!~'
|
51
|
-
TOKEN_GREATEREQUAL = [:GREATEREQUAL, '>='
|
52
|
-
TOKEN_GREATERTHAN = [:GREATERTHAN, '>'
|
53
|
-
TOKEN_LESSEQUAL = [:LESSEQUAL, '<='
|
54
|
-
TOKEN_LESSTHAN = [:LESSTHAN, '<'
|
55
|
-
|
56
|
-
TOKEN_FARROW = [:FARROW, '=>'
|
57
|
-
TOKEN_PARROW = [:PARROW, '+>'
|
58
|
-
|
59
|
-
TOKEN_LSHIFT = [:LSHIFT, '<<'
|
60
|
-
TOKEN_LLCOLLECT = [:LLCOLLECT, '<<|'
|
61
|
-
TOKEN_LCOLLECT = [:LCOLLECT, '<|'
|
62
|
-
|
63
|
-
TOKEN_RSHIFT = [:RSHIFT, '>>'
|
64
|
-
TOKEN_RRCOLLECT = [:RRCOLLECT, '|>>'
|
65
|
-
TOKEN_RCOLLECT = [:RCOLLECT, '|>'
|
66
|
-
|
67
|
-
TOKEN_PLUS = [:PLUS, '+'
|
68
|
-
TOKEN_MINUS = [:MINUS, '-'
|
69
|
-
TOKEN_DIV = [:DIV, '/'
|
70
|
-
TOKEN_TIMES = [:TIMES, '*'
|
71
|
-
TOKEN_MODULO = [:MODULO, '%'
|
72
|
-
|
73
|
-
TOKEN_NOT = [:NOT, '!'
|
74
|
-
TOKEN_DOT = [:DOT, '.'
|
75
|
-
TOKEN_PIPE = [:PIPE, '|'
|
76
|
-
TOKEN_AT = [:AT , '@'
|
77
|
-
TOKEN_ATAT = [:ATAT , '@@'
|
78
|
-
TOKEN_COLON = [:COLON, ':'
|
79
|
-
TOKEN_COMMA = [:COMMA, ','
|
80
|
-
TOKEN_SEMIC = [:SEMIC, ';'
|
81
|
-
TOKEN_QMARK = [:QMARK, '?'
|
82
|
-
TOKEN_TILDE = [:TILDE, '~'
|
34
|
+
TOKEN_LBRACK = [:LBRACK, '[', 1].freeze
|
35
|
+
TOKEN_LISTSTART = [:LISTSTART, '[', 1].freeze
|
36
|
+
TOKEN_RBRACK = [:RBRACK, ']', 1].freeze
|
37
|
+
TOKEN_LBRACE = [:LBRACE, '{', 1].freeze
|
38
|
+
TOKEN_RBRACE = [:RBRACE, '}', 1].freeze
|
39
|
+
TOKEN_SELBRACE = [:SELBRACE, '{', 1].freeze
|
40
|
+
TOKEN_LPAREN = [:LPAREN, '(', 1].freeze
|
41
|
+
TOKEN_WSLPAREN = [:WSLPAREN, '(', 1].freeze
|
42
|
+
TOKEN_RPAREN = [:RPAREN, ')', 1].freeze
|
43
|
+
|
44
|
+
TOKEN_EQUALS = [:EQUALS, '=', 1].freeze
|
45
|
+
TOKEN_APPENDS = [:APPENDS, '+=', 2].freeze
|
46
|
+
TOKEN_DELETES = [:DELETES, '-=', 2].freeze
|
47
|
+
|
48
|
+
TOKEN_ISEQUAL = [:ISEQUAL, '==', 2].freeze
|
49
|
+
TOKEN_NOTEQUAL = [:NOTEQUAL, '!=', 2].freeze
|
50
|
+
TOKEN_MATCH = [:MATCH, '=~', 2].freeze
|
51
|
+
TOKEN_NOMATCH = [:NOMATCH, '!~', 2].freeze
|
52
|
+
TOKEN_GREATEREQUAL = [:GREATEREQUAL, '>=', 2].freeze
|
53
|
+
TOKEN_GREATERTHAN = [:GREATERTHAN, '>', 1].freeze
|
54
|
+
TOKEN_LESSEQUAL = [:LESSEQUAL, '<=', 2].freeze
|
55
|
+
TOKEN_LESSTHAN = [:LESSTHAN, '<', 1].freeze
|
56
|
+
|
57
|
+
TOKEN_FARROW = [:FARROW, '=>', 2].freeze
|
58
|
+
TOKEN_PARROW = [:PARROW, '+>', 2].freeze
|
59
|
+
|
60
|
+
TOKEN_LSHIFT = [:LSHIFT, '<<', 2].freeze
|
61
|
+
TOKEN_LLCOLLECT = [:LLCOLLECT, '<<|', 3].freeze
|
62
|
+
TOKEN_LCOLLECT = [:LCOLLECT, '<|', 2].freeze
|
63
|
+
|
64
|
+
TOKEN_RSHIFT = [:RSHIFT, '>>', 2].freeze
|
65
|
+
TOKEN_RRCOLLECT = [:RRCOLLECT, '|>>', 3].freeze
|
66
|
+
TOKEN_RCOLLECT = [:RCOLLECT, '|>', 2].freeze
|
67
|
+
|
68
|
+
TOKEN_PLUS = [:PLUS, '+', 1].freeze
|
69
|
+
TOKEN_MINUS = [:MINUS, '-', 1].freeze
|
70
|
+
TOKEN_DIV = [:DIV, '/', 1].freeze
|
71
|
+
TOKEN_TIMES = [:TIMES, '*', 1].freeze
|
72
|
+
TOKEN_MODULO = [:MODULO, '%', 1].freeze
|
73
|
+
|
74
|
+
TOKEN_NOT = [:NOT, '!', 1].freeze
|
75
|
+
TOKEN_DOT = [:DOT, '.', 1].freeze
|
76
|
+
TOKEN_PIPE = [:PIPE, '|', 1].freeze
|
77
|
+
TOKEN_AT = [:AT , '@', 1].freeze
|
78
|
+
TOKEN_ATAT = [:ATAT , '@@', 2].freeze
|
79
|
+
TOKEN_COLON = [:COLON, ':', 1].freeze
|
80
|
+
TOKEN_COMMA = [:COMMA, ',', 1].freeze
|
81
|
+
TOKEN_SEMIC = [:SEMIC, ';', 1].freeze
|
82
|
+
TOKEN_QMARK = [:QMARK, '?', 1].freeze
|
83
|
+
TOKEN_TILDE = [:TILDE, '~', 1].freeze # lexed but not an operator in Puppet
|
83
84
|
|
84
85
|
TOKEN_REGEXP = [:REGEXP, nil, 0].freeze
|
85
86
|
|
86
|
-
TOKEN_IN_EDGE = [:IN_EDGE, '->'
|
87
|
-
TOKEN_IN_EDGE_SUB = [:IN_EDGE_SUB, '~>'
|
88
|
-
TOKEN_OUT_EDGE = [:OUT_EDGE, '<-'
|
89
|
-
TOKEN_OUT_EDGE_SUB = [:OUT_EDGE_SUB, '<~'
|
87
|
+
TOKEN_IN_EDGE = [:IN_EDGE, '->', 2].freeze
|
88
|
+
TOKEN_IN_EDGE_SUB = [:IN_EDGE_SUB, '~>', 2].freeze
|
89
|
+
TOKEN_OUT_EDGE = [:OUT_EDGE, '<-', 2].freeze
|
90
|
+
TOKEN_OUT_EDGE_SUB = [:OUT_EDGE_SUB, '<~', 2].freeze
|
90
91
|
|
91
92
|
# Tokens that are always unique to what has been lexed
|
92
|
-
TOKEN_STRING =
|
93
|
-
TOKEN_WORD =
|
94
|
-
TOKEN_DQPRE =
|
95
|
-
TOKEN_DQMID =
|
96
|
-
TOKEN_DQPOS =
|
97
|
-
TOKEN_NUMBER =
|
98
|
-
TOKEN_VARIABLE =
|
99
|
-
TOKEN_VARIABLE_EMPTY =
|
93
|
+
TOKEN_STRING = [:STRING, nil, 0].freeze
|
94
|
+
TOKEN_WORD = [:WORD, nil, 0].freeze
|
95
|
+
TOKEN_DQPRE = [:DQPRE, nil, 0].freeze
|
96
|
+
TOKEN_DQMID = [:DQPRE, nil, 0].freeze
|
97
|
+
TOKEN_DQPOS = [:DQPRE, nil, 0].freeze
|
98
|
+
TOKEN_NUMBER = [:NUMBER, nil, 0].freeze
|
99
|
+
TOKEN_VARIABLE = [:VARIABLE, nil, 1].freeze
|
100
|
+
TOKEN_VARIABLE_EMPTY = [:VARIABLE, '', 1].freeze
|
100
101
|
|
101
102
|
# HEREDOC has syntax as an argument.
|
102
|
-
TOKEN_HEREDOC =
|
103
|
+
TOKEN_HEREDOC = [:HEREDOC, nil, 0].freeze
|
103
104
|
|
104
105
|
# EPP_START is currently a marker token, may later get syntax
|
105
|
-
TOKEN_EPPSTART
|
106
|
-
TOKEN_EPPEND
|
107
|
-
TOKEN_EPPEND_TRIM
|
106
|
+
TOKEN_EPPSTART = [:EPP_START, nil, 0].freeze
|
107
|
+
TOKEN_EPPEND = [:EPP_END, '%>', 2].freeze
|
108
|
+
TOKEN_EPPEND_TRIM = [:EPP_END_TRIM, '-%>', 3].freeze
|
108
109
|
|
109
110
|
# This is used for unrecognized tokens, will always be a single character. This particular instance
|
110
111
|
# is not used, but is kept here for documentation purposes.
|
111
|
-
TOKEN_OTHER
|
112
|
+
TOKEN_OTHER = [:OTHER, nil, 0]
|
112
113
|
|
113
114
|
# Keywords are all singleton tokens with pre calculated lengths.
|
114
115
|
# Booleans are pre-calculated (rather than evaluating the strings "false" "true" repeatedly.
|
@@ -175,7 +176,7 @@ class Lexer2
|
|
175
176
|
# PERFORMANCE NOTE:
|
176
177
|
# Comparison against a frozen string is faster (than unfrozen).
|
177
178
|
#
|
178
|
-
STRING_BSLASH_SLASH = '\/'
|
179
|
+
STRING_BSLASH_SLASH = '\/'
|
179
180
|
|
180
181
|
attr_reader :locator
|
181
182
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative '../../../puppet/concurrent/thread_local_singleton'
|
2
3
|
|
3
4
|
module Puppet::Pops
|
@@ -22,7 +23,7 @@ class TypeFormatter
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def initialize
|
25
|
-
@string_visitor = Visitor.new(nil, 'string',0,0)
|
26
|
+
@string_visitor = Visitor.new(nil, 'string', 0, 0)
|
26
27
|
end
|
27
28
|
|
28
29
|
def expanded
|
@@ -49,7 +50,7 @@ class TypeFormatter
|
|
49
50
|
# @api public
|
50
51
|
#
|
51
52
|
def string(t)
|
52
|
-
@bld = ''
|
53
|
+
@bld = ''.dup
|
53
54
|
append_string(t)
|
54
55
|
@bld
|
55
56
|
end
|
@@ -63,7 +64,7 @@ class TypeFormatter
|
|
63
64
|
#
|
64
65
|
# @api public
|
65
66
|
def indented_string(t, indent = 0, indent_width = 2)
|
66
|
-
@bld = ''
|
67
|
+
@bld = ''.dup
|
67
68
|
append_indented_string(t, indent, indent_width)
|
68
69
|
@bld
|
69
70
|
end
|
@@ -634,7 +635,7 @@ class TypeFormatter
|
|
634
635
|
'[a TypeFormatter]'
|
635
636
|
end
|
636
637
|
|
637
|
-
NAME_SEGMENT_SEPARATOR = '::'
|
638
|
+
NAME_SEGMENT_SEPARATOR = '::'
|
638
639
|
STARTS_WITH_ASCII_CAPITAL = /^[A-Z]/
|
639
640
|
|
640
641
|
# Capitalizes each segment in a name separated with the {NAME_SEPARATOR} conditionally. The name
|
@@ -661,9 +662,9 @@ class TypeFormatter
|
|
661
662
|
|
662
663
|
private
|
663
664
|
|
664
|
-
COMMA_SEP = ', '
|
665
|
+
COMMA_SEP = ', '
|
665
666
|
|
666
|
-
HASH_ENTRY_OP = ' => '
|
667
|
+
HASH_ENTRY_OP = ' => '
|
667
668
|
|
668
669
|
def is_short_array?(t)
|
669
670
|
t.empty? || 100 - @indent * @indent_width > t.inject(0) do |sum, elem|
|
@@ -735,7 +735,7 @@ class PScalarDataType < PScalarType
|
|
735
735
|
end
|
736
736
|
|
737
737
|
def instance?(o, guard = nil)
|
738
|
-
return o.
|
738
|
+
return o.instance_of?(String) || o.is_a?(Integer) || o.is_a?(Float) || o.is_a?(TrueClass) || o.is_a?(FalseClass)
|
739
739
|
end
|
740
740
|
|
741
741
|
DEFAULT = PScalarDataType.new
|
@@ -2,11 +2,14 @@ require_relative '../../../puppet/provider/nameservice/objectadd'
|
|
2
2
|
require_relative '../../../puppet/util/libuser'
|
3
3
|
|
4
4
|
Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameService::ObjectAdd do
|
5
|
-
desc "Group management via `groupadd` and its ilk. The default for most platforms.
|
5
|
+
desc "Group management via `groupadd` and its ilk. The default for most platforms.
|
6
|
+
|
7
|
+
To use the `forcelocal` parameter, you need to install the `libuser` package (providing
|
8
|
+
`/usr/sbin/lgroupadd` and `/usr/sbin/luseradd`)."
|
6
9
|
|
7
10
|
commands :add => "groupadd", :delete => "groupdel", :modify => "groupmod"
|
8
11
|
|
9
|
-
has_feature :system_groups unless %w{HP-UX Solaris}.include?
|
12
|
+
has_feature :system_groups unless %w{HP-UX Solaris}.include? Puppet.runtime[:facter].value(:operatingsystem)
|
10
13
|
|
11
14
|
verify :gid, _("GID must be an integer") do |value|
|
12
15
|
value.is_a? Integer
|
@@ -228,7 +228,7 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
|
|
228
228
|
command = 'update'
|
229
229
|
end
|
230
230
|
args = ['--accept']
|
231
|
-
if Puppet::Util::Package.versioncmp(
|
231
|
+
if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.2') >= 0
|
232
232
|
args.push('--sync-actuators-timeout', '900')
|
233
233
|
end
|
234
234
|
args.concat(join_options(@resource[:install_options])) if @resource[:install_options]
|
@@ -4,7 +4,7 @@ Puppet::Type.type(:package).provide :puppet_gem, :parent => :gem do
|
|
4
4
|
|
5
5
|
has_feature :versionable, :install_options, :uninstall_options
|
6
6
|
|
7
|
-
confine :true =>
|
7
|
+
confine :true => Puppet.runtime[:facter].value(:aio_agent_version)
|
8
8
|
|
9
9
|
def self.windows_gemcmd
|
10
10
|
puppet_dir = Puppet::Util.get_env('PUPPET_DIR')
|
@@ -145,7 +145,7 @@ Puppet::Type.type(:package).provide :puppetserver_gem, :parent => :gem do
|
|
145
145
|
|
146
146
|
pe_puppetserver_conf_file = '/etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf'
|
147
147
|
os_puppetserver_conf_file = '/etc/puppetlabs/puppetserver/puppetserver.conf'
|
148
|
-
puppetserver_conf_file =
|
148
|
+
puppetserver_conf_file = Puppet.runtime[:facter].value(:pe_server_version) ? pe_puppetserver_conf_file : os_puppetserver_conf_file
|
149
149
|
puppetserver_conf = Hocon.load(puppetserver_conf_file)
|
150
150
|
|
151
151
|
gem_env = {}
|
@@ -298,7 +298,7 @@ defaultfor :osfamily => :redhat, :operatingsystemmajrelease => (4..7).to_a
|
|
298
298
|
|
299
299
|
# Yum on el-4 and el-5 returns exit status 0 when trying to install a package it doesn't recognize;
|
300
300
|
# ensure we capture output to check for errors.
|
301
|
-
no_debug = if
|
301
|
+
no_debug = if Puppet.runtime[:facter].value(:operatingsystemmajrelease).to_i > 5 then ["-d", "0"] else [] end
|
302
302
|
command = [command(:cmd)] + no_debug + ["-e", error_level, "-y", install_options, operation, wanted].compact
|
303
303
|
output = execute(command)
|
304
304
|
|
@@ -15,7 +15,7 @@ Puppet::Type.type(:service).provide :base, :parent => :service do
|
|
15
15
|
# ported from the facter 2.x implementation, since facter 3.x
|
16
16
|
# is dropping the fact (for which this was the only use)
|
17
17
|
def getps
|
18
|
-
case
|
18
|
+
case Puppet.runtime[:facter].value(:operatingsystem)
|
19
19
|
when 'OpenWrt'
|
20
20
|
'ps www'
|
21
21
|
when 'FreeBSD', 'NetBSD', 'OpenBSD', 'Darwin', 'DragonFly'
|
@@ -4,7 +4,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
|
|
4
4
|
desc "Standard `init`-style service management."
|
5
5
|
|
6
6
|
def self.defpath
|
7
|
-
case
|
7
|
+
case Puppet.runtime[:facter].value(:operatingsystem)
|
8
8
|
when "FreeBSD", "DragonFly"
|
9
9
|
["/etc/rc.d", "/usr/local/etc/rc.d"]
|
10
10
|
when "HP-UX"
|
@@ -21,8 +21,8 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
|
|
21
21
|
# Debian and Ubuntu should use the Debian provider.
|
22
22
|
# RedHat systems should use the RedHat provider.
|
23
23
|
confine :true => begin
|
24
|
-
os =
|
25
|
-
family =
|
24
|
+
os = Puppet.runtime[:facter].value(:operatingsystem).downcase
|
25
|
+
family = Puppet.runtime[:facter].value(:osfamily).downcase
|
26
26
|
!(os == 'debian' || os == 'ubuntu' || family == 'redhat')
|
27
27
|
end
|
28
28
|
|
@@ -54,7 +54,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
|
|
54
54
|
# these excludes were found with grep -r -L start /etc/init.d
|
55
55
|
excludes += %w{rcS module-init-tools}
|
56
56
|
# Prevent puppet failing on unsafe scripts from Yocto Linux
|
57
|
-
if
|
57
|
+
if Puppet.runtime[:facter].value(:osfamily) == "cisco-wrlinux"
|
58
58
|
excludes += %w{banner.sh bootmisc.sh checkroot.sh devpts.sh dmesg.sh
|
59
59
|
hostname.sh mountall.sh mountnfs.sh populate-volatile.sh
|
60
60
|
rmnologin.sh save-rtc.sh sendsigs sysfs.sh umountfs
|
@@ -171,7 +171,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
|
|
171
171
|
end
|
172
172
|
|
173
173
|
def service_execute(type, command, fof = true, squelch = false, combine = true)
|
174
|
-
if type == :start &&
|
174
|
+
if type == :start && Puppet.runtime[:facter].value(:osfamily) == "Solaris"
|
175
175
|
command = ["/usr/bin/ctrun -l child", command].flatten.join(" ")
|
176
176
|
end
|
177
177
|
super(type, command, fof, squelch, combine)
|
@@ -70,7 +70,7 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do
|
|
70
70
|
#
|
71
71
|
# @api private
|
72
72
|
def self.get_os_version
|
73
|
-
@os_version ||=
|
73
|
+
@os_version ||= Puppet.runtime[:facter].value(:operatingsystemmajrelease).to_i
|
74
74
|
end
|
75
75
|
|
76
76
|
# Defines the path to the overrides plist file where service enabling
|
@@ -35,7 +35,7 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init, :source => :init
|
|
35
35
|
# For Suse OS family, chkconfig returns 0 even if the service is disabled or non-existent
|
36
36
|
# Therefore, check the output for '<name> on' (or '<name> B for boot services)
|
37
37
|
# to see if it is enabled
|
38
|
-
return :false unless
|
38
|
+
return :false unless Puppet.runtime[:facter].value(:osfamily) != 'Suse' || output =~ /^#{name}\s+(on|B)$/
|
39
39
|
|
40
40
|
:true
|
41
41
|
end
|
@@ -101,14 +101,14 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
|
|
101
101
|
|
102
102
|
# Returns true if the provider supports incomplete services.
|
103
103
|
def supports_incomplete_services?
|
104
|
-
Puppet::Util::Package.versioncmp(
|
104
|
+
Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.1') >= 0
|
105
105
|
end
|
106
106
|
|
107
107
|
# Returns true if the service is complete. A complete service is a service that
|
108
108
|
# has the general/complete property defined.
|
109
109
|
def complete_service?
|
110
110
|
unless supports_incomplete_services?
|
111
|
-
raise Puppet::Error, _("Cannot query if the %{service} service is complete: The concept of complete/incomplete services was introduced in Solaris 11.1. You are on a Solaris %{release} machine.") % { service: @resource[:name], release:
|
111
|
+
raise Puppet::Error, _("Cannot query if the %{service} service is complete: The concept of complete/incomplete services was introduced in Solaris 11.1. You are on a Solaris %{release} machine.") % { service: @resource[:name], release: Puppet.runtime[:facter].value(:operatingsystemrelease) }
|
112
112
|
end
|
113
113
|
|
114
114
|
return @complete_service if @complete_service
|
@@ -138,7 +138,7 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
|
|
138
138
|
end
|
139
139
|
|
140
140
|
def restartcmd
|
141
|
-
if Puppet::Util::Package.versioncmp(
|
141
|
+
if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.2') >= 0
|
142
142
|
[command(:adm), :restart, "-s", self.service_fmri]
|
143
143
|
else
|
144
144
|
# Synchronous restart only supported in Solaris 11.2 and above
|
@@ -110,7 +110,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
110
110
|
# The indirect state indicates that the unit is not enabled.
|
111
111
|
return :false if output == 'indirect'
|
112
112
|
return :true if (code == 0)
|
113
|
-
if (output.empty?) && (code > 0) && (
|
113
|
+
if (output.empty?) && (code > 0) && (Puppet.runtime[:facter].value(:osfamily).casecmp('debian').zero?)
|
114
114
|
ret = debian_enabled?
|
115
115
|
return ret if ret
|
116
116
|
end
|
@@ -10,10 +10,10 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
10
10
|
"
|
11
11
|
|
12
12
|
confine :any => [
|
13
|
-
|
14
|
-
(
|
15
|
-
(
|
16
|
-
|
13
|
+
Puppet.runtime[:facter].value(:operatingsystem) == 'Ubuntu',
|
14
|
+
(Puppet.runtime[:facter].value(:osfamily) == 'RedHat' and Puppet.runtime[:facter].value(:operatingsystemrelease) =~ /^6\./),
|
15
|
+
(Puppet.runtime[:facter].value(:operatingsystem) == 'Amazon' and Puppet.runtime[:facter].value(:operatingsystemmajrelease) =~ /\d{4}/),
|
16
|
+
Puppet.runtime[:facter].value(:operatingsystem) == 'LinuxMint',
|
17
17
|
]
|
18
18
|
|
19
19
|
defaultfor :operatingsystem => :ubuntu, :operatingsystemmajrelease => ["10.04", "12.04", "14.04", "14.10"]
|
@@ -57,7 +57,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
57
57
|
|
58
58
|
def self.excludes
|
59
59
|
excludes = super
|
60
|
-
if
|
60
|
+
if Puppet.runtime[:facter].value(:osfamily) == 'RedHat'
|
61
61
|
# Puppet cannot deal with services that have instances, so we have to
|
62
62
|
# ignore these services using instances on redhat based systems.
|
63
63
|
excludes += %w[serial tty]
|
@@ -265,6 +265,50 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
|
|
265
265
|
end
|
266
266
|
end
|
267
267
|
|
268
|
+
# Lists all instances of the given object, taking in an optional set
|
269
|
+
# of ia_module arguments. Returns an array of hashes, each hash
|
270
|
+
# having the schema
|
271
|
+
# {
|
272
|
+
# :name => <object_name>
|
273
|
+
# :home => <object_home>
|
274
|
+
# }
|
275
|
+
def list_all_homes(ia_module_args = [])
|
276
|
+
cmd = [command(:list), '-c', *ia_module_args, '-a', 'home', 'ALL']
|
277
|
+
parse_aix_objects(execute(cmd)).to_a.map do |object|
|
278
|
+
name = object[:name]
|
279
|
+
home = object[:attributes].delete(:home)
|
280
|
+
|
281
|
+
{ name: name, home: home }
|
282
|
+
end
|
283
|
+
rescue => e
|
284
|
+
Puppet.debug("Could not list home of all users: #{e.message}")
|
285
|
+
{}
|
286
|
+
end
|
287
|
+
|
288
|
+
# Deletes this instance resource
|
289
|
+
def delete
|
290
|
+
homedir = home
|
291
|
+
super
|
292
|
+
return unless @resource.managehome?
|
293
|
+
|
294
|
+
if !Puppet::Util.absolute_path?(homedir) || File.realpath(homedir) == '/' || Puppet::FileSystem.symlink?(homedir)
|
295
|
+
Puppet.debug("Can not remove home directory '#{homedir}' of user '#{@resource[:name]}'. Please make sure the path is not relative, symlink or '/'.")
|
296
|
+
return
|
297
|
+
end
|
298
|
+
|
299
|
+
affected_home = list_all_homes.find { |info| info[:home].start_with?(File.realpath(homedir)) }
|
300
|
+
if affected_home
|
301
|
+
Puppet.debug("Can not remove home directory '#{homedir}' of user '#{@resource[:name]}' as it would remove the home directory '#{affected_home[:home]}' of user '#{affected_home[:name]}' also.")
|
302
|
+
return
|
303
|
+
end
|
304
|
+
|
305
|
+
FileUtils.remove_entry_secure(homedir, true)
|
306
|
+
end
|
307
|
+
|
308
|
+
def deletecmd
|
309
|
+
[self.class.command(:delete), '-p'] + ia_module_args + [@resource[:name]]
|
310
|
+
end
|
311
|
+
|
268
312
|
# UNSUPPORTED
|
269
313
|
#- **profile_membership**
|
270
314
|
# Whether specified roles should be treated as the only roles
|
@@ -314,5 +358,4 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
|
|
314
358
|
# be treated as the minimum membership list. Valid values are
|
315
359
|
# `inclusive`, `minimum`.
|
316
360
|
# UNSUPPORTED
|
317
|
-
|
318
361
|
end
|