openvox 7.37.1 → 8.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1086) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -3
  3. data/Gemfile +17 -12
  4. data/README.md +25 -30
  5. data/Rakefile +43 -33
  6. data/bin/puppet +1 -0
  7. data/examples/hiera/README.md +68 -57
  8. data/examples/hiera/data/common.yaml +12 -0
  9. data/examples/hiera/data/dc1.yaml +6 -0
  10. data/examples/hiera/hiera.yaml +15 -0
  11. data/examples/hiera/modules/ntp/data/common.yaml +4 -0
  12. data/examples/hiera/modules/ntp/hiera.yaml +9 -0
  13. data/examples/hiera/modules/ntp/manifests/config.pp +16 -4
  14. data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
  15. data/examples/hiera/modules/users/manifests/common.pp +7 -2
  16. data/examples/hiera/modules/users/manifests/dc1.pp +7 -2
  17. data/examples/hiera/site.pp +1 -1
  18. data/ext/build_defaults.yaml +1 -1
  19. data/ext/windows/service/daemon.rb +54 -60
  20. data/install.rb +21 -92
  21. data/lib/hiera/puppet_function.rb +8 -6
  22. data/lib/hiera/scope.rb +15 -13
  23. data/lib/hiera_puppet.rb +4 -6
  24. data/lib/puppet/agent/disabler.rb +5 -3
  25. data/lib/puppet/agent/locker.rb +2 -2
  26. data/lib/puppet/agent.rb +6 -4
  27. data/lib/puppet/application/agent.rb +305 -301
  28. data/lib/puppet/application/apply.rb +124 -117
  29. data/lib/puppet/application/catalog.rb +2 -0
  30. data/lib/puppet/application/config.rb +2 -0
  31. data/lib/puppet/application/describe.rb +50 -48
  32. data/lib/puppet/application/device.rb +224 -223
  33. data/lib/puppet/application/doc.rb +57 -58
  34. data/lib/puppet/application/epp.rb +2 -0
  35. data/lib/puppet/application/face_base.rb +18 -17
  36. data/lib/puppet/application/facts.rb +2 -0
  37. data/lib/puppet/application/filebucket.rb +174 -168
  38. data/lib/puppet/application/generate.rb +3 -1
  39. data/lib/puppet/application/help.rb +2 -0
  40. data/lib/puppet/application/indirection_base.rb +2 -0
  41. data/lib/puppet/application/lookup.rb +181 -181
  42. data/lib/puppet/application/module.rb +2 -0
  43. data/lib/puppet/application/node.rb +2 -0
  44. data/lib/puppet/application/parser.rb +2 -0
  45. data/lib/puppet/application/plugin.rb +2 -0
  46. data/lib/puppet/application/report.rb +2 -0
  47. data/lib/puppet/application/resource.rb +106 -96
  48. data/lib/puppet/application/script.rb +76 -74
  49. data/lib/puppet/application/ssl.rb +100 -92
  50. data/lib/puppet/application.rb +32 -32
  51. data/lib/puppet/application_support.rb +3 -2
  52. data/lib/puppet/coercion.rb +5 -3
  53. data/lib/puppet/compilable_resource_type.rb +4 -2
  54. data/lib/puppet/concurrent/lock.rb +2 -3
  55. data/lib/puppet/concurrent/synchronized.rb +2 -2
  56. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  57. data/lib/puppet/concurrent.rb +2 -0
  58. data/lib/puppet/configurer/downloader.rb +11 -5
  59. data/lib/puppet/configurer/fact_handler.rb +17 -16
  60. data/lib/puppet/configurer/plugin_handler.rb +2 -0
  61. data/lib/puppet/configurer.rb +40 -36
  62. data/lib/puppet/confine/any.rb +3 -1
  63. data/lib/puppet/confine/boolean.rb +3 -1
  64. data/lib/puppet/confine/exists.rb +3 -1
  65. data/lib/puppet/confine/false.rb +3 -1
  66. data/lib/puppet/confine/feature.rb +3 -2
  67. data/lib/puppet/confine/true.rb +3 -1
  68. data/lib/puppet/confine/variable.rb +4 -2
  69. data/lib/puppet/confine.rb +5 -2
  70. data/lib/puppet/confine_collection.rb +6 -3
  71. data/lib/puppet/confiner.rb +5 -3
  72. data/lib/puppet/context/trusted_information.rb +12 -10
  73. data/lib/puppet/context.rb +2 -0
  74. data/lib/puppet/daemon.rb +26 -10
  75. data/lib/puppet/data_binding.rb +3 -1
  76. data/lib/puppet/datatypes/error.rb +3 -1
  77. data/lib/puppet/datatypes/impl/error.rb +2 -0
  78. data/lib/puppet/datatypes.rb +12 -7
  79. data/lib/puppet/defaults.rb +164 -125
  80. data/lib/puppet/environments.rb +13 -15
  81. data/lib/puppet/error.rb +19 -15
  82. data/lib/puppet/etc.rb +10 -5
  83. data/lib/puppet/external/dot.rb +65 -75
  84. data/lib/puppet/face/catalog/select.rb +4 -2
  85. data/lib/puppet/face/catalog.rb +7 -5
  86. data/lib/puppet/face/config.rb +30 -31
  87. data/lib/puppet/face/epp.rb +25 -26
  88. data/lib/puppet/face/facts.rb +8 -6
  89. data/lib/puppet/face/generate.rb +5 -2
  90. data/lib/puppet/face/help/action.erb +0 -1
  91. data/lib/puppet/face/help/face.erb +0 -1
  92. data/lib/puppet/face/help/global.erb +1 -1
  93. data/lib/puppet/face/help.rb +80 -62
  94. data/lib/puppet/face/module/changes.rb +4 -3
  95. data/lib/puppet/face/module/install.rb +7 -4
  96. data/lib/puppet/face/module/list.rb +52 -53
  97. data/lib/puppet/face/module/uninstall.rb +2 -0
  98. data/lib/puppet/face/module/upgrade.rb +5 -3
  99. data/lib/puppet/face/module.rb +3 -1
  100. data/lib/puppet/face/node/clean.rb +4 -2
  101. data/lib/puppet/face/node.rb +5 -3
  102. data/lib/puppet/face/parser.rb +18 -19
  103. data/lib/puppet/face/plugin.rb +10 -8
  104. data/lib/puppet/face/report.rb +10 -10
  105. data/lib/puppet/face/resource.rb +2 -0
  106. data/lib/puppet/face.rb +2 -0
  107. data/lib/puppet/facter_impl.rb +1 -1
  108. data/lib/puppet/feature/base.rb +13 -13
  109. data/lib/puppet/feature/bolt.rb +2 -0
  110. data/lib/puppet/feature/cfpropertylist.rb +2 -0
  111. data/lib/puppet/feature/eventlog.rb +2 -0
  112. data/lib/puppet/feature/hiera_eyaml.rb +2 -0
  113. data/lib/puppet/feature/hocon.rb +2 -0
  114. data/lib/puppet/feature/libuser.rb +5 -3
  115. data/lib/puppet/feature/msgpack.rb +2 -0
  116. data/lib/puppet/feature/pe_license.rb +4 -2
  117. data/lib/puppet/feature/pson.rb +6 -0
  118. data/lib/puppet/feature/selinux.rb +2 -0
  119. data/lib/puppet/feature/ssh.rb +3 -1
  120. data/lib/puppet/feature/telnet.rb +3 -7
  121. data/lib/puppet/feature/zlib.rb +3 -1
  122. data/lib/puppet/ffi/posix/constants.rb +3 -1
  123. data/lib/puppet/ffi/posix/functions.rb +2 -1
  124. data/lib/puppet/ffi/posix.rb +2 -0
  125. data/lib/puppet/ffi/windows/api_types.rb +3 -1
  126. data/lib/puppet/ffi/windows/constants.rb +80 -78
  127. data/lib/puppet/ffi/windows/functions.rb +76 -75
  128. data/lib/puppet/ffi/windows/structs.rb +6 -5
  129. data/lib/puppet/ffi/windows.rb +2 -0
  130. data/lib/puppet/file_bucket/dipper.rb +20 -11
  131. data/lib/puppet/file_bucket/file.rb +8 -6
  132. data/lib/puppet/file_bucket.rb +2 -0
  133. data/lib/puppet/file_serving/base.rb +17 -9
  134. data/lib/puppet/file_serving/configuration/parser.rb +13 -10
  135. data/lib/puppet/file_serving/configuration.rb +10 -7
  136. data/lib/puppet/file_serving/content.rb +2 -0
  137. data/lib/puppet/file_serving/fileset.rb +23 -19
  138. data/lib/puppet/file_serving/http_metadata.rb +3 -4
  139. data/lib/puppet/file_serving/metadata.rb +26 -23
  140. data/lib/puppet/file_serving/mount/file.rb +15 -11
  141. data/lib/puppet/file_serving/mount/locales.rb +5 -5
  142. data/lib/puppet/file_serving/mount/modules.rb +3 -0
  143. data/lib/puppet/file_serving/mount/pluginfacts.rb +5 -5
  144. data/lib/puppet/file_serving/mount/plugins.rb +5 -5
  145. data/lib/puppet/file_serving/mount/scripts.rb +3 -0
  146. data/lib/puppet/file_serving/mount/tasks.rb +3 -0
  147. data/lib/puppet/file_serving/mount.rb +4 -1
  148. data/lib/puppet/file_serving/terminus_helper.rb +2 -0
  149. data/lib/puppet/file_serving/terminus_selector.rb +3 -1
  150. data/lib/puppet/file_serving.rb +2 -0
  151. data/lib/puppet/file_system/file_impl.rb +9 -8
  152. data/lib/puppet/file_system/jruby.rb +2 -0
  153. data/lib/puppet/file_system/memory_file.rb +3 -0
  154. data/lib/puppet/file_system/memory_impl.rb +5 -1
  155. data/lib/puppet/file_system/path_pattern.rb +4 -2
  156. data/lib/puppet/file_system/posix.rb +7 -2
  157. data/lib/puppet/file_system/uniquefile.rb +33 -31
  158. data/lib/puppet/file_system/windows.rb +33 -22
  159. data/lib/puppet/file_system.rb +5 -3
  160. data/lib/puppet/forge/cache.rb +4 -3
  161. data/lib/puppet/forge/errors.rb +3 -4
  162. data/lib/puppet/forge/repository.rb +6 -3
  163. data/lib/puppet/forge.rb +20 -22
  164. data/lib/puppet/functions/abs.rb +7 -4
  165. data/lib/puppet/functions/alert.rb +2 -0
  166. data/lib/puppet/functions/all.rb +3 -1
  167. data/lib/puppet/functions/annotate.rb +2 -0
  168. data/lib/puppet/functions/any.rb +3 -1
  169. data/lib/puppet/functions/assert_type.rb +5 -2
  170. data/lib/puppet/functions/binary_file.rb +4 -1
  171. data/lib/puppet/functions/break.rb +4 -2
  172. data/lib/puppet/functions/call.rb +2 -1
  173. data/lib/puppet/functions/camelcase.rb +4 -3
  174. data/lib/puppet/functions/capitalize.rb +4 -3
  175. data/lib/puppet/functions/ceiling.rb +3 -2
  176. data/lib/puppet/functions/chomp.rb +3 -2
  177. data/lib/puppet/functions/chop.rb +3 -2
  178. data/lib/puppet/functions/compare.rb +5 -3
  179. data/lib/puppet/functions/contain.rb +7 -4
  180. data/lib/puppet/functions/convert_to.rb +2 -0
  181. data/lib/puppet/functions/crit.rb +2 -0
  182. data/lib/puppet/functions/debug.rb +2 -0
  183. data/lib/puppet/functions/defined.rb +10 -6
  184. data/lib/puppet/functions/dig.rb +13 -10
  185. data/lib/puppet/functions/downcase.rb +4 -2
  186. data/lib/puppet/functions/each.rb +2 -0
  187. data/lib/puppet/functions/emerg.rb +2 -0
  188. data/lib/puppet/functions/empty.rb +2 -0
  189. data/lib/puppet/functions/epp.rb +2 -1
  190. data/lib/puppet/functions/err.rb +2 -0
  191. data/lib/puppet/functions/eyaml_lookup_key.rb +17 -16
  192. data/lib/puppet/functions/filter.rb +8 -7
  193. data/lib/puppet/functions/find_file.rb +6 -0
  194. data/lib/puppet/functions/find_template.rb +2 -0
  195. data/lib/puppet/functions/flatten.rb +2 -0
  196. data/lib/puppet/functions/floor.rb +3 -2
  197. data/lib/puppet/functions/get.rb +4 -2
  198. data/lib/puppet/functions/getvar.rb +7 -5
  199. data/lib/puppet/functions/group_by.rb +2 -2
  200. data/lib/puppet/functions/hiera.rb +2 -0
  201. data/lib/puppet/functions/hiera_array.rb +2 -0
  202. data/lib/puppet/functions/hiera_hash.rb +2 -0
  203. data/lib/puppet/functions/hiera_include.rb +3 -0
  204. data/lib/puppet/functions/hocon_data.rb +5 -5
  205. data/lib/puppet/functions/import.rb +3 -1
  206. data/lib/puppet/functions/include.rb +5 -2
  207. data/lib/puppet/functions/index.rb +5 -4
  208. data/lib/puppet/functions/info.rb +2 -0
  209. data/lib/puppet/functions/inline_epp.rb +2 -1
  210. data/lib/puppet/functions/join.rb +4 -2
  211. data/lib/puppet/functions/json_data.rb +6 -6
  212. data/lib/puppet/functions/keys.rb +2 -0
  213. data/lib/puppet/functions/length.rb +2 -1
  214. data/lib/puppet/functions/lest.rb +2 -0
  215. data/lib/puppet/functions/lookup.rb +12 -12
  216. data/lib/puppet/functions/lstrip.rb +3 -2
  217. data/lib/puppet/functions/map.rb +4 -2
  218. data/lib/puppet/functions/match.rb +8 -5
  219. data/lib/puppet/functions/max.rb +75 -8
  220. data/lib/puppet/functions/min.rb +75 -8
  221. data/lib/puppet/functions/module_directory.rb +2 -0
  222. data/lib/puppet/functions/new.rb +5 -3
  223. data/lib/puppet/functions/next.rb +3 -1
  224. data/lib/puppet/functions/notice.rb +2 -0
  225. data/lib/puppet/functions/reduce.rb +8 -11
  226. data/lib/puppet/functions/regsubst.rb +15 -16
  227. data/lib/puppet/functions/require.rb +7 -3
  228. data/lib/puppet/functions/return.rb +2 -0
  229. data/lib/puppet/functions/reverse_each.rb +2 -0
  230. data/lib/puppet/functions/round.rb +2 -0
  231. data/lib/puppet/functions/rstrip.rb +3 -2
  232. data/lib/puppet/functions/scanf.rb +2 -0
  233. data/lib/puppet/functions/size.rb +2 -2
  234. data/lib/puppet/functions/slice.rb +4 -1
  235. data/lib/puppet/functions/sort.rb +2 -0
  236. data/lib/puppet/functions/split.rb +2 -0
  237. data/lib/puppet/functions/step.rb +2 -0
  238. data/lib/puppet/functions/strftime.rb +5 -3
  239. data/lib/puppet/functions/strip.rb +3 -2
  240. data/lib/puppet/functions/then.rb +3 -0
  241. data/lib/puppet/functions/tree_each.rb +4 -3
  242. data/lib/puppet/functions/type.rb +2 -0
  243. data/lib/puppet/functions/unique.rb +12 -9
  244. data/lib/puppet/functions/unwrap.rb +2 -0
  245. data/lib/puppet/functions/upcase.rb +4 -2
  246. data/lib/puppet/functions/values.rb +2 -0
  247. data/lib/puppet/functions/versioncmp.rb +2 -1
  248. data/lib/puppet/functions/warning.rb +2 -0
  249. data/lib/puppet/functions/with.rb +2 -0
  250. data/lib/puppet/functions/yaml_data.rb +13 -13
  251. data/lib/puppet/functions.rb +57 -61
  252. data/lib/puppet/generate/models/type/property.rb +4 -1
  253. data/lib/puppet/generate/models/type/type.rb +5 -2
  254. data/lib/puppet/generate/type.rb +11 -5
  255. data/lib/puppet/gettext/config.rb +16 -9
  256. data/lib/puppet/gettext/module_translations.rb +2 -1
  257. data/lib/puppet/gettext/stubs.rb +2 -0
  258. data/lib/puppet/graph/key.rb +2 -0
  259. data/lib/puppet/graph/prioritizer.rb +2 -0
  260. data/lib/puppet/graph/rb_tree_map.rb +43 -24
  261. data/lib/puppet/graph/relationship_graph.rb +31 -29
  262. data/lib/puppet/graph/sequential_prioritizer.rb +2 -0
  263. data/lib/puppet/graph/simple_graph.rb +63 -57
  264. data/lib/puppet/graph.rb +2 -0
  265. data/lib/puppet/http/client.rb +10 -6
  266. data/lib/puppet/http/dns.rb +12 -12
  267. data/lib/puppet/http/errors.rb +4 -2
  268. data/lib/puppet/http/external_client.rb +4 -3
  269. data/lib/puppet/http/factory.rb +3 -1
  270. data/lib/puppet/http/pool.rb +3 -1
  271. data/lib/puppet/http/pool_entry.rb +2 -0
  272. data/lib/puppet/http/proxy.rb +21 -19
  273. data/lib/puppet/http/redirector.rb +5 -3
  274. data/lib/puppet/http/resolver/server_list.rb +5 -4
  275. data/lib/puppet/http/resolver/settings.rb +2 -1
  276. data/lib/puppet/http/resolver/srv.rb +2 -1
  277. data/lib/puppet/http/resolver.rb +4 -2
  278. data/lib/puppet/http/response.rb +2 -0
  279. data/lib/puppet/http/response_converter.rb +4 -3
  280. data/lib/puppet/http/response_net_http.rb +2 -1
  281. data/lib/puppet/http/retry_after_handler.rb +4 -3
  282. data/lib/puppet/http/service/ca.rb +37 -5
  283. data/lib/puppet/http/service/compiler.rb +13 -10
  284. data/lib/puppet/http/service/file_server.rb +5 -3
  285. data/lib/puppet/http/service/puppetserver.rb +3 -2
  286. data/lib/puppet/http/service/report.rb +5 -7
  287. data/lib/puppet/http/service.rb +17 -22
  288. data/lib/puppet/http/session.rb +6 -4
  289. data/lib/puppet/http/site.rb +3 -1
  290. data/lib/puppet/http.rb +4 -2
  291. data/lib/puppet/indirector/catalog/compiler.rb +81 -80
  292. data/lib/puppet/indirector/catalog/json.rb +2 -0
  293. data/lib/puppet/indirector/catalog/msgpack.rb +2 -0
  294. data/lib/puppet/indirector/catalog/rest.rb +2 -0
  295. data/lib/puppet/indirector/catalog/store_configs.rb +3 -3
  296. data/lib/puppet/indirector/catalog/yaml.rb +2 -0
  297. data/lib/puppet/indirector/code.rb +2 -0
  298. data/lib/puppet/indirector/data_binding/hiera.rb +2 -1
  299. data/lib/puppet/indirector/data_binding/none.rb +2 -0
  300. data/lib/puppet/indirector/direct_file_server.rb +4 -1
  301. data/lib/puppet/indirector/envelope.rb +2 -0
  302. data/lib/puppet/indirector/errors.rb +2 -0
  303. data/lib/puppet/indirector/exec.rb +5 -3
  304. data/lib/puppet/indirector/face.rb +17 -28
  305. data/lib/puppet/indirector/fact_search.rb +4 -2
  306. data/lib/puppet/indirector/facts/facter.rb +10 -7
  307. data/lib/puppet/indirector/facts/json.rb +4 -2
  308. data/lib/puppet/indirector/facts/memory.rb +2 -0
  309. data/lib/puppet/indirector/facts/network_device.rb +2 -0
  310. data/lib/puppet/indirector/facts/rest.rb +2 -0
  311. data/lib/puppet/indirector/facts/store_configs.rb +3 -2
  312. data/lib/puppet/indirector/facts/yaml.rb +2 -0
  313. data/lib/puppet/indirector/file_bucket_file/file.rb +33 -27
  314. data/lib/puppet/indirector/file_bucket_file/rest.rb +6 -3
  315. data/lib/puppet/indirector/file_bucket_file/selector.rb +2 -1
  316. data/lib/puppet/indirector/file_content/file.rb +2 -0
  317. data/lib/puppet/indirector/file_content/file_server.rb +2 -0
  318. data/lib/puppet/indirector/file_content/rest.rb +3 -1
  319. data/lib/puppet/indirector/file_content/selector.rb +2 -0
  320. data/lib/puppet/indirector/file_content.rb +2 -0
  321. data/lib/puppet/indirector/file_metadata/file.rb +2 -0
  322. data/lib/puppet/indirector/file_metadata/file_server.rb +2 -0
  323. data/lib/puppet/indirector/file_metadata/http.rb +4 -2
  324. data/lib/puppet/indirector/file_metadata/rest.rb +3 -1
  325. data/lib/puppet/indirector/file_metadata/selector.rb +2 -0
  326. data/lib/puppet/indirector/file_metadata.rb +2 -0
  327. data/lib/puppet/indirector/file_server.rb +3 -0
  328. data/lib/puppet/indirector/generic_http.rb +2 -0
  329. data/lib/puppet/indirector/hiera.rb +8 -7
  330. data/lib/puppet/indirector/indirection.rb +50 -41
  331. data/lib/puppet/indirector/json.rb +9 -6
  332. data/lib/puppet/indirector/memory.rb +5 -2
  333. data/lib/puppet/indirector/msgpack.rb +11 -7
  334. data/lib/puppet/indirector/node/exec.rb +6 -6
  335. data/lib/puppet/indirector/node/json.rb +2 -1
  336. data/lib/puppet/indirector/node/memory.rb +2 -0
  337. data/lib/puppet/indirector/node/msgpack.rb +2 -0
  338. data/lib/puppet/indirector/node/plain.rb +2 -0
  339. data/lib/puppet/indirector/node/rest.rb +2 -0
  340. data/lib/puppet/indirector/node/store_configs.rb +3 -3
  341. data/lib/puppet/indirector/node/yaml.rb +2 -0
  342. data/lib/puppet/indirector/none.rb +3 -2
  343. data/lib/puppet/indirector/plain.rb +2 -0
  344. data/lib/puppet/indirector/report/json.rb +4 -2
  345. data/lib/puppet/indirector/report/msgpack.rb +3 -1
  346. data/lib/puppet/indirector/report/processor.rb +3 -0
  347. data/lib/puppet/indirector/report/rest.rb +2 -13
  348. data/lib/puppet/indirector/report/yaml.rb +4 -2
  349. data/lib/puppet/indirector/request.rb +15 -12
  350. data/lib/puppet/indirector/resource/ral.rb +10 -10
  351. data/lib/puppet/indirector/resource/store_configs.rb +3 -1
  352. data/lib/puppet/indirector/resource/validator.rb +2 -0
  353. data/lib/puppet/indirector/rest.rb +3 -1
  354. data/lib/puppet/indirector/store_configs.rb +2 -0
  355. data/lib/puppet/indirector/terminus.rb +8 -4
  356. data/lib/puppet/indirector/yaml.rb +7 -5
  357. data/lib/puppet/indirector.rb +3 -0
  358. data/lib/puppet/info_service/class_information_service.rb +16 -17
  359. data/lib/puppet/info_service/plan_information_service.rb +5 -3
  360. data/lib/puppet/info_service/task_information_service.rb +10 -9
  361. data/lib/puppet/info_service.rb +1 -0
  362. data/lib/puppet/interface/action.rb +46 -42
  363. data/lib/puppet/interface/action_builder.rb +12 -6
  364. data/lib/puppet/interface/action_manager.rb +9 -6
  365. data/lib/puppet/interface/documentation.rb +40 -34
  366. data/lib/puppet/interface/face_collection.rb +18 -14
  367. data/lib/puppet/interface/option.rb +23 -11
  368. data/lib/puppet/interface/option_builder.rb +14 -9
  369. data/lib/puppet/interface/option_manager.rb +12 -10
  370. data/lib/puppet/interface.rb +9 -8
  371. data/lib/puppet/loaders.rb +2 -1
  372. data/lib/puppet/metatype/manager.rb +16 -15
  373. data/lib/puppet/module/plan.rb +22 -15
  374. data/lib/puppet/module/task.rb +33 -28
  375. data/lib/puppet/module.rb +59 -47
  376. data/lib/puppet/module_tool/applications/application.rb +17 -12
  377. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  378. data/lib/puppet/module_tool/applications/installer.rb +78 -87
  379. data/lib/puppet/module_tool/applications/uninstaller.rb +24 -22
  380. data/lib/puppet/module_tool/applications/unpacker.rb +11 -9
  381. data/lib/puppet/module_tool/applications/upgrader.rb +66 -60
  382. data/lib/puppet/module_tool/applications.rb +2 -0
  383. data/lib/puppet/module_tool/checksums.rb +4 -3
  384. data/lib/puppet/module_tool/dependency.rb +5 -4
  385. data/lib/puppet/module_tool/errors/base.rb +3 -1
  386. data/lib/puppet/module_tool/errors/installer.rb +6 -5
  387. data/lib/puppet/module_tool/errors/shared.rb +16 -15
  388. data/lib/puppet/module_tool/errors/uninstaller.rb +3 -2
  389. data/lib/puppet/module_tool/errors/upgrader.rb +4 -3
  390. data/lib/puppet/module_tool/errors.rb +2 -0
  391. data/lib/puppet/module_tool/install_directory.rb +8 -5
  392. data/lib/puppet/module_tool/installed_modules.rb +5 -2
  393. data/lib/puppet/module_tool/local_tarball.rb +10 -8
  394. data/lib/puppet/module_tool/metadata.rb +36 -30
  395. data/lib/puppet/module_tool/shared_behaviors.rb +61 -43
  396. data/lib/puppet/module_tool/tar/gnu.rb +12 -8
  397. data/lib/puppet/module_tool/tar/mini.rb +6 -4
  398. data/lib/puppet/module_tool/tar.rb +4 -2
  399. data/lib/puppet/module_tool.rb +11 -11
  400. data/lib/puppet/network/authconfig.rb +2 -0
  401. data/lib/puppet/network/authorization.rb +2 -0
  402. data/lib/puppet/network/client_request.rb +7 -4
  403. data/lib/puppet/network/format.rb +9 -3
  404. data/lib/puppet/network/format_handler.rb +9 -7
  405. data/lib/puppet/network/format_support.rb +8 -7
  406. data/lib/puppet/network/formats.rb +34 -25
  407. data/lib/puppet/network/http/api/indirected_routes.rb +38 -45
  408. data/lib/puppet/network/http/api/indirection_type.rb +2 -1
  409. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -1
  410. data/lib/puppet/network/http/api/master/v3.rb +2 -1
  411. data/lib/puppet/network/http/api/master.rb +2 -0
  412. data/lib/puppet/network/http/api/server/v3/environments.rb +21 -15
  413. data/lib/puppet/network/http/api/server/v3.rb +14 -13
  414. data/lib/puppet/network/http/api/server.rb +2 -0
  415. data/lib/puppet/network/http/api.rb +20 -18
  416. data/lib/puppet/network/http/connection.rb +6 -4
  417. data/lib/puppet/network/http/error.rb +5 -3
  418. data/lib/puppet/network/http/handler.rb +12 -14
  419. data/lib/puppet/network/http/issues.rb +2 -0
  420. data/lib/puppet/network/http/memory_response.rb +3 -1
  421. data/lib/puppet/network/http/request.rb +22 -10
  422. data/lib/puppet/network/http/response.rb +2 -0
  423. data/lib/puppet/network/http/route.rb +14 -11
  424. data/lib/puppet/network/http.rb +2 -0
  425. data/lib/puppet/network/http_pool.rb +4 -3
  426. data/lib/puppet/network/uri.rb +2 -0
  427. data/lib/puppet/network.rb +2 -0
  428. data/lib/puppet/node/environment.rb +36 -33
  429. data/lib/puppet/node/facts.rb +10 -10
  430. data/lib/puppet/node/server_facts.rb +6 -6
  431. data/lib/puppet/node.rb +12 -12
  432. data/lib/puppet/pal/catalog_compiler.rb +2 -3
  433. data/lib/puppet/pal/compiler.rb +11 -6
  434. data/lib/puppet/pal/function_signature.rb +5 -3
  435. data/lib/puppet/pal/json_catalog_encoder.rb +7 -2
  436. data/lib/puppet/pal/pal_api.rb +2 -0
  437. data/lib/puppet/pal/pal_impl.rb +103 -108
  438. data/lib/puppet/pal/plan_signature.rb +4 -2
  439. data/lib/puppet/pal/script_compiler.rb +4 -2
  440. data/lib/puppet/pal/task_signature.rb +15 -9
  441. data/lib/puppet/parameter/boolean.rb +2 -0
  442. data/lib/puppet/parameter/package_options.rb +3 -1
  443. data/lib/puppet/parameter/path.rb +7 -3
  444. data/lib/puppet/parameter/value.rb +5 -3
  445. data/lib/puppet/parameter/value_collection.rb +17 -16
  446. data/lib/puppet/parameter.rb +17 -16
  447. data/lib/puppet/parser/abstract_compiler.rb +2 -3
  448. data/lib/puppet/parser/ast/block_expression.rb +4 -2
  449. data/lib/puppet/parser/ast/branch.rb +2 -0
  450. data/lib/puppet/parser/ast/hostclass.rb +4 -2
  451. data/lib/puppet/parser/ast/leaf.rb +3 -0
  452. data/lib/puppet/parser/ast/node.rb +2 -0
  453. data/lib/puppet/parser/ast/pops_bridge.rb +13 -13
  454. data/lib/puppet/parser/ast/resource.rb +8 -8
  455. data/lib/puppet/parser/ast/resource_instance.rb +3 -0
  456. data/lib/puppet/parser/ast/resourceparam.rb +9 -7
  457. data/lib/puppet/parser/ast/top_level_construct.rb +2 -0
  458. data/lib/puppet/parser/ast.rb +16 -15
  459. data/lib/puppet/parser/catalog_compiler.rb +3 -3
  460. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +4 -2
  461. data/lib/puppet/parser/compiler/catalog_validator.rb +2 -0
  462. data/lib/puppet/parser/compiler.rb +45 -44
  463. data/lib/puppet/parser/e4_parser_adapter.rb +17 -16
  464. data/lib/puppet/parser/files.rb +8 -6
  465. data/lib/puppet/parser/functions/assert_type.rb +43 -41
  466. data/lib/puppet/parser/functions/binary_file.rb +16 -14
  467. data/lib/puppet/parser/functions/break.rb +29 -27
  468. data/lib/puppet/parser/functions/contain.rb +3 -1
  469. data/lib/puppet/parser/functions/create_resources.rb +18 -14
  470. data/lib/puppet/parser/functions/defined.rb +104 -102
  471. data/lib/puppet/parser/functions/dig.rb +26 -24
  472. data/lib/puppet/parser/functions/digest.rb +3 -1
  473. data/lib/puppet/parser/functions/each.rb +101 -99
  474. data/lib/puppet/parser/functions/epp.rb +4 -3
  475. data/lib/puppet/parser/functions/fail.rb +11 -9
  476. data/lib/puppet/parser/functions/file.rb +16 -14
  477. data/lib/puppet/parser/functions/filter.rb +57 -55
  478. data/lib/puppet/parser/functions/find_file.rb +19 -18
  479. data/lib/puppet/parser/functions/fqdn_rand.rb +25 -23
  480. data/lib/puppet/parser/functions/generate.rb +23 -21
  481. data/lib/puppet/parser/functions/hiera.rb +95 -93
  482. data/lib/puppet/parser/functions/hiera_array.rb +83 -82
  483. data/lib/puppet/parser/functions/hiera_hash.rb +93 -92
  484. data/lib/puppet/parser/functions/hiera_include.rb +93 -92
  485. data/lib/puppet/parser/functions/include.rb +5 -3
  486. data/lib/puppet/parser/functions/inline_epp.rb +4 -3
  487. data/lib/puppet/parser/functions/inline_template.rb +15 -13
  488. data/lib/puppet/parser/functions/lest.rb +36 -34
  489. data/lib/puppet/parser/functions/lookup.rb +132 -130
  490. data/lib/puppet/parser/functions/map.rb +54 -52
  491. data/lib/puppet/parser/functions/match.rb +31 -29
  492. data/lib/puppet/parser/functions/md5.rb +4 -2
  493. data/lib/puppet/parser/functions/new.rb +916 -915
  494. data/lib/puppet/parser/functions/next.rb +36 -34
  495. data/lib/puppet/parser/functions/realize.rb +13 -11
  496. data/lib/puppet/parser/functions/reduce.rb +134 -132
  497. data/lib/puppet/parser/functions/regsubst.rb +8 -5
  498. data/lib/puppet/parser/functions/require.rb +8 -5
  499. data/lib/puppet/parser/functions/return.rb +90 -88
  500. data/lib/puppet/parser/functions/reverse_each.rb +59 -57
  501. data/lib/puppet/parser/functions/scanf.rb +25 -23
  502. data/lib/puppet/parser/functions/sha1.rb +4 -2
  503. data/lib/puppet/parser/functions/sha256.rb +3 -1
  504. data/lib/puppet/parser/functions/shellquote.rb +2 -0
  505. data/lib/puppet/parser/functions/slice.rb +27 -25
  506. data/lib/puppet/parser/functions/split.rb +7 -6
  507. data/lib/puppet/parser/functions/sprintf.rb +8 -7
  508. data/lib/puppet/parser/functions/step.rb +62 -60
  509. data/lib/puppet/parser/functions/strftime.rb +175 -173
  510. data/lib/puppet/parser/functions/tag.rb +10 -7
  511. data/lib/puppet/parser/functions/tagged.rb +16 -13
  512. data/lib/puppet/parser/functions/template.rb +27 -24
  513. data/lib/puppet/parser/functions/then.rb +54 -52
  514. data/lib/puppet/parser/functions/type.rb +36 -34
  515. data/lib/puppet/parser/functions/versioncmp.rb +3 -2
  516. data/lib/puppet/parser/functions/with.rb +22 -20
  517. data/lib/puppet/parser/functions.rb +12 -9
  518. data/lib/puppet/parser/parser_factory.rb +2 -0
  519. data/lib/puppet/parser/relationship.rb +9 -3
  520. data/lib/puppet/parser/resource/param.rb +4 -2
  521. data/lib/puppet/parser/resource.rb +42 -40
  522. data/lib/puppet/parser/scope.rb +84 -70
  523. data/lib/puppet/parser/script_compiler.rb +12 -12
  524. data/lib/puppet/parser/templatewrapper.rb +3 -2
  525. data/lib/puppet/parser/type_loader.rb +31 -30
  526. data/lib/puppet/parser.rb +3 -1
  527. data/lib/puppet/plugins/configuration.rb +2 -0
  528. data/lib/puppet/plugins/syntax_checkers.rb +2 -1
  529. data/lib/puppet/plugins.rb +3 -1
  530. data/lib/puppet/pops/adaptable.rb +5 -3
  531. data/lib/puppet/pops/adapters.rb +4 -1
  532. data/lib/puppet/pops/evaluator/access_operator.rb +133 -120
  533. data/lib/puppet/pops/evaluator/callable_signature.rb +6 -5
  534. data/lib/puppet/pops/evaluator/closure.rb +272 -277
  535. data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -15
  536. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +10 -8
  537. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +4 -3
  538. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +6 -5
  539. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +10 -10
  540. data/lib/puppet/pops/evaluator/compare_operator.rb +36 -21
  541. data/lib/puppet/pops/evaluator/deferred_resolver.rb +19 -17
  542. data/lib/puppet/pops/evaluator/epp_evaluator.rb +19 -18
  543. data/lib/puppet/pops/evaluator/evaluator_impl.rb +245 -245
  544. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
  545. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +6 -5
  546. data/lib/puppet/pops/evaluator/literal_evaluator.rb +5 -5
  547. data/lib/puppet/pops/evaluator/puppet_proc.rb +6 -3
  548. data/lib/puppet/pops/evaluator/relationship_operator.rb +14 -11
  549. data/lib/puppet/pops/evaluator/runtime3_converter.rb +34 -30
  550. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +35 -35
  551. data/lib/puppet/pops/evaluator/runtime3_support.rb +32 -39
  552. data/lib/puppet/pops/functions/dispatch.rb +7 -7
  553. data/lib/puppet/pops/functions/dispatcher.rb +8 -7
  554. data/lib/puppet/pops/functions/function.rb +18 -20
  555. data/lib/puppet/pops/issue_reporter.rb +25 -22
  556. data/lib/puppet/pops/issues.rb +10 -5
  557. data/lib/puppet/pops/label_provider.rb +6 -4
  558. data/lib/puppet/pops/loader/base_loader.rb +4 -4
  559. data/lib/puppet/pops/loader/dependency_loader.rb +8 -4
  560. data/lib/puppet/pops/loader/gem_support.rb +5 -2
  561. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +2 -0
  562. data/lib/puppet/pops/loader/loader.rb +8 -8
  563. data/lib/puppet/pops/loader/loader_paths.rb +42 -41
  564. data/lib/puppet/pops/loader/module_loaders.rb +45 -49
  565. data/lib/puppet/pops/loader/predefined_loader.rb +3 -3
  566. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +6 -2
  567. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +6 -2
  568. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +6 -5
  569. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +5 -1
  570. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +5 -1
  571. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +18 -8
  572. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -3
  573. data/lib/puppet/pops/loader/simple_environment_loader.rb +3 -3
  574. data/lib/puppet/pops/loader/static_loader.rb +29 -27
  575. data/lib/puppet/pops/loader/task_instantiator.rb +4 -2
  576. data/lib/puppet/pops/loader/type_definition_instantiator.rb +9 -5
  577. data/lib/puppet/pops/loader/typed_name.rb +4 -2
  578. data/lib/puppet/pops/loader/uri_helper.rb +3 -1
  579. data/lib/puppet/pops/loaders.rb +27 -23
  580. data/lib/puppet/pops/lookup/configured_data_provider.rb +2 -0
  581. data/lib/puppet/pops/lookup/context.rb +32 -23
  582. data/lib/puppet/pops/lookup/data_adapter.rb +2 -0
  583. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +8 -7
  584. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +5 -3
  585. data/lib/puppet/pops/lookup/data_provider.rb +2 -0
  586. data/lib/puppet/pops/lookup/environment_data_provider.rb +2 -0
  587. data/lib/puppet/pops/lookup/explainer.rb +47 -45
  588. data/lib/puppet/pops/lookup/function_provider.rb +8 -6
  589. data/lib/puppet/pops/lookup/global_data_provider.rb +4 -3
  590. data/lib/puppet/pops/lookup/hiera_config.rb +208 -160
  591. data/lib/puppet/pops/lookup/interpolation.rb +21 -10
  592. data/lib/puppet/pops/lookup/invocation.rb +4 -0
  593. data/lib/puppet/pops/lookup/key_recorder.rb +6 -3
  594. data/lib/puppet/pops/lookup/location_resolver.rb +4 -2
  595. data/lib/puppet/pops/lookup/lookup_adapter.rb +39 -34
  596. data/lib/puppet/pops/lookup/lookup_key.rb +3 -1
  597. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +4 -2
  598. data/lib/puppet/pops/lookup/module_data_provider.rb +12 -9
  599. data/lib/puppet/pops/lookup/sub_lookup.rb +7 -3
  600. data/lib/puppet/pops/lookup.rb +16 -11
  601. data/lib/puppet/pops/merge_strategy.rb +22 -16
  602. data/lib/puppet/pops/migration/migration_checker.rb +8 -5
  603. data/lib/puppet/pops/model/ast.rb +786 -685
  604. data/lib/puppet/pops/model/ast_transformer.rb +18 -18
  605. data/lib/puppet/pops/model/factory.rb +33 -31
  606. data/lib/puppet/pops/model/model_label_provider.rb +5 -2
  607. data/lib/puppet/pops/model/model_tree_dumper.rb +32 -30
  608. data/lib/puppet/pops/model/pn_transformer.rb +5 -6
  609. data/lib/puppet/pops/model/tree_dumper.rb +7 -4
  610. data/lib/puppet/pops/parser/code_merger.rb +3 -3
  611. data/lib/puppet/pops/parser/epp_parser.rb +6 -5
  612. data/lib/puppet/pops/parser/epp_support.rb +10 -9
  613. data/lib/puppet/pops/parser/evaluating_parser.rb +13 -9
  614. data/lib/puppet/pops/parser/heredoc_support.rb +14 -14
  615. data/lib/puppet/pops/parser/interpolation_support.rb +25 -25
  616. data/lib/puppet/pops/parser/lexer2.rb +74 -62
  617. data/lib/puppet/pops/parser/lexer_support.rb +57 -57
  618. data/lib/puppet/pops/parser/locatable.rb +2 -2
  619. data/lib/puppet/pops/parser/locator.rb +47 -43
  620. data/lib/puppet/pops/parser/parser_support.rb +22 -21
  621. data/lib/puppet/pops/parser/pn_parser.rb +10 -9
  622. data/lib/puppet/pops/parser/slurp_support.rb +41 -40
  623. data/lib/puppet/pops/patterns.rb +14 -14
  624. data/lib/puppet/pops/pcore.rb +7 -6
  625. data/lib/puppet/pops/pn.rb +8 -5
  626. data/lib/puppet/pops/puppet_stack.rb +3 -1
  627. data/lib/puppet/pops/resource/param.rb +13 -12
  628. data/lib/puppet/pops/resource/resource_type_impl.rb +47 -45
  629. data/lib/puppet/pops/semantic_error.rb +3 -1
  630. data/lib/puppet/pops/serialization/abstract_reader.rb +6 -4
  631. data/lib/puppet/pops/serialization/abstract_writer.rb +11 -9
  632. data/lib/puppet/pops/serialization/deserializer.rb +3 -0
  633. data/lib/puppet/pops/serialization/extension.rb +8 -0
  634. data/lib/puppet/pops/serialization/from_data_converter.rb +16 -9
  635. data/lib/puppet/pops/serialization/instance_reader.rb +2 -0
  636. data/lib/puppet/pops/serialization/instance_writer.rb +2 -0
  637. data/lib/puppet/pops/serialization/json.rb +9 -5
  638. data/lib/puppet/pops/serialization/json_path.rb +3 -1
  639. data/lib/puppet/pops/serialization/object.rb +6 -3
  640. data/lib/puppet/pops/serialization/serializer.rb +20 -16
  641. data/lib/puppet/pops/serialization/time_factory.rb +2 -1
  642. data/lib/puppet/pops/serialization/to_data_converter.rb +9 -6
  643. data/lib/puppet/pops/serialization/to_stringified_converter.rb +8 -7
  644. data/lib/puppet/pops/serialization.rb +10 -8
  645. data/lib/puppet/pops/time/timespan.rb +33 -21
  646. data/lib/puppet/pops/time/timestamp.rb +12 -5
  647. data/lib/puppet/pops/types/annotatable.rb +3 -2
  648. data/lib/puppet/pops/types/annotation.rb +6 -4
  649. data/lib/puppet/pops/types/class_loader.rb +17 -15
  650. data/lib/puppet/pops/types/implementation_registry.rb +4 -1
  651. data/lib/puppet/pops/types/iterable.rb +24 -14
  652. data/lib/puppet/pops/types/p_binary_type.rb +6 -6
  653. data/lib/puppet/pops/types/p_init_type.rb +15 -12
  654. data/lib/puppet/pops/types/p_meta_type.rb +6 -5
  655. data/lib/puppet/pops/types/p_object_type.rb +104 -79
  656. data/lib/puppet/pops/types/p_object_type_extension.rb +15 -14
  657. data/lib/puppet/pops/types/p_runtime_type.rb +12 -10
  658. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +3 -2
  659. data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -8
  660. data/lib/puppet/pops/types/p_sensitive_type.rb +3 -5
  661. data/lib/puppet/pops/types/p_timespan_type.rb +7 -5
  662. data/lib/puppet/pops/types/p_timestamp_type.rb +4 -3
  663. data/lib/puppet/pops/types/p_type_set_type.rb +51 -44
  664. data/lib/puppet/pops/types/p_uri_type.rb +41 -33
  665. data/lib/puppet/pops/types/puppet_object.rb +2 -1
  666. data/lib/puppet/pops/types/recursion_guard.rb +12 -6
  667. data/lib/puppet/pops/types/ruby_generator.rb +19 -14
  668. data/lib/puppet/pops/types/ruby_method.rb +8 -7
  669. data/lib/puppet/pops/types/string_converter.rb +113 -103
  670. data/lib/puppet/pops/types/tree_iterators.rb +16 -20
  671. data/lib/puppet/pops/types/type_acceptor.rb +2 -0
  672. data/lib/puppet/pops/types/type_asserter.rb +5 -3
  673. data/lib/puppet/pops/types/type_assertion_error.rb +1 -1
  674. data/lib/puppet/pops/types/type_calculator.rb +56 -49
  675. data/lib/puppet/pops/types/type_conversion_error.rb +2 -10
  676. data/lib/puppet/pops/types/type_factory.rb +25 -16
  677. data/lib/puppet/pops/types/type_formatter.rb +60 -65
  678. data/lib/puppet/pops/types/type_mismatch_describer.rb +62 -53
  679. data/lib/puppet/pops/types/type_parser.rb +124 -117
  680. data/lib/puppet/pops/types/type_set_reference.rb +3 -0
  681. data/lib/puppet/pops/types/type_with_members.rb +2 -2
  682. data/lib/puppet/pops/types/types.rb +267 -249
  683. data/lib/puppet/pops/utils.rb +43 -45
  684. data/lib/puppet/pops/validation/checker4_0.rb +65 -58
  685. data/lib/puppet/pops/validation/tasks_checker.rb +7 -5
  686. data/lib/puppet/pops/validation/validator_factory_4_0.rb +2 -2
  687. data/lib/puppet/pops/validation.rb +26 -23
  688. data/lib/puppet/pops/visitable.rb +2 -0
  689. data/lib/puppet/pops/visitor.rb +18 -4
  690. data/lib/puppet/pops.rb +6 -3
  691. data/lib/puppet/property/boolean.rb +2 -0
  692. data/lib/puppet/property/ensure.rb +17 -16
  693. data/lib/puppet/property/keyvalue.rb +15 -14
  694. data/lib/puppet/property/list.rb +10 -9
  695. data/lib/puppet/property/ordered_list.rb +6 -5
  696. data/lib/puppet/property.rb +47 -48
  697. data/lib/puppet/provider/aix_object.rb +15 -9
  698. data/lib/puppet/provider/command.rb +2 -0
  699. data/lib/puppet/provider/confine.rb +2 -0
  700. data/lib/puppet/provider/exec/posix.rb +4 -1
  701. data/lib/puppet/provider/exec/shell.rb +2 -0
  702. data/lib/puppet/provider/exec/windows.rb +6 -4
  703. data/lib/puppet/provider/exec.rb +6 -4
  704. data/lib/puppet/provider/file/posix.rb +37 -19
  705. data/lib/puppet/provider/file/windows.rb +28 -29
  706. data/lib/puppet/provider/group/aix.rb +4 -2
  707. data/lib/puppet/provider/group/directoryservice.rb +7 -5
  708. data/lib/puppet/provider/group/groupadd.rb +16 -10
  709. data/lib/puppet/provider/group/ldap.rb +3 -0
  710. data/lib/puppet/provider/group/pw.rb +4 -3
  711. data/lib/puppet/provider/group/windows_adsi.rb +10 -7
  712. data/lib/puppet/provider/ldap.rb +5 -3
  713. data/lib/puppet/provider/nameservice/directoryservice.rb +72 -62
  714. data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
  715. data/lib/puppet/provider/nameservice/pw.rb +8 -8
  716. data/lib/puppet/provider/nameservice.rb +23 -19
  717. data/lib/puppet/provider/network_device.rb +2 -2
  718. data/lib/puppet/provider/package/aix.rb +29 -27
  719. data/lib/puppet/provider/package/appdmg.rb +24 -22
  720. data/lib/puppet/provider/package/apple.rb +7 -5
  721. data/lib/puppet/provider/package/apt.rb +28 -25
  722. data/lib/puppet/provider/package/aptitude.rb +3 -3
  723. data/lib/puppet/provider/package/aptrpm.rb +18 -14
  724. data/lib/puppet/provider/package/blastwave.rb +19 -22
  725. data/lib/puppet/provider/package/dnf.rb +12 -5
  726. data/lib/puppet/provider/package/dnfmodule.rb +17 -15
  727. data/lib/puppet/provider/package/dpkg.rb +24 -25
  728. data/lib/puppet/provider/package/fink.rb +17 -15
  729. data/lib/puppet/provider/package/freebsd.rb +6 -4
  730. data/lib/puppet/provider/package/gem.rb +29 -26
  731. data/lib/puppet/provider/package/hpux.rb +9 -7
  732. data/lib/puppet/provider/package/macports.rb +6 -4
  733. data/lib/puppet/provider/package/nim.rb +27 -28
  734. data/lib/puppet/provider/package/openbsd.rb +37 -34
  735. data/lib/puppet/provider/package/opkg.rb +17 -14
  736. data/lib/puppet/provider/package/pacman.rb +39 -42
  737. data/lib/puppet/provider/package/pip.rb +32 -31
  738. data/lib/puppet/provider/package/pip2.rb +3 -2
  739. data/lib/puppet/provider/package/pip3.rb +3 -2
  740. data/lib/puppet/provider/package/pkg.rb +46 -41
  741. data/lib/puppet/provider/package/pkgdmg.rb +23 -17
  742. data/lib/puppet/provider/package/pkgin.rb +14 -13
  743. data/lib/puppet/provider/package/pkgng.rb +20 -15
  744. data/lib/puppet/provider/package/pkgutil.rb +40 -41
  745. data/lib/puppet/provider/package/portage.rb +73 -69
  746. data/lib/puppet/provider/package/ports.rb +19 -16
  747. data/lib/puppet/provider/package/portupgrade.rb +48 -55
  748. data/lib/puppet/provider/package/puppet_gem.rb +6 -15
  749. data/lib/puppet/provider/package/puppetserver_gem.rb +16 -13
  750. data/lib/puppet/provider/package/rpm.rb +45 -40
  751. data/lib/puppet/provider/package/rug.rb +11 -11
  752. data/lib/puppet/provider/package/sun.rb +28 -24
  753. data/lib/puppet/provider/package/sunfreeware.rb +3 -1
  754. data/lib/puppet/provider/package/tdnf.rb +9 -2
  755. data/lib/puppet/provider/package/up2date.rb +10 -10
  756. data/lib/puppet/provider/package/urpmi.rb +9 -7
  757. data/lib/puppet/provider/package/windows/exe_package.rb +11 -9
  758. data/lib/puppet/provider/package/windows/msi_package.rb +5 -3
  759. data/lib/puppet/provider/package/windows/package.rb +8 -5
  760. data/lib/puppet/provider/package/windows.rb +10 -9
  761. data/lib/puppet/provider/package/xbps.rb +127 -0
  762. data/lib/puppet/provider/package/yum.rb +65 -62
  763. data/lib/puppet/provider/package/zypper.rb +29 -29
  764. data/lib/puppet/provider/package.rb +9 -7
  765. data/lib/puppet/provider/package_targetable.rb +5 -3
  766. data/lib/puppet/provider/parsedfile.rb +21 -17
  767. data/lib/puppet/provider/service/base.rb +19 -23
  768. data/lib/puppet/provider/service/bsd.rb +7 -5
  769. data/lib/puppet/provider/service/daemontools.rb +42 -39
  770. data/lib/puppet/provider/service/debian.rb +12 -10
  771. data/lib/puppet/provider/service/freebsd.rb +50 -52
  772. data/lib/puppet/provider/service/gentoo.rb +11 -9
  773. data/lib/puppet/provider/service/init.rb +33 -31
  774. data/lib/puppet/provider/service/launchd.rb +38 -31
  775. data/lib/puppet/provider/service/openbsd.rb +17 -16
  776. data/lib/puppet/provider/service/openrc.rb +6 -5
  777. data/lib/puppet/provider/service/openwrt.rb +7 -6
  778. data/lib/puppet/provider/service/rcng.rb +7 -5
  779. data/lib/puppet/provider/service/redhat.rb +10 -7
  780. data/lib/puppet/provider/service/runit.rb +16 -15
  781. data/lib/puppet/provider/service/service.rb +7 -8
  782. data/lib/puppet/provider/service/smf.rb +42 -37
  783. data/lib/puppet/provider/service/src.rb +29 -29
  784. data/lib/puppet/provider/service/systemd.rb +48 -48
  785. data/lib/puppet/provider/service/upstart.rb +37 -37
  786. data/lib/puppet/provider/service/windows.rb +45 -48
  787. data/lib/puppet/provider/user/aix.rb +24 -20
  788. data/lib/puppet/provider/user/directoryservice.rb +98 -91
  789. data/lib/puppet/provider/user/hpux.rb +33 -35
  790. data/lib/puppet/provider/user/ldap.rb +13 -10
  791. data/lib/puppet/provider/user/openbsd.rb +24 -22
  792. data/lib/puppet/provider/user/pw.rb +8 -7
  793. data/lib/puppet/provider/user/user_role_add.rb +40 -36
  794. data/lib/puppet/provider/user/useradd.rb +64 -53
  795. data/lib/puppet/provider/user/windows_adsi.rb +14 -10
  796. data/lib/puppet/provider.rb +20 -19
  797. data/lib/puppet/reference/configuration.rb +55 -47
  798. data/lib/puppet/reference/function.rb +2 -0
  799. data/lib/puppet/reference/indirection.rb +33 -28
  800. data/lib/puppet/reference/metaparameter.rb +3 -1
  801. data/lib/puppet/reference/providers.rb +12 -10
  802. data/lib/puppet/reference/report.rb +2 -0
  803. data/lib/puppet/reference/type.rb +7 -5
  804. data/lib/puppet/relationship.rb +10 -9
  805. data/lib/puppet/reports/http.rb +3 -2
  806. data/lib/puppet/reports/log.rb +4 -3
  807. data/lib/puppet/reports/store.rb +9 -6
  808. data/lib/puppet/reports.rb +8 -6
  809. data/lib/puppet/resource/catalog.rb +54 -53
  810. data/lib/puppet/resource/status.rb +9 -7
  811. data/lib/puppet/resource/type.rb +65 -41
  812. data/lib/puppet/resource/type_collection.rb +10 -6
  813. data/lib/puppet/resource.rb +91 -81
  814. data/lib/puppet/runtime.rb +2 -0
  815. data/lib/puppet/scheduler/job.rb +2 -0
  816. data/lib/puppet/scheduler/scheduler.rb +4 -2
  817. data/lib/puppet/scheduler/splay_job.rb +16 -3
  818. data/lib/puppet/scheduler/timer.rb +2 -0
  819. data/lib/puppet/scheduler.rb +3 -1
  820. data/lib/puppet/settings/alias_setting.rb +5 -5
  821. data/lib/puppet/settings/array_setting.rb +2 -1
  822. data/lib/puppet/settings/autosign_setting.rb +2 -1
  823. data/lib/puppet/settings/base_setting.rb +23 -18
  824. data/lib/puppet/settings/boolean_setting.rb +5 -3
  825. data/lib/puppet/settings/certificate_revocation_setting.rb +2 -1
  826. data/lib/puppet/settings/config_file.rb +11 -9
  827. data/lib/puppet/settings/directory_setting.rb +2 -0
  828. data/lib/puppet/settings/duration_setting.rb +5 -4
  829. data/lib/puppet/settings/enum_setting.rb +3 -1
  830. data/lib/puppet/settings/environment_conf.rb +19 -15
  831. data/lib/puppet/settings/errors.rb +6 -3
  832. data/lib/puppet/settings/file_or_directory_setting.rb +4 -7
  833. data/lib/puppet/settings/file_setting.rb +15 -24
  834. data/lib/puppet/settings/http_extra_headers_setting.rb +2 -1
  835. data/lib/puppet/settings/ini_file.rb +5 -3
  836. data/lib/puppet/settings/integer_setting.rb +3 -1
  837. data/lib/puppet/settings/path_setting.rb +2 -0
  838. data/lib/puppet/settings/port_setting.rb +4 -2
  839. data/lib/puppet/settings/priority_setting.rb +13 -12
  840. data/lib/puppet/settings/server_list_setting.rb +7 -6
  841. data/lib/puppet/settings/string_setting.rb +2 -0
  842. data/lib/puppet/settings/symbolic_enum_setting.rb +3 -1
  843. data/lib/puppet/settings/terminus_setting.rb +2 -0
  844. data/lib/puppet/settings/ttl_setting.rb +7 -5
  845. data/lib/puppet/settings/value_translator.rb +9 -7
  846. data/lib/puppet/settings.rb +171 -163
  847. data/lib/puppet/ssl/base.rb +9 -6
  848. data/lib/puppet/ssl/certificate.rb +6 -4
  849. data/lib/puppet/ssl/certificate_request.rb +34 -38
  850. data/lib/puppet/ssl/certificate_request_attributes.rb +7 -4
  851. data/lib/puppet/ssl/certificate_signer.rb +3 -3
  852. data/lib/puppet/ssl/digest.rb +2 -0
  853. data/lib/puppet/ssl/error.rb +3 -0
  854. data/lib/puppet/ssl/oids.rb +11 -9
  855. data/lib/puppet/ssl/openssl_loader.rb +6 -4
  856. data/lib/puppet/ssl/ssl_context.rb +2 -0
  857. data/lib/puppet/ssl/ssl_provider.rb +13 -9
  858. data/lib/puppet/ssl/state_machine.rb +153 -22
  859. data/lib/puppet/ssl/verifier.rb +3 -2
  860. data/lib/puppet/ssl.rb +3 -1
  861. data/lib/puppet/syntax_checkers/base64.rb +7 -5
  862. data/lib/puppet/syntax_checkers/epp.rb +7 -6
  863. data/lib/puppet/syntax_checkers/json.rb +7 -7
  864. data/lib/puppet/syntax_checkers/pp.rb +7 -6
  865. data/lib/puppet/syntax_checkers.rb +3 -1
  866. data/lib/puppet/test/test_helper.rb +30 -44
  867. data/lib/puppet/thread_local.rb +2 -0
  868. data/lib/puppet/transaction/additional_resource_generator.rb +12 -7
  869. data/lib/puppet/transaction/event.rb +8 -5
  870. data/lib/puppet/transaction/event_manager.rb +12 -11
  871. data/lib/puppet/transaction/persistence.rb +16 -16
  872. data/lib/puppet/transaction/report.rb +34 -27
  873. data/lib/puppet/transaction/resource_harness.rb +17 -9
  874. data/lib/puppet/transaction.rb +37 -35
  875. data/lib/puppet/trusted_external.rb +10 -5
  876. data/lib/puppet/type/component.rb +14 -7
  877. data/lib/puppet/type/exec.rb +71 -61
  878. data/lib/puppet/type/file/checksum.rb +6 -2
  879. data/lib/puppet/type/file/checksum_value.rb +6 -4
  880. data/lib/puppet/type/file/content.rb +24 -20
  881. data/lib/puppet/type/file/ctime.rb +5 -4
  882. data/lib/puppet/type/file/data_sync.rb +9 -6
  883. data/lib/puppet/type/file/ensure.rb +24 -25
  884. data/lib/puppet/type/file/group.rb +3 -1
  885. data/lib/puppet/type/file/mode.rb +14 -11
  886. data/lib/puppet/type/file/mtime.rb +5 -3
  887. data/lib/puppet/type/file/owner.rb +3 -2
  888. data/lib/puppet/type/file/selcontext.rb +24 -23
  889. data/lib/puppet/type/file/source.rb +31 -30
  890. data/lib/puppet/type/file/target.rb +23 -25
  891. data/lib/puppet/type/file/type.rb +3 -2
  892. data/lib/puppet/type/file.rb +60 -54
  893. data/lib/puppet/type/filebucket.rb +6 -4
  894. data/lib/puppet/type/group.rb +14 -13
  895. data/lib/puppet/type/notify.rb +4 -3
  896. data/lib/puppet/type/package.rb +47 -45
  897. data/lib/puppet/type/resources.rb +39 -34
  898. data/lib/puppet/type/schedule.rb +21 -21
  899. data/lib/puppet/type/service.rb +19 -18
  900. data/lib/puppet/type/stage.rb +2 -0
  901. data/lib/puppet/type/tidy.rb +40 -34
  902. data/lib/puppet/type/user.rb +62 -56
  903. data/lib/puppet/type/whit.rb +2 -1
  904. data/lib/puppet/type.rb +180 -227
  905. data/lib/puppet/util/at_fork/noop.rb +2 -0
  906. data/lib/puppet/util/at_fork/solaris.rb +37 -39
  907. data/lib/puppet/util/at_fork.rb +3 -1
  908. data/lib/puppet/util/autoload.rb +10 -4
  909. data/lib/puppet/util/backups.rb +13 -11
  910. data/lib/puppet/util/character_encoding.rb +9 -6
  911. data/lib/puppet/util/checksums.rb +16 -12
  912. data/lib/puppet/util/classgen.rb +18 -23
  913. data/lib/puppet/util/colors.rb +67 -65
  914. data/lib/puppet/util/command_line/puppet_option_parser.rb +18 -16
  915. data/lib/puppet/util/command_line/trollop.rb +695 -673
  916. data/lib/puppet/util/command_line.rb +7 -5
  917. data/lib/puppet/util/constant_inflector.rb +4 -3
  918. data/lib/puppet/util/diff.rb +17 -18
  919. data/lib/puppet/util/docs.rb +8 -4
  920. data/lib/puppet/util/errors.rb +13 -11
  921. data/lib/puppet/util/execution.rb +58 -36
  922. data/lib/puppet/util/execution_stub.rb +2 -0
  923. data/lib/puppet/util/feature.rb +9 -9
  924. data/lib/puppet/util/file_watcher.rb +3 -0
  925. data/lib/puppet/util/fileparsing.rb +20 -24
  926. data/lib/puppet/util/filetype.rb +43 -43
  927. data/lib/puppet/util/http_proxy.rb +2 -0
  928. data/lib/puppet/util/inifile.rb +13 -18
  929. data/lib/puppet/util/instance_loader.rb +3 -0
  930. data/lib/puppet/util/json.rb +2 -0
  931. data/lib/puppet/util/json_lockfile.rb +4 -1
  932. data/lib/puppet/util/ldap/connection.rb +21 -19
  933. data/lib/puppet/util/ldap/generator.rb +2 -0
  934. data/lib/puppet/util/ldap/manager.rb +20 -21
  935. data/lib/puppet/util/ldap.rb +2 -0
  936. data/lib/puppet/util/libuser.rb +3 -2
  937. data/lib/puppet/util/limits.rb +2 -0
  938. data/lib/puppet/util/lockfile.rb +8 -8
  939. data/lib/puppet/util/log/destination.rb +4 -3
  940. data/lib/puppet/util/log/destinations.rb +20 -20
  941. data/lib/puppet/util/log.rb +40 -31
  942. data/lib/puppet/util/logging.rb +34 -30
  943. data/lib/puppet/util/metaid.rb +2 -1
  944. data/lib/puppet/util/metric.rb +9 -6
  945. data/lib/puppet/util/monkey_patches.rb +22 -30
  946. data/lib/puppet/util/multi_match.rb +9 -5
  947. data/lib/puppet/util/network_device/base.rb +3 -2
  948. data/lib/puppet/util/network_device/config.rb +9 -9
  949. data/lib/puppet/util/network_device/transport/base.rb +1 -1
  950. data/lib/puppet/util/network_device/transport.rb +2 -0
  951. data/lib/puppet/util/network_device.rb +2 -0
  952. data/lib/puppet/util/package/version/debian.rb +33 -31
  953. data/lib/puppet/util/package/version/gem.rb +3 -0
  954. data/lib/puppet/util/package/version/pip.rb +14 -8
  955. data/lib/puppet/util/package/version/range/eq.rb +4 -1
  956. data/lib/puppet/util/package/version/range/gt.rb +3 -0
  957. data/lib/puppet/util/package/version/range/gt_eq.rb +3 -0
  958. data/lib/puppet/util/package/version/range/lt.rb +4 -1
  959. data/lib/puppet/util/package/version/range/lt_eq.rb +3 -0
  960. data/lib/puppet/util/package/version/range/min_max.rb +5 -0
  961. data/lib/puppet/util/package/version/range/simple.rb +2 -0
  962. data/lib/puppet/util/package/version/range.rb +9 -5
  963. data/lib/puppet/util/package/version/rpm.rb +7 -5
  964. data/lib/puppet/util/package.rb +5 -2
  965. data/lib/puppet/util/pidlock.rb +11 -10
  966. data/lib/puppet/util/platform.rb +5 -3
  967. data/lib/puppet/util/plist.rb +16 -16
  968. data/lib/puppet/util/posix.rb +27 -24
  969. data/lib/puppet/util/profiler/aggregate.rb +7 -10
  970. data/lib/puppet/util/profiler/around_profiler.rb +2 -1
  971. data/lib/puppet/util/profiler/logging.rb +3 -1
  972. data/lib/puppet/util/profiler/object_counts.rb +2 -0
  973. data/lib/puppet/util/profiler/wall_clock.rb +6 -5
  974. data/lib/puppet/util/profiler.rb +2 -0
  975. data/lib/puppet/util/provider_features.rb +10 -6
  976. data/lib/puppet/util/psych_support.rb +2 -0
  977. data/lib/puppet/util/rdoc/code_objects.rb +18 -20
  978. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +118 -128
  979. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +62 -79
  980. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +32 -29
  981. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +3 -1
  982. data/lib/puppet/util/rdoc/parser.rb +3 -1
  983. data/lib/puppet/util/rdoc.rb +10 -9
  984. data/lib/puppet/util/reference.rb +7 -32
  985. data/lib/puppet/util/resource_template.rb +3 -1
  986. data/lib/puppet/util/retry_action.rb +6 -5
  987. data/lib/puppet/util/rpm_compare.rb +31 -28
  988. data/lib/puppet/util/rubygems.rb +3 -3
  989. data/lib/puppet/util/run_mode.rb +46 -4
  990. data/lib/puppet/util/selinux.rb +72 -38
  991. data/lib/puppet/util/skip_tags.rb +2 -0
  992. data/lib/puppet/util/splayer.rb +2 -0
  993. data/lib/puppet/util/storage.rb +13 -13
  994. data/lib/puppet/util/suidmanager.rb +38 -37
  995. data/lib/puppet/util/symbolic_file_mode.rb +76 -76
  996. data/lib/puppet/util/tag_set.rb +4 -2
  997. data/lib/puppet/util/tagging.rb +12 -13
  998. data/lib/puppet/util/terminal.rb +6 -4
  999. data/lib/puppet/util/user_attr.rb +9 -7
  1000. data/lib/puppet/util/warnings.rb +4 -0
  1001. data/lib/puppet/util/watched_file.rb +4 -1
  1002. data/lib/puppet/util/watcher/change_watcher.rb +2 -0
  1003. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -1
  1004. data/lib/puppet/util/watcher/timer.rb +2 -0
  1005. data/lib/puppet/util/watcher.rb +5 -5
  1006. data/lib/puppet/util/windows/access_control_entry.rb +3 -1
  1007. data/lib/puppet/util/windows/access_control_list.rb +10 -7
  1008. data/lib/puppet/util/windows/adsi.rb +82 -74
  1009. data/lib/puppet/util/windows/com.rb +10 -7
  1010. data/lib/puppet/util/windows/daemon.rb +77 -80
  1011. data/lib/puppet/util/windows/error.rb +7 -5
  1012. data/lib/puppet/util/windows/eventlog.rb +13 -9
  1013. data/lib/puppet/util/windows/file.rb +49 -45
  1014. data/lib/puppet/util/windows/monkey_patches/process.rb +2 -3
  1015. data/lib/puppet/util/windows/principal.rb +37 -34
  1016. data/lib/puppet/util/windows/process.rb +36 -40
  1017. data/lib/puppet/util/windows/registry.rb +60 -58
  1018. data/lib/puppet/util/windows/root_certs.rb +5 -3
  1019. data/lib/puppet/util/windows/security.rb +92 -90
  1020. data/lib/puppet/util/windows/security_descriptor.rb +2 -0
  1021. data/lib/puppet/util/windows/service.rb +24 -12
  1022. data/lib/puppet/util/windows/sid.rb +23 -21
  1023. data/lib/puppet/util/windows/string.rb +2 -0
  1024. data/lib/puppet/util/windows/user.rb +56 -55
  1025. data/lib/puppet/util/windows.rb +8 -1
  1026. data/lib/puppet/util/yaml.rb +3 -1
  1027. data/lib/puppet/util.rb +112 -161
  1028. data/lib/puppet/vendor.rb +3 -1
  1029. data/lib/puppet/version.rb +5 -2
  1030. data/lib/puppet/x509/cert_provider.rb +48 -12
  1031. data/lib/puppet/x509/pem_store.rb +3 -1
  1032. data/lib/puppet/x509.rb +2 -0
  1033. data/lib/puppet.rb +22 -19
  1034. data/lib/puppet_pal.rb +2 -0
  1035. data/lib/puppet_x.rb +2 -0
  1036. data/locales/puppet.pot +9723 -5
  1037. data/man/man5/puppet.conf.5 +121 -912
  1038. data/man/man8/puppet-agent.8 +39 -107
  1039. data/man/man8/puppet-apply.8 +18 -51
  1040. data/man/man8/puppet-catalog.8 +25 -122
  1041. data/man/man8/puppet-config.8 +22 -70
  1042. data/man/man8/puppet-describe.8 +6 -22
  1043. data/man/man8/puppet-device.8 +13 -49
  1044. data/man/man8/puppet-doc.8 +8 -24
  1045. data/man/man8/puppet-epp.8 +23 -168
  1046. data/man/man8/puppet-facts.8 +14 -92
  1047. data/man/man8/puppet-filebucket.8 +22 -54
  1048. data/man/man8/puppet-generate.8 +5 -35
  1049. data/man/man8/puppet-help.8 +8 -29
  1050. data/man/man8/puppet-lookup.8 +25 -61
  1051. data/man/man8/puppet-module.8 +19 -124
  1052. data/man/man8/puppet-node.8 +47 -68
  1053. data/man/man8/puppet-parser.8 +12 -55
  1054. data/man/man8/puppet-plugin.8 +10 -33
  1055. data/man/man8/puppet-report.8 +10 -53
  1056. data/man/man8/puppet-resource.8 +19 -44
  1057. data/man/man8/puppet-script.8 +11 -33
  1058. data/man/man8/puppet-ssl.8 +12 -30
  1059. data/man/man8/puppet.8 +90 -20
  1060. data/tasks/tag.rake +34 -0
  1061. metadata +77 -65
  1062. data/CONTRIBUTING.md +0 -161
  1063. data/examples/hiera/etc/hiera.yaml +0 -15
  1064. data/examples/hiera/etc/hieradb/common.yaml +0 -3
  1065. data/examples/hiera/etc/hieradb/dc1.yaml +0 -6
  1066. data/examples/hiera/etc/hieradb/development.yaml +0 -2
  1067. data/examples/hiera/etc/puppet.conf +0 -3
  1068. data/examples/hiera/modules/data/manifests/common.pp +0 -4
  1069. data/examples/hiera/modules/ntp/manifests/data.pp +0 -4
  1070. data/examples/hiera/modules/ntp/templates/ntp.conf.erb +0 -3
  1071. data/examples/hiera/modules/users/manifests/development.pp +0 -4
  1072. data/lib/puppet/external/pson/common.rb +0 -374
  1073. data/lib/puppet/external/pson/pure/generator.rb +0 -395
  1074. data/lib/puppet/external/pson/pure/parser.rb +0 -308
  1075. data/lib/puppet/external/pson/pure.rb +0 -15
  1076. data/lib/puppet/external/pson/version.rb +0 -8
  1077. data/lib/puppet/module_tool/contents_description.rb +0 -89
  1078. data/tasks/benchmark.rake +0 -180
  1079. data/tasks/ci.rake +0 -24
  1080. data/tasks/generate_ast_model.rake +0 -90
  1081. data/tasks/generate_cert_fixtures.rake +0 -194
  1082. data/tasks/manpages.rake +0 -67
  1083. data/tasks/memwalk.rake +0 -195
  1084. data/tasks/parallel.rake +0 -410
  1085. data/tasks/parser.rake +0 -22
  1086. data/tasks/yard.rake +0 -59
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../puppet/util/instance_loader'
2
4
 
3
5
  # This class is an implementation of a simple mechanism for loading and returning reports.
@@ -55,10 +57,10 @@ class Puppet::Reports
55
57
  name = name.intern
56
58
 
57
59
  mod = genmodule(name,
58
- :extend => Puppet::Util::Docs,
59
- :hash => instance_hash(:report),
60
+ :extend => Puppet::Util::Docs,
61
+ :hash => instance_hash(:report),
60
62
  :overwrite => true,
61
- :block => block)
63
+ :block => block)
62
64
 
63
65
  mod.useyaml = true if options[:useyaml]
64
66
 
@@ -70,13 +72,13 @@ class Puppet::Reports
70
72
  # Collects the docs for all reports.
71
73
  # @api private
72
74
  def self.reportdocs
73
- docs = ""
75
+ docs = ''.dup
74
76
 
75
77
  # Use this method so they all get loaded
76
78
  instance_loader(:report).loadall(Puppet.lookup(:current_environment))
77
79
  loaded_instances(:report).sort_by(&:to_s).each do |name|
78
- mod = self.report(name)
79
- docs << "#{name}\n#{"-" * name.to_s.length}\n"
80
+ mod = report(name)
81
+ docs << "#{name}\n#{'-' * name.to_s.length}\n"
80
82
 
81
83
  docs << Puppet::Util::Docs.scrub(mod.doc) << "\n\n"
82
84
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../puppet/node'
2
4
  require_relative '../../puppet/indirector'
3
5
  require_relative '../../puppet/transaction'
@@ -83,15 +85,15 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
83
85
  # Returns [typename, title] when given a String with "Type[title]".
84
86
  # Returns [nil, nil] if '[' ']' not detected.
85
87
  #
86
- def title_key_for_ref( ref )
88
+ def title_key_for_ref(ref)
87
89
  s = ref.index('[')
88
90
  e = ref.rindex(']')
89
91
  if s && e && e > s
90
- a = [ref[0, s], ref[s+1, e-s-1]]
92
+ a = [ref[0, s], ref[s + 1, e - s - 1]]
91
93
  else
92
94
  a = [nil, nil]
93
95
  end
94
- return a
96
+ a
95
97
  end
96
98
 
97
99
  def add_resource_before(other, *resources)
@@ -100,7 +102,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
100
102
  idx = @resources.index(other_title_key)
101
103
  if idx.nil?
102
104
  raise ArgumentError, _("Cannot add resource %{resource_1} before %{resource_2} because %{resource_2} is not yet in the catalog") %
103
- { resource_1: resource.ref, resource_2: other.ref }
105
+ { resource_1: resource.ref, resource_2: other.ref }
104
106
  end
105
107
  add_one_resource(resource, idx)
106
108
  end
@@ -115,9 +117,9 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
115
117
  idx = @resources.index(other_title_key)
116
118
  if idx.nil?
117
119
  raise ArgumentError, _("Cannot add resource %{resource_1} after %{resource_2} because %{resource_2} is not yet in the catalog") %
118
- { resource_1: resource.ref, resource_2: other.ref }
120
+ { resource_1: resource.ref, resource_2: other.ref }
119
121
  end
120
- add_one_resource(resource, idx+1)
122
+ add_one_resource(resource, idx + 1)
121
123
  end
122
124
  end
123
125
 
@@ -134,7 +136,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
134
136
  adjacent(resource, :direction => :in)[0]
135
137
  end
136
138
 
137
- def add_one_resource(resource, idx=-1)
139
+ def add_one_resource(resource, idx = -1)
138
140
  title_key = title_key_for_ref(resource.ref)
139
141
  if @resource_table[title_key]
140
142
  fail_on_duplicate_type_and_title(resource, title_key)
@@ -165,7 +167,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
165
167
  # The alias setting logic checks, and does not error if the alias is set to an already set alias
166
168
  # for the same resource (i.e. it is ok if alias == title
167
169
  explicit_aliases = [resource[:alias]].flatten.compact
168
- explicit_aliases.each {| given_alias | self.alias(resource, given_alias) }
170
+ explicit_aliases.each { |given_alias| self.alias(resource, given_alias) }
169
171
 
170
172
  # Skip creating uniqueness key alias and checking collisions for non-isomorphic resources.
171
173
  return unless resource.respond_to?(:isomorphic?) and resource.isomorphic?
@@ -182,7 +184,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
182
184
  def alias(resource, key)
183
185
  ref = resource.ref
184
186
  ref =~ /^(.+)\[/
185
- class_name = $1 || resource.class.name
187
+ class_name = ::Regexp.last_match(1) || resource.class.name
186
188
 
187
189
  newref = [class_name, key].flatten
188
190
 
@@ -198,15 +200,16 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
198
200
  existing = @resource_table[newref]
199
201
  if existing
200
202
  return if existing == resource
203
+
201
204
  resource_declaration = Puppet::Util::Errors.error_location(resource.file, resource.line)
202
205
  msg = if resource_declaration.empty?
203
- #TRANSLATORS 'alias' should not be translated
206
+ # TRANSLATORS 'alias' should not be translated
204
207
  _("Cannot alias %{resource} to %{key}; resource %{newref} already declared") %
205
- { resource: ref, key: key.inspect, newref: newref.inspect }
208
+ { resource: ref, key: key.inspect, newref: newref.inspect }
206
209
  else
207
- #TRANSLATORS 'alias' should not be translated
210
+ # TRANSLATORS 'alias' should not be translated
208
211
  _("Cannot alias %{resource} to %{key} at %{resource_declaration}; resource %{newref} already declared") %
209
- { resource: ref, key: key.inspect, resource_declaration: resource_declaration, newref: newref.inspect }
212
+ { resource: ref, key: key.inspect, resource_declaration: resource_declaration, newref: newref.inspect }
210
213
  end
211
214
  msg += Puppet::Util::Errors.error_location_with_space(existing.file, existing.line)
212
215
  raise ArgumentError, msg
@@ -269,7 +272,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
269
272
  def clear(remove_resources = true)
270
273
  super()
271
274
  # We have to do this so that the resources clean themselves up.
272
- @resource_table.values.each { |resource| resource.remove } if remove_resources
275
+ @resource_table.values.each(&:remove) if remove_resources
273
276
  @resource_table.clear
274
277
  @resources = []
275
278
 
@@ -289,6 +292,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
289
292
  unless klass
290
293
  raise ArgumentError, _("Unknown resource type %{type}") % { type: type }
291
294
  end
295
+
292
296
  resource = klass.new(options)
293
297
  return unless resource
294
298
 
@@ -300,7 +304,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
300
304
  def finalize
301
305
  make_default_resources
302
306
 
303
- @resource_table.values.each { |resource| resource.finish }
307
+ @resource_table.values.each(&:finish)
304
308
 
305
309
  write_graph(:resources)
306
310
  end
@@ -376,7 +380,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
376
380
  type_name = type.is_a?(Puppet::CompilableResourceType) || type.is_a?(Puppet::Resource::Type) ? type.name : type
377
381
  type_name, title = Puppet::Resource.type_and_title(type_name, title)
378
382
  type = type_name if type.is_a?(String)
379
- title_key = [type_name, title.to_s]
383
+ title_key = [type_name, title.to_s]
380
384
  result = @resource_table[title_key]
381
385
  if result.nil?
382
386
  # an instance has to be created in order to construct the unique key used when
@@ -391,7 +395,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
391
395
  end
392
396
 
393
397
  def resource_refs
394
- resource_keys.collect{ |type, name| name.is_a?( String ) ? "#{type}[#{name}]" : nil}.compact
398
+ resource_keys.filter_map { |type, name| name.is_a?(String) ? "#{type}[#{name}]" : nil }
395
399
  end
396
400
 
397
401
  def resource_keys
@@ -407,7 +411,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
407
411
  def self.from_data_hash(data)
408
412
  result = new(data['name'], Puppet::Node::Environment::NONE)
409
413
 
410
- result.tag(*data['tags']) if data['tags']
414
+ result.tag(*data['tags']) if data['tags']
411
415
  result.version = data['version'] if data['version']
412
416
  result.code_id = data['code_id'] if data['code_id']
413
417
  result.catalog_uuid = data['catalog_uuid'] if data['catalog_uuid']
@@ -431,14 +435,14 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
431
435
  source = result.resource(edge.source)
432
436
  unless source
433
437
  raise ArgumentError, _("Could not intern from data: Could not find relationship source %{source} for %{target}") %
434
- { source: edge.source.inspect, target: edge.target.to_s }
438
+ { source: edge.source.inspect, target: edge.target.to_s }
435
439
  end
436
440
  edge.source = source
437
441
 
438
442
  target = result.resource(edge.target)
439
443
  unless target
440
444
  raise ArgumentError, _("Could not intern from data: Could not find relationship target %{target} for %{source}") %
441
- { target: edge.target.inspect, source: edge.source.to_s }
445
+ { target: edge.target.inspect, source: edge.source.to_s }
442
446
  end
443
447
  edge.target = target
444
448
 
@@ -448,16 +452,14 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
448
452
 
449
453
  result.add_class(*data['classes']) if data['classes']
450
454
 
451
- result.metadata = data['metadata'].inject({}) { |h, (k, v)| h[k] = Puppet::FileServing::Metadata.from_data_hash(v); h } if data['metadata']
455
+ result.metadata = data['metadata'].transform_values { |v| Puppet::FileServing::Metadata.from_data_hash(v); } if data['metadata']
452
456
 
453
457
  recursive_metadata = data['recursive_metadata']
454
458
  if recursive_metadata
455
- result.recursive_metadata = recursive_metadata.inject({}) do |h, (title, source_to_meta_hash)|
456
- h[title] = source_to_meta_hash.inject({}) do |inner_h, (source, metas)|
457
- inner_h[source] = metas.map {|meta| Puppet::FileServing::Metadata.from_data_hash(meta)}
458
- inner_h
459
+ result.recursive_metadata = recursive_metadata.transform_values do |source_to_meta_hash|
460
+ source_to_meta_hash.transform_values do |metas|
461
+ metas.map { |meta| Puppet::FileServing::Metadata.from_data_hash(meta) }
459
462
  end
460
- h
461
463
  end
462
464
  end
463
465
 
@@ -465,29 +467,27 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
465
467
  end
466
468
 
467
469
  def to_data_hash
468
- metadata_hash = metadata.inject({}) { |h, (k, v)| h[k] = v.to_data_hash; h }
469
- recursive_metadata_hash = recursive_metadata.inject({}) do |h, (title, source_to_meta_hash)|
470
- h[title] = source_to_meta_hash.inject({}) do |inner_h, (source, metas)|
471
- inner_h[source] = metas.map {|meta| meta.to_data_hash}
472
- inner_h
470
+ metadata_hash = metadata.transform_values(&:to_data_hash)
471
+ recursive_metadata_hash = recursive_metadata.transform_values do |source_to_meta_hash|
472
+ source_to_meta_hash.transform_values do |metas|
473
+ metas.map(&:to_data_hash)
473
474
  end
474
- h
475
475
  end
476
476
 
477
477
  {
478
- 'tags' => tags.to_a,
479
- 'name' => name,
480
- 'version' => version,
481
- 'code_id' => code_id,
478
+ 'tags' => tags.to_a,
479
+ 'name' => name,
480
+ 'version' => version,
481
+ 'code_id' => code_id,
482
482
  'catalog_uuid' => catalog_uuid,
483
483
  'catalog_format' => catalog_format,
484
- 'environment' => environment.to_s,
484
+ 'environment' => environment.to_s,
485
485
  'resources' => @resources.map { |v| @resource_table[v].to_data_hash },
486
- 'edges' => edges.map { |e| e.to_data_hash },
487
- 'classes' => classes,
486
+ 'edges' => edges.map(&:to_data_hash),
487
+ 'classes' => classes,
488
488
  }.merge(metadata_hash.empty? ?
489
- {} : {'metadata' => metadata_hash}).merge(recursive_metadata_hash.empty? ?
490
- {} : {'recursive_metadata' => recursive_metadata_hash})
489
+ {} : { 'metadata' => metadata_hash }).merge(recursive_metadata_hash.empty? ?
490
+ {} : { 'recursive_metadata' => recursive_metadata_hash })
491
491
  end
492
492
 
493
493
  # Convert our catalog into a RAL catalog.
@@ -508,7 +508,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
508
508
  # environment set in the catalog (if it is set)
509
509
  # See PUP-3755
510
510
  if environment_instance
511
- Puppet.override({:current_environment => environment_instance}) do
511
+ Puppet.override({ :current_environment => environment_instance }) do
512
512
  to_catalog :to_resource, &block
513
513
  end
514
514
  else
@@ -536,10 +536,11 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
536
536
  # https://puppet.com/docs/puppet/latest/configuration.html#resourcefile
537
537
  resourcefile = Puppet.settings.setting(:resourcefile)
538
538
  Puppet::FileSystem.open(resourcefile.value, resourcefile.mode.to_i(8), "w:UTF-8") do |f|
539
- to_print = resources.map do |resource|
539
+ to_print = resources.filter_map do |resource|
540
540
  next unless resource.managed?
541
- "#{resource.ref.downcase}"
542
- end.compact
541
+
542
+ resource.ref.downcase.to_s
543
+ end
543
544
  f.puts to_print.join("\n")
544
545
  end
545
546
  rescue => detail
@@ -589,14 +590,14 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
589
590
  # This pretty much just converts all of the resources from one class to another, using
590
591
  # a conversion method.
591
592
  def to_catalog(convert)
592
- result = self.class.new(self.name, self.environment_instance)
593
+ result = self.class.new(name, environment_instance)
593
594
 
594
- result.version = self.version
595
- result.code_id = self.code_id
596
- result.catalog_uuid = self.catalog_uuid
597
- result.catalog_format = self.catalog_format
598
- result.metadata = self.metadata
599
- result.recursive_metadata = self.recursive_metadata
595
+ result.version = version
596
+ result.code_id = code_id
597
+ result.catalog_uuid = catalog_uuid
598
+ result.catalog_format = catalog_format
599
+ result.metadata = metadata
600
+ result.recursive_metadata = recursive_metadata
600
601
 
601
602
  map = {}
602
603
  resources.each do |resource|
@@ -642,7 +643,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
642
643
 
643
644
  map.clear
644
645
 
645
- result.add_class(*self.classes)
646
+ result.add_class(*classes)
646
647
  result.merge_tags_from(self)
647
648
 
648
649
  result
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'time'
2
4
  require_relative '../../puppet/network/format_support'
3
5
  require_relative '../../puppet/util/psych_support'
4
6
 
5
7
  module Puppet
6
8
  class Resource
7
-
8
9
  # This class represents the result of evaluating a given resource. It
9
10
  # contains file and line information about the source, events generated
10
11
  # while evaluating the resource, timing information, and the status of the
@@ -101,7 +102,7 @@ module Puppet
101
102
  end
102
103
 
103
104
  def self.from_data_hash(data)
104
- obj = self.allocate
105
+ obj = allocate
105
106
  obj.initialize_from_hash(data)
106
107
  obj
107
108
  end
@@ -109,7 +110,7 @@ module Puppet
109
110
  # Provide a boolean method for each of the states.
110
111
  STATES.each do |attr|
111
112
  define_method("#{attr}?") do
112
- !! send(attr)
113
+ !!send(attr)
113
114
  end
114
115
  end
115
116
 
@@ -120,9 +121,10 @@ module Puppet
120
121
 
121
122
  def add_event(event)
122
123
  @events << event
123
- if event.status == 'failure'
124
+ case event.status
125
+ when 'failure'
124
126
  self.failed = true
125
- elsif event.status == 'success'
127
+ when 'success'
126
128
  @change_count += 1
127
129
  @changed = true
128
130
  end
@@ -214,13 +216,13 @@ module Puppet
214
216
  'tags' => @tags.to_a,
215
217
  'time' => @time.iso8601(9),
216
218
  'failed' => @failed,
217
- 'failed_to_restart' => self.failed_to_restart?,
219
+ 'failed_to_restart' => failed_to_restart?,
218
220
  'changed' => @changed,
219
221
  'out_of_sync' => @out_of_sync,
220
222
  'skipped' => @skipped,
221
223
  'change_count' => @change_count,
222
224
  'out_of_sync_count' => @out_of_sync_count,
223
- 'events' => @events.map { |event| event.to_data_hash },
225
+ 'events' => @events.map(&:to_data_hash),
224
226
  'corrective_change' => @corrective_change,
225
227
  }
226
228
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../puppet/parser'
2
4
  require_relative '../../puppet/util/warnings'
3
5
  require_relative '../../puppet/util/errors'
@@ -15,22 +17,32 @@ class Puppet::Resource::Type
15
17
 
16
18
  # Map the names used in our documentation to the names used internally
17
19
  RESOURCE_KINDS_TO_EXTERNAL_NAMES = {
18
- :hostclass => "class",
19
- :node => "node",
20
- :definition => "defined_type"
20
+ :hostclass => "class",
21
+ :node => "node",
22
+ :definition => "defined_type"
21
23
  }
22
24
  RESOURCE_EXTERNAL_NAMES_TO_KINDS = RESOURCE_KINDS_TO_EXTERNAL_NAMES.invert
23
25
 
24
- NAME = 'name'.freeze
25
- TITLE = 'title'.freeze
26
- MODULE_NAME = 'module_name'.freeze
27
- CALLER_MODULE_NAME = 'caller_module_name'.freeze
28
- PARAMETERS = 'parameters'.freeze
29
- KIND = 'kind'.freeze
30
- NODES = 'nodes'.freeze
31
- DOUBLE_COLON = '::'.freeze
26
+ NAME = 'name'
27
+ TITLE = 'title'
28
+ MODULE_NAME = 'module_name'
29
+ CALLER_MODULE_NAME = 'caller_module_name'
30
+ PARAMETERS = 'parameters'
31
+ KIND = 'kind'
32
+ NODES = 'nodes'
33
+ DOUBLE_COLON = '::'
32
34
  EMPTY_ARRAY = [].freeze
33
35
 
36
+ LOOKAROUND_OPERATORS = {
37
+ "(" => 'LP',
38
+ "?" => "QU",
39
+ "<" => "LT",
40
+ ">" => "GT",
41
+ "!" => "EX",
42
+ "=" => "EQ",
43
+ ")" => 'RP'
44
+ }.freeze
45
+
34
46
  attr_accessor :file, :line, :doc, :code, :parent, :resource_type_collection, :override
35
47
  attr_reader :namespace, :arguments, :behaves_like, :module_name
36
48
 
@@ -45,7 +57,7 @@ class Puppet::Resource::Type
45
57
  attr_reader :type
46
58
 
47
59
  RESOURCE_KINDS.each do |t|
48
- define_method("#{t}?") { self.type == t }
60
+ define_method("#{t}?") { type == t }
49
61
  end
50
62
 
51
63
  # Are we a child of the passed class? Do a recursive search up our
@@ -54,12 +66,11 @@ class Puppet::Resource::Type
54
66
  return true if override
55
67
  return false unless parent
56
68
 
57
- return(klass == parent_type ? true : parent_type.child_of?(klass))
69
+ (klass == parent_type ? true : parent_type.child_of?(klass))
58
70
  end
59
71
 
60
72
  # Now evaluate the code associated with this class or definition.
61
73
  def evaluate_code(resource)
62
-
63
74
  static_parent = evaluate_parent_type(resource)
64
75
  scope = static_parent || resource.scope
65
76
 
@@ -93,6 +104,7 @@ class Puppet::Resource::Type
93
104
  [:code, :doc, :line, :file, :parent].each do |param|
94
105
  value = options[param]
95
106
  next unless value
107
+
96
108
  send(param.to_s + '=', value)
97
109
  end
98
110
 
@@ -116,6 +128,7 @@ class Puppet::Resource::Type
116
128
  def merge(other)
117
129
  fail _("%{name} is not a class; cannot add code to it") % { name: name } unless type == :hostclass
118
130
  fail _("%{name} is not a class; cannot add code from it") % { name: other.name } unless other.type == :hostclass
131
+
119
132
  if name == "" && Puppet.settings[:freeze_main]
120
133
  # It is ok to merge definitions into main even if freeze is on (definitions are nodes, classes, defines, functions, and types)
121
134
  unless other.code.is_definitions_only?
@@ -137,7 +150,7 @@ class Puppet::Resource::Type
137
150
  # This might just be an empty, stub class.
138
151
  return unless other.code
139
152
 
140
- unless self.code
153
+ unless code
141
154
  self.code = other.code
142
155
  return
143
156
  end
@@ -150,16 +163,16 @@ class Puppet::Resource::Type
150
163
  # classes and nodes. No parameters are be supplied--if this is a
151
164
  # parameterized class, then all parameters take on their default
152
165
  # values.
153
- def ensure_in_catalog(scope, parameters=nil)
166
+ def ensure_in_catalog(scope, parameters = nil)
154
167
  resource_type =
155
- case type
156
- when :definition
157
- raise ArgumentError, _('Cannot create resources for defined resource types')
158
- when :hostclass
159
- :class
160
- when :node
161
- :node
162
- end
168
+ case type
169
+ when :definition
170
+ raise ArgumentError, _('Cannot create resources for defined resource types')
171
+ when :hostclass
172
+ :class
173
+ when :node
174
+ :node
175
+ end
163
176
 
164
177
  # Do nothing if the resource already exists; this makes sure we don't
165
178
  # get multiple copies of the class resource, which helps provide the
@@ -172,7 +185,7 @@ class Puppet::Resource::Type
172
185
  resource = scope.catalog.resource(resource_type, name)
173
186
  return resource unless resource.nil?
174
187
  elsif parameters.is_a?(Hash)
175
- parameters = parameters.map {|k, v| Puppet::Parser::Resource::Param.new(:name => k, :value => v, :source => self)}
188
+ parameters = parameters.map { |k, v| Puppet::Parser::Resource::Param.new(:name => k, :value => v, :source => self) }
176
189
  end
177
190
  resource = Puppet::Parser::Resource.new(resource_type, name, :scope => scope, :source => self, :parameters => parameters)
178
191
  instantiate_resource(scope, resource)
@@ -186,14 +199,18 @@ class Puppet::Resource::Type
186
199
  parent_type(scope).ensure_in_catalog(scope)
187
200
  end
188
201
 
189
- if ['Class', 'Node'].include? resource.type
202
+ if %w[Class Node].include? resource.type
190
203
  scope.catalog.merge_tags_from(resource)
191
204
  end
192
205
  end
193
206
 
194
207
  def name
195
208
  if type == :node && name_is_regex?
196
- "__node_regexp__#{@name.source.downcase.gsub(/[^-\w:.]/,'').sub(/^\.+/,'')}"
209
+ # Normalize lookarround regex patthern
210
+ internal_name = @name.source.downcase.gsub(/\(\?[^)]*\)/) do |str|
211
+ str.gsub(/./) { |ch| LOOKAROUND_OPERATORS[ch] || ch }
212
+ end
213
+ "__node_regexp__#{internal_name.gsub(/[^-\w:.]/, '').sub(/^\.+/, '')}"
197
214
  else
198
215
  @name
199
216
  end
@@ -207,7 +224,7 @@ class Puppet::Resource::Type
207
224
  return nil unless parent
208
225
 
209
226
  @parent_type ||= scope.environment.known_resource_types.send("find_#{type}", parent) ||
210
- fail(Puppet::ParseError, _("Could not find parent resource type '%{parent}' of type %{parent_type} in %{env}") % { parent: parent, parent_type: type, env: scope.environment })
227
+ fail(Puppet::ParseError, _("Could not find parent resource type '%{parent}' of type %{parent_type} in %{env}") % { parent: parent, parent_type: type, env: scope.environment })
211
228
  end
212
229
 
213
230
  # Validate and set any arguments passed by the resource as variables in the scope.
@@ -229,12 +246,12 @@ class Puppet::Resource::Type
229
246
 
230
247
  if @type == :hostclass
231
248
  scope[TITLE] = resource.title.to_s.downcase
232
- scope[NAME] = resource.name.to_s.downcase
249
+ scope[NAME] = resource.name.to_s.downcase
233
250
  else
234
251
  scope[TITLE] = resource.title
235
- scope[NAME] = resource.name
252
+ scope[NAME] = resource.name
236
253
  end
237
- scope.class_set(self.name,scope) if hostclass? || node?
254
+ scope.class_set(name, scope) if hostclass? || node?
238
255
 
239
256
  param_hash = scope.with_parameter_scope(resource.to_s, arguments.keys) do |param_scope|
240
257
  # Assign directly to the parameter scope to avoid scope parameter validation at this point. It
@@ -248,7 +265,7 @@ class Puppet::Resource::Type
248
265
  validate_resource_hash(resource, param_hash)
249
266
 
250
267
  # Assign parameter values to current scope
251
- param_hash.each { |param, value| exceptwrap { scope[param] = value }}
268
+ param_hash.each { |param, value| exceptwrap { scope[param] = value } }
252
269
  end
253
270
 
254
271
  # Lookup and inject parameters from external scope
@@ -257,11 +274,13 @@ class Puppet::Resource::Type
257
274
  def inject_external_parameters(resource, scope)
258
275
  # Only lookup parameters for host classes
259
276
  return unless type == :hostclass
277
+
260
278
  parameters = resource.parameters
261
279
  arguments.each do |param_name, default|
262
280
  sym_name = param_name.to_sym
263
281
  param = parameters[sym_name]
264
282
  next unless param.nil? || param.value.nil?
283
+
265
284
  catch(:no_such_key) do
266
285
  bound_value = Puppet::Pops::Lookup.search_and_merge("#{name}::#{param_name}", Puppet::Pops::Lookup::Invocation.new(scope), nil)
267
286
  # Assign bound value but don't let an undef trump a default expression
@@ -273,12 +292,15 @@ class Puppet::Resource::Type
273
292
 
274
293
  def assign_defaults(resource, param_scope, scope)
275
294
  return unless resource.is_a?(Puppet::Parser::Resource)
295
+
276
296
  parameters = resource.parameters
277
297
  arguments.each do |param_name, default|
278
298
  next if default.nil?
299
+
279
300
  name = param_name.to_sym
280
301
  param = parameters[name]
281
302
  next unless param.nil? || param.value.nil?
303
+
282
304
  value = exceptwrap { param_scope.evaluate3x(param_name, default, scope) }
283
305
  resource[name] = value
284
306
  param_scope[param_name] = value
@@ -298,11 +320,10 @@ class Puppet::Resource::Type
298
320
  # recreated as a Sensitive in order to perform correct type checking.
299
321
  sensitives = Set.new(resource.sensitive_parameters)
300
322
  validate_resource_hash(resource,
301
- Hash[resource.parameters.map do |name, value|
302
- value_to_validate = sensitives.include?(name) ? Puppet::Pops::Types::PSensitiveType::Sensitive.new(value.value) : value.value
303
- [name.to_s, value_to_validate]
304
- end
305
- ])
323
+ resource.parameters.to_h do |name, value|
324
+ value_to_validate = sensitives.include?(name) ? Puppet::Pops::Types::PSensitiveType::Sensitive.new(value.value) : value.value
325
+ [name.to_s, value_to_validate]
326
+ end)
306
327
  end
307
328
 
308
329
  # Check whether a given argument is valid.
@@ -330,6 +351,7 @@ class Puppet::Resource::Type
330
351
  @argument_types = {}
331
352
  @parameter_struct = nil
332
353
  return unless name_to_type_hash
354
+
333
355
  name_to_type_hash.each do |name, t|
334
356
  # catch internal errors
335
357
  unless @arguments.include?(name)
@@ -338,6 +360,7 @@ class Puppet::Resource::Type
338
360
  unless t.is_a? Puppet::Pops::Types::PAnyType
339
361
  raise Puppet::DevError, _("Parameter '%{name}' is given a type that is not a Puppet Type, got %{class_name}") % { name: name, class_name: t.class }
340
362
  end
363
+
341
364
  @argument_types[name] = t
342
365
  end
343
366
  end
@@ -357,6 +380,7 @@ class Puppet::Resource::Type
357
380
  klass = parent_type(resource.scope)
358
381
  parent_resource = resource.scope.compiler.catalog.resource(:class, klass.name) || resource.scope.compiler.catalog.resource(:node, klass.name) if klass
359
382
  return unless klass && parent_resource
383
+
360
384
  parent_resource.evaluate unless parent_resource.evaluated?
361
385
  parent_scope(resource.scope, klass)
362
386
  end
@@ -366,7 +390,7 @@ class Puppet::Resource::Type
366
390
  ary = fullname.split(DOUBLE_COLON)
367
391
  n = ary.pop || ""
368
392
  ns = ary.join(DOUBLE_COLON)
369
- return ns, n
393
+ [ns, n]
370
394
  end
371
395
 
372
396
  def parent_scope(scope, klass)
@@ -391,9 +415,9 @@ class Puppet::Resource::Type
391
415
  return unless Puppet::Type.metaparamclass(param)
392
416
 
393
417
  if default
394
- warnonce _("%{param} is a metaparam; this value will inherit to all contained resources in the %{name} definition") % { param: param, name: self.name }
418
+ warnonce _("%{param} is a metaparam; this value will inherit to all contained resources in the %{name} definition") % { param: param, name: name }
395
419
  else
396
- raise Puppet::ParseError, _("%{param} is a metaparameter; please choose another parameter name in the %{name} definition") % { param: param, name: self.name }
420
+ raise Puppet::ParseError, _("%{param} is a metaparameter; please choose another parameter name in the %{name} definition") % { param: param, name: name }
397
421
  end
398
422
  end
399
423
 
@@ -404,7 +428,7 @@ class Puppet::Resource::Type
404
428
  def create_params_struct
405
429
  arg_types = argument_types
406
430
  type_factory = Puppet::Pops::Types::TypeFactory
407
- members = { type_factory.optional(type_factory.string(NAME)) => type_factory.any }
431
+ members = { type_factory.optional(type_factory.string(NAME)) => type_factory.any }
408
432
 
409
433
  Puppet::Type.eachmetaparam do |name|
410
434
  # TODO: Once meta parameters are typed, this should change to reflect that type