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
data/lib/puppet/type.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
2
4
  require_relative '../puppet'
3
5
  require_relative '../puppet/util/log'
4
6
  require_relative '../puppet/util/metric'
@@ -14,7 +16,6 @@ require_relative '../puppet/concurrent/lock'
14
16
 
15
17
  # see the bottom of the file for the rest of the inclusions
16
18
 
17
-
18
19
  module Puppet
19
20
  # The base class for all Puppet types.
20
21
  #
@@ -100,8 +101,9 @@ class Type
100
101
  # Order is only maintained against other types, not arbitrary objects.
101
102
  # The natural order is based on the reference name used when comparing
102
103
  return nil unless other.is_a?(Puppet::CompilableResourceType) || other.class.is_a?(Puppet::CompilableResourceType)
104
+
103
105
  # against other type instances.
104
- self.ref <=> other.ref
106
+ ref <=> other.ref
105
107
  end
106
108
 
107
109
  # Code related to resource type attributes.
@@ -121,7 +123,7 @@ class Type
121
123
  # @return [Array<String>] all type attribute names in a defined order.
122
124
  #
123
125
  def self.allattrs
124
- key_attributes | (parameters & [:provider]) | properties.collect { |property| property.name } | parameters | metaparams
126
+ key_attributes | (parameters & [:provider]) | properties.collect(&:name) | parameters | metaparams
125
127
  end
126
128
 
127
129
  # Returns the class associated with the given attribute name.
@@ -134,11 +136,11 @@ class Type
134
136
  # We cache the value, since this method gets called such a huge number
135
137
  # of times (as in, hundreds of thousands in a given run).
136
138
  unless @attrclasses.include?(name)
137
- @attrclasses[name] = case self.attrtype(name)
138
- when :property; @validproperties[name]
139
- when :meta; @@metaparamhash[name]
140
- when :param; @paramhash[name]
141
- end
139
+ @attrclasses[name] = case attrtype(name)
140
+ when :property; @validproperties[name]
141
+ when :meta; @@metaparamhash[name]
142
+ when :param; @paramhash[name]
143
+ end
142
144
  end
143
145
  @attrclasses[name]
144
146
  end
@@ -152,10 +154,10 @@ class Type
152
154
  @attrtypes ||= {}
153
155
  unless @attrtypes.include?(attr)
154
156
  @attrtypes[attr] = case
155
- when @validproperties.include?(attr); :property
156
- when @paramhash.include?(attr); :param
157
- when @@metaparamhash.include?(attr); :meta
158
- end
157
+ when @validproperties.include?(attr); :property
158
+ when @paramhash.include?(attr); :param
159
+ when @@metaparamhash.include?(attr); :meta
160
+ end
159
161
  end
160
162
 
161
163
  @attrtypes[attr]
@@ -182,7 +184,7 @@ class Type
182
184
  # specification to clearly state that the type is ensurable.
183
185
  #
184
186
  # @overload ensurable()
185
- # @overload ensurable({|| ... })
187
+ # @overload ensurable({ ... })
186
188
  # @yield [ ] A block evaluated in scope of the new Parameter
187
189
  # @yieldreturn [void]
188
190
  # @return [void]
@@ -191,10 +193,10 @@ class Type
191
193
  #
192
194
  def self.ensurable(&block)
193
195
  if block_given?
194
- self.newproperty(:ensure, :parent => Puppet::Property::Ensure, &block)
196
+ newproperty(:ensure, :parent => Puppet::Property::Ensure, &block)
195
197
  else
196
- self.newproperty(:ensure, :parent => Puppet::Property::Ensure) do
197
- self.defaultvalues
198
+ newproperty(:ensure, :parent => Puppet::Property::Ensure) do
199
+ defaultvalues
198
200
  end
199
201
  end
200
202
  end
@@ -209,7 +211,7 @@ class Type
209
211
  # If the class has all three of these methods defined, then it's
210
212
  # ensurable.
211
213
  [:exists?, :create, :destroy].all? { |method|
212
- self.public_method_defined?(method)
214
+ public_method_defined?(method)
213
215
  }
214
216
  end
215
217
 
@@ -258,7 +260,7 @@ class Type
258
260
  # @api private
259
261
  #
260
262
  def self.can_apply_to(target)
261
- [ target == :device ? :device : :host, :both ].include?(apply_to)
263
+ [target == :device ? :device : :host, :both].include?(apply_to)
262
264
  end
263
265
 
264
266
  # Processes the options for a named parameter.
@@ -273,7 +275,7 @@ class Type
273
275
  define_method(name.to_s + "?") do
274
276
  val = self[name]
275
277
  if val == :true or val == true
276
- return true
278
+ true
277
279
  end
278
280
  end
279
281
  end
@@ -294,6 +296,7 @@ class Type
294
296
  #
295
297
  def self.metaparamclass(name)
296
298
  return nil if name.nil?
299
+
297
300
  @@metaparamhash[name.intern]
298
301
  end
299
302
 
@@ -301,7 +304,7 @@ class Type
301
304
  # @return [Array<String>] all meta-parameter names
302
305
  #
303
306
  def self.metaparams
304
- @@metaparams.collect { |param| param.name }
307
+ @@metaparams.collect(&:name)
305
308
  end
306
309
 
307
310
  # Returns the documentation for a given meta-parameter of this type.
@@ -385,7 +388,9 @@ class Type
385
388
  #
386
389
  def self.key_attributes
387
390
  # This is a cache miss around 0.05 percent of the time. --daniel 2012-07-17
388
- @key_attributes_cache ||= key_attribute_parameters.collect { |p| p.name }
391
+ # rubocop:disable Naming/MemoizedInstanceVariableName
392
+ @key_attributes_cache ||= key_attribute_parameters.collect(&:name)
393
+ # rubocop:enable Naming/MemoizedInstanceVariableName
389
394
  end
390
395
 
391
396
  # Returns any parameters that should be included by default in puppet resource's output
@@ -426,7 +431,7 @@ class Type
426
431
  case key_attributes.length
427
432
  when 0; []
428
433
  when 1;
429
- [ [ /(.*)/m, [ [key_attributes.first] ] ] ]
434
+ [[/(.*)/m, [[key_attributes.first]]]]
430
435
  else
431
436
  raise Puppet::DevError, _("you must specify title patterns when there are two or more key attributes")
432
437
  end
@@ -438,7 +443,7 @@ class Type
438
443
  # @return [Object] an object that is a _uniqueness_key_ for this object
439
444
  #
440
445
  def uniqueness_key
441
- self.class.key_attributes.sort_by { |attribute_name| attribute_name.to_s }.map{ |attribute_name| self[attribute_name] }
446
+ self.class.key_attributes.sort_by(&:to_s).map { |attribute_name| self[attribute_name] }
442
447
  end
443
448
 
444
449
  # Creates a new parameter.
@@ -461,12 +466,12 @@ class Type
461
466
 
462
467
  param = genclass(
463
468
  name,
464
- :parent => options[:parent] || Puppet::Parameter,
469
+ :parent => options[:parent] || Puppet::Parameter,
465
470
  :attributes => options[:attributes],
466
- :block => block,
467
- :prefix => "Parameter",
468
- :array => @parameters,
469
- :hash => @paramhash
471
+ :block => block,
472
+ :prefix => "Parameter",
473
+ :array => @parameters,
474
+ :hash => @paramhash
470
475
  )
471
476
 
472
477
  handle_param_options(name, options)
@@ -547,7 +552,8 @@ class Type
547
552
  # @return [Array<String>] Returns the parameter names
548
553
  def self.parameters
549
554
  return [] unless defined?(@parameters)
550
- @parameters.collect { |klass| klass.name }
555
+
556
+ @parameters.collect(&:name)
551
557
  end
552
558
 
553
559
  # @return [Puppet::Parameter] Returns the parameter class associated with the given parameter name.
@@ -566,10 +572,11 @@ class Type
566
572
  def self.validattr?(name)
567
573
  name = name.intern
568
574
  return true if name == :name
575
+
569
576
  @validattrs ||= {}
570
577
 
571
578
  unless @validattrs.include?(name)
572
- @validattrs[name] = !!(self.validproperty?(name) or self.validparameter?(name) or self.metaparam?(name))
579
+ @validattrs[name] = !!(validproperty?(name) or validparameter?(name) or metaparam?(name))
573
580
  end
574
581
 
575
582
  @validattrs[name]
@@ -594,6 +601,7 @@ class Type
594
601
  # @return [Boolean] Returns true if the given name is the name of an existing parameter
595
602
  def self.validparameter?(name)
596
603
  raise Puppet::DevError, _("Class %{class_name} has not defined parameters") % { class_name: self } unless defined?(@parameters)
604
+
597
605
  !!(@paramhash.include?(name) or @@metaparamhash.include?(name))
598
606
  end
599
607
 
@@ -614,7 +622,7 @@ class Type
614
622
  # @return [Boolean] true if a new parameter was added, false otherwise
615
623
  def add_property_parameter(prop_name)
616
624
  if self.class.validproperty?(prop_name) && !@parameters[prop_name]
617
- self.newattr(prop_name)
625
+ newattr(prop_name)
618
626
  return true
619
627
  end
620
628
  false
@@ -629,6 +637,7 @@ class Type
629
637
  #
630
638
  def name_var
631
639
  return @name_var_cache unless @name_var_cache.nil?
640
+
632
641
  key_attributes = self.class.key_attributes
633
642
  @name_var_cache = (key_attributes.length == 1) && key_attributes.first
634
643
  end
@@ -653,16 +662,16 @@ class Type
653
662
  # not the current value.
654
663
  obj.value
655
664
  else
656
- return nil
665
+ nil
657
666
  end
658
667
  end
659
668
 
660
669
  # Sets the 'should' (wanted state) value of a property, or the value of a parameter.
661
- # @return
670
+ #
662
671
  # @raise [Puppet::Error] if the setting of the value fails, or if the given name is nil.
663
672
  # @raise [Puppet::ResourceError] when the parameter validation raises Puppet::Error or
664
673
  # ArgumentError
665
- def []=(name,value)
674
+ def []=(name, value)
666
675
  name = name.intern
667
676
 
668
677
  fail("no parameter named '#{name}'") unless self.class.validattr?(name)
@@ -671,9 +680,9 @@ class Type
671
680
  nv = name_var
672
681
  name = nv if nv
673
682
  end
674
- raise Puppet::Error.new("Got nil value for #{name}") if value.nil?
683
+ raise Puppet::Error, "Got nil value for #{name}" if value.nil?
675
684
 
676
- property = self.newattr(name)
685
+ property = newattr(name)
677
686
 
678
687
  if property
679
688
  begin
@@ -686,8 +695,6 @@ class Type
686
695
  raise error
687
696
  end
688
697
  end
689
-
690
- nil
691
698
  end
692
699
 
693
700
  # Removes an attribute from the object; useful in testing or in cleanup
@@ -703,7 +710,7 @@ class Type
703
710
  if @parameters.has_key?(attr)
704
711
  @parameters.delete(attr)
705
712
  else
706
- raise Puppet::DevError.new(_("Undefined attribute '%{attribute}' in %{name}") % { attribute: attr, name: self})
713
+ raise Puppet::DevError, _("Undefined attribute '%{attribute}' in %{name}") % { attribute: attr, name: self }
707
714
  end
708
715
  end
709
716
 
@@ -721,7 +728,7 @@ class Type
721
728
  # included since they are a subclass of parameter.
722
729
  # @return [Array<Puppet::Parameter>] Array of parameter objects ( or subclass thereof )
723
730
  def parameters_with_value
724
- self.class.allattrs.collect { |attr| parameter(attr) }.compact
731
+ self.class.allattrs.filter_map { |attr| parameter(attr) }
725
732
  end
726
733
 
727
734
  # Iterates over all parameters with value currently set.
@@ -740,7 +747,7 @@ class Type
740
747
  # @param options [Hash] options merged with a fixed set of options defined by this method, passed on to {Puppet::Transaction::Event}.
741
748
  # @return [Puppet::Transaction::Event] the created event
742
749
  def event(options = {})
743
- Puppet::Transaction::Event.new(**{:resource => self, :file => file, :line => line, :tags => tags}.merge(options))
750
+ Puppet::Transaction::Event.new(**{ :resource => self, :file => file, :line => line, :tags => tags }.merge(options))
744
751
  end
745
752
 
746
753
  # @return [Object, nil] Returns the 'should' (wanted state) value for a specified property, or nil if the
@@ -778,8 +785,8 @@ class Type
778
785
  raise Puppet::Error, "Resource type #{self.class.name} does not support parameter #{name}"
779
786
  end
780
787
 
781
- if provider and ! provider.class.supports_parameter?(klass)
782
- missing = klass.required_features.find_all { |f| ! provider.class.feature?(f) }
788
+ if provider and !provider.class.supports_parameter?(klass)
789
+ missing = klass.required_features.find_all { |f| !provider.class.feature?(f) }
783
790
  debug "Provider %s does not support features %s; not managing attribute %s" % [provider.class.name, missing.join(", "), name]
784
791
  return nil
785
792
  end
@@ -852,7 +859,7 @@ class Type
852
859
  return unless parameter
853
860
 
854
861
  value = parameter.default
855
- if value and ! value.nil?
862
+ if value and !value.nil?
856
863
  parameter.value = value
857
864
  else
858
865
  @parameters.delete(parameter.name)
@@ -906,6 +913,7 @@ class Type
906
913
  # @return [???] the version of the catalog or 0 if there is no catalog.
907
914
  def version
908
915
  return 0 unless catalog
916
+
909
917
  catalog.version
910
918
  end
911
919
 
@@ -915,7 +923,7 @@ class Type
915
923
  # ruby file adding a new type with new properties?
916
924
  #
917
925
  def properties
918
- self.class.properties.collect { |prop| @parameters[prop.name] }.compact
926
+ self.class.properties.filter_map { |prop| @parameters[prop.name] }
919
927
  end
920
928
 
921
929
  # Returns true if the type's notion of name is the identity of a resource.
@@ -925,9 +933,9 @@ class Type
925
933
  # @return [Boolean] true, if this type's name is isomorphic with the object
926
934
  def self.isomorphic?
927
935
  if defined?(@isomorphic)
928
- return @isomorphic
936
+ @isomorphic
929
937
  else
930
- return true
938
+ true
931
939
  end
932
940
  end
933
941
 
@@ -947,19 +955,17 @@ class Type
947
955
  # Once an object is managed, it always stays managed; but an object
948
956
  # that is listed as unmanaged might become managed later in the process,
949
957
  # so we have to check that every time
950
- if @managed
951
- return @managed
952
- else
958
+ unless @managed
953
959
  @managed = false
954
960
  properties.each { |property|
955
961
  s = property.should
956
- if s and ! property.class.unmanaged
962
+ if s and !property.class.unmanaged
957
963
  @managed = true
958
964
  break
959
965
  end
960
966
  }
961
- return @managed
962
967
  end
968
+ @managed
963
969
  end
964
970
 
965
971
  ###############################
@@ -978,10 +984,10 @@ class Type
978
984
  # Removes this object (FROM WHERE?)
979
985
  # @todo removes if from where?
980
986
  # @return [void]
981
- def remove()
987
+ def remove
982
988
  # This is hackish (mmm, cut and paste), but it works for now, and it's
983
989
  # better than warnings.
984
- @parameters.each do |name, obj|
990
+ @parameters.each do |_name, obj|
985
991
  obj.remove
986
992
  end
987
993
  @parameters.clear
@@ -989,7 +995,7 @@ class Type
989
995
  @parent = nil
990
996
 
991
997
  # Remove the reference to the provider.
992
- if self.provider
998
+ if provider
993
999
  @provider.clear
994
1000
  @provider = nil
995
1001
  end
@@ -1029,48 +1035,7 @@ class Type
1029
1035
  #
1030
1036
  # @return [???, nil] WHAT DOES IT RETURN? GUESS IS VOID
1031
1037
  def flush
1032
- self.provider.flush if self.provider and self.provider.respond_to?(:flush)
1033
- end
1034
-
1035
- # Returns true if all contained objects are in sync.
1036
- # @todo "contained in what?" in the given "in" parameter?
1037
- #
1038
- # @todo deal with the comment _"FIXME I don't think this is used on the type instances any more,
1039
- # it's really only used for testing"_
1040
- # @return [Boolean] true if in sync, false otherwise.
1041
- #
1042
- def insync?(is)
1043
- insync = true
1044
-
1045
- property = @parameters[:ensure]
1046
- if property
1047
- unless is.include? property
1048
- #TRANSLATORS 'is' is a variable name and should not be translated
1049
- raise Puppet::DevError, _("The 'is' value is not in the 'is' array for '%{name}'") % { name: property.name }
1050
- end
1051
- ensureis = is[property]
1052
- if property.safe_insync?(ensureis) and property.should == :absent
1053
- return true
1054
- end
1055
- end
1056
-
1057
- properties.each { |prop|
1058
- unless is.include? prop
1059
- #TRANSLATORS 'is' is a variable name and should not be translated
1060
- raise Puppet::DevError, _("The 'is' value is not in the 'is' array for '%{name}'") % { name: prop.name }
1061
- end
1062
-
1063
- propis = is[prop]
1064
- unless prop.safe_insync?(propis)
1065
- prop.debug("Not in sync: #{propis.inspect} vs #{prop.should.inspect}")
1066
- insync = false
1067
- #else
1068
- # property.debug("In sync")
1069
- end
1070
- }
1071
-
1072
- #self.debug("#{self} sync status is #{insync}")
1073
- insync
1038
+ provider.flush if provider and provider.respond_to?(:flush)
1074
1039
  end
1075
1040
 
1076
1041
  # Says if the ensure property should be retrieved if the resource is ensurable
@@ -1086,7 +1051,7 @@ class Type
1086
1051
  # @return [Puppet::Resource] array of all property values (mix of types)
1087
1052
  # @raise [fail???] if there is a provider and it is not suitable for the host this is evaluated for.
1088
1053
  def retrieve
1089
- fail "Provider #{provider.class.name} is not functional on this host" if self.provider.is_a?(Puppet::Provider) and ! provider.class.suitable?
1054
+ fail "Provider #{provider.class.name} is not functional on this host" if provider.is_a?(Puppet::Provider) and !provider.class.suitable?
1090
1055
 
1091
1056
  result = Puppet::Resource.new(self.class, title)
1092
1057
 
@@ -1106,6 +1071,7 @@ class Type
1106
1071
 
1107
1072
  properties.each do |property|
1108
1073
  next if property.name == :ensure
1074
+
1109
1075
  if ensure_state == :absent
1110
1076
  result[property] = :absent
1111
1077
  else
@@ -1149,18 +1115,15 @@ class Type
1149
1115
  # is the first property, which is important for skipping 'retrieve' on
1150
1116
  # all the properties if the resource is absent.
1151
1117
  ensure_state = false
1152
- return properties.inject({}) do | prophash, property|
1118
+ properties.each_with_object({}) do |property, prophash|
1153
1119
  if property.name == :ensure
1154
1120
  ensure_state = property.retrieve
1155
1121
  prophash[property] = ensure_state
1122
+ elsif ensure_state == :absent
1123
+ prophash[property] = :absent
1156
1124
  else
1157
- if ensure_state == :absent
1158
- prophash[property] = :absent
1159
- else
1160
- prophash[property] = property.retrieve
1161
- end
1125
+ prophash[property] = property.retrieve
1162
1126
  end
1163
- prophash
1164
1127
  end
1165
1128
  end
1166
1129
 
@@ -1169,7 +1132,7 @@ class Type
1169
1132
  def noop?
1170
1133
  # If we're not a host_config, we're almost certainly part of
1171
1134
  # Settings, and we want to ignore 'noop'
1172
- return false if catalog and ! catalog.host_config?
1135
+ return false if catalog and !catalog.host_config?
1173
1136
 
1174
1137
  if defined?(@noop)
1175
1138
  @noop
@@ -1188,7 +1151,7 @@ class Type
1188
1151
  # Either requires providers or must be overridden.
1189
1152
  # @raise [Puppet::DevError] when there are no providers and the implementation has not overridden this method.
1190
1153
  def self.instances
1191
- raise Puppet::DevError, _("%{name} has no providers and has not overridden 'instances'") % { name: self.name } if provider_hash.empty?
1154
+ raise Puppet::DevError, _("%{name} has no providers and has not overridden 'instances'") % { name: name } if provider_hash.empty?
1192
1155
 
1193
1156
  # Put the default provider first, then the rest of the suitable providers.
1194
1157
  provider_instances = {}
@@ -1200,7 +1163,7 @@ class Type
1200
1163
  other = provider_instances[title]
1201
1164
  if other
1202
1165
  Puppet.debug {
1203
- "%s %s found in both %s and %s; skipping the %s version" % [self.name.to_s.capitalize, title, other.class.name, instance.class.name, instance.class.name]
1166
+ "%s %s found in both %s and %s; skipping the %s version" % [name.to_s.capitalize, title, other.class.name, instance.class.name, instance.class.name]
1204
1167
  }
1205
1168
  next
1206
1169
  end
@@ -1220,13 +1183,13 @@ class Type
1220
1183
  def self.providers_by_source
1221
1184
  # Put the default provider first (can be nil), then the rest of the suitable providers.
1222
1185
  sources = []
1223
- [defaultprovider, suitableprovider].flatten.uniq.collect do |provider|
1186
+ [defaultprovider, suitableprovider].flatten.uniq.filter_map do |provider|
1224
1187
  next if provider.nil?
1225
1188
  next if sources.include?(provider.source)
1226
1189
 
1227
1190
  sources << provider.source
1228
1191
  provider
1229
- end.compact
1192
+ end
1230
1193
  end
1231
1194
 
1232
1195
  # Converts a simple hash into a Resource instance.
@@ -1235,7 +1198,7 @@ class Type
1235
1198
  # @return [Puppet::Resource] the resource created from the hash
1236
1199
  # @raise [Puppet::Error] if a title is missing in the given hash
1237
1200
  def self.hash2resource(hash)
1238
- hash = hash.inject({}) { |result, ary| result[ary[0].to_sym] = ary[1]; result }
1201
+ hash = hash.each_with_object({}) { |ary, result| result[ary[0].to_sym] = ary[1]; }
1239
1202
 
1240
1203
  title = hash.delete(:title)
1241
1204
  title ||= hash[:name]
@@ -1258,7 +1221,6 @@ class Type
1258
1221
  resource
1259
1222
  end
1260
1223
 
1261
-
1262
1224
  # Returns an array of strings representing the containment hierarchy
1263
1225
  # (types/classes) that make up the path to the resource from the root
1264
1226
  # of the catalog. This is mostly used for logging purposes.
@@ -1267,9 +1229,9 @@ class Type
1267
1229
  def pathbuilder
1268
1230
  p = parent
1269
1231
  if p
1270
- [p.pathbuilder, self.ref].flatten
1232
+ [p.pathbuilder, ref].flatten
1271
1233
  else
1272
- [self.ref]
1234
+ [ref]
1273
1235
  end
1274
1236
  end
1275
1237
 
@@ -1347,10 +1309,11 @@ class Type
1347
1309
  and the second run will log the edit made by Puppet.)"
1348
1310
 
1349
1311
  validate do |list|
1350
- list = Array(list).collect {|p| p.to_sym}
1312
+ list = Array(list).collect(&:to_sym)
1351
1313
  unless list == [:all]
1352
1314
  list.each do |param|
1353
1315
  next if @resource.class.validattr?(param)
1316
+
1354
1317
  fail "Cannot audit #{param}: not a valid attribute for #{resource}"
1355
1318
  end
1356
1319
  end
@@ -1359,6 +1322,7 @@ class Type
1359
1322
  munge do |args|
1360
1323
  properties_to_audit(args).each do |param|
1361
1324
  next unless resource.class.validproperty?(param)
1325
+
1362
1326
  resource.newattr(param)
1363
1327
  end
1364
1328
  end
@@ -1366,16 +1330,14 @@ class Type
1366
1330
  def all_properties
1367
1331
  resource.class.properties.find_all do |property|
1368
1332
  resource.provider.nil? or resource.provider.class.supports_parameter?(property)
1369
- end.collect do |property|
1370
- property.name
1371
- end
1333
+ end.collect(&:name)
1372
1334
  end
1373
1335
 
1374
1336
  def properties_to_audit(list)
1375
- if !list.kind_of?(Array) && list.to_sym == :all
1337
+ if !list.is_a?(Array) && list.to_sym == :all
1376
1338
  all_properties
1377
1339
  else
1378
- Array(list).collect { |p| p.to_sym }
1340
+ Array(list).collect(&:to_sym)
1379
1341
  end
1380
1342
  end
1381
1343
  end
@@ -1411,11 +1373,11 @@ class Type
1411
1373
  end
1412
1374
 
1413
1375
  newmetaparam(:alias) do
1414
- desc %q{Creates an alias for the resource. Puppet uses this internally when you
1376
+ desc "Creates an alias for the resource. Puppet uses this internally when you
1415
1377
  provide a symbolic title and an explicit namevar value:
1416
1378
 
1417
1379
  file { 'sshdconfig':
1418
- path => $operatingsystem ? {
1380
+ path => $os['name'] ? {
1419
1381
  solaris => '/usr/local/etc/ssh/sshd_config',
1420
1382
  default => '/etc/ssh/sshd_config',
1421
1383
  },
@@ -1447,7 +1409,7 @@ class Type
1447
1409
  There's no way here for the Puppet parser to know that these two stanzas
1448
1410
  should be affecting the same file.
1449
1411
 
1450
- }
1412
+ "
1451
1413
 
1452
1414
  munge do |aliases|
1453
1415
  aliases = [aliases] unless aliases.is_a?(Array)
@@ -1457,7 +1419,7 @@ class Type
1457
1419
  aliases.each do |other|
1458
1420
  obj = @resource.catalog.resource(@resource.class.name, other)
1459
1421
  if obj
1460
- unless obj.object_id == @resource.object_id
1422
+ unless obj.equal?(@resource) # same object?
1461
1423
  self.fail("#{@resource.title} can not create alias #{other}: object already exists")
1462
1424
  end
1463
1425
  next
@@ -1530,11 +1492,11 @@ class Type
1530
1492
  # @return [void]
1531
1493
  def validate_relationship
1532
1494
  @value.each do |ref|
1533
- unless @resource.catalog.resource(ref.to_s)
1534
- description = self.class.direction == :in ? "dependency" : "dependent"
1535
- fail ResourceError, _("Could not find %{description} %{ref} for %{resource}") %
1536
- { description: description, ref: ref, resource: resource.ref }
1537
- end
1495
+ next if @resource.catalog.resource(ref.to_s)
1496
+
1497
+ description = self.class.direction == :in ? "dependency" : "dependent"
1498
+ fail ResourceError, _("Could not find %{description} %{ref} for %{resource}") %
1499
+ { description: description, ref: ref, resource: resource.ref }
1538
1500
  end
1539
1501
  end
1540
1502
 
@@ -1586,15 +1548,15 @@ class Type
1586
1548
 
1587
1549
  ## Corrected syntax of debug statement to reflect the way this was called.
1588
1550
  # i.e. before, after, subscribe, notify
1589
- self.debug do
1551
+ debug do
1590
1552
  relation = case self.class.name
1591
- when "subscribe"
1592
- "subscribes"
1593
- when "notify"
1594
- "notifies"
1595
- else
1596
- self.class.name
1597
- end
1553
+ when "subscribe"
1554
+ "subscribes"
1555
+ when "notify"
1556
+ "notifies"
1557
+ else
1558
+ self.class.name
1559
+ end
1598
1560
 
1599
1561
  "#{relation} to #{related_resource.ref}"
1600
1562
  end
@@ -1610,13 +1572,12 @@ class Type
1610
1572
  RelationshipMetaparam.subclasses
1611
1573
  end
1612
1574
 
1613
-
1614
1575
  # Note that the order in which the relationships params is defined
1615
1576
  # matters. The labeled params (notify and subscribe) must be later,
1616
1577
  # so that if both params are used, those ones win. It's a hackish
1617
1578
  # solution, but it works.
1618
1579
 
1619
- newmetaparam(:require, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :NONE}) do
1580
+ newmetaparam(:require, :parent => RelationshipMetaparam, :attributes => { :direction => :in, :events => :NONE }) do
1620
1581
  desc "One or more resources that this resource depends on, expressed as
1621
1582
  [resource references](https://puppet.com/docs/puppet/latest/lang_data_resource_reference.html).
1622
1583
  Multiple resources can be specified as an array of references. When this
@@ -1630,7 +1591,7 @@ class Type
1630
1591
  [the language page on relationships](https://puppet.com/docs/puppet/latest/lang_relationships.html)."
1631
1592
  end
1632
1593
 
1633
- newmetaparam(:subscribe, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :ALL_EVENTS, :callback => :refresh}) do
1594
+ newmetaparam(:subscribe, :parent => RelationshipMetaparam, :attributes => { :direction => :in, :events => :ALL_EVENTS, :callback => :refresh }) do
1634
1595
  desc "One or more resources that this resource depends on, expressed as
1635
1596
  [resource references](https://puppet.com/docs/puppet/latest/lang_data_resource_reference.html).
1636
1597
  Multiple resources can be specified as an array of references. When this
@@ -1648,7 +1609,7 @@ class Type
1648
1609
  [the language page on relationships](https://puppet.com/docs/puppet/latest/lang_relationships.html)."
1649
1610
  end
1650
1611
 
1651
- newmetaparam(:before, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :NONE}) do
1612
+ newmetaparam(:before, :parent => RelationshipMetaparam, :attributes => { :direction => :out, :events => :NONE }) do
1652
1613
  desc "One or more resources that depend on this resource, expressed as
1653
1614
  [resource references](https://puppet.com/docs/puppet/latest/lang_data_resource_reference.html).
1654
1615
  Multiple resources can be specified as an array of references. When this
@@ -1662,7 +1623,7 @@ class Type
1662
1623
  [the language page on relationships](https://puppet.com/docs/puppet/latest/lang_relationships.html)."
1663
1624
  end
1664
1625
 
1665
- newmetaparam(:notify, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :ALL_EVENTS, :callback => :refresh}) do
1626
+ newmetaparam(:notify, :parent => RelationshipMetaparam, :attributes => { :direction => :out, :events => :ALL_EVENTS, :callback => :refresh }) do
1666
1627
  desc "One or more resources that depend on this resource, expressed as
1667
1628
  [resource references](https://puppet.com/docs/puppet/latest/lang_data_resource_reference.html).
1668
1629
  Multiple resources can be specified as an array of references. When this
@@ -1748,16 +1709,16 @@ class Type
1748
1709
  suitable = suitableprovider
1749
1710
 
1750
1711
  # Find which providers are a default for this system.
1751
- defaults = suitable.find_all { |provider| provider.default? }
1712
+ defaults = suitable.find_all(&:default?)
1752
1713
 
1753
1714
  # If we don't have any default we use suitable providers
1754
1715
  defaults = suitable if defaults.empty?
1755
- max = defaults.collect { |provider| provider.specificity }.max
1716
+ max = defaults.collect(&:specificity).max
1756
1717
  defaults = defaults.find_all { |provider| provider.specificity == max }
1757
1718
 
1758
1719
  if defaults.length > 1
1759
1720
  Puppet.warning(_("Found multiple default providers for %{name}: %{provider_list}; using %{selected_provider}") %
1760
- { name: self.name, provider_list: defaults.collect { |i| i.name.to_s }.join(", "), selected_provider: defaults[0].name })
1721
+ { name: name, provider_list: defaults.collect { |i| i.name.to_s }.join(", "), selected_provider: defaults[0].name })
1761
1722
  end
1762
1723
 
1763
1724
  @defaultprovider = defaults.shift unless defaults.empty?
@@ -1773,7 +1734,7 @@ class Type
1773
1734
  # @return [Hash{ ??? => Puppet::Provider}] Returns a hash of WHAT EXACTLY for this type.
1774
1735
  # @see provider_hash_by_type method to get the same for some other type
1775
1736
  def self.provider_hash
1776
- Puppet::Type.provider_hash_by_type(self.name)
1737
+ Puppet::Type.provider_hash_by_type(name)
1777
1738
  end
1778
1739
 
1779
1740
  # Returns the provider having the given name.
@@ -1809,7 +1770,7 @@ class Type
1809
1770
  def self.validprovider?(name)
1810
1771
  name = name.intern
1811
1772
 
1812
- (provider_hash.has_key?(name) && provider_hash[name].suitable?)
1773
+ provider_hash.has_key?(name) && provider_hash[name].suitable?
1813
1774
  end
1814
1775
 
1815
1776
  # Creates a new provider of a type.
@@ -1835,37 +1796,31 @@ class Type
1835
1796
 
1836
1797
  pname = options[:parent]
1837
1798
  parent = if pname
1838
- options.delete(:parent)
1839
- if pname.is_a? Class
1840
- pname
1841
- else
1842
- provider = self.provider(pname)
1843
- if provider
1844
- provider
1845
- else
1846
- raise Puppet::DevError, _("Could not find parent provider %{parent} of %{name}") % { parent: pname, name: name }
1847
- end
1848
- end
1849
- else
1850
- Puppet::Provider
1851
- end
1799
+ options.delete(:parent)
1800
+ if pname.is_a? Class
1801
+ pname
1802
+ else
1803
+ provider = self.provider(pname)
1804
+ provider || raise(Puppet::DevError, _("Could not find parent provider %{parent} of %{name}") % { parent: pname, name: name })
1805
+ end
1806
+ else
1807
+ Puppet::Provider
1808
+ end
1852
1809
 
1853
1810
  options[:resource_type] ||= self
1854
1811
 
1855
- self.providify
1812
+ providify
1856
1813
 
1857
- provider = genclass(
1814
+ genclass(
1858
1815
  name,
1859
- :parent => parent,
1860
- :hash => provider_hash,
1861
- :prefix => "Provider",
1862
- :block => block,
1863
- :include => feature_module,
1864
- :extend => feature_module,
1816
+ :parent => parent,
1817
+ :hash => provider_hash,
1818
+ :prefix => "Provider",
1819
+ :block => block,
1820
+ :include => feature_module,
1821
+ :extend => feature_module,
1865
1822
  :attributes => options
1866
1823
  )
1867
-
1868
- provider
1869
1824
  end
1870
1825
 
1871
1826
  # Ensures there is a `:provider` parameter defined.
@@ -1880,7 +1835,7 @@ class Type
1880
1835
  # We expect that the class in which this code is executed will be something
1881
1836
  # like Puppet::Type::Ssh_authorized_key::ParameterProvider.
1882
1837
  desc <<-EOT
1883
- The specific backend to use for this `#{self.to_s.split('::')[2].downcase}`
1838
+ The specific backend to use for this `#{to_s.split('::')[2].downcase}`
1884
1839
  resource. You will seldom need to specify this --- Puppet will usually
1885
1840
  discover the appropriate provider for your platform.
1886
1841
  EOT
@@ -1901,7 +1856,7 @@ class Type
1901
1856
  # its indentation with scrub. But we don't need to manually scrub the
1902
1857
  # provider's doc string, since markdown_definitionlist sanitizes its inputs.
1903
1858
  scrub(@doc) + "Available providers are:\n\n" + parenttype.providers.sort_by(&:to_s).collect { |i|
1904
- markdown_definitionlist( i, scrub(parenttype().provider(i).doc) )
1859
+ markdown_definitionlist(i, scrub(parenttype().provider(i).doc))
1905
1860
  }.join
1906
1861
  end
1907
1862
 
@@ -1917,7 +1872,7 @@ class Type
1917
1872
  provider_class = provider_class.class.name if provider_class.is_a?(Puppet::Provider)
1918
1873
 
1919
1874
  unless @resource.class.provider(provider_class)
1920
- raise ArgumentError, _("Invalid %{resource} provider '%{provider_class}'") % { resource: @resource.class.name, provider_class: provider_class}
1875
+ raise ArgumentError, _("Invalid %{resource} provider '%{provider_class}'") % { resource: @resource.class.name, provider_class: provider_class }
1921
1876
  end
1922
1877
  end
1923
1878
 
@@ -1949,15 +1904,15 @@ class Type
1949
1904
 
1950
1905
  # Returns a list of suitable providers for the given type.
1951
1906
  # A call to this method will load all providers if not already loaded and ask each if it is
1952
- # suitable - those that are are included in the result.
1907
+ # suitable - those that are included in the result.
1953
1908
  # @note This method also does some special processing which rejects a provider named `:fake` (for testing purposes).
1954
1909
  # @return [Array<Puppet::Provider>] Returns an array of all suitable providers.
1955
1910
  #
1956
1911
  def self.suitableprovider
1957
1912
  providerloader.loadall(Puppet.lookup(:current_environment)) if provider_hash.empty?
1958
- provider_hash.find_all { |name, provider|
1913
+ provider_hash.find_all { |_name, provider|
1959
1914
  provider.suitable?
1960
- }.collect { |name, provider|
1915
+ }.collect { |_name, provider|
1961
1916
  provider
1962
1917
  }.reject { |p| p.name == :fake } # For testing
1963
1918
  end
@@ -2024,16 +1979,16 @@ class Type
2024
1979
  # requirement.
2025
1980
  #
2026
1981
  # @example Autorequire the files File['foo', 'bar']
2027
- # autorequire( 'file', {|| ['foo', 'bar'] })
1982
+ # autorequire( 'file', { ['foo', 'bar'] })
2028
1983
  #
2029
1984
  # @example Autobefore the files File['foo', 'bar']
2030
- # autobefore( 'file', {|| ['foo', 'bar'] })
1985
+ # autobefore( 'file', { ['foo', 'bar'] })
2031
1986
  #
2032
1987
  # @example Autosubscribe the files File['foo', 'bar']
2033
- # autosubscribe( 'file', {|| ['foo', 'bar'] })
1988
+ # autosubscribe( 'file', { ['foo', 'bar'] })
2034
1989
  #
2035
1990
  # @example Autonotify the files File['foo', 'bar']
2036
- # autonotify( 'file', {|| ['foo', 'bar'] })
1991
+ # autonotify( 'file', { ['foo', 'bar'] })
2037
1992
  #
2038
1993
  # @param name [String] the name of a type of which one or several resources should be autorelated e.g. "file"
2039
1994
  # @yield [ ] a block returning list of names of given type to auto require
@@ -2081,7 +2036,7 @@ class Type
2081
2036
  # @return [void]
2082
2037
  def self.eachautobefore
2083
2038
  @autobefores ||= {}
2084
- @autobefores.each { |type,block|
2039
+ @autobefores.each { |type, block|
2085
2040
  yield(type, block)
2086
2041
  }
2087
2042
  end
@@ -2093,7 +2048,7 @@ class Type
2093
2048
  # @return [void]
2094
2049
  def self.eachautosubscribe
2095
2050
  @autosubscribes ||= {}
2096
- @autosubscribes.each { |type,block|
2051
+ @autosubscribes.each { |type, block|
2097
2052
  yield(type, block)
2098
2053
  }
2099
2054
  end
@@ -2105,7 +2060,7 @@ class Type
2105
2060
  # @return [void]
2106
2061
  def self.eachautonotify
2107
2062
  @autonotifies ||= {}
2108
- @autonotifies.each { |type,block|
2063
+ @autonotifies.each { |type, block|
2109
2064
  yield(type, block)
2110
2065
  }
2111
2066
  end
@@ -2131,8 +2086,9 @@ class Type
2131
2086
  next unless Puppet::Type.type(type)
2132
2087
 
2133
2088
  # Retrieve the list of names from the block.
2134
- list = self.instance_eval(&block)
2089
+ list = instance_eval(&block)
2135
2090
  next unless list
2091
+
2136
2092
  list = [list] unless list.is_a?(Array)
2137
2093
 
2138
2094
  # Collect the current prereqs
@@ -2180,7 +2136,7 @@ class Type
2180
2136
  self.class.relationship_params.collect do |klass|
2181
2137
  param = @parameters[klass.name]
2182
2138
  param.to_edges if param
2183
- end.flatten.reject { |r| r.nil? }
2139
+ end.flatten.compact
2184
2140
  end
2185
2141
 
2186
2142
  # Sets the initial list of tags to associate to this resource.
@@ -2231,6 +2187,7 @@ class Type
2231
2187
  # @return [Boolean] true if the type should send itself a refresh event on change.
2232
2188
  #
2233
2189
  attr_accessor :self_refresh
2190
+
2234
2191
  include Enumerable, Puppet::Util::ClassGen
2235
2192
 
2236
2193
  include Puppet::Util
@@ -2254,7 +2211,7 @@ class Type
2254
2211
  @parameters = []
2255
2212
  @paramhash = {}
2256
2213
 
2257
- @paramdoc = Hash.new { |hash,key|
2214
+ @paramdoc = Hash.new { |hash, key|
2258
2215
  key = key.intern if key.is_a?(String)
2259
2216
  if hash.include?(key)
2260
2217
  hash[key]
@@ -2262,9 +2219,9 @@ class Type
2262
2219
  "Param Documentation for #{key} not found"
2263
2220
  end
2264
2221
  }
2265
-
2222
+ # rubocop:disable Naming/MemoizedInstanceVariableName
2266
2223
  @doc ||= ""
2267
-
2224
+ # rubocop:enable Naming/MemoizedInstanceVariableName
2268
2225
  end
2269
2226
 
2270
2227
  # Returns the name of this type (if specified) or the parent type #to_s.
@@ -2322,9 +2279,7 @@ class Type
2322
2279
  # @return [void]
2323
2280
  #
2324
2281
  def log(msg)
2325
-
2326
2282
  Puppet::Util::Log.create(
2327
-
2328
2283
  :level => @parameters[:loglevel].value,
2329
2284
  :message => msg,
2330
2285
 
@@ -2332,7 +2287,6 @@ class Type
2332
2287
  )
2333
2288
  end
2334
2289
 
2335
-
2336
2290
  # instance methods related to instance intrinsics
2337
2291
  # e.g., initialize and name
2338
2292
 
@@ -2375,7 +2329,7 @@ class Type
2375
2329
  [:file, :line, :catalog, :exported, :virtual].each do |getter|
2376
2330
  setter = getter.to_s + "="
2377
2331
  val = resource.send(getter)
2378
- self.send(setter, val) if val
2332
+ send(setter, val) if val
2379
2333
  end
2380
2334
 
2381
2335
  merge_tags_from(resource)
@@ -2401,13 +2355,11 @@ class Type
2401
2355
  #
2402
2356
  # @return [void]
2403
2357
  def validate_resource
2404
- begin
2405
- self.validate if self.respond_to?(:validate)
2406
- rescue Puppet::Error, ArgumentError => detail
2407
- error = Puppet::ResourceError.new("Validation of #{ref} failed: #{detail}")
2408
- adderrorcontext(error, detail)
2409
- raise error
2410
- end
2358
+ validate if respond_to?(:validate)
2359
+ rescue Puppet::Error, ArgumentError => detail
2360
+ error = Puppet::ResourceError.new("Validation of #{ref} failed: #{detail}")
2361
+ adderrorcontext(error, detail)
2362
+ raise error
2411
2363
  end
2412
2364
 
2413
2365
  protected
@@ -2449,8 +2401,9 @@ class Type
2449
2401
  end
2450
2402
  end
2451
2403
 
2452
- parameters.each do |name, param|
2404
+ parameters.each do |_name, param|
2453
2405
  next if param.sensitive
2406
+
2454
2407
  if param.is_a?(Puppet::Parameter)
2455
2408
  param.sensitive = param.is_sensitive if param.respond_to?(:is_sensitive)
2456
2409
  end
@@ -2491,22 +2444,20 @@ class Type
2491
2444
  # on invalid attributes.
2492
2445
  no_values = []
2493
2446
  (self.class.allattrs + hash.keys).uniq.each do |attr|
2494
- begin
2495
- # Set any defaults immediately. This is mostly done so
2496
- # that the default provider is available for any other
2497
- # property validation.
2498
- if hash.has_key?(attr)
2499
- self[attr] = hash[attr]
2500
- else
2501
- no_values << attr
2502
- end
2503
- rescue ArgumentError, Puppet::Error, TypeError
2504
- raise
2505
- rescue => detail
2506
- error = Puppet::DevError.new(_("Could not set %{attribute} on %{class_name}: %{detail}") % { attribute: attr, class_name: self.class.name, detail: detail })
2507
- error.set_backtrace(detail.backtrace)
2508
- raise error
2447
+ # Set any defaults immediately. This is mostly done so
2448
+ # that the default provider is available for any other
2449
+ # property validation.
2450
+ if hash.has_key?(attr)
2451
+ self[attr] = hash[attr]
2452
+ else
2453
+ no_values << attr
2509
2454
  end
2455
+ rescue ArgumentError, Puppet::Error, TypeError
2456
+ raise
2457
+ rescue => detail
2458
+ error = Puppet::DevError.new(_("Could not set %{attribute} on %{class_name}: %{detail}") % { attribute: attr, class_name: self.class.name, detail: detail })
2459
+ error.set_backtrace(detail.backtrace)
2460
+ raise error
2510
2461
  end
2511
2462
  no_values.each do |attr|
2512
2463
  set_default(attr)
@@ -2536,7 +2487,7 @@ class Type
2536
2487
  self.class.relationship_params.collect do |klass|
2537
2488
  param = @parameters[klass.name]
2538
2489
  param.validate_relationship if param
2539
- end.flatten.reject { |r| r.nil? }
2490
+ end.flatten.compact
2540
2491
  end
2541
2492
 
2542
2493
  # @comment For now, leave the 'name' method functioning like it used to. Once 'title'
@@ -2558,12 +2509,13 @@ class Type
2558
2509
  def parent
2559
2510
  return nil unless catalog
2560
2511
  return @parent if @parent
2512
+
2561
2513
  parents = catalog.adjacent(self, :direction => :in)
2562
2514
  @parent = if parents
2563
- parents.shift
2564
- else
2565
- nil
2566
- end
2515
+ parents.shift
2516
+ else
2517
+ nil
2518
+ end
2567
2519
  end
2568
2520
 
2569
2521
  # Returns a reference to this as a string in "Type[name]" format.
@@ -2572,7 +2524,7 @@ class Type
2572
2524
  def ref
2573
2525
  # memoizing this is worthwhile ~ 3 percent of calls are the "first time
2574
2526
  # around" in an average run of Puppet. --daniel 2012-07-17
2575
- @ref ||= "#{self.class.name.to_s.capitalize}[#{self.title}]"
2527
+ @ref ||= "#{self.class.name.to_s.capitalize}[#{title}]"
2576
2528
  end
2577
2529
 
2578
2530
  # (see self_refresh)
@@ -2618,9 +2570,9 @@ class Type
2618
2570
  if self.class.validparameter?(name_var)
2619
2571
  @title = self[:name]
2620
2572
  elsif self.class.validproperty?(name_var)
2621
- @title = self.should(name_var)
2573
+ @title = should(name_var)
2622
2574
  else
2623
- self.devfail "Could not find namevar #{name_var} for #{self.class.name}"
2575
+ devfail "Could not find namevar #{name_var} for #{self.class.name}"
2624
2576
  end
2625
2577
  end
2626
2578
 
@@ -2631,22 +2583,23 @@ class Type
2631
2583
  # @see #ref
2632
2584
  #
2633
2585
  def to_s
2634
- self.ref
2586
+ ref
2635
2587
  end
2636
2588
 
2637
2589
  # Convert this resource type instance to a Puppet::Resource.
2638
2590
  # @return [Puppet::Resource] Returns a serializable representation of this resource
2639
2591
  #
2640
2592
  def to_resource
2641
- resource = self.retrieve_resource
2593
+ resource = retrieve_resource
2642
2594
  resource.merge_tags_from(self)
2643
2595
 
2644
2596
  @parameters.each do |name, param|
2645
2597
  # Avoid adding each instance name twice
2646
- next if param.class.isnamevar? and param.value == self.title
2598
+ next if param.class.isnamevar? and param.value == title
2647
2599
 
2648
2600
  # We've already got property values
2649
2601
  next if param.is_a?(Puppet::Property)
2602
+
2650
2603
  resource[name] = param.value
2651
2604
  end
2652
2605