puppet 6.24.0-x86-mingw32 → 6.25.0-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.

Files changed (279) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/Gemfile.lock +12 -12
  4. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  5. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  6. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  7. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  8. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  9. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  10. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
  11. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  12. data/ext/README.md +13 -0
  13. data/lib/puppet/application/agent.rb +4 -0
  14. data/lib/puppet/application/apply.rb +20 -2
  15. data/lib/puppet/application/resource.rb +15 -13
  16. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  17. data/lib/puppet/configurer.rb +85 -57
  18. data/lib/puppet/confine/variable.rb +1 -1
  19. data/lib/puppet/defaults.rb +36 -30
  20. data/lib/puppet/environments.rb +66 -26
  21. data/lib/puppet/face/facts.rb +1 -1
  22. data/lib/puppet/facter_impl.rb +96 -0
  23. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  24. data/lib/puppet/file_serving/configuration.rb +3 -0
  25. data/lib/puppet/file_serving/mount/file.rb +4 -4
  26. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  27. data/lib/puppet/file_system/file_impl.rb +3 -1
  28. data/lib/puppet/forge.rb +1 -1
  29. data/lib/puppet/functions/find_template.rb +2 -2
  30. data/lib/puppet/http/service/compiler.rb +6 -1
  31. data/lib/puppet/indirector/catalog/compiler.rb +24 -6
  32. data/lib/puppet/indirector/catalog/rest.rb +1 -0
  33. data/lib/puppet/indirector/facts/facter.rb +6 -6
  34. data/lib/puppet/indirector/indirection.rb +1 -1
  35. data/lib/puppet/indirector/terminus.rb +4 -0
  36. data/lib/puppet/module/plan.rb +0 -1
  37. data/lib/puppet/module/task.rb +1 -1
  38. data/lib/puppet/module.rb +1 -0
  39. data/lib/puppet/module_tool/applications/installer.rb +8 -4
  40. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  41. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  42. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  43. data/lib/puppet/node/environment.rb +10 -11
  44. data/lib/puppet/pal/pal_impl.rb +1 -1
  45. data/lib/puppet/parser/scope.rb +1 -0
  46. data/lib/puppet/parser/templatewrapper.rb +1 -0
  47. data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
  48. data/lib/puppet/pops/model/ast.rb +1 -0
  49. data/lib/puppet/pops/model/factory.rb +2 -1
  50. data/lib/puppet/pops/parser/eparser.rb +201 -201
  51. data/lib/puppet/pops/parser/lexer2.rb +92 -91
  52. data/lib/puppet/pops/parser/slurp_support.rb +1 -0
  53. data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
  54. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  55. data/lib/puppet/pops/types/type_formatter.rb +4 -3
  56. data/lib/puppet/pops/types/types.rb +1 -1
  57. data/lib/puppet/provider/aix_object.rb +1 -1
  58. data/lib/puppet/provider/group/groupadd.rb +5 -2
  59. data/lib/puppet/provider/package/pkg.rb +19 -2
  60. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  61. data/lib/puppet/provider/package/yum.rb +1 -1
  62. data/lib/puppet/provider/service/base.rb +1 -1
  63. data/lib/puppet/provider/service/init.rb +5 -5
  64. data/lib/puppet/provider/service/launchd.rb +2 -2
  65. data/lib/puppet/provider/service/redhat.rb +1 -1
  66. data/lib/puppet/provider/service/smf.rb +3 -3
  67. data/lib/puppet/provider/service/systemd.rb +2 -2
  68. data/lib/puppet/provider/service/upstart.rb +5 -5
  69. data/lib/puppet/provider/user/aix.rb +44 -1
  70. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  71. data/lib/puppet/provider/user/useradd.rb +72 -16
  72. data/lib/puppet/provider.rb +1 -1
  73. data/lib/puppet/reference/providers.rb +2 -2
  74. data/lib/puppet/resource/type_collection.rb +1 -0
  75. data/lib/puppet/runtime.rb +11 -1
  76. data/lib/puppet/settings.rb +2 -2
  77. data/lib/puppet/test/test_helper.rb +4 -1
  78. data/lib/puppet/transaction/persistence.rb +11 -1
  79. data/lib/puppet/transaction/report.rb +15 -1
  80. data/lib/puppet/type/exec.rb +19 -2
  81. data/lib/puppet/type/file.rb +6 -6
  82. data/lib/puppet/type/filebucket.rb +3 -3
  83. data/lib/puppet/type/group.rb +0 -1
  84. data/lib/puppet/type/resources.rb +1 -1
  85. data/lib/puppet/type/service.rb +8 -3
  86. data/lib/puppet/type/user.rb +0 -1
  87. data/lib/puppet/type.rb +1 -1
  88. data/lib/puppet/util/command_line.rb +1 -1
  89. data/lib/puppet/util/filetype.rb +2 -2
  90. data/lib/puppet/util/json.rb +3 -0
  91. data/lib/puppet/util/log.rb +1 -2
  92. data/lib/puppet/util/logging.rb +1 -25
  93. data/lib/puppet/util/pidlock.rb +1 -1
  94. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  95. data/lib/puppet/util/suidmanager.rb +1 -2
  96. data/lib/puppet/util/tagging.rb +1 -0
  97. data/lib/puppet/util/windows/user.rb +0 -2
  98. data/lib/puppet/util.rb +4 -3
  99. data/lib/puppet/version.rb +1 -1
  100. data/lib/puppet.rb +2 -6
  101. data/locales/puppet.pot +246 -230
  102. data/man/man5/puppet.conf.5 +33 -25
  103. data/man/man8/puppet-agent.8 +4 -1
  104. data/man/man8/puppet-apply.8 +1 -1
  105. data/man/man8/puppet-catalog.8 +1 -1
  106. data/man/man8/puppet-config.8 +1 -1
  107. data/man/man8/puppet-describe.8 +1 -1
  108. data/man/man8/puppet-device.8 +1 -1
  109. data/man/man8/puppet-doc.8 +1 -1
  110. data/man/man8/puppet-epp.8 +1 -1
  111. data/man/man8/puppet-facts.8 +1 -1
  112. data/man/man8/puppet-filebucket.8 +1 -1
  113. data/man/man8/puppet-generate.8 +1 -1
  114. data/man/man8/puppet-help.8 +1 -1
  115. data/man/man8/puppet-key.8 +1 -1
  116. data/man/man8/puppet-lookup.8 +1 -1
  117. data/man/man8/puppet-man.8 +1 -1
  118. data/man/man8/puppet-module.8 +3 -3
  119. data/man/man8/puppet-node.8 +1 -1
  120. data/man/man8/puppet-parser.8 +1 -1
  121. data/man/man8/puppet-plugin.8 +1 -1
  122. data/man/man8/puppet-report.8 +1 -1
  123. data/man/man8/puppet-resource.8 +1 -1
  124. data/man/man8/puppet-script.8 +1 -1
  125. data/man/man8/puppet-ssl.8 +1 -1
  126. data/man/man8/puppet-status.8 +1 -1
  127. data/man/man8/puppet.8 +2 -2
  128. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  129. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  130. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  131. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  132. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  133. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  134. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  135. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  136. data/spec/integration/application/agent_spec.rb +113 -37
  137. data/spec/integration/application/filebucket_spec.rb +5 -0
  138. data/spec/integration/configurer_spec.rb +18 -2
  139. data/spec/integration/indirector/facts/facter_spec.rb +3 -3
  140. data/spec/integration/l10n/compiler_spec.rb +37 -0
  141. data/spec/integration/transaction/report_spec.rb +1 -1
  142. data/spec/integration/type/file_spec.rb +2 -2
  143. data/spec/integration/type/package_spec.rb +6 -6
  144. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  145. data/spec/integration/util/windows/process_spec.rb +1 -9
  146. data/spec/lib/puppet_spec/modules.rb +13 -2
  147. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  148. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  149. data/spec/shared_contexts/l10n.rb +27 -0
  150. data/spec/spec_helper.rb +1 -10
  151. data/spec/unit/application/apply_spec.rb +76 -56
  152. data/spec/unit/application/resource_spec.rb +29 -0
  153. data/spec/unit/configurer_spec.rb +171 -56
  154. data/spec/unit/defaults_spec.rb +1 -0
  155. data/spec/unit/environments_spec.rb +150 -1
  156. data/spec/unit/facter_impl_spec.rb +31 -0
  157. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  158. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  159. data/spec/unit/file_serving/configuration_spec.rb +14 -4
  160. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  161. data/spec/unit/file_system_spec.rb +7 -0
  162. data/spec/unit/functions/logging_spec.rb +1 -0
  163. data/spec/unit/functions/lookup_spec.rb +64 -0
  164. data/spec/unit/http/service/compiler_spec.rb +8 -0
  165. data/spec/unit/indirector/catalog/compiler_spec.rb +87 -0
  166. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  167. data/spec/unit/indirector/indirection_spec.rb +10 -3
  168. data/spec/unit/interface/action_spec.rb +0 -9
  169. data/spec/unit/module_spec.rb +15 -1
  170. data/spec/unit/module_tool/applications/installer_spec.rb +39 -12
  171. data/spec/unit/network/authstore_spec.rb +0 -15
  172. data/spec/unit/network/formats_spec.rb +6 -0
  173. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
  174. data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
  175. data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
  176. data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
  177. data/spec/unit/provider/package/gem_spec.rb +1 -1
  178. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  179. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  180. data/spec/unit/provider/package/pip_spec.rb +1 -1
  181. data/spec/unit/provider/package/pkg_spec.rb +29 -4
  182. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  183. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  184. data/spec/unit/provider/service/launchd_spec.rb +11 -0
  185. data/spec/unit/provider/service/systemd_spec.rb +1 -1
  186. data/spec/unit/provider/user/aix_spec.rb +100 -0
  187. data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
  188. data/spec/unit/provider/user/useradd_spec.rb +43 -2
  189. data/spec/unit/provider_spec.rb +4 -4
  190. data/spec/unit/puppet_spec.rb +12 -4
  191. data/spec/unit/ssl/certificate_request_spec.rb +8 -14
  192. data/spec/unit/type/service_spec.rb +27 -0
  193. data/spec/unit/type_spec.rb +2 -2
  194. data/spec/unit/util/logging_spec.rb +2 -0
  195. data/tasks/parallel.rake +3 -3
  196. metadata +37 -94
  197. data/ext/README.environment +0 -8
  198. data/ext/dbfix.sql +0 -132
  199. data/ext/debian/README.Debian +0 -8
  200. data/ext/debian/README.source +0 -2
  201. data/ext/debian/TODO.Debian +0 -1
  202. data/ext/debian/changelog.erb +0 -1122
  203. data/ext/debian/compat +0 -1
  204. data/ext/debian/control +0 -144
  205. data/ext/debian/copyright +0 -339
  206. data/ext/debian/docs +0 -1
  207. data/ext/debian/fileserver.conf +0 -41
  208. data/ext/debian/puppet-common.dirs +0 -13
  209. data/ext/debian/puppet-common.install +0 -3
  210. data/ext/debian/puppet-common.lintian-overrides +0 -5
  211. data/ext/debian/puppet-common.manpages +0 -28
  212. data/ext/debian/puppet-common.postinst +0 -35
  213. data/ext/debian/puppet-common.postrm +0 -33
  214. data/ext/debian/puppet-el.dirs +0 -1
  215. data/ext/debian/puppet-el.emacsen-install +0 -25
  216. data/ext/debian/puppet-el.emacsen-remove +0 -11
  217. data/ext/debian/puppet-el.emacsen-startup +0 -9
  218. data/ext/debian/puppet-el.install +0 -1
  219. data/ext/debian/puppet-testsuite.install +0 -2
  220. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  221. data/ext/debian/puppet.lintian-overrides +0 -3
  222. data/ext/debian/puppet.logrotate +0 -20
  223. data/ext/debian/puppet.postinst +0 -20
  224. data/ext/debian/puppet.postrm +0 -20
  225. data/ext/debian/puppet.preinst +0 -20
  226. data/ext/debian/puppetmaster-common.install +0 -2
  227. data/ext/debian/puppetmaster-common.manpages +0 -2
  228. data/ext/debian/puppetmaster-common.postinst +0 -6
  229. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  230. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  231. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  232. data/ext/debian/puppetmaster.README.debian +0 -17
  233. data/ext/debian/puppetmaster.default +0 -14
  234. data/ext/debian/puppetmaster.init +0 -137
  235. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  236. data/ext/debian/puppetmaster.postinst +0 -20
  237. data/ext/debian/puppetmaster.postrm +0 -5
  238. data/ext/debian/puppetmaster.preinst +0 -22
  239. data/ext/debian/rules +0 -132
  240. data/ext/debian/source/format +0 -1
  241. data/ext/debian/source/options +0 -1
  242. data/ext/debian/vim-puppet.README.Debian +0 -13
  243. data/ext/debian/vim-puppet.dirs +0 -5
  244. data/ext/debian/vim-puppet.yaml +0 -7
  245. data/ext/debian/watch +0 -2
  246. data/ext/freebsd/puppetd +0 -26
  247. data/ext/freebsd/puppetmasterd +0 -26
  248. data/ext/gentoo/conf.d/puppet +0 -5
  249. data/ext/gentoo/conf.d/puppetmaster +0 -12
  250. data/ext/gentoo/init.d/puppet +0 -38
  251. data/ext/gentoo/init.d/puppetmaster +0 -51
  252. data/ext/gentoo/puppet/fileserver.conf +0 -41
  253. data/ext/ips/puppet-agent +0 -44
  254. data/ext/ips/puppet-master +0 -44
  255. data/ext/ips/puppet.p5m.erb +0 -12
  256. data/ext/ips/puppetagent.xml +0 -42
  257. data/ext/ips/puppetmaster.xml +0 -42
  258. data/ext/ips/rules +0 -19
  259. data/ext/ips/transforms +0 -34
  260. data/ext/ldap/puppet.schema +0 -24
  261. data/ext/logcheck/puppet +0 -23
  262. data/ext/osx/file_mapping.yaml +0 -33
  263. data/ext/osx/postflight.erb +0 -109
  264. data/ext/osx/preflight.erb +0 -52
  265. data/ext/osx/prototype.plist.erb +0 -38
  266. data/ext/redhat/fileserver.conf +0 -41
  267. data/ext/redhat/logrotate +0 -21
  268. data/ext/redhat/puppet.spec.erb +0 -842
  269. data/ext/redhat/server.init +0 -128
  270. data/ext/redhat/server.sysconfig +0 -13
  271. data/ext/solaris/pkginfo +0 -6
  272. data/ext/solaris/smf/puppetd.xml +0 -77
  273. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  274. data/ext/solaris/smf/svc-puppetd +0 -71
  275. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  276. data/ext/suse/puppet.spec +0 -310
  277. data/ext/suse/server.init +0 -173
  278. data/ext/yaml_nodes.rb +0 -105
  279. data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -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,114 +31,114 @@ 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, '['.freeze, 1].freeze
34
- TOKEN_LISTSTART = [:LISTSTART, '['.freeze, 1].freeze
35
- TOKEN_RBRACK = [:RBRACK, ']'.freeze, 1].freeze
36
- TOKEN_LBRACE = [:LBRACE, '{'.freeze, 1].freeze
37
- TOKEN_RBRACE = [:RBRACE, '}'.freeze, 1].freeze
38
- TOKEN_SELBRACE = [:SELBRACE, '{'.freeze, 1].freeze
39
- TOKEN_LPAREN = [:LPAREN, '('.freeze, 1].freeze
40
- TOKEN_WSLPAREN = [:WSLPAREN, '('.freeze, 1].freeze
41
- TOKEN_RPAREN = [:RPAREN, ')'.freeze, 1].freeze
42
-
43
- TOKEN_EQUALS = [:EQUALS, '='.freeze, 1].freeze
44
- TOKEN_APPENDS = [:APPENDS, '+='.freeze, 2].freeze
45
- TOKEN_DELETES = [:DELETES, '-='.freeze, 2].freeze
46
-
47
- TOKEN_ISEQUAL = [:ISEQUAL, '=='.freeze, 2].freeze
48
- TOKEN_NOTEQUAL = [:NOTEQUAL, '!='.freeze, 2].freeze
49
- TOKEN_MATCH = [:MATCH, '=~'.freeze, 2].freeze
50
- TOKEN_NOMATCH = [:NOMATCH, '!~'.freeze, 2].freeze
51
- TOKEN_GREATEREQUAL = [:GREATEREQUAL, '>='.freeze, 2].freeze
52
- TOKEN_GREATERTHAN = [:GREATERTHAN, '>'.freeze, 1].freeze
53
- TOKEN_LESSEQUAL = [:LESSEQUAL, '<='.freeze, 2].freeze
54
- TOKEN_LESSTHAN = [:LESSTHAN, '<'.freeze, 1].freeze
55
-
56
- TOKEN_FARROW = [:FARROW, '=>'.freeze, 2].freeze
57
- TOKEN_PARROW = [:PARROW, '+>'.freeze, 2].freeze
58
-
59
- TOKEN_LSHIFT = [:LSHIFT, '<<'.freeze, 2].freeze
60
- TOKEN_LLCOLLECT = [:LLCOLLECT, '<<|'.freeze, 3].freeze
61
- TOKEN_LCOLLECT = [:LCOLLECT, '<|'.freeze, 2].freeze
62
-
63
- TOKEN_RSHIFT = [:RSHIFT, '>>'.freeze, 2].freeze
64
- TOKEN_RRCOLLECT = [:RRCOLLECT, '|>>'.freeze, 3].freeze
65
- TOKEN_RCOLLECT = [:RCOLLECT, '|>'.freeze, 2].freeze
66
-
67
- TOKEN_PLUS = [:PLUS, '+'.freeze, 1].freeze
68
- TOKEN_MINUS = [:MINUS, '-'.freeze, 1].freeze
69
- TOKEN_DIV = [:DIV, '/'.freeze, 1].freeze
70
- TOKEN_TIMES = [:TIMES, '*'.freeze, 1].freeze
71
- TOKEN_MODULO = [:MODULO, '%'.freeze, 1].freeze
72
-
73
- TOKEN_NOT = [:NOT, '!'.freeze, 1].freeze
74
- TOKEN_DOT = [:DOT, '.'.freeze, 1].freeze
75
- TOKEN_PIPE = [:PIPE, '|'.freeze, 1].freeze
76
- TOKEN_AT = [:AT , '@'.freeze, 1].freeze
77
- TOKEN_ATAT = [:ATAT , '@@'.freeze, 2].freeze
78
- TOKEN_COLON = [:COLON, ':'.freeze, 1].freeze
79
- TOKEN_COMMA = [:COMMA, ','.freeze, 1].freeze
80
- TOKEN_SEMIC = [:SEMIC, ';'.freeze, 1].freeze
81
- TOKEN_QMARK = [:QMARK, '?'.freeze, 1].freeze
82
- TOKEN_TILDE = [:TILDE, '~'.freeze, 1].freeze # lexed but not an operator in Puppet
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, '->'.freeze, 2].freeze
87
- TOKEN_IN_EDGE_SUB = [:IN_EDGE_SUB, '~>'.freeze, 2].freeze
88
- TOKEN_OUT_EDGE = [:OUT_EDGE, '<-'.freeze, 2].freeze
89
- TOKEN_OUT_EDGE_SUB = [:OUT_EDGE_SUB, '<~'.freeze, 2].freeze
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 = [:STRING, nil, 0].freeze
93
- TOKEN_WORD = [:WORD, nil, 0].freeze
94
- TOKEN_DQPRE = [:DQPRE, nil, 0].freeze
95
- TOKEN_DQMID = [:DQPRE, nil, 0].freeze
96
- TOKEN_DQPOS = [:DQPRE, nil, 0].freeze
97
- TOKEN_NUMBER = [:NUMBER, nil, 0].freeze
98
- TOKEN_VARIABLE = [:VARIABLE, nil, 1].freeze
99
- TOKEN_VARIABLE_EMPTY = [:VARIABLE, ''.freeze, 1].freeze
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 = [:HEREDOC, nil, 0].freeze
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 = [:EPP_START, nil, 0].freeze
106
- TOKEN_EPPEND = [:EPP_END, '%>', 2].freeze
107
- TOKEN_EPPEND_TRIM = [:EPP_END_TRIM, '-%>', 3].freeze
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 = [:OTHER, nil, 0]
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.
115
116
  #
116
117
  KEYWORDS = {
117
- 'case' => [:CASE, 'case', 4],
118
- 'class' => [:CLASS, 'class', 5],
119
- 'default' => [:DEFAULT, 'default', 7],
120
- 'define' => [:DEFINE, 'define', 6],
121
- 'if' => [:IF, 'if', 2],
122
- 'elsif' => [:ELSIF, 'elsif', 5],
123
- 'else' => [:ELSE, 'else', 4],
124
- 'inherits' => [:INHERITS, 'inherits', 8],
125
- 'node' => [:NODE, 'node', 4],
126
- 'and' => [:AND, 'and', 3],
127
- 'or' => [:OR, 'or', 2],
128
- 'undef' => [:UNDEF, 'undef', 5],
129
- 'false' => [:BOOLEAN, false, 5],
130
- 'true' => [:BOOLEAN, true, 4],
131
- 'in' => [:IN, 'in', 2],
132
- 'unless' => [:UNLESS, 'unless', 6],
133
- 'function' => [:FUNCTION, 'function', 8],
134
- 'type' => [:TYPE, 'type', 4],
135
- 'attr' => [:ATTR, 'attr', 4],
136
- 'private' => [:PRIVATE, 'private', 7],
137
- 'application' => [:APPLICATION, 'application', 11],
138
- 'consumes' => [:CONSUMES, 'consumes', 8],
139
- 'produces' => [:PRODUCES, 'produces', 8],
140
- 'site' => [:SITE, 'site', 4],
118
+ 'case' => [:CASE, 'case', 4],
119
+ 'class' => [:CLASS, 'class', 5],
120
+ 'default' => [:DEFAULT, 'default', 7],
121
+ 'define' => [:DEFINE, 'define', 6],
122
+ 'if' => [:IF, 'if', 2],
123
+ 'elsif' => [:ELSIF, 'elsif', 5],
124
+ 'else' => [:ELSE, 'else', 4],
125
+ 'inherits' => [:INHERITS, 'inherits', 8],
126
+ 'node' => [:NODE, 'node', 4],
127
+ 'and' => [:AND, 'and', 3],
128
+ 'or' => [:OR, 'or', 2],
129
+ 'undef' => [:UNDEF, 'undef', 5],
130
+ 'false' => [:BOOLEAN, false, 5],
131
+ 'true' => [:BOOLEAN, true, 4],
132
+ 'in' => [:IN, 'in', 2],
133
+ 'unless' => [:UNLESS, 'unless', 6],
134
+ 'function' => [:FUNCTION, 'function', 8],
135
+ 'type' => [:TYPE, 'type', 4],
136
+ 'attr' => [:ATTR, 'attr', 4],
137
+ 'private' => [:PRIVATE, 'private', 7],
138
+ 'application' => [:APPLICATION, 'application', 11],
139
+ 'consumes' => [:CONSUMES, 'consumes', 8],
140
+ 'produces' => [:PRODUCES, 'produces', 8],
141
+ 'site' => [:SITE, 'site', 4],
141
142
  }
142
143
 
143
144
  KEYWORDS.each {|k,v| v[1].freeze; v.freeze }
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Puppet::Pops
2
3
  module Parser
3
4
  # This module is an integral part of the Lexer.
@@ -14,6 +14,8 @@ module Serialization
14
14
  # @option options [Boolean] :local_reference use local references instead of duplicating complex entries
15
15
  # @option options [Boolean] :type_by_reference `true` if Object types are converted to references rather than embedded.
16
16
  # @option options [Boolean] :symbol_as_string `true` if Symbols should be converted to strings (with type loss)
17
+ # @option options [Boolean] :force_symbol `false` if Symbols should not be converted (rich_data and symbol_as_string must be false)
18
+ # @option options [Boolean] :silence_warnings `false` if warnings should be silenced
17
19
  # @option options [String] :message_prefix String to prepend to in warnings and errors
18
20
  # @return [Data] the processed result. An object assignable to `Data`.
19
21
  #
@@ -41,6 +43,12 @@ module Serialization
41
43
  @symbol_as_string = options[:symbol_as_string]
42
44
  @symbol_as_string = false if @symbol_as_string.nil?
43
45
 
46
+ @force_symbol = options[:force_symbol]
47
+ @force_symbol = false if @force_symbol.nil?
48
+
49
+ @silence_warnings = options[:silence_warnings]
50
+ @silence_warnings = false if @silence_warnings.nil?
51
+
44
52
  @rich_data = options[:rich_data]
45
53
  @rich_data = false if @rich_data.nil?
46
54
 
@@ -92,7 +100,11 @@ module Serialization
92
100
  elsif @rich_data
93
101
  { PCORE_TYPE_KEY => PCORE_TYPE_SYMBOL, PCORE_VALUE_KEY => value.to_s }
94
102
  else
95
- unknown_to_string_with_warning(value)
103
+ if @force_symbol
104
+ value
105
+ else
106
+ @silence_warnings ? unknown_to_string(value) : unknown_to_string_with_warning(value)
107
+ end
96
108
  end
97
109
  elsif value.instance_of?(Array)
98
110
  process(value) do
@@ -117,7 +129,11 @@ module Serialization
117
129
  { PCORE_TYPE_KEY => PCORE_TYPE_SENSITIVE, PCORE_VALUE_KEY => to_data(value.unwrap) }
118
130
  end
119
131
  else
120
- unknown_to_data(value)
132
+ if @rich_data
133
+ value_to_data_hash(value)
134
+ else
135
+ @silence_warnings ? unknown_to_string(value) : unknown_to_string_with_warning(value)
136
+ end
121
137
  end
122
138
  end
123
139
 
@@ -191,10 +207,6 @@ module Serialization
191
207
  v
192
208
  end
193
209
 
194
- def unknown_to_data(value)
195
- @rich_data ? value_to_data_hash(value) : unknown_to_string_with_warning(value)
196
- end
197
-
198
210
  def unknown_key_to_string_with_warning(value)
199
211
  str = unknown_to_string(value)
200
212
  serialization_issue(Issues::SERIALIZATION_UNKNOWN_KEY_CONVERTED_TO_STRING, :path => path_to_s, :klass => value.class, :value => str)
@@ -62,7 +62,7 @@ module Serialization
62
62
  end
63
63
 
64
64
  def to_data(value)
65
- if value.is_a?(String)
65
+ if value.instance_of?(String)
66
66
  to_string_or_binary(value)
67
67
  elsif value.nil? || Types::PScalarDataType::DEFAULT.instance?(value)
68
68
  value
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require '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
@@ -736,7 +736,7 @@ class PScalarDataType < PScalarType
736
736
  end
737
737
 
738
738
  def instance?(o, guard = nil)
739
- return o.is_a?(String) || o.is_a?(Integer) || o.is_a?(Float) || o.is_a?(TrueClass) || o.is_a?(FalseClass)
739
+ return o.instance_of?(String) || o.is_a?(Integer) || o.is_a?(Float) || o.is_a?(TrueClass) || o.is_a?(FalseClass)
740
740
  end
741
741
 
742
742
  DEFAULT = PScalarDataType.new
@@ -279,7 +279,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
279
279
  name = object[:name]
280
280
  id = object[:attributes].delete(:id)
281
281
 
282
- Hash[[[:name, name,],[:id, id]]]
282
+ { name: name, id: id }
283
283
  end
284
284
  end
285
285
 
@@ -2,11 +2,14 @@ require 'puppet/provider/nameservice/objectadd'
2
2
  require '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? Facter.value(:operatingsystem)
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
@@ -165,7 +165,14 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
165
165
  command = is == :absent ? 'install' : 'update'
166
166
  options = ['-n']
167
167
  options.concat(join_options(@resource[:install_options])) if @resource[:install_options]
168
- status = exec_cmd(command(:pkg), command, *options, "#{name}@#{p[:ensure]}")[:exit]
168
+
169
+ begin
170
+ unhold if properties[:mark] == :hold
171
+ status = exec_cmd(command(:pkg), command, *options, "#{name}@#{p[:ensure]}")[:exit]
172
+ ensure
173
+ hold if properties[:mark] == :hold
174
+ end
175
+
169
176
  case status
170
177
  when 4
171
178
  # if the first installable match would cause no changes, we're in sync
@@ -225,7 +232,7 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
225
232
  command = 'update'
226
233
  end
227
234
  args = ['--accept']
228
- if Puppet::Util::Package.versioncmp(Facter.value(:operatingsystemrelease), '11.2') >= 0
235
+ if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.2') >= 0
229
236
  args.push('--sync-actuators-timeout', '900')
230
237
  end
231
238
  args.concat(join_options(@resource[:install_options])) if @resource[:install_options]
@@ -234,7 +241,17 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
234
241
  end
235
242
  self.unhold if self.properties[:mark] == :hold
236
243
  begin
244
+ tries = 1
245
+ # pkg install exits with code 7 when the image is currently in use by another process and cannot be modified
237
246
  r = exec_cmd(command(:pkg), command, *args, name)
247
+ while r[:exit] == 7 do
248
+ if tries > 4
249
+ raise Puppet::Error, _("Pkg could not install %{name} after %{tries} tries. Aborting run") % { name: name, tries: tries }
250
+ end
251
+ sleep 2 ** tries
252
+ tries += 1
253
+ r = exec_cmd(command(:pkg), command, *args, name)
254
+ end
238
255
  ensure
239
256
  self.hold if @resource[:mark] == :hold
240
257
  end
@@ -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 = Facter.value(:pe_server_version) ? pe_puppetserver_conf_file : os_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 Facter.value(:operatingsystemmajrelease).to_i > 5 then ["-d", "0"] else [] end
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 Facter.value(:operatingsystem)
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 Facter.value(:operatingsystem)
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 = Facter.value(:operatingsystem).downcase
25
- family = Facter.value(:osfamily).downcase
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 Facter.value(:osfamily) == "cisco-wrlinux"
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 texecute(type, command, fof = true, squelch = false, combine = true)
174
- if type == :start && Facter.value(:osfamily) == "Solaris"
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 ||= Facter.value(:operatingsystemmajrelease).to_i
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
@@ -138,7 +138,7 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do
138
138
  Puppet.debug("Reading launchd plist #{filepath}")
139
139
  job = read_plist(filepath)
140
140
  next if job.nil?
141
- if job.has_key?("Label")
141
+ if job.respond_to?(:key) && job.key?("Label")
142
142
  @label_to_path_map[job["Label"]] = filepath
143
143
  else
144
144
  #TRANSLATORS 'plist' and label' should not be translated
@@ -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 Facter.value(:osfamily) != 'Suse' || output =~ /^#{name}\s+(on|B)$/
38
+ return :false unless Puppet.runtime[:facter].value(:osfamily) != 'Suse' || output =~ /^#{name}\s+(on|B)$/
39
39
 
40
40
  :true
41
41
  end
@@ -73,14 +73,14 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
73
73
 
74
74
  # Returns true if the provider supports incomplete services.
75
75
  def supports_incomplete_services?
76
- Puppet::Util::Package.versioncmp(Facter.value(:operatingsystemrelease), '11.1') >= 0
76
+ Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.1') >= 0
77
77
  end
78
78
 
79
79
  # Returns true if the service is complete. A complete service is a service that
80
80
  # has the general/complete property defined.
81
81
  def complete_service?
82
82
  unless supports_incomplete_services?
83
- 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: Facter.value(:operatingsystemrelease) }
83
+ 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) }
84
84
  end
85
85
 
86
86
  return @complete_service if @complete_service
@@ -113,7 +113,7 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
113
113
  end
114
114
 
115
115
  def restartcmd
116
- if Puppet::Util::Package.versioncmp(Facter.value(:operatingsystemrelease), '11.2') >= 0
116
+ if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.2') >= 0
117
117
  [command(:adm), :restart, "-s", @resource[:name]]
118
118
  else
119
119
  # Synchronous restart only supported in Solaris 11.2 and above
@@ -14,7 +14,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
14
14
  confine :true => Puppet::FileSystem.exist?('/proc/1/comm') && Puppet::FileSystem.read('/proc/1/comm').include?('systemd')
15
15
 
16
16
  defaultfor :osfamily => [:archlinux]
17
- defaultfor :osfamily => :redhat, :operatingsystemmajrelease => ["7", "8"]
17
+ defaultfor :osfamily => :redhat, :operatingsystemmajrelease => ["7", "8", "9"]
18
18
  defaultfor :osfamily => :redhat, :operatingsystem => :fedora
19
19
  defaultfor :osfamily => :suse
20
20
  defaultfor :osfamily => :coreos
@@ -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) && (Facter.value(:osfamily).casecmp('debian').zero?)
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
- Facter.value(:operatingsystem) == 'Ubuntu',
14
- (Facter.value(:osfamily) == 'RedHat' and Facter.value(:operatingsystemrelease) =~ /^6\./),
15
- (Facter.value(:operatingsystem) == 'Amazon' and Facter.value(:operatingsystemmajrelease) =~ /\d{4}/),
16
- Facter.value(:operatingsystem) == 'LinuxMint',
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 Facter.value(:osfamily) == 'RedHat'
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
@@ -159,7 +159,7 @@ Puppet::Type.type(:user).provide :directoryservice do
159
159
  end
160
160
 
161
161
  def self.get_os_version
162
- @os_version ||= Facter.value(:macosx_productversion_major)
162
+ @os_version ||= Puppet.runtime[:facter].value(:macosx_productversion_major)
163
163
  end
164
164
 
165
165
  # Use dscl to retrieve an array of hashes containing attributes about all