puppet 5.0.0 → 6.0.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 (1440) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.md +52 -42
  3. data/Gemfile +48 -81
  4. data/Gemfile.lock +156 -0
  5. data/MAINTAINERS +0 -19
  6. data/README.md +19 -17
  7. data/Rakefile +47 -36
  8. data/conf/auth.conf +7 -2
  9. data/conf/environment.conf +1 -1
  10. data/conf/fileserver.conf +1 -1
  11. data/conf/puppet.conf +4 -4
  12. data/ext/README.environment +1 -1
  13. data/ext/build_defaults.yaml +0 -2
  14. data/ext/cert_inspector +2 -2
  15. data/ext/debian/copyright +2 -24
  16. data/ext/debian/puppetmaster.README.debian +2 -2
  17. data/ext/envpuppet +1 -1
  18. data/ext/gentoo/init.d/puppetmaster +4 -4
  19. data/ext/hiera/hiera.yaml +1 -1
  20. data/ext/ips/puppet-agent +11 -11
  21. data/ext/ips/puppet-master +11 -11
  22. data/ext/project_data.yaml +9 -8
  23. data/ext/puppet-test +5 -5
  24. data/ext/redhat/client.init +2 -2
  25. data/ext/redhat/logrotate +1 -1
  26. data/ext/redhat/puppet.spec.erb +0 -4
  27. data/ext/regexp_nodes/regexp_nodes.rb +15 -16
  28. data/ext/solaris/smf/puppet +11 -11
  29. data/ext/solaris/smf/svc-puppetd +5 -5
  30. data/ext/solaris/smf/svc-puppetmasterd +5 -5
  31. data/ext/upload_facts.rb +2 -2
  32. data/ext/windows/service/daemon.rb +1 -1
  33. data/install.rb +2 -3
  34. data/lib/hiera/puppet_function.rb +5 -2
  35. data/lib/hiera/scope.rb +24 -2
  36. data/lib/hiera_puppet.rb +3 -3
  37. data/lib/puppet/agent/locker.rb +6 -5
  38. data/lib/puppet/agent.rb +24 -3
  39. data/lib/puppet/application/agent.rb +19 -14
  40. data/lib/puppet/application/apply.rb +30 -17
  41. data/lib/puppet/application/cert.rb +30 -174
  42. data/lib/puppet/application/config.rb +1 -0
  43. data/lib/puppet/application/describe.rb +6 -3
  44. data/lib/puppet/application/device.rb +165 -60
  45. data/lib/puppet/application/doc.rb +10 -4
  46. data/lib/puppet/application/face_base.rb +1 -1
  47. data/lib/puppet/application/facts.rb +5 -0
  48. data/lib/puppet/application/filebucket.rb +60 -18
  49. data/lib/puppet/application/help.rb +1 -0
  50. data/lib/puppet/application/lookup.rb +23 -11
  51. data/lib/puppet/application/resource.rb +8 -4
  52. data/lib/puppet/application/script.rb +261 -0
  53. data/lib/puppet/application/ssl.rb +133 -0
  54. data/lib/puppet/application.rb +42 -11
  55. data/lib/puppet/application_support.rb +7 -3
  56. data/lib/puppet/configurer/downloader.rb +1 -1
  57. data/lib/puppet/configurer/fact_handler.rb +5 -1
  58. data/lib/puppet/configurer/plugin_handler.rb +32 -9
  59. data/lib/puppet/configurer.rb +114 -76
  60. data/lib/puppet/confine.rb +4 -1
  61. data/lib/puppet/context.rb +1 -1
  62. data/lib/puppet/daemon.rb +3 -3
  63. data/lib/puppet/datatypes/error.rb +21 -0
  64. data/lib/puppet/datatypes/impl/error.rb +40 -0
  65. data/lib/puppet/datatypes.rb +213 -0
  66. data/lib/puppet/defaults.rb +279 -209
  67. data/lib/puppet/environments.rb +24 -11
  68. data/lib/puppet/error.rb +35 -18
  69. data/lib/puppet/etc.rb +6 -7
  70. data/lib/puppet/external/dot.rb +23 -24
  71. data/lib/puppet/external/pson/common.rb +2 -2
  72. data/lib/puppet/external/pson/pure/generator.rb +1 -1
  73. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  74. data/lib/puppet/face/catalog.rb +2 -2
  75. data/lib/puppet/face/config.rb +157 -11
  76. data/lib/puppet/face/epp.rb +66 -37
  77. data/lib/puppet/face/facts.rb +49 -0
  78. data/lib/puppet/face/help/action.erb +4 -1
  79. data/lib/puppet/face/help/face.erb +1 -1
  80. data/lib/puppet/face/help/global.erb +2 -2
  81. data/lib/puppet/face/help/man.erb +1 -1
  82. data/lib/puppet/face/help.rb +78 -64
  83. data/lib/puppet/face/man.rb +56 -12
  84. data/lib/puppet/face/module/build.rb +5 -54
  85. data/lib/puppet/face/module/generate.rb +6 -243
  86. data/lib/puppet/face/module/install.rb +1 -4
  87. data/lib/puppet/face/module/list.rb +6 -22
  88. data/lib/puppet/face/module/search.rb +7 -3
  89. data/lib/puppet/face/module/uninstall.rb +15 -7
  90. data/lib/puppet/face/module/upgrade.rb +1 -4
  91. data/lib/puppet/face/node/clean.rb +14 -10
  92. data/lib/puppet/face/node.rb +1 -0
  93. data/lib/puppet/face/parser.rb +30 -4
  94. data/lib/puppet/face/plugin.rb +1 -3
  95. data/lib/puppet/face/status.rb +3 -2
  96. data/lib/puppet/feature/base.rb +8 -27
  97. data/lib/puppet/feature/bolt.rb +3 -0
  98. data/lib/puppet/feature/eventlog.rb +1 -1
  99. data/lib/puppet/file_bucket/dipper.rb +1 -2
  100. data/lib/puppet/file_bucket/file.rb +0 -2
  101. data/lib/puppet/file_serving/base.rb +18 -17
  102. data/lib/puppet/file_serving/configuration/parser.rb +25 -9
  103. data/lib/puppet/file_serving/configuration.rb +6 -0
  104. data/lib/puppet/file_serving/fileset.rb +1 -1
  105. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  106. data/lib/puppet/file_serving/metadata.rb +4 -3
  107. data/lib/puppet/file_serving/mount/locales.rb +35 -0
  108. data/lib/puppet/file_serving/mount/tasks.rb +21 -0
  109. data/lib/puppet/file_system/uniquefile.rb +2 -2
  110. data/lib/puppet/forge/errors.rb +27 -25
  111. data/lib/puppet/forge/repository.rb +1 -1
  112. data/lib/puppet/forge.rb +22 -9
  113. data/lib/puppet/functions/abs.rb +61 -0
  114. data/lib/puppet/functions/alert.rb +1 -1
  115. data/lib/puppet/functions/all.rb +104 -0
  116. data/lib/puppet/functions/annotate.rb +11 -11
  117. data/lib/puppet/functions/any.rb +109 -0
  118. data/lib/puppet/functions/assert_type.rb +7 -7
  119. data/lib/puppet/functions/binary_file.rb +15 -2
  120. data/lib/puppet/functions/break.rb +34 -9
  121. data/lib/puppet/functions/call.rb +41 -4
  122. data/lib/puppet/functions/camelcase.rb +62 -0
  123. data/lib/puppet/functions/capitalize.rb +61 -0
  124. data/lib/puppet/functions/ceiling.rb +37 -0
  125. data/lib/puppet/functions/chomp.rb +57 -0
  126. data/lib/puppet/functions/chop.rb +67 -0
  127. data/lib/puppet/functions/compare.rb +125 -0
  128. data/lib/puppet/functions/contain.rb +25 -3
  129. data/lib/puppet/functions/convert_to.rb +34 -0
  130. data/lib/puppet/functions/crit.rb +1 -1
  131. data/lib/puppet/functions/debug.rb +1 -1
  132. data/lib/puppet/functions/defined.rb +14 -15
  133. data/lib/puppet/functions/dig.rb +47 -3
  134. data/lib/puppet/functions/downcase.rb +89 -0
  135. data/lib/puppet/functions/each.rb +30 -20
  136. data/lib/puppet/functions/emerg.rb +1 -1
  137. data/lib/puppet/functions/empty.rb +77 -0
  138. data/lib/puppet/functions/epp.rb +3 -0
  139. data/lib/puppet/functions/err.rb +1 -1
  140. data/lib/puppet/functions/eyaml_lookup_key.rb +11 -8
  141. data/lib/puppet/functions/filter.rb +30 -23
  142. data/lib/puppet/functions/find_file.rb +15 -2
  143. data/lib/puppet/functions/flatten.rb +64 -0
  144. data/lib/puppet/functions/floor.rb +37 -0
  145. data/lib/puppet/functions/get.rb +150 -0
  146. data/lib/puppet/functions/getvar.rb +87 -0
  147. data/lib/puppet/functions/hiera.rb +11 -11
  148. data/lib/puppet/functions/hiera_array.rb +11 -11
  149. data/lib/puppet/functions/hiera_hash.rb +12 -12
  150. data/lib/puppet/functions/hiera_include.rb +15 -15
  151. data/lib/puppet/functions/hocon_data.rb +1 -1
  152. data/lib/puppet/functions/include.rb +34 -2
  153. data/lib/puppet/functions/info.rb +1 -1
  154. data/lib/puppet/functions/inline_epp.rb +2 -2
  155. data/lib/puppet/functions/join.rb +56 -0
  156. data/lib/puppet/functions/json_data.rb +3 -3
  157. data/lib/puppet/functions/keys.rb +25 -0
  158. data/lib/puppet/functions/length.rb +44 -0
  159. data/lib/puppet/functions/lest.rb +39 -1
  160. data/lib/puppet/functions/lookup.rb +7 -5
  161. data/lib/puppet/functions/lstrip.rb +58 -0
  162. data/lib/puppet/functions/map.rb +34 -20
  163. data/lib/puppet/functions/match.rb +17 -6
  164. data/lib/puppet/functions/max.rb +183 -0
  165. data/lib/puppet/functions/min.rb +182 -0
  166. data/lib/puppet/functions/module_directory.rb +41 -0
  167. data/lib/puppet/functions/new.rb +982 -7
  168. data/lib/puppet/functions/next.rb +2 -9
  169. data/lib/puppet/functions/notice.rb +1 -1
  170. data/lib/puppet/functions/reduce.rb +36 -5
  171. data/lib/puppet/functions/regsubst.rb +10 -4
  172. data/lib/puppet/functions/require.rb +42 -2
  173. data/lib/puppet/functions/return.rb +2 -9
  174. data/lib/puppet/functions/reverse_each.rb +71 -2
  175. data/lib/puppet/functions/round.rb +24 -0
  176. data/lib/puppet/functions/rstrip.rb +58 -0
  177. data/lib/puppet/functions/size.rb +15 -0
  178. data/lib/puppet/functions/slice.rb +25 -12
  179. data/lib/puppet/functions/sort.rb +74 -0
  180. data/lib/puppet/functions/split.rb +12 -10
  181. data/lib/puppet/functions/step.rb +73 -1
  182. data/lib/puppet/functions/strftime.rb +178 -10
  183. data/lib/puppet/functions/strip.rb +58 -0
  184. data/lib/puppet/functions/then.rb +65 -2
  185. data/lib/puppet/functions/tree_each.rb +200 -0
  186. data/lib/puppet/functions/type.rb +42 -1
  187. data/lib/puppet/functions/unique.rb +13 -13
  188. data/lib/puppet/functions/unwrap.rb +8 -4
  189. data/lib/puppet/functions/upcase.rb +89 -0
  190. data/lib/puppet/functions/values.rb +25 -0
  191. data/lib/puppet/functions/versioncmp.rb +1 -1
  192. data/lib/puppet/functions/warning.rb +1 -1
  193. data/lib/puppet/functions/with.rb +9 -7
  194. data/lib/puppet/functions/yaml_data.rb +8 -7
  195. data/lib/puppet/functions.rb +212 -95
  196. data/lib/puppet/generate/models/type/property.rb +1 -1
  197. data/lib/puppet/generate/type.rb +1 -1
  198. data/lib/puppet/gettext/config.rb +275 -0
  199. data/lib/puppet/gettext/module_translations.rb +42 -0
  200. data/lib/puppet/gettext/stubs.rb +11 -0
  201. data/lib/puppet/graph/relationship_graph.rb +7 -1
  202. data/lib/puppet/graph/simple_graph.rb +12 -8
  203. data/lib/puppet/graph.rb +0 -2
  204. data/lib/puppet/indirector/catalog/compiler.rb +48 -16
  205. data/lib/puppet/indirector/catalog/json.rb +14 -3
  206. data/lib/puppet/indirector/catalog/yaml.rb +0 -16
  207. data/lib/puppet/indirector/certificate/file.rb +0 -1
  208. data/lib/puppet/indirector/exec.rb +1 -1
  209. data/lib/puppet/indirector/facts/facter.rb +4 -6
  210. data/lib/puppet/indirector/facts/network_device.rb +2 -2
  211. data/lib/puppet/indirector/facts/rest.rb +21 -0
  212. data/lib/puppet/indirector/facts/yaml.rb +4 -6
  213. data/lib/puppet/indirector/file_bucket_file/file.rb +11 -4
  214. data/lib/puppet/indirector/file_content/http.rb +3 -1
  215. data/lib/puppet/indirector/file_server.rb +1 -1
  216. data/lib/puppet/indirector/indirection.rb +28 -24
  217. data/lib/puppet/indirector/key/file.rb +1 -6
  218. data/lib/puppet/indirector/node/exec.rb +2 -4
  219. data/lib/puppet/indirector/node/yaml.rb +0 -6
  220. data/lib/puppet/indirector/request.rb +19 -15
  221. data/lib/puppet/indirector/rest.rb +21 -68
  222. data/lib/puppet/indirector/ssl_file.rb +5 -46
  223. data/lib/puppet/indirector/terminus.rb +4 -4
  224. data/lib/puppet/indirector/yaml.rb +4 -4
  225. data/lib/puppet/info_service/class_information_service.rb +1 -1
  226. data/lib/puppet/info_service/task_information_service.rb +36 -0
  227. data/lib/puppet/info_service.rb +10 -0
  228. data/lib/puppet/interface/action.rb +54 -29
  229. data/lib/puppet/interface/action_builder.rb +22 -5
  230. data/lib/puppet/interface/action_manager.rb +1 -1
  231. data/lib/puppet/interface/documentation.rb +21 -10
  232. data/lib/puppet/interface/face_collection.rb +7 -3
  233. data/lib/puppet/interface/option.rb +36 -15
  234. data/lib/puppet/interface/option_builder.rb +23 -9
  235. data/lib/puppet/interface/option_manager.rb +9 -4
  236. data/lib/puppet/interface.rb +3 -2
  237. data/lib/puppet/loaders.rb +3 -0
  238. data/lib/puppet/metatype/manager.rb +9 -7
  239. data/lib/puppet/module/task.rb +267 -0
  240. data/lib/puppet/module.rb +70 -14
  241. data/lib/puppet/module_tool/applications/application.rb +5 -5
  242. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  243. data/lib/puppet/module_tool/applications/installer.rb +9 -7
  244. data/lib/puppet/module_tool/applications/uninstaller.rb +4 -2
  245. data/lib/puppet/module_tool/applications/unpacker.rb +4 -4
  246. data/lib/puppet/module_tool/applications/upgrader.rb +8 -6
  247. data/lib/puppet/module_tool/applications.rb +0 -1
  248. data/lib/puppet/module_tool/dependency.rb +1 -1
  249. data/lib/puppet/module_tool/errors/installer.rb +18 -20
  250. data/lib/puppet/module_tool/errors/shared.rb +20 -15
  251. data/lib/puppet/module_tool/errors/uninstaller.rb +1 -0
  252. data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
  253. data/lib/puppet/module_tool/installed_modules.rb +3 -3
  254. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  255. data/lib/puppet/module_tool/metadata.rb +3 -5
  256. data/lib/puppet/module_tool/shared_behaviors.rb +2 -2
  257. data/lib/puppet/module_tool/tar/mini.rb +57 -4
  258. data/lib/puppet/module_tool.rb +2 -5
  259. data/lib/puppet/network/auth_config_parser.rb +18 -13
  260. data/lib/puppet/network/authconfig.rb +1 -14
  261. data/lib/puppet/network/authstore.rb +3 -3
  262. data/lib/puppet/network/client_request.rb +1 -1
  263. data/lib/puppet/network/format.rb +3 -3
  264. data/lib/puppet/network/format_support.rb +14 -9
  265. data/lib/puppet/network/formats.rb +98 -9
  266. data/lib/puppet/network/http/api/indirected_routes.rb +11 -3
  267. data/lib/puppet/network/http/api/indirection_type.rb +1 -1
  268. data/lib/puppet/network/http/api/master/v3/environment.rb +7 -4
  269. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
  270. data/lib/puppet/network/http/api.rb +1 -10
  271. data/lib/puppet/network/http/compression.rb +1 -1
  272. data/lib/puppet/network/http/connection.rb +105 -25
  273. data/lib/puppet/network/http/error.rb +10 -10
  274. data/lib/puppet/network/http/factory.rb +8 -0
  275. data/lib/puppet/network/http/handler.rb +59 -27
  276. data/lib/puppet/network/http.rb +0 -2
  277. data/lib/puppet/network/resolver.rb +139 -67
  278. data/lib/puppet/network/rights.rb +1 -1
  279. data/lib/puppet/node/environment.rb +23 -20
  280. data/lib/puppet/node/facts.rb +20 -1
  281. data/lib/puppet/node.rb +80 -8
  282. data/lib/puppet/parameter/boolean.rb +1 -1
  283. data/lib/puppet/parameter/value_collection.rb +9 -9
  284. data/lib/puppet/parameter.rb +15 -10
  285. data/lib/puppet/parser/abstract_compiler.rb +36 -0
  286. data/lib/puppet/parser/ast/branch.rb +4 -4
  287. data/lib/puppet/parser/ast/leaf.rb +7 -2
  288. data/lib/puppet/parser/ast/node.rb +2 -2
  289. data/lib/puppet/parser/ast/pops_bridge.rb +26 -52
  290. data/lib/puppet/parser/ast.rb +4 -8
  291. data/lib/puppet/parser/catalog_compiler.rb +32 -0
  292. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
  293. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +9 -2
  294. data/lib/puppet/parser/compiler.rb +29 -61
  295. data/lib/puppet/parser/functions/assert_type.rb +4 -4
  296. data/lib/puppet/parser/functions/binary_file.rb +1 -1
  297. data/lib/puppet/parser/functions/break.rb +1 -1
  298. data/lib/puppet/parser/functions/create_resources.rb +7 -7
  299. data/lib/puppet/parser/functions/defined.rb +1 -1
  300. data/lib/puppet/parser/functions/dig.rb +12 -3
  301. data/lib/puppet/parser/functions/each.rb +3 -3
  302. data/lib/puppet/parser/functions/epp.rb +4 -1
  303. data/lib/puppet/parser/functions/filter.rb +3 -3
  304. data/lib/puppet/parser/functions/find_file.rb +1 -1
  305. data/lib/puppet/parser/functions/fqdn_rand.rb +16 -1
  306. data/lib/puppet/parser/functions/generate.rb +3 -5
  307. data/lib/puppet/parser/functions/hiera.rb +4 -4
  308. data/lib/puppet/parser/functions/hiera_array.rb +5 -5
  309. data/lib/puppet/parser/functions/hiera_hash.rb +6 -6
  310. data/lib/puppet/parser/functions/hiera_include.rb +10 -11
  311. data/lib/puppet/parser/functions/inline_epp.rb +1 -1
  312. data/lib/puppet/parser/functions/inline_template.rb +8 -3
  313. data/lib/puppet/parser/functions/lest.rb +2 -2
  314. data/lib/puppet/parser/functions/lookup.rb +1 -1
  315. data/lib/puppet/parser/functions/map.rb +2 -2
  316. data/lib/puppet/parser/functions/match.rb +1 -1
  317. data/lib/puppet/parser/functions/new.rb +106 -54
  318. data/lib/puppet/parser/functions/next.rb +1 -1
  319. data/lib/puppet/parser/functions/realize.rb +6 -0
  320. data/lib/puppet/parser/functions/reduce.rb +33 -2
  321. data/lib/puppet/parser/functions/return.rb +23 -2
  322. data/lib/puppet/parser/functions/reverse_each.rb +3 -3
  323. data/lib/puppet/parser/functions/scanf.rb +1 -1
  324. data/lib/puppet/parser/functions/sha256.rb +5 -0
  325. data/lib/puppet/parser/functions/slice.rb +1 -1
  326. data/lib/puppet/parser/functions/sprintf.rb +28 -3
  327. data/lib/puppet/parser/functions/step.rb +2 -2
  328. data/lib/puppet/parser/functions/strftime.rb +1 -1
  329. data/lib/puppet/parser/functions/tag.rb +6 -0
  330. data/lib/puppet/parser/functions/tagged.rb +6 -3
  331. data/lib/puppet/parser/functions/template.rb +11 -2
  332. data/lib/puppet/parser/functions/then.rb +2 -2
  333. data/lib/puppet/parser/functions/type.rb +1 -1
  334. data/lib/puppet/parser/functions/with.rb +5 -5
  335. data/lib/puppet/parser/functions.rb +40 -7
  336. data/lib/puppet/parser/parser_factory.rb +1 -1
  337. data/lib/puppet/parser/relationship.rb +2 -2
  338. data/lib/puppet/parser/resource/param.rb +12 -5
  339. data/lib/puppet/parser/resource.rb +39 -12
  340. data/lib/puppet/parser/scope.rb +55 -24
  341. data/lib/puppet/parser/script_compiler.rb +123 -0
  342. data/lib/puppet/parser/templatewrapper.rb +4 -3
  343. data/lib/puppet/parser/type_loader.rb +12 -12
  344. data/lib/puppet/parser.rb +1 -0
  345. data/lib/puppet/pops/adapters.rb +14 -0
  346. data/lib/puppet/pops/evaluator/access_operator.rb +49 -8
  347. data/lib/puppet/pops/evaluator/closure.rb +12 -4
  348. data/lib/puppet/pops/evaluator/collector_transformer.rb +4 -3
  349. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  350. data/lib/puppet/pops/evaluator/compare_operator.rb +7 -5
  351. data/lib/puppet/pops/evaluator/deferred_resolver.rb +127 -0
  352. data/lib/puppet/pops/evaluator/epp_evaluator.rb +36 -10
  353. data/lib/puppet/pops/evaluator/evaluator_impl.rb +61 -17
  354. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  355. data/lib/puppet/pops/evaluator/literal_evaluator.rb +1 -1
  356. data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -1
  357. data/lib/puppet/pops/evaluator/runtime3_converter.rb +29 -8
  358. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +4 -4
  359. data/lib/puppet/pops/evaluator/runtime3_support.rb +17 -20
  360. data/lib/puppet/pops/functions/dispatch.rb +13 -6
  361. data/lib/puppet/pops/functions/function.rb +10 -4
  362. data/lib/puppet/pops/issue_reporter.rb +25 -3
  363. data/lib/puppet/pops/issues.rb +82 -15
  364. data/lib/puppet/pops/label_provider.rb +1 -1
  365. data/lib/puppet/pops/loader/base_loader.rb +10 -0
  366. data/lib/puppet/pops/loader/dependency_loader.rb +7 -0
  367. data/lib/puppet/pops/loader/loader.rb +22 -3
  368. data/lib/puppet/pops/loader/loader_paths.rb +183 -31
  369. data/lib/puppet/pops/loader/module_loaders.rb +239 -41
  370. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +84 -0
  371. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +10 -10
  372. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +39 -0
  373. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
  374. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +54 -0
  375. data/lib/puppet/pops/loader/runtime3_type_loader.rb +6 -1
  376. data/lib/puppet/pops/loader/static_loader.rb +23 -45
  377. data/lib/puppet/pops/loader/task_instantiator.rb +97 -0
  378. data/lib/puppet/pops/loader/type_definition_instantiator.rb +8 -1
  379. data/lib/puppet/pops/loaders.rb +158 -45
  380. data/lib/puppet/pops/lookup/context.rb +1 -1
  381. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
  382. data/lib/puppet/pops/lookup/explainer.rb +2 -1
  383. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  384. data/lib/puppet/pops/lookup/hiera_config.rb +4 -4
  385. data/lib/puppet/pops/lookup/interpolation.rb +1 -1
  386. data/lib/puppet/pops/lookup/lookup_adapter.rb +61 -12
  387. data/lib/puppet/pops/merge_strategy.rb +7 -4
  388. data/lib/puppet/pops/migration/migration_checker.rb +8 -8
  389. data/lib/puppet/pops/model/ast.pp +19 -0
  390. data/lib/puppet/pops/model/ast.rb +567 -436
  391. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  392. data/lib/puppet/pops/model/factory.rb +232 -147
  393. data/lib/puppet/pops/model/model_label_provider.rb +9 -1
  394. data/lib/puppet/pops/model/model_tree_dumper.rb +17 -2
  395. data/lib/puppet/pops/model/pn_transformer.rb +400 -0
  396. data/lib/puppet/pops/model/tree_dumper.rb +1 -1
  397. data/lib/puppet/pops/parser/code_merger.rb +2 -2
  398. data/lib/puppet/pops/parser/egrammar.ra +85 -24
  399. data/lib/puppet/pops/parser/eparser.rb +1791 -1578
  400. data/lib/puppet/pops/parser/epp_parser.rb +1 -1
  401. data/lib/puppet/pops/parser/epp_support.rb +7 -5
  402. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  403. data/lib/puppet/pops/parser/heredoc_support.rb +2 -2
  404. data/lib/puppet/pops/parser/interpolation_support.rb +2 -2
  405. data/lib/puppet/pops/parser/lexer2.rb +5 -5
  406. data/lib/puppet/pops/parser/lexer_support.rb +5 -4
  407. data/lib/puppet/pops/parser/locatable.rb +1 -1
  408. data/lib/puppet/pops/parser/locator.rb +7 -15
  409. data/lib/puppet/pops/parser/parser_support.rb +3 -3
  410. data/lib/puppet/pops/parser/pn_parser.rb +316 -0
  411. data/lib/puppet/pops/parser/slurp_support.rb +0 -3
  412. data/lib/puppet/pops/patterns.rb +2 -1
  413. data/lib/puppet/pops/pcore.rb +67 -12
  414. data/lib/puppet/pops/pn.rb +236 -0
  415. data/lib/puppet/pops/puppet_stack.rb +15 -1
  416. data/lib/puppet/pops/resource/param.rb +2 -2
  417. data/lib/puppet/pops/resource/resource_type_impl.rb +4 -4
  418. data/lib/puppet/pops/serialization/abstract_reader.rb +4 -0
  419. data/lib/puppet/pops/serialization/abstract_writer.rb +8 -1
  420. data/lib/puppet/pops/serialization/extension.rb +1 -0
  421. data/lib/puppet/pops/serialization/from_data_converter.rb +69 -26
  422. data/lib/puppet/pops/serialization/json.rb +7 -7
  423. data/lib/puppet/pops/serialization/json_path.rb +3 -2
  424. data/lib/puppet/pops/serialization/object.rb +3 -4
  425. data/lib/puppet/pops/serialization/serializer.rb +2 -1
  426. data/lib/puppet/pops/serialization/to_data_converter.rb +27 -14
  427. data/lib/puppet/pops/serialization/to_stringified_converter.rb +226 -0
  428. data/lib/puppet/pops/serialization.rb +3 -2
  429. data/lib/puppet/pops/time/timespan.rb +1 -1
  430. data/lib/puppet/pops/time/timestamp.rb +31 -19
  431. data/lib/puppet/pops/types/annotatable.rb +2 -2
  432. data/lib/puppet/pops/types/annotation.rb +8 -8
  433. data/lib/puppet/pops/types/class_loader.rb +9 -6
  434. data/lib/puppet/pops/types/implementation_registry.rb +29 -36
  435. data/lib/puppet/pops/types/iterable.rb +42 -11
  436. data/lib/puppet/pops/types/p_binary_type.rb +12 -6
  437. data/lib/puppet/pops/types/p_init_type.rb +238 -0
  438. data/lib/puppet/pops/types/p_meta_type.rb +18 -11
  439. data/lib/puppet/pops/types/p_object_type.rb +240 -48
  440. data/lib/puppet/pops/types/p_object_type_extension.rb +218 -0
  441. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +5 -6
  442. data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -4
  443. data/lib/puppet/pops/types/p_sensitive_type.rb +2 -2
  444. data/lib/puppet/pops/types/p_timespan_type.rb +9 -9
  445. data/lib/puppet/pops/types/p_timestamp_type.rb +7 -3
  446. data/lib/puppet/pops/types/p_type_set_type.rb +33 -10
  447. data/lib/puppet/pops/types/p_uri_type.rb +190 -0
  448. data/lib/puppet/pops/types/puppet_object.rb +16 -2
  449. data/lib/puppet/pops/types/ruby_generator.rb +111 -78
  450. data/lib/puppet/pops/types/ruby_method.rb +2 -2
  451. data/lib/puppet/pops/types/string_converter.rb +38 -14
  452. data/lib/puppet/pops/types/tree_iterators.rb +254 -0
  453. data/lib/puppet/pops/types/type_acceptor.rb +1 -1
  454. data/lib/puppet/pops/types/type_calculator.rb +31 -20
  455. data/lib/puppet/pops/types/type_factory.rb +82 -17
  456. data/lib/puppet/pops/types/type_formatter.rb +77 -9
  457. data/lib/puppet/pops/types/type_mismatch_describer.rb +106 -137
  458. data/lib/puppet/pops/types/type_parser.rb +130 -24
  459. data/lib/puppet/pops/types/type_set_reference.rb +2 -2
  460. data/lib/puppet/pops/types/type_with_members.rb +43 -0
  461. data/lib/puppet/pops/types/types.rb +456 -219
  462. data/lib/puppet/pops/utils.rb +2 -2
  463. data/lib/puppet/pops/validation/checker4_0.rb +145 -8
  464. data/lib/puppet/pops/validation/tasks_checker.rb +101 -0
  465. data/lib/puppet/pops/validation/validator_factory_4_0.rb +13 -8
  466. data/lib/puppet/pops/validation.rb +14 -12
  467. data/lib/puppet/pops.rb +2 -1
  468. data/lib/puppet/property/ensure.rb +2 -2
  469. data/lib/puppet/property/keyvalue.rb +70 -8
  470. data/lib/puppet/property.rb +15 -7
  471. data/lib/puppet/provider/aix_object.rb +483 -0
  472. data/lib/puppet/provider/exec.rb +0 -2
  473. data/lib/puppet/provider/file/windows.rb +1 -1
  474. data/lib/puppet/provider/group/aix.rb +51 -110
  475. data/lib/puppet/provider/group/groupadd.rb +27 -1
  476. data/lib/puppet/provider/group/windows_adsi.rb +4 -7
  477. data/lib/puppet/provider/ldap.rb +2 -2
  478. data/lib/puppet/provider/nameservice/directoryservice.rb +7 -6
  479. data/lib/puppet/provider/nameservice/objectadd.rb +13 -24
  480. data/lib/puppet/provider/nameservice/pw.rb +14 -14
  481. data/lib/puppet/provider/nameservice.rb +20 -10
  482. data/lib/puppet/provider/package/aix.rb +5 -5
  483. data/lib/puppet/provider/package/appdmg.rb +0 -1
  484. data/lib/puppet/provider/package/apple.rb +0 -1
  485. data/lib/puppet/provider/package/dnf.rb +2 -1
  486. data/lib/puppet/provider/package/gem.rb +13 -12
  487. data/lib/puppet/provider/package/macports.rb +2 -2
  488. data/lib/puppet/provider/package/nim.rb +7 -8
  489. data/lib/puppet/provider/package/opkg.rb +1 -1
  490. data/lib/puppet/provider/package/pacman.rb +4 -4
  491. data/lib/puppet/provider/package/pip.rb +15 -6
  492. data/lib/puppet/provider/package/pkg.rb +12 -6
  493. data/lib/puppet/provider/package/pkgdmg.rb +3 -4
  494. data/lib/puppet/provider/package/pkgutil.rb +5 -5
  495. data/lib/puppet/provider/package/portage.rb +9 -10
  496. data/lib/puppet/provider/package/puppet_gem.rb +1 -1
  497. data/lib/puppet/provider/package/rpm.rb +1 -1
  498. data/lib/puppet/provider/package/windows/package.rb +1 -1
  499. data/lib/puppet/provider/package/yum.rb +34 -10
  500. data/lib/puppet/provider/package/zypper.rb +5 -5
  501. data/lib/puppet/provider/parsedfile.rb +4 -4
  502. data/lib/puppet/provider/service/base.rb +23 -10
  503. data/lib/puppet/provider/service/debian.rb +1 -0
  504. data/lib/puppet/provider/service/init.rb +2 -1
  505. data/lib/puppet/provider/service/launchd.rb +7 -8
  506. data/lib/puppet/provider/service/redhat.rb +3 -2
  507. data/lib/puppet/provider/service/runit.rb +2 -1
  508. data/lib/puppet/provider/service/smf.rb +5 -3
  509. data/lib/puppet/provider/service/systemd.rb +6 -3
  510. data/lib/puppet/provider/service/upstart.rb +11 -1
  511. data/lib/puppet/provider/service/windows.rb +37 -40
  512. data/lib/puppet/provider/user/aix.rb +143 -247
  513. data/lib/puppet/provider/user/openbsd.rb +3 -2
  514. data/lib/puppet/provider/user/pw.rb +1 -1
  515. data/lib/puppet/provider/user/user_role_add.rb +7 -1
  516. data/lib/puppet/provider/user/useradd.rb +40 -6
  517. data/lib/puppet/provider/user/windows_adsi.rb +1 -1
  518. data/lib/puppet/provider.rb +34 -13
  519. data/lib/puppet/reference/configuration.rb +12 -2
  520. data/lib/puppet/reference/providers.rb +1 -1
  521. data/lib/puppet/reference/report.rb +1 -1
  522. data/lib/puppet/reference/type.rb +11 -12
  523. data/lib/puppet/relationship.rb +2 -1
  524. data/lib/puppet/reports/http.rb +4 -2
  525. data/lib/puppet/reports/store.rb +1 -1
  526. data/lib/puppet/reports.rb +2 -2
  527. data/lib/puppet/resource/capability_finder.rb +49 -27
  528. data/lib/puppet/resource/catalog.rb +42 -34
  529. data/lib/puppet/resource/status.rb +11 -3
  530. data/lib/puppet/resource/type.rb +16 -12
  531. data/lib/puppet/resource/type_collection.rb +2 -2
  532. data/lib/puppet/resource.rb +30 -12
  533. data/lib/puppet/rest/client.rb +83 -0
  534. data/lib/puppet/rest/errors.rb +14 -0
  535. data/lib/puppet/rest/response.rb +34 -0
  536. data/lib/puppet/rest/route.rb +84 -0
  537. data/lib/puppet/rest/routes.rb +154 -0
  538. data/lib/puppet/rest/ssl_context.rb +13 -0
  539. data/lib/puppet/settings/base_setting.rb +29 -9
  540. data/lib/puppet/settings/certificate_revocation_setting.rb +21 -0
  541. data/lib/puppet/settings/config_file.rb +16 -7
  542. data/lib/puppet/settings/environment_conf.rb +29 -11
  543. data/lib/puppet/settings/file_setting.rb +1 -1
  544. data/lib/puppet/settings/ini_file.rb +66 -12
  545. data/lib/puppet/settings/ttl_setting.rb +5 -0
  546. data/lib/puppet/settings.rb +68 -38
  547. data/lib/puppet/ssl/base.rb +10 -13
  548. data/lib/puppet/ssl/certificate.rb +6 -2
  549. data/lib/puppet/ssl/certificate_request.rb +19 -21
  550. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  551. data/lib/puppet/ssl/certificate_signer.rb +11 -0
  552. data/lib/puppet/ssl/host.rb +413 -174
  553. data/lib/puppet/ssl/key.rb +1 -5
  554. data/lib/puppet/ssl/oids.rb +10 -4
  555. data/lib/puppet/ssl/validator/default_validator.rb +33 -19
  556. data/lib/puppet/ssl.rb +0 -1
  557. data/lib/puppet/syntax_checkers/base64.rb +6 -7
  558. data/lib/puppet/syntax_checkers/json.rb +1 -1
  559. data/lib/puppet/test/test_helper.rb +2 -3
  560. data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
  561. data/lib/puppet/transaction/event.rb +38 -15
  562. data/lib/puppet/transaction/event_manager.rb +3 -1
  563. data/lib/puppet/transaction/persistence.rb +17 -2
  564. data/lib/puppet/transaction/report.rb +33 -16
  565. data/lib/puppet/transaction.rb +43 -16
  566. data/lib/puppet/type/exec.rb +23 -20
  567. data/lib/puppet/type/file/checksum.rb +7 -1
  568. data/lib/puppet/type/file/checksum_value.rb +4 -3
  569. data/lib/puppet/type/file/content.rb +17 -5
  570. data/lib/puppet/type/file/data_sync.rb +2 -1
  571. data/lib/puppet/type/file/ensure.rb +1 -1
  572. data/lib/puppet/type/file/mode.rb +1 -1
  573. data/lib/puppet/type/file/source.rb +21 -8
  574. data/lib/puppet/type/file.rb +36 -25
  575. data/lib/puppet/type/group.rb +7 -6
  576. data/lib/puppet/type/notify.rb +1 -1
  577. data/lib/puppet/type/package.rb +5 -8
  578. data/lib/puppet/type/resources.rb +1 -1
  579. data/lib/puppet/type/schedule.rb +73 -112
  580. data/lib/puppet/type/service.rb +3 -6
  581. data/lib/puppet/type/stage.rb +1 -1
  582. data/lib/puppet/type/tidy.rb +21 -8
  583. data/lib/puppet/type/user.rb +98 -50
  584. data/lib/puppet/type.rb +76 -67
  585. data/lib/puppet/util/at_fork/solaris.rb +6 -4
  586. data/lib/puppet/util/autoload.rb +62 -54
  587. data/lib/puppet/util/backups.rb +1 -1
  588. data/lib/puppet/util/character_encoding.rb +2 -24
  589. data/lib/puppet/util/checksums.rb +82 -3
  590. data/lib/puppet/util/classgen.rb +0 -6
  591. data/lib/puppet/util/command_line/trollop.rb +6 -5
  592. data/lib/puppet/util/command_line.rb +5 -1
  593. data/lib/puppet/util/connection.rb +74 -0
  594. data/lib/puppet/util/errors.rb +59 -8
  595. data/lib/puppet/util/execution.rb +70 -17
  596. data/lib/puppet/util/feature.rb +63 -41
  597. data/lib/puppet/util/fileparsing.rb +30 -10
  598. data/lib/puppet/util/filetype.rb +2 -2
  599. data/lib/puppet/util/http_proxy.rb +18 -8
  600. data/lib/puppet/util/inifile.rb +3 -4
  601. data/lib/puppet/util/instance_loader.rb +4 -24
  602. data/lib/puppet/util/json.rb +69 -0
  603. data/lib/puppet/util/json_lockfile.rb +3 -3
  604. data/lib/puppet/util/ldap/connection.rb +7 -7
  605. data/lib/puppet/util/ldap/manager.rb +6 -3
  606. data/lib/puppet/util/log/destinations.rb +13 -4
  607. data/lib/puppet/util/log.rb +30 -33
  608. data/lib/puppet/util/logging.rb +26 -29
  609. data/lib/puppet/util/monkey_patches.rb +1 -1
  610. data/lib/puppet/util/network_device/base.rb +1 -1
  611. data/lib/puppet/util/network_device/config.rb +22 -15
  612. data/lib/puppet/util/platform.rb +16 -0
  613. data/lib/puppet/util/plist.rb +7 -5
  614. data/lib/puppet/util/posix.rb +1 -1
  615. data/lib/puppet/util/provider_features.rb +3 -6
  616. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +3 -3
  617. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  618. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
  619. data/lib/puppet/util/rdoc.rb +1 -1
  620. data/lib/puppet/util/reference.rb +8 -15
  621. data/lib/puppet/util/rubygems.rb +1 -13
  622. data/lib/puppet/util/run_mode.rb +1 -1
  623. data/lib/puppet/util/selinux.rb +1 -1
  624. data/lib/puppet/util/ssl.rb +40 -1
  625. data/lib/puppet/util/storage.rb +3 -3
  626. data/lib/puppet/util/suidmanager.rb +8 -5
  627. data/lib/puppet/util/tag_set.rb +1 -1
  628. data/lib/puppet/util/tagging.rb +18 -5
  629. data/lib/puppet/util/warnings.rb +0 -2
  630. data/lib/puppet/util/windows/adsi.rb +160 -214
  631. data/lib/puppet/util/windows/api_types.rb +9 -5
  632. data/lib/puppet/util/windows/com.rb +2 -1
  633. data/lib/puppet/util/windows/eventlog.rb +10 -5
  634. data/lib/puppet/util/windows/file.rb +113 -12
  635. data/lib/puppet/util/windows/principal.rb +7 -6
  636. data/lib/puppet/util/windows/process.rb +10 -2
  637. data/lib/puppet/util/windows/registry.rb +2 -2
  638. data/lib/puppet/util/windows/security.rb +26 -14
  639. data/lib/puppet/util/windows/service.rb +770 -0
  640. data/lib/puppet/util/windows/sid.rb +60 -9
  641. data/lib/puppet/util/windows.rb +19 -2
  642. data/lib/puppet/util/yaml.rb +41 -5
  643. data/lib/puppet/util.rb +50 -50
  644. data/lib/puppet/vendor/deep_merge/README.md +2 -2
  645. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +18 -18
  646. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +1 -1
  647. data/lib/puppet/version.rb +1 -1
  648. data/lib/puppet.rb +12 -68
  649. data/lib/puppet_pal.rb +1102 -0
  650. data/locales/en/puppet.po +19 -0
  651. data/locales/ja/puppet.po +11128 -0
  652. data/locales/puppet.pot +3723 -2251
  653. data/man/man5/puppet.conf.5 +342 -187
  654. data/man/man8/puppet-agent.8 +36 -10
  655. data/man/man8/puppet-apply.8 +21 -6
  656. data/man/man8/puppet-catalog.8 +12 -15
  657. data/man/man8/puppet-config.8 +40 -6
  658. data/man/man8/puppet-describe.8 +3 -3
  659. data/man/man8/puppet-device.8 +48 -14
  660. data/man/man8/puppet-doc.8 +5 -5
  661. data/man/man8/puppet-epp.8 +49 -21
  662. data/man/man8/puppet-facts.8 +58 -9
  663. data/man/man8/puppet-filebucket.8 +76 -10
  664. data/man/man8/puppet-generate.8 +84 -0
  665. data/man/man8/puppet-help.8 +4 -4
  666. data/man/man8/puppet-key.8 +11 -17
  667. data/man/man8/puppet-lookup.8 +104 -0
  668. data/man/man8/puppet-man.8 +13 -7
  669. data/man/man8/puppet-module.8 +29 -98
  670. data/man/man8/puppet-node.8 +12 -15
  671. data/man/man8/puppet-parser.8 +34 -11
  672. data/man/man8/puppet-plugin.8 +4 -4
  673. data/man/man8/puppet-report.8 +9 -9
  674. data/man/man8/puppet-resource.8 +4 -8
  675. data/man/man8/puppet-script.8 +67 -0
  676. data/man/man8/puppet-ssl.8 +28 -0
  677. data/man/man8/puppet-status.8 +9 -9
  678. data/man/man8/puppet.8 +21 -3
  679. data/spec/fixtures/unit/application/environments/production/data/common.yaml +2 -0
  680. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +22 -0
  681. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +18 -0
  682. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +7 -0
  683. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
  684. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -6
  685. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +1 -0
  686. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +1 -0
  687. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -1
  688. data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +36 -0
  689. data/spec/fixtures/unit/provider/package/yum/yum-check-update-simple.txt +1 -0
  690. data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +3 -0
  691. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +32 -0
  692. data/spec/integration/agent/logging_spec.rb +4 -2
  693. data/spec/integration/application/apply_spec.rb +33 -26
  694. data/spec/integration/application/lookup_spec.rb +21 -0
  695. data/spec/integration/configurer_spec.rb +2 -5
  696. data/spec/integration/data_binding_spec.rb +1 -0
  697. data/spec/integration/defaults_spec.rb +5 -10
  698. data/spec/integration/faces/config_spec.rb +16 -4
  699. data/spec/integration/faces/plugin_spec.rb +3 -0
  700. data/spec/integration/file_bucket/file_spec.rb +20 -22
  701. data/spec/integration/file_system/uniquefile_spec.rb +26 -29
  702. data/spec/integration/indirector/facts/facter_spec.rb +4 -14
  703. data/spec/integration/indirector/file_content/file_server_spec.rb +17 -0
  704. data/spec/integration/indirector/file_metadata/file_server_spec.rb +10 -0
  705. data/spec/integration/network/authconfig_spec.rb +2 -2
  706. data/spec/integration/network/http/api/indirected_routes_spec.rb +9 -38
  707. data/spec/integration/node/environment_spec.rb +1 -1
  708. data/spec/integration/node_spec.rb +0 -4
  709. data/spec/integration/parser/catalog_spec.rb +10 -6
  710. data/spec/integration/parser/collection_spec.rb +42 -3
  711. data/spec/integration/parser/compiler_spec.rb +43 -24
  712. data/spec/integration/parser/pcore_resource_spec.rb +3 -3
  713. data/spec/integration/parser/scope_spec.rb +18 -5
  714. data/spec/integration/parser/script_compiler_spec.rb +113 -0
  715. data/spec/integration/provider/service/init_spec.rb +4 -2
  716. data/spec/integration/provider/service/systemd_spec.rb +8 -4
  717. data/spec/integration/provider/service/windows_spec.rb +5 -3
  718. data/spec/integration/reference/providers_spec.rb +6 -0
  719. data/spec/integration/ssl/certificate_request_spec.rb +0 -2
  720. data/spec/integration/ssl/host_spec.rb +16 -24
  721. data/spec/integration/ssl/key_spec.rb +3 -3
  722. data/spec/integration/test/test_helper_spec.rb +32 -32
  723. data/spec/integration/transaction/report_spec.rb +11 -6
  724. data/spec/integration/type/exec_spec.rb +1 -1
  725. data/spec/integration/type/file_spec.rb +72 -18
  726. data/spec/integration/type/package_spec.rb +1 -1
  727. data/spec/integration/type_spec.rb +1 -2
  728. data/spec/integration/util/autoload_spec.rb +9 -6
  729. data/spec/integration/util/execution_spec.rb +13 -5
  730. data/spec/integration/util/rdoc/parser_spec.rb +13 -23
  731. data/spec/integration/util/settings_spec.rb +2 -1
  732. data/spec/integration/util/windows/adsi_spec.rb +89 -4
  733. data/spec/integration/util/windows/principal_spec.rb +12 -3
  734. data/spec/integration/util/windows/process_spec.rb +48 -3
  735. data/spec/integration/util/windows/registry_spec.rb +1 -1
  736. data/spec/integration/util/windows/security_spec.rb +98 -8
  737. data/spec/integration/util/windows/user_spec.rb +1 -1
  738. data/spec/integration/util_spec.rb +3 -3
  739. data/spec/lib/matchers/json.rb +27 -32
  740. data/{lib/puppet/ssl → spec/lib/puppet}/certificate_factory.rb +5 -6
  741. data/spec/lib/puppet/test_ca.rb +109 -0
  742. data/spec/lib/puppet_spec/compiler.rb +27 -0
  743. data/spec/lib/puppet_spec/files.rb +28 -23
  744. data/spec/lib/puppet_spec/language.rb +34 -35
  745. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  746. data/spec/lib/puppet_spec/modules.rb +20 -0
  747. data/spec/lib/puppet_spec/ssl.rb +265 -0
  748. data/spec/lib/puppet_spec/validators.rb +37 -0
  749. data/spec/shared_behaviours/file_server_terminus.rb +0 -2
  750. data/spec/shared_behaviours/file_serving_model.rb +0 -19
  751. data/spec/shared_behaviours/path_parameters.rb +1 -1
  752. data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
  753. data/spec/shared_contexts/checksum.rb +4 -1
  754. data/spec/shared_contexts/digests.rb +46 -1
  755. data/spec/shared_contexts/types_setup.rb +66 -7
  756. data/spec/shared_examples/rhel_package_provider.rb +2 -2
  757. data/spec/spec_helper.rb +7 -14
  758. data/spec/unit/agent_spec.rb +48 -4
  759. data/spec/unit/application/agent_spec.rb +5 -20
  760. data/spec/unit/application/apply_spec.rb +4 -12
  761. data/spec/unit/application/config_spec.rb +4 -0
  762. data/spec/unit/application/device_spec.rb +141 -10
  763. data/spec/unit/application/face_base_spec.rb +2 -2
  764. data/spec/unit/application/filebucket_spec.rb +18 -4
  765. data/spec/unit/application/lookup_spec.rb +46 -9
  766. data/spec/unit/application/ssl_spec.rb +322 -0
  767. data/spec/unit/application_spec.rb +46 -4
  768. data/spec/unit/capability_spec.rb +11 -9
  769. data/spec/unit/{ssl/certificate_factory_spec.rb → certificate_factory_spec.rb} +9 -18
  770. data/spec/unit/configurer/downloader_spec.rb +6 -1
  771. data/spec/unit/configurer/plugin_handler_spec.rb +46 -18
  772. data/spec/unit/configurer_spec.rb +90 -33
  773. data/spec/unit/confine_spec.rb +16 -0
  774. data/spec/unit/context/trusted_information_spec.rb +3 -2
  775. data/spec/unit/daemon_spec.rb +3 -2
  776. data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
  777. data/spec/unit/datatypes_spec.rb +353 -0
  778. data/spec/unit/defaults_spec.rb +108 -6
  779. data/spec/unit/environments_spec.rb +62 -0
  780. data/spec/unit/etc_spec.rb +1 -1
  781. data/spec/unit/face/config_spec.rb +185 -21
  782. data/spec/unit/face/epp_face_spec.rb +70 -6
  783. data/spec/unit/face/facts_spec.rb +53 -0
  784. data/spec/unit/face/help_spec.rb +64 -70
  785. data/spec/unit/face/man_spec.rb +26 -0
  786. data/spec/unit/face/module/list_spec.rb +0 -61
  787. data/spec/unit/face/module/search_spec.rb +12 -1
  788. data/spec/unit/face/node_spec.rb +9 -32
  789. data/spec/unit/face/parser_spec.rb +80 -2
  790. data/spec/unit/face/plugin_spec.rb +50 -4
  791. data/spec/unit/file_bucket/dipper_spec.rb +29 -13
  792. data/spec/unit/file_serving/base_spec.rb +6 -9
  793. data/spec/unit/file_serving/configuration/parser_spec.rb +2 -2
  794. data/spec/unit/file_serving/configuration_spec.rb +14 -4
  795. data/spec/unit/file_serving/content_spec.rb +0 -1
  796. data/spec/unit/file_serving/fileset_spec.rb +0 -1
  797. data/spec/unit/file_serving/metadata_spec.rb +4 -5
  798. data/spec/unit/file_serving/mount/locales_spec.rb +73 -0
  799. data/spec/unit/file_serving/mount/modules_spec.rb +1 -1
  800. data/spec/unit/file_serving/mount/tasks_spec.rb +72 -0
  801. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
  802. data/spec/unit/file_system/path_pattern_spec.rb +1 -1
  803. data/spec/unit/file_system/uniquefile_spec.rb +2 -2
  804. data/spec/unit/file_system_spec.rb +7 -4
  805. data/spec/unit/forge/forge_spec.rb +2 -2
  806. data/spec/unit/forge/module_release_spec.rb +70 -0
  807. data/spec/unit/forge_spec.rb +106 -2
  808. data/spec/unit/functions/abs_spec.rb +70 -0
  809. data/spec/unit/functions/all_spec.rb +97 -0
  810. data/spec/unit/functions/any_spec.rb +109 -0
  811. data/spec/unit/functions/assert_type_spec.rb +1 -1
  812. data/spec/unit/functions/break_spec.rb +144 -54
  813. data/spec/unit/functions/call_spec.rb +59 -5
  814. data/spec/unit/functions/camelcase_spec.rb +34 -0
  815. data/spec/unit/functions/capitalize_spec.rb +34 -0
  816. data/spec/unit/functions/ceiling_spec.rb +65 -0
  817. data/spec/unit/functions/chomp_spec.rb +46 -0
  818. data/spec/unit/functions/chop_spec.rb +38 -0
  819. data/spec/unit/functions/compare_spec.rb +147 -0
  820. data/spec/unit/functions/contain_spec.rb +1 -0
  821. data/spec/unit/functions/convert_to_spec.rb +25 -0
  822. data/spec/unit/functions/defined_spec.rb +2 -2
  823. data/spec/unit/functions/downcase_spec.rb +34 -0
  824. data/spec/unit/functions/empty_spec.rb +77 -0
  825. data/spec/unit/functions/epp_spec.rb +21 -3
  826. data/spec/unit/functions/filter_spec.rb +4 -4
  827. data/spec/unit/functions/flatten_spec.rb +31 -0
  828. data/spec/unit/functions/floor_spec.rb +65 -0
  829. data/spec/unit/functions/get_spec.rb +135 -0
  830. data/spec/unit/functions/getvar_spec.rb +121 -0
  831. data/spec/unit/functions/hiera_spec.rb +19 -49
  832. data/spec/unit/functions/include_spec.rb +16 -1
  833. data/spec/unit/functions/inline_epp_spec.rb +1 -1
  834. data/spec/unit/functions/join_spec.rb +33 -0
  835. data/spec/unit/functions/keys_spec.rb +31 -0
  836. data/spec/unit/functions/length_spec.rb +50 -0
  837. data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
  838. data/spec/unit/functions/lookup_spec.rb +198 -80
  839. data/spec/unit/functions/lstrip_spec.rb +30 -0
  840. data/spec/unit/functions/match_spec.rb +21 -4
  841. data/spec/unit/functions/max_spec.rb +129 -0
  842. data/spec/unit/functions/min_spec.rb +129 -0
  843. data/spec/unit/functions/module_directory_spec.rb +43 -0
  844. data/spec/unit/functions/new_spec.rb +81 -14
  845. data/spec/unit/functions/next_spec.rb +1 -1
  846. data/spec/unit/functions/regsubst_spec.rb +4 -5
  847. data/spec/unit/functions/require_spec.rb +2 -0
  848. data/spec/unit/functions/return_spec.rb +2 -2
  849. data/spec/unit/functions/round_spec.rb +41 -0
  850. data/spec/unit/functions/rstrip_spec.rb +30 -0
  851. data/spec/unit/functions/shared.rb +12 -0
  852. data/spec/unit/functions/size_spec.rb +50 -0
  853. data/spec/unit/functions/sort_spec.rb +79 -0
  854. data/spec/unit/functions/split_spec.rb +3 -4
  855. data/spec/unit/functions/step_spec.rb +1 -1
  856. data/spec/unit/functions/strftime_spec.rb +2 -2
  857. data/spec/unit/functions/strip_spec.rb +30 -0
  858. data/spec/unit/functions/tree_each_spec.rb +493 -0
  859. data/spec/unit/functions/upcase_spec.rb +34 -0
  860. data/spec/unit/functions/values_spec.rb +30 -0
  861. data/spec/unit/functions/versioncmp_spec.rb +3 -4
  862. data/spec/unit/functions4_spec.rb +146 -76
  863. data/spec/unit/gettext/config_spec.rb +144 -0
  864. data/spec/unit/gettext/module_loading_spec.rb +53 -0
  865. data/spec/unit/graph/relationship_graph_spec.rb +15 -0
  866. data/spec/unit/graph/simple_graph_spec.rb +43 -3
  867. data/spec/unit/indirector/catalog/compiler_spec.rb +3 -18
  868. data/spec/unit/indirector/certificate/file_spec.rb +0 -8
  869. data/spec/unit/indirector/direct_file_server_spec.rb +44 -46
  870. data/spec/unit/indirector/exec_spec.rb +29 -23
  871. data/spec/unit/indirector/facts/rest_spec.rb +45 -0
  872. data/spec/unit/indirector/facts/yaml_spec.rb +95 -78
  873. data/spec/unit/indirector/file_bucket_file/file_spec.rb +156 -99
  874. data/spec/unit/indirector/file_server_spec.rb +122 -116
  875. data/spec/unit/indirector/indirection_spec.rb +25 -10
  876. data/spec/unit/indirector/json_spec.rb +0 -11
  877. data/spec/unit/indirector/key/file_spec.rb +0 -17
  878. data/spec/unit/indirector/node/exec_spec.rb +43 -22
  879. data/spec/unit/indirector/request_spec.rb +47 -6
  880. data/spec/unit/indirector/resource/ral_spec.rb +1 -0
  881. data/spec/unit/indirector/rest_spec.rb +45 -2
  882. data/spec/unit/indirector/ssl_file_spec.rb +37 -59
  883. data/spec/unit/indirector/terminus_spec.rb +3 -3
  884. data/spec/unit/indirector/yaml_spec.rb +87 -64
  885. data/spec/unit/indirector_spec.rb +0 -1
  886. data/spec/unit/info_service_spec.rb +203 -3
  887. data/spec/unit/interface/action_manager_spec.rb +1 -1
  888. data/spec/unit/interface/action_spec.rb +34 -1
  889. data/spec/unit/interface_spec.rb +12 -0
  890. data/spec/unit/module_spec.rb +89 -4
  891. data/spec/unit/module_tool/applications/installer_spec.rb +10 -2
  892. data/spec/unit/module_tool/applications/uninstaller_spec.rb +8 -0
  893. data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
  894. data/spec/unit/module_tool/applications/upgrader_spec.rb +7 -1
  895. data/spec/unit/module_tool/tar/mini_spec.rb +34 -5
  896. data/spec/unit/network/formats_spec.rb +31 -13
  897. data/spec/unit/network/http/api/indirected_routes_spec.rb +9 -5
  898. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +5 -7
  899. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -1
  900. data/spec/unit/network/http/api_spec.rb +0 -26
  901. data/spec/unit/network/http/compression_spec.rb +6 -3
  902. data/spec/unit/network/http/connection_spec.rb +99 -47
  903. data/spec/unit/network/http/factory_spec.rb +32 -11
  904. data/spec/unit/network/http/handler_spec.rb +3 -2
  905. data/spec/unit/network/resolver_spec.rb +87 -12
  906. data/spec/unit/node/environment_spec.rb +38 -6
  907. data/spec/unit/node/facts_spec.rb +14 -1
  908. data/spec/unit/node_spec.rb +121 -23
  909. data/spec/unit/other/selinux_spec.rb +0 -71
  910. data/spec/unit/parser/ast/leaf_spec.rb +3 -4
  911. data/spec/unit/parser/compiler_spec.rb +9 -2
  912. data/spec/unit/parser/environment_compiler_spec.rb +55 -17
  913. data/spec/unit/parser/functions/create_resources_spec.rb +10 -1
  914. data/spec/unit/parser/functions/digest_spec.rb +1 -5
  915. data/spec/unit/parser/functions/fail_spec.rb +1 -5
  916. data/spec/unit/parser/functions/file_spec.rb +0 -4
  917. data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
  918. data/spec/unit/parser/functions/generate_spec.rb +29 -31
  919. data/spec/unit/parser/functions/inline_template_spec.rb +7 -4
  920. data/spec/unit/parser/functions/realize_spec.rb +9 -0
  921. data/spec/unit/parser/functions/regsubst_spec.rb +0 -4
  922. data/spec/unit/parser/functions/scanf_spec.rb +0 -4
  923. data/spec/unit/parser/functions/split_spec.rb +0 -4
  924. data/spec/unit/parser/functions/sprintf_spec.rb +26 -4
  925. data/spec/unit/parser/functions/tag_spec.rb +7 -4
  926. data/spec/unit/parser/functions/tagged_spec.rb +37 -0
  927. data/spec/unit/parser/functions/template_spec.rb +8 -4
  928. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -4
  929. data/spec/unit/parser/functions_spec.rb +27 -2
  930. data/spec/unit/parser/resource/param_spec.rb +2 -2
  931. data/spec/unit/parser/resource_spec.rb +0 -1
  932. data/spec/unit/parser/scope_spec.rb +23 -4
  933. data/spec/unit/parser/type_loader_spec.rb +1 -1
  934. data/spec/unit/pops/adaptable_spec.rb +0 -1
  935. data/spec/unit/pops/evaluator/access_ops_spec.rb +5 -0
  936. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +10 -0
  937. data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -1
  938. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +78 -16
  939. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +4 -8
  940. data/spec/unit/pops/factory_rspec_helper.rb +1 -1
  941. data/spec/unit/pops/factory_spec.rb +10 -6
  942. data/spec/unit/pops/issues_spec.rb +23 -8
  943. data/spec/unit/pops/loaders/dependency_loader_spec.rb +2 -2
  944. data/spec/unit/pops/loaders/loader_spec.rb +495 -0
  945. data/spec/unit/pops/loaders/loaders_spec.rb +64 -19
  946. data/spec/unit/pops/loaders/module_loaders_spec.rb +75 -0
  947. data/spec/unit/pops/loaders/static_loader_spec.rb +16 -44
  948. data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
  949. data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
  950. data/spec/unit/pops/model/model_spec.rb +5 -0
  951. data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
  952. data/spec/unit/pops/parser/lexer2_spec.rb +119 -26
  953. data/spec/unit/pops/parser/locator_spec.rb +20 -0
  954. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +67 -4
  955. data/spec/unit/pops/parser/parse_calls_spec.rb +28 -0
  956. data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -0
  957. data/spec/unit/pops/parser/parse_containers_spec.rb +1 -1
  958. data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
  959. data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
  960. data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
  961. data/spec/unit/pops/parser/parse_plan_spec.rb +48 -0
  962. data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
  963. data/spec/unit/pops/parser/parser_spec.rb +138 -0
  964. data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
  965. data/spec/unit/pops/pn_spec.rb +148 -0
  966. data/spec/unit/pops/puppet_stack_spec.rb +38 -9
  967. data/spec/unit/pops/serialization/packer_spec.rb +8 -0
  968. data/spec/unit/pops/serialization/serialization_spec.rb +38 -6
  969. data/spec/unit/pops/serialization/to_from_hr_spec.rb +134 -5
  970. data/spec/unit/pops/serialization/to_stringified_spec.rb +157 -0
  971. data/spec/unit/pops/types/deferred_spec.rb +87 -0
  972. data/spec/unit/pops/types/error_spec.rb +207 -0
  973. data/spec/unit/pops/types/iterable_spec.rb +10 -10
  974. data/spec/unit/pops/types/p_init_type_spec.rb +383 -0
  975. data/spec/unit/pops/types/p_object_type_spec.rb +531 -54
  976. data/spec/unit/pops/types/p_sensitive_type_spec.rb +4 -0
  977. data/spec/unit/pops/types/p_timespan_type_spec.rb +32 -4
  978. data/spec/unit/pops/types/p_timestamp_type_spec.rb +64 -3
  979. data/spec/unit/pops/types/p_type_set_type_spec.rb +108 -4
  980. data/spec/unit/pops/types/p_uri_type_spec.rb +191 -0
  981. data/spec/unit/pops/types/ruby_generator_spec.rb +285 -73
  982. data/spec/unit/pops/types/string_converter_spec.rb +63 -17
  983. data/spec/unit/pops/types/task_spec.rb +485 -0
  984. data/spec/unit/pops/types/type_acceptor_spec.rb +2 -2
  985. data/spec/unit/pops/types/type_calculator_spec.rb +224 -63
  986. data/spec/unit/pops/types/type_factory_spec.rb +6 -6
  987. data/spec/unit/pops/types/type_formatter_spec.rb +37 -19
  988. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +21 -0
  989. data/spec/unit/pops/types/type_parser_spec.rb +39 -2
  990. data/spec/unit/pops/types/types_spec.rb +88 -10
  991. data/spec/unit/pops/validator/validator_spec.rb +435 -7
  992. data/spec/unit/property/keyvalue_spec.rb +97 -6
  993. data/spec/unit/property_spec.rb +14 -5
  994. data/spec/unit/provider/aix_object_spec.rb +805 -0
  995. data/spec/unit/provider/exec/posix_spec.rb +8 -8
  996. data/spec/unit/provider/exec/shell_spec.rb +2 -1
  997. data/spec/unit/provider/exec/windows_spec.rb +2 -2
  998. data/spec/unit/provider/file/windows_spec.rb +2 -2
  999. data/spec/unit/provider/group/aix_spec.rb +76 -0
  1000. data/spec/unit/provider/group/groupadd_spec.rb +77 -1
  1001. data/spec/unit/provider/group/pw_spec.rb +4 -4
  1002. data/spec/unit/provider/group/windows_adsi_spec.rb +80 -23
  1003. data/spec/unit/provider/ldap_spec.rb +0 -1
  1004. data/spec/unit/provider/nameservice_spec.rb +11 -11
  1005. data/spec/unit/provider/package/aix_spec.rb +26 -1
  1006. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  1007. data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
  1008. data/spec/unit/provider/package/dnf_spec.rb +9 -2
  1009. data/spec/unit/provider/package/dpkg_spec.rb +2 -2
  1010. data/spec/unit/provider/package/gem_spec.rb +17 -7
  1011. data/spec/unit/provider/package/nim_spec.rb +2 -11
  1012. data/spec/unit/provider/package/opkg_spec.rb +2 -2
  1013. data/spec/unit/provider/package/pip_spec.rb +38 -41
  1014. data/spec/unit/provider/package/pkg_spec.rb +64 -24
  1015. data/spec/unit/provider/package/pkgng_spec.rb +1 -1
  1016. data/spec/unit/provider/package/puppet_gem_spec.rb +2 -2
  1017. data/spec/unit/provider/package/rpm_spec.rb +33 -14
  1018. data/spec/unit/provider/package/urpmi_spec.rb +9 -3
  1019. data/spec/unit/provider/package/windows/msi_package_spec.rb +1 -1
  1020. data/spec/unit/provider/package/windows/package_spec.rb +1 -1
  1021. data/spec/unit/provider/package/windows_spec.rb +3 -3
  1022. data/spec/unit/provider/package/yum_spec.rb +69 -0
  1023. data/spec/unit/provider/parsedfile_spec.rb +1 -1
  1024. data/spec/unit/provider/service/base_spec.rb +23 -5
  1025. data/spec/unit/provider/service/bsd_spec.rb +17 -16
  1026. data/spec/unit/provider/service/daemontools_spec.rb +2 -3
  1027. data/spec/unit/provider/service/debian_spec.rb +8 -4
  1028. data/spec/unit/provider/service/freebsd_spec.rb +2 -2
  1029. data/spec/unit/provider/service/gentoo_spec.rb +27 -26
  1030. data/spec/unit/provider/service/init_spec.rb +17 -16
  1031. data/spec/unit/provider/service/launchd_spec.rb +6 -3
  1032. data/spec/unit/provider/service/openbsd_spec.rb +43 -42
  1033. data/spec/unit/provider/service/openrc_spec.rb +35 -34
  1034. data/spec/unit/provider/service/openwrt_spec.rb +7 -5
  1035. data/spec/unit/provider/service/rcng_spec.rb +7 -6
  1036. data/spec/unit/provider/service/redhat_spec.rb +11 -6
  1037. data/spec/unit/provider/service/runit_spec.rb +2 -3
  1038. data/spec/unit/provider/service/smf_spec.rb +7 -7
  1039. data/spec/unit/provider/service/src_spec.rb +3 -4
  1040. data/spec/unit/provider/service/systemd_spec.rb +73 -51
  1041. data/spec/unit/provider/service/upstart_spec.rb +53 -14
  1042. data/spec/unit/provider/service/windows_spec.rb +49 -86
  1043. data/spec/unit/provider/user/aix_spec.rb +126 -121
  1044. data/spec/unit/provider/user/hpux_spec.rb +4 -3
  1045. data/spec/unit/provider/user/openbsd_spec.rb +2 -2
  1046. data/spec/unit/provider/user/pw_spec.rb +14 -14
  1047. data/spec/unit/provider/user/user_role_add_spec.rb +20 -3
  1048. data/spec/unit/provider/user/useradd_spec.rb +194 -22
  1049. data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
  1050. data/spec/unit/provider_spec.rb +210 -14
  1051. data/spec/unit/puppet_pal_2pec.rb +1020 -0
  1052. data/spec/unit/puppet_pal_catalog_spec.rb +801 -0
  1053. data/spec/unit/puppet_pal_spec.rb +4 -0
  1054. data/spec/unit/puppet_spec.rb +31 -19
  1055. data/spec/unit/resource/capability_finder_spec.rb +16 -18
  1056. data/spec/unit/resource/catalog_spec.rb +27 -12
  1057. data/spec/unit/resource/status_spec.rb +17 -4
  1058. data/spec/unit/resource/type_collection_spec.rb +4 -1
  1059. data/spec/unit/resource/type_spec.rb +24 -9
  1060. data/spec/unit/resource_spec.rb +46 -5
  1061. data/spec/unit/rest/client_spec.rb +135 -0
  1062. data/spec/unit/rest/route_spec.rb +132 -0
  1063. data/spec/unit/settings/autosign_setting_spec.rb +2 -2
  1064. data/spec/unit/settings/certificate_revocation_setting_spec.rb +37 -0
  1065. data/spec/unit/settings/config_file_spec.rb +10 -1
  1066. data/spec/unit/settings/file_setting_spec.rb +17 -9
  1067. data/spec/unit/settings/ini_file_spec.rb +314 -5
  1068. data/spec/unit/settings/path_setting_spec.rb +1 -1
  1069. data/spec/unit/settings_spec.rb +57 -7
  1070. data/spec/unit/ssl/certificate_request_attributes_spec.rb +21 -8
  1071. data/spec/unit/ssl/certificate_request_spec.rb +62 -41
  1072. data/spec/unit/ssl/certificate_spec.rb +4 -7
  1073. data/spec/unit/ssl/host_spec.rb +248 -579
  1074. data/spec/unit/ssl/key_spec.rb +0 -15
  1075. data/spec/unit/ssl/validator_spec.rb +36 -167
  1076. data/spec/unit/task_spec.rb +247 -0
  1077. data/spec/unit/transaction/additional_resource_generator_spec.rb +64 -62
  1078. data/spec/unit/transaction/event_manager_spec.rb +12 -0
  1079. data/spec/unit/transaction/persistence_spec.rb +43 -1
  1080. data/spec/unit/transaction/report_spec.rb +62 -19
  1081. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  1082. data/spec/unit/transaction_spec.rb +134 -16
  1083. data/spec/unit/type/exec_spec.rb +11 -13
  1084. data/spec/unit/type/file/checksum_spec.rb +21 -1
  1085. data/spec/unit/type/file/content_spec.rb +13 -1
  1086. data/spec/unit/type/file/selinux_spec.rb +0 -1
  1087. data/spec/unit/type/file/source_spec.rb +15 -9
  1088. data/spec/unit/type/file_spec.rb +37 -22
  1089. data/spec/unit/type/group_spec.rb +8 -0
  1090. data/spec/unit/type/package_spec.rb +10 -0
  1091. data/spec/unit/type/resources_spec.rb +26 -12
  1092. data/spec/unit/type/schedule_spec.rb +15 -1
  1093. data/spec/unit/type/service_spec.rb +36 -10
  1094. data/spec/unit/type/tidy_spec.rb +17 -1
  1095. data/spec/unit/type/user_spec.rb +24 -115
  1096. data/spec/unit/type_spec.rb +177 -98
  1097. data/spec/unit/util/autoload_spec.rb +71 -43
  1098. data/spec/unit/util/character_encoding_spec.rb +0 -43
  1099. data/spec/unit/util/checksums_spec.rb +3 -3
  1100. data/spec/unit/util/diff_spec.rb +11 -3
  1101. data/spec/unit/util/docs_spec.rb +1 -1
  1102. data/spec/unit/util/errors_spec.rb +1 -1
  1103. data/spec/unit/util/execution_spec.rb +229 -95
  1104. data/spec/unit/util/execution_stub_spec.rb +2 -2
  1105. data/spec/unit/util/feature_spec.rb +35 -17
  1106. data/spec/unit/util/filetype_spec.rb +8 -4
  1107. data/spec/unit/util/http_proxy_spec.rb +57 -0
  1108. data/spec/unit/util/inifile_spec.rb +35 -4
  1109. data/spec/unit/util/ldap/manager_spec.rb +1 -16
  1110. data/spec/unit/util/lockfile_spec.rb +1 -1
  1111. data/spec/unit/util/log/destinations_spec.rb +45 -15
  1112. data/spec/unit/util/log_spec.rb +42 -12
  1113. data/spec/unit/util/logging_spec.rb +37 -15
  1114. data/spec/unit/util/monkey_patches_spec.rb +6 -3
  1115. data/spec/unit/util/plist_spec.rb +12 -6
  1116. data/spec/unit/util/profiler/object_counts_spec.rb +2 -1
  1117. data/spec/unit/util/rubygems_spec.rb +0 -34
  1118. data/spec/unit/util/run_mode_spec.rb +7 -7
  1119. data/spec/unit/util/selinux_spec.rb +3 -3
  1120. data/spec/unit/util/storage_spec.rb +13 -1
  1121. data/spec/unit/util/suidmanager_spec.rb +5 -5
  1122. data/spec/unit/util/tag_set_spec.rb +8 -1
  1123. data/spec/unit/util/tagging_spec.rb +27 -8
  1124. data/spec/unit/util/windows/access_control_entry_spec.rb +1 -1
  1125. data/spec/unit/util/windows/access_control_list_spec.rb +1 -1
  1126. data/spec/unit/util/windows/adsi_spec.rb +39 -35
  1127. data/spec/unit/util/windows/api_types_spec.rb +52 -1
  1128. data/spec/unit/util/windows/eventlog_spec.rb +1 -1
  1129. data/spec/unit/util/windows/security_descriptor_spec.rb +1 -1
  1130. data/spec/unit/util/windows/service_spec.rb +424 -0
  1131. data/spec/unit/util/windows/sid_spec.rb +88 -17
  1132. data/spec/unit/util/windows/string_spec.rb +1 -1
  1133. data/spec/unit/util/yaml_spec.rb +162 -28
  1134. data/spec/unit/util_spec.rb +41 -76
  1135. data/spec/watchr.rb +0 -1
  1136. data/tasks/benchmark.rake +41 -0
  1137. data/tasks/ci.rake +0 -5
  1138. data/tasks/generate_ast_model.rake +55 -43
  1139. data/tasks/manpages.rake +19 -3
  1140. data/tasks/parallel.rake +12 -7
  1141. data/tasks/parser.rake +11 -3
  1142. metadata +3262 -3438
  1143. data/ext/rack/config.ru +0 -44
  1144. data/ext/rack/example-passenger-vhost.conf +0 -57
  1145. data/lib/puppet/application/ca.rb +0 -11
  1146. data/lib/puppet/application/certificate.rb +0 -17
  1147. data/lib/puppet/application/certificate_request.rb +0 -7
  1148. data/lib/puppet/application/certificate_revocation_list.rb +0 -7
  1149. data/lib/puppet/application/master.rb +0 -313
  1150. data/lib/puppet/bindings.rb +0 -147
  1151. data/lib/puppet/configurer/downloader_factory.rb +0 -34
  1152. data/lib/puppet/external/nagios/base.rb +0 -472
  1153. data/lib/puppet/external/nagios/grammar.ry +0 -248
  1154. data/lib/puppet/external/nagios/makefile +0 -9
  1155. data/lib/puppet/external/nagios/parser.rb +0 -400
  1156. data/lib/puppet/external/nagios.rb +0 -46
  1157. data/lib/puppet/face/ca.rb +0 -266
  1158. data/lib/puppet/face/certificate.rb +0 -165
  1159. data/lib/puppet/face/certificate_request.rb +0 -56
  1160. data/lib/puppet/face/certificate_revocation_list.rb +0 -56
  1161. data/lib/puppet/feature/rack.rb +0 -19
  1162. data/lib/puppet/graph/random_prioritizer.rb +0 -16
  1163. data/lib/puppet/graph/title_hash_prioritizer.rb +0 -16
  1164. data/lib/puppet/indirector/certificate/ca.rb +0 -9
  1165. data/lib/puppet/indirector/certificate/disabled_ca.rb +0 -22
  1166. data/lib/puppet/indirector/certificate_request/ca.rb +0 -22
  1167. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +0 -22
  1168. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +0 -8
  1169. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +0 -22
  1170. data/lib/puppet/indirector/certificate_revocation_list/file.rb +0 -8
  1171. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +0 -10
  1172. data/lib/puppet/indirector/certificate_status/file.rb +0 -91
  1173. data/lib/puppet/indirector/certificate_status/rest.rb +0 -11
  1174. data/lib/puppet/indirector/certificate_status.rb +0 -4
  1175. data/lib/puppet/indirector/key/ca.rb +0 -16
  1176. data/lib/puppet/indirector/key/disabled_ca.rb +0 -22
  1177. data/lib/puppet/indirector/ldap.rb +0 -80
  1178. data/lib/puppet/indirector/node/ldap.rb +0 -259
  1179. data/lib/puppet/indirector/node/write_only_yaml.rb +0 -37
  1180. data/lib/puppet/module_tool/applications/builder.rb +0 -148
  1181. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +0 -18
  1182. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +0 -89
  1183. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +0 -32
  1184. data/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +0 -12
  1185. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +0 -48
  1186. data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +0 -1
  1187. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -6
  1188. data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +0 -1
  1189. data/lib/puppet/network/http/api/ca/v1.rb +0 -11
  1190. data/lib/puppet/network/http/api/ca.rb +0 -2
  1191. data/lib/puppet/network/http/rack/rest.rb +0 -162
  1192. data/lib/puppet/network/http/rack.rb +0 -33
  1193. data/lib/puppet/network/http/webrick/rest.rb +0 -114
  1194. data/lib/puppet/network/http/webrick.rb +0 -125
  1195. data/lib/puppet/network/server.rb +0 -39
  1196. data/lib/puppet/provider/aixobject.rb +0 -392
  1197. data/lib/puppet/provider/augeas/augeas.rb +0 -567
  1198. data/lib/puppet/provider/cisco.rb +0 -9
  1199. data/lib/puppet/provider/computer/computer.rb +0 -20
  1200. data/lib/puppet/provider/cron/crontab.rb +0 -297
  1201. data/lib/puppet/provider/host/parsed.rb +0 -46
  1202. data/lib/puppet/provider/interface/cisco.rb +0 -27
  1203. data/lib/puppet/provider/macauthorization/macauthorization.rb +0 -298
  1204. data/lib/puppet/provider/mailalias/aliases.rb +0 -50
  1205. data/lib/puppet/provider/maillist/mailman.rb +0 -108
  1206. data/lib/puppet/provider/mcx/mcxcontent.rb +0 -173
  1207. data/lib/puppet/provider/mount/parsed.rb +0 -282
  1208. data/lib/puppet/provider/mount.rb +0 -59
  1209. data/lib/puppet/provider/naginator.rb +0 -63
  1210. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +0 -590
  1211. data/lib/puppet/provider/selboolean/getsetsebool.rb +0 -47
  1212. data/lib/puppet/provider/selmodule/semodule.rb +0 -138
  1213. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +0 -105
  1214. data/lib/puppet/provider/sshkey/parsed.rb +0 -50
  1215. data/lib/puppet/provider/vlan/cisco.rb +0 -28
  1216. data/lib/puppet/provider/yumrepo/inifile.rb +0 -304
  1217. data/lib/puppet/provider/zfs/zfs.rb +0 -84
  1218. data/lib/puppet/provider/zone/solaris.rb +0 -364
  1219. data/lib/puppet/provider/zpool/zpool.rb +0 -125
  1220. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +0 -45
  1221. data/lib/puppet/ssl/certificate_authority/interface.rb +0 -324
  1222. data/lib/puppet/ssl/certificate_authority.rb +0 -553
  1223. data/lib/puppet/ssl/certificate_revocation_list.rb +0 -110
  1224. data/lib/puppet/ssl/configuration.rb +0 -61
  1225. data/lib/puppet/ssl/inventory.rb +0 -55
  1226. data/lib/puppet/type/augeas.rb +0 -211
  1227. data/lib/puppet/type/computer.rb +0 -66
  1228. data/lib/puppet/type/cron.rb +0 -475
  1229. data/lib/puppet/type/host.rb +0 -95
  1230. data/lib/puppet/type/interface.rb +0 -121
  1231. data/lib/puppet/type/k5login.rb +0 -88
  1232. data/lib/puppet/type/macauthorization.rb +0 -167
  1233. data/lib/puppet/type/mailalias.rb +0 -46
  1234. data/lib/puppet/type/maillist.rb +0 -62
  1235. data/lib/puppet/type/mcx.rb +0 -98
  1236. data/lib/puppet/type/mount.rb +0 -310
  1237. data/lib/puppet/type/nagios_command.rb +0 -3
  1238. data/lib/puppet/type/nagios_contact.rb +0 -3
  1239. data/lib/puppet/type/nagios_contactgroup.rb +0 -3
  1240. data/lib/puppet/type/nagios_host.rb +0 -3
  1241. data/lib/puppet/type/nagios_hostdependency.rb +0 -3
  1242. data/lib/puppet/type/nagios_hostescalation.rb +0 -3
  1243. data/lib/puppet/type/nagios_hostextinfo.rb +0 -3
  1244. data/lib/puppet/type/nagios_hostgroup.rb +0 -3
  1245. data/lib/puppet/type/nagios_service.rb +0 -3
  1246. data/lib/puppet/type/nagios_servicedependency.rb +0 -3
  1247. data/lib/puppet/type/nagios_serviceescalation.rb +0 -3
  1248. data/lib/puppet/type/nagios_serviceextinfo.rb +0 -3
  1249. data/lib/puppet/type/nagios_servicegroup.rb +0 -3
  1250. data/lib/puppet/type/nagios_timeperiod.rb +0 -3
  1251. data/lib/puppet/type/router.rb +0 -17
  1252. data/lib/puppet/type/scheduled_task.rb +0 -184
  1253. data/lib/puppet/type/selboolean.rb +0 -26
  1254. data/lib/puppet/type/selmodule.rb +0 -59
  1255. data/lib/puppet/type/ssh_authorized_key.rb +0 -143
  1256. data/lib/puppet/type/sshkey.rb +0 -75
  1257. data/lib/puppet/type/vlan.rb +0 -26
  1258. data/lib/puppet/type/yumrepo.rb +0 -409
  1259. data/lib/puppet/type/zfs.rb +0 -150
  1260. data/lib/puppet/type/zone.rb +0 -382
  1261. data/lib/puppet/type/zpool.rb +0 -91
  1262. data/lib/puppet/util/methodhelper.rb +0 -32
  1263. data/lib/puppet/util/nagios_maker.rb +0 -85
  1264. data/lib/puppet/util/network_device/cisco/device.rb +0 -285
  1265. data/lib/puppet/util/network_device/cisco/facts.rb +0 -72
  1266. data/lib/puppet/util/network_device/cisco/interface.rb +0 -94
  1267. data/lib/puppet/util/network_device/cisco.rb +0 -4
  1268. data/lib/puppet/util/network_device/ipcalc.rb +0 -68
  1269. data/lib/puppet/util/network_device/transport/ssh.rb +0 -126
  1270. data/lib/puppet/util/network_device/transport/telnet.rb +0 -47
  1271. data/lib/puppet/util/windows/taskscheduler.rb +0 -1276
  1272. data/lib/puppet/vendor/load_semantic.rb +0 -1
  1273. data/lib/puppet/vendor/load_semantic_puppet.rb +0 -1
  1274. data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -5
  1275. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph.rb +0 -60
  1276. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph_node.rb +0 -117
  1277. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +0 -58
  1278. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/source.rb +0 -25
  1279. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/unsatisfiable_graph.rb +0 -31
  1280. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency.rb +0 -181
  1281. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +0 -3
  1282. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +0 -203
  1283. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +0 -758
  1284. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +0 -9
  1285. data/lib/puppet/vendor/semantic_puppet/locales/config.yaml +0 -21
  1286. data/man/man8/puppet-ca.8 +0 -182
  1287. data/man/man8/puppet-cert.8 +0 -101
  1288. data/man/man8/puppet-certificate.8 +0 -224
  1289. data/man/man8/puppet-certificate_request.8 +0 -161
  1290. data/man/man8/puppet-certificate_revocation_list.8 +0 -139
  1291. data/man/man8/puppet-inspect.8 +0 -36
  1292. data/man/man8/puppet-master.8 +0 -85
  1293. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +0 -19
  1294. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +0 -18
  1295. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +0 -15
  1296. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +0 -4
  1297. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +0 -13
  1298. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +0 -15
  1299. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +0 -6
  1300. data/spec/fixtures/integration/provider/cron/crontab/purged +0 -8
  1301. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +0 -12
  1302. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +0 -14
  1303. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +0 -15
  1304. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +0 -31
  1305. data/spec/fixtures/integration/provider/sshkey/sample +0 -21
  1306. data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +0 -13
  1307. data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +0 -10
  1308. data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +0 -6
  1309. data/spec/fixtures/unit/provider/augeas/augeas/etc/test +0 -3
  1310. data/spec/fixtures/unit/provider/augeas/augeas/test.aug +0 -13
  1311. data/spec/fixtures/unit/provider/host/parsed/valid_hosts +0 -19
  1312. data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +0 -7
  1313. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +0 -152
  1314. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +0 -11
  1315. data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +0 -6
  1316. data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +0 -8
  1317. data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +0 -3
  1318. data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +0 -17
  1319. data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +0 -11
  1320. data/spec/fixtures/unit/provider/mount/parsed/linux.mount +0 -5
  1321. data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +0 -9
  1322. data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +0 -8
  1323. data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +0 -4
  1324. data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +0 -4
  1325. data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +0 -11
  1326. data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +0 -6
  1327. data/spec/fixtures/unit/provider/naginator/define_empty_param +0 -6
  1328. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +0 -7
  1329. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +0 -3
  1330. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +0 -1
  1331. data/spec/fixtures/unit/provider/sshkey/parsed/sample +0 -21
  1332. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +0 -8
  1333. data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +0 -2
  1334. data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +0 -2
  1335. data/spec/integration/faces/ca_spec.rb +0 -354
  1336. data/spec/integration/indirector/node/ldap_spec.rb +0 -14
  1337. data/spec/integration/provider/cron/crontab_spec.rb +0 -241
  1338. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -10
  1339. data/spec/integration/provider/mount_spec.rb +0 -161
  1340. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -219
  1341. data/spec/integration/provider/sshkey_spec.rb +0 -159
  1342. data/spec/integration/provider/yumrepo_spec.rb +0 -130
  1343. data/spec/integration/ssl/autosign_spec.rb +0 -145
  1344. data/spec/integration/ssl/certificate_authority_spec.rb +0 -162
  1345. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -34
  1346. data/spec/integration/transaction_spec.rb +0 -522
  1347. data/spec/integration/type/nagios_spec.rb +0 -71
  1348. data/spec/integration/type/user_spec.rb +0 -64
  1349. data/spec/unit/application/cert_spec.rb +0 -240
  1350. data/spec/unit/application/certificate_spec.rb +0 -22
  1351. data/spec/unit/application/master_spec.rb +0 -404
  1352. data/spec/unit/configurer/downloader_factory_spec.rb +0 -96
  1353. data/spec/unit/face/ca_spec.rb +0 -10
  1354. data/spec/unit/face/certificate_request_spec.rb +0 -10
  1355. data/spec/unit/face/certificate_revocation_list_spec.rb +0 -10
  1356. data/spec/unit/face/certificate_spec.rb +0 -231
  1357. data/spec/unit/face/module/build_spec.rb +0 -69
  1358. data/spec/unit/graph/title_hash_prioritizer_spec.rb +0 -49
  1359. data/spec/unit/indirector/certificate/ca_spec.rb +0 -23
  1360. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -33
  1361. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -57
  1362. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -33
  1363. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -16
  1364. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -33
  1365. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -17
  1366. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -26
  1367. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -191
  1368. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -18
  1369. data/spec/unit/indirector/code_spec.rb +0 -31
  1370. data/spec/unit/indirector/key/ca_spec.rb +0 -23
  1371. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -33
  1372. data/spec/unit/indirector/ldap_spec.rb +0 -137
  1373. data/spec/unit/indirector/node/ldap_spec.rb +0 -462
  1374. data/spec/unit/indirector/node/write_only_yaml_spec.rb +0 -12
  1375. data/spec/unit/module_tool/applications/builder_spec.rb +0 -432
  1376. data/spec/unit/network/http/api/ca/v1_spec.rb +0 -26
  1377. data/spec/unit/network/http/rack/rest_spec.rb +0 -325
  1378. data/spec/unit/network/http/rack_spec.rb +0 -43
  1379. data/spec/unit/network/http/webrick/rest_spec.rb +0 -231
  1380. data/spec/unit/network/http/webrick_spec.rb +0 -279
  1381. data/spec/unit/network/server_spec.rb +0 -95
  1382. data/spec/unit/provider/aixobject_spec.rb +0 -101
  1383. data/spec/unit/provider/augeas/augeas_spec.rb +0 -1025
  1384. data/spec/unit/provider/cisco_spec.rb +0 -15
  1385. data/spec/unit/provider/cron/crontab_spec.rb +0 -207
  1386. data/spec/unit/provider/cron/parsed_spec.rb +0 -358
  1387. data/spec/unit/provider/host/parsed_spec.rb +0 -233
  1388. data/spec/unit/provider/interface/cisco_spec.rb +0 -57
  1389. data/spec/unit/provider/macauthorization_spec.rb +0 -155
  1390. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -192
  1391. data/spec/unit/provider/mount/parsed_spec.rb +0 -317
  1392. data/spec/unit/provider/mount_spec.rb +0 -165
  1393. data/spec/unit/provider/naginator_spec.rb +0 -79
  1394. data/spec/unit/provider/network_device_spec.rb +0 -152
  1395. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +0 -2060
  1396. data/spec/unit/provider/selboolean_spec.rb +0 -36
  1397. data/spec/unit/provider/selmodule-example.pp +0 -0
  1398. data/spec/unit/provider/selmodule_spec.rb +0 -73
  1399. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -277
  1400. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -95
  1401. data/spec/unit/provider/vlan/cisco_spec.rb +0 -55
  1402. data/spec/unit/provider/yumrepo/inifile_spec.rb +0 -326
  1403. data/spec/unit/provider/zfs/zfs_spec.rb +0 -106
  1404. data/spec/unit/provider/zone/solaris_spec.rb +0 -247
  1405. data/spec/unit/provider/zpool/zpool_spec.rb +0 -251
  1406. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +0 -30
  1407. data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -560
  1408. data/spec/unit/ssl/certificate_authority_spec.rb +0 -1184
  1409. data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -196
  1410. data/spec/unit/ssl/configuration_spec.rb +0 -141
  1411. data/spec/unit/ssl/inventory_spec.rb +0 -151
  1412. data/spec/unit/type/augeas_spec.rb +0 -119
  1413. data/spec/unit/type/computer_spec.rb +0 -80
  1414. data/spec/unit/type/cron_spec.rb +0 -543
  1415. data/spec/unit/type/host_spec.rb +0 -681
  1416. data/spec/unit/type/interface_spec.rb +0 -129
  1417. data/spec/unit/type/k5login_spec.rb +0 -115
  1418. data/spec/unit/type/macauthorization_spec.rb +0 -113
  1419. data/spec/unit/type/mailalias_spec.rb +0 -49
  1420. data/spec/unit/type/maillist_spec.rb +0 -41
  1421. data/spec/unit/type/mcx_spec.rb +0 -79
  1422. data/spec/unit/type/mount_spec.rb +0 -634
  1423. data/spec/unit/type/nagios_spec.rb +0 -293
  1424. data/spec/unit/type/scheduled_task_spec.rb +0 -103
  1425. data/spec/unit/type/selboolean_spec.rb +0 -44
  1426. data/spec/unit/type/selmodule_spec.rb +0 -17
  1427. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -258
  1428. data/spec/unit/type/sshkey_spec.rb +0 -77
  1429. data/spec/unit/type/vlan_spec.rb +0 -44
  1430. data/spec/unit/type/yumrepo_spec.rb +0 -398
  1431. data/spec/unit/type/zfs_spec.rb +0 -46
  1432. data/spec/unit/type/zone_spec.rb +0 -172
  1433. data/spec/unit/type/zpool_spec.rb +0 -109
  1434. data/spec/unit/util/nagios_maker_spec.rb +0 -122
  1435. data/spec/unit/util/network_device/cisco/device_spec.rb +0 -482
  1436. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -64
  1437. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -88
  1438. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -62
  1439. data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -218
  1440. data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -86
@@ -0,0 +1,61 @@
1
+ # Returns the absolute value of a Numeric value, for example -34.56 becomes
2
+ # 34.56. Takes a single `Integer` or `Float` value as an argument.
3
+ #
4
+ # *Deprecated behavior*
5
+ #
6
+ # For backwards compatibility reasons this function also works when given a
7
+ # number in `String` format such that it first attempts to covert it to either a `Float` or
8
+ # an `Integer` and then taking the absolute value of the result. Only strings representing
9
+ # a number in decimal format is supported - an error is raised if
10
+ # value is not decimal (using base 10). Leading 0 chars in the string
11
+ # are ignored. A floating point value in string form can use some forms of
12
+ # scientific notation but not all.
13
+ #
14
+ # Callers should convert strings to `Numeric` before calling
15
+ # this function to have full control over the conversion.
16
+ #
17
+ # @example Converting to Numeric before calling
18
+ # ```puppet
19
+ # abs(Numeric($str_val))
20
+ # ```
21
+ #
22
+ # It is worth noting that `Numeric` can convert to absolute value
23
+ # directly as in the following examples:
24
+ #
25
+ # @example Absolute value and String to Numeric
26
+ # ```puppet
27
+ # Numeric($strval, true) # Converts to absolute Integer or Float
28
+ # Integer($strval, 10, true) # Converts to absolute Integer using base 10 (decimal)
29
+ # Integer($strval, 16, true) # Converts to absolute Integer using base 16 (hex)
30
+ # Float($strval, true) # Converts to absolute Float
31
+ # ```puppet
32
+ #
33
+ Puppet::Functions.create_function(:abs) do
34
+ dispatch :on_numeric do
35
+ param 'Numeric', :val
36
+ end
37
+
38
+ dispatch :on_string do
39
+ param 'String', :val
40
+ end
41
+
42
+ def on_numeric(x)
43
+ x.abs
44
+ end
45
+
46
+ def on_string(x)
47
+ Puppet.warn_once('deprecations', 'abs_function_numeric_coerce_string',
48
+ _("The abs() function's auto conversion of String to Numeric is deprecated - change to convert input before calling"))
49
+
50
+ # These patterns for conversion are backwards compatible with the stdlib
51
+ # version of this function.
52
+ #
53
+ if x =~ %r{^-?(?:\d+)(?:\.\d+){1}$}
54
+ x.to_f.abs
55
+ elsif x =~ %r{^-?\d+$}
56
+ x.to_i.abs
57
+ else
58
+ raise(ArgumentError, 'abs(): Requires float or integer to work with - was given non decimal string')
59
+ end
60
+ end
61
+ end
@@ -1,4 +1,4 @@
1
- # Log a message on the server at level alert.
1
+ # Logs a message on the server at level `alert`.
2
2
  Puppet::Functions.create_function(:alert, Puppet::Functions::InternalFunction) do
3
3
  # @param values The values to log.
4
4
  # @return [Undef]
@@ -0,0 +1,104 @@
1
+ # Runs a [lambda](https://puppet.com/docs/puppet/latest/lang_lambdas.html)
2
+ # repeatedly using each value in a data structure until the lambda returns a non "truthy" value which
3
+ # makes the function return `false`, or if the end of the iteration is reached, `true` is returned.
4
+ #
5
+ # This function takes two mandatory arguments, in this order:
6
+ #
7
+ # 1. An array, hash, or other iterable object that the function will iterate over.
8
+ # 2. A lambda, which the function calls for each element in the first argument. It can
9
+ # request one or two parameters.
10
+ #
11
+ # @example Using the `all` function
12
+ #
13
+ # `$data.all |$parameter| { <PUPPET CODE BLOCK> }`
14
+ #
15
+ # or
16
+ #
17
+ # `all($data) |$parameter| { <PUPPET CODE BLOCK> }`
18
+ #
19
+ # @example Using the `all` function with an Array and a one-parameter lambda
20
+ #
21
+ # ```puppet
22
+ # # For the array $data, run a lambda that checks that all values are multiples of 10
23
+ # $data = [10, 20, 30]
24
+ # notice $data.all |$item| { $item % 10 == 0 }
25
+ # ```
26
+ #
27
+ # Would notice `true`.
28
+ #
29
+ # When the first argument is a `Hash`, Puppet passes each key and value pair to the lambda
30
+ # as an array in the form `[key, value]`.
31
+ #
32
+ # @example Using the `all` function with a `Hash` and a one-parameter lambda
33
+ #
34
+ # ```puppet
35
+ # # For the hash $data, run a lambda using each item as a key-value array
36
+ # $data = { 'a_0'=> 10, 'b_1' => 20 }
37
+ # notice $data.all |$item| { $item[1] % 10 == 0 }
38
+ # ```
39
+ #
40
+ # Would notice `true` if all values in the hash are multiples of 10.
41
+ #
42
+ # When the lambda accepts two arguments, the first argument gets the index in an array
43
+ # or the key from a hash, and the second argument the value.
44
+ #
45
+ #
46
+ # @example Using the `all` function with a hash and a two-parameter lambda
47
+ #
48
+ # ```puppet
49
+ # # Check that all values are a multiple of 10 and keys start with 'abc'
50
+ # $data = {abc_123 => 10, abc_42 => 20, abc_blue => 30}
51
+ # notice $data.all |$key, $value| { $value % 10 == 0 and $key =~ /^abc/ }
52
+ # ```
53
+ #
54
+ # Would notice true.
55
+ #
56
+ # For an general examples that demonstrates iteration, see the Puppet
57
+ # [iteration](https://puppet.com/docs/puppet/latest/lang_iteration.html)
58
+ # documentation.
59
+ #
60
+ # @since 5.2.0
61
+ #
62
+ Puppet::Functions.create_function(:all) do
63
+ dispatch :all_Hash_2 do
64
+ param 'Hash[Any, Any]', :hash
65
+ block_param 'Callable[2,2]', :block
66
+ end
67
+
68
+ dispatch :all_Hash_1 do
69
+ param 'Hash[Any, Any]', :hash
70
+ block_param 'Callable[1,1]', :block
71
+ end
72
+
73
+ dispatch :all_Enumerable_2 do
74
+ param 'Iterable', :enumerable
75
+ block_param 'Callable[2,2]', :block
76
+ end
77
+
78
+ dispatch :all_Enumerable_1 do
79
+ param 'Iterable', :enumerable
80
+ block_param 'Callable[1,1]', :block
81
+ end
82
+
83
+ def all_Hash_1(hash)
84
+ hash.each_pair.all? { |x| yield(x) }
85
+ end
86
+
87
+ def all_Hash_2(hash)
88
+ hash.each_pair.all? { |x,y| yield(x,y) }
89
+ end
90
+
91
+ def all_Enumerable_1(enumerable)
92
+ Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable).all? { |e| yield(e) }
93
+ end
94
+
95
+ def all_Enumerable_2(enumerable)
96
+ enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
97
+ if enum.hash_style?
98
+ enum.all? { |entry| yield(*entry) }
99
+ else
100
+ enum.each_with_index { |e, i| return false unless yield(i, e) }
101
+ true
102
+ end
103
+ end
104
+ end
@@ -5,11 +5,11 @@
5
5
  #
6
6
  # @example Using `annotate` with two arguments
7
7
  #
8
- # ~~~ puppet
8
+ # ```puppet
9
9
  # $annotation = Mod::NickNameAdapter.annotate(o)
10
10
  #
11
11
  # $annotation = annotate(Mod::NickNameAdapter.annotate, o)
12
- # ~~~
12
+ # ```
13
13
  #
14
14
  # With three arguments, an `Annotation` type, an object, and a block, the function returns the
15
15
  # annotation for the object of the given type, or annotates it with a new annotation initialized
@@ -18,11 +18,11 @@
18
18
  #
19
19
  # @example Using `annotate` with two arguments and a block
20
20
  #
21
- # ~~~ puppet
21
+ # ```puppet
22
22
  # $annotation = Mod::NickNameAdapter.annotate(o) || { { 'nick_name' => 'Buddy' } }
23
23
  #
24
24
  # $annotation = annotate(Mod::NickNameAdapter.annotate, o) || { { 'nick_name' => 'Buddy' } }
25
- # ~~~
25
+ # ```
26
26
  #
27
27
  # With three arguments, an `Annotation` type, an object, and an `Hash`, the function will annotate
28
28
  # the given object with a new annotation of the given type that is initialized from the given hash.
@@ -30,23 +30,23 @@
30
30
  #
31
31
  # @example Using `annotate` with three arguments where third argument is a Hash
32
32
  #
33
- # ~~~ puppet
33
+ # ```puppet
34
34
  # $annotation = Mod::NickNameAdapter.annotate(o, { 'nick_name' => 'Buddy' })
35
35
  #
36
36
  # $annotation = annotate(Mod::NickNameAdapter.annotate, o, { 'nick_name' => 'Buddy' })
37
- # ~~~
37
+ # ```
38
38
  #
39
39
  # With three arguments, an `Annotation` type, an object, and an the string `clear`, the function will
40
- # clear the annotatation of the given type in the given object. The old annotation is returned if
40
+ # clear the annotation of the given type in the given object. The old annotation is returned if
41
41
  # it existed.
42
42
  #
43
43
  # @example Using `annotate` with three arguments where third argument is the string 'clear'
44
44
  #
45
- # ~~~ puppet
45
+ # ```puppet
46
46
  # $annotation = Mod::NickNameAdapter.annotate(o, clear)
47
47
  #
48
48
  # $annotation = annotate(Mod::NickNameAdapter.annotate, o, clear)
49
- # ~~~
49
+ # ```
50
50
  #
51
51
  # With three arguments, the type `Pcore`, an object, and a Hash of hashes keyed by `Annotation` types,
52
52
  # the function will annotate the given object with all types used as keys in the given hash. Each annotation
@@ -54,12 +54,12 @@
54
54
  #
55
55
  # @example Add multiple annotations to a new instance of `Mod::Person` using the `Pcore` type.
56
56
  #
57
- # ~~~ puppet
57
+ # ```puppet
58
58
  # $person = Pcore.annotate(Mod::Person({'name' => 'William'}), {
59
59
  # Mod::NickNameAdapter >= { 'nick_name' => 'Bill' },
60
60
  # Mod::HobbiesAdapter => { 'hobbies' => ['Ham Radio', 'Philatelist'] }
61
61
  # })
62
- # ~~~
62
+ # ```
63
63
  #
64
64
  # @since 5.0.0
65
65
  #
@@ -0,0 +1,109 @@
1
+ # Runs a [lambda](https://puppet.com/docs/puppet/latest/lang_lambdas.html)
2
+ # repeatedly using each value in a data structure until the lambda returns a "truthy" value which
3
+ # makes the function return `true`, or if the end of the iteration is reached, false is returned.
4
+ #
5
+ # This function takes two mandatory arguments, in this order:
6
+ #
7
+ # 1. An array, hash, or other iterable object that the function will iterate over.
8
+ # 2. A lambda, which the function calls for each element in the first argument. It can
9
+ # request one or two parameters.
10
+ #
11
+ # @example Using the `any` function
12
+ #
13
+ # `$data.any |$parameter| { <PUPPET CODE BLOCK> }`
14
+ #
15
+ # or
16
+ #
17
+ # `any($data) |$parameter| { <PUPPET CODE BLOCK> }`
18
+ #
19
+ # @example Using the `any` function with an Array and a one-parameter lambda
20
+ #
21
+ # ```puppet
22
+ # # For the array $data, run a lambda that checks if an unknown hash contains those keys
23
+ # $data = ["routers", "servers", "workstations"]
24
+ # $looked_up = lookup('somekey', Hash)
25
+ # notice $data.any |$item| { $looked_up[$item] }
26
+ # ```
27
+ #
28
+ # Would notice `true` if the looked up hash had a value that is neither `false` nor `undef` for at least
29
+ # one of the keys. That is, it is equivalent to the expression
30
+ # `$looked_up[routers] || $looked_up[servers] || $looked_up[workstations]`.
31
+ #
32
+ # When the first argument is a `Hash`, Puppet passes each key and value pair to the lambda
33
+ # as an array in the form `[key, value]`.
34
+ #
35
+ # @example Using the `any` function with a `Hash` and a one-parameter lambda
36
+ #
37
+ # ```puppet
38
+ # # For the hash $data, run a lambda using each item as a key-value array.
39
+ # $data = {"rtr" => "Router", "svr" => "Server", "wks" => "Workstation"}
40
+ # $looked_up = lookup('somekey', Hash)
41
+ # notice $data.any |$item| { $looked_up[$item[0]] }
42
+ # ```
43
+ #
44
+ # Would notice `true` if the looked up hash had a value for one of the wanted key that is
45
+ # neither `false` nor `undef`.
46
+ #
47
+ # When the lambda accepts two arguments, the first argument gets the index in an array
48
+ # or the key from a hash, and the second argument the value.
49
+ #
50
+ #
51
+ # @example Using the `any` function with an array and a two-parameter lambda
52
+ #
53
+ # ```puppet
54
+ # # Check if there is an even numbered index that has a non String value
55
+ # $data = [key1, 1, 2, 2]
56
+ # notice $data.any |$index, $value| { $index % 2 == 0 and $value !~ String }
57
+ # ```
58
+ #
59
+ # Would notice true as the index `2` is even and not a `String`
60
+ #
61
+ # For an general examples that demonstrates iteration, see the Puppet
62
+ # [iteration](https://puppet.com/docs/puppet/latest/lang_iteration.html)
63
+ # documentation.
64
+ #
65
+ # @since 5.2.0
66
+ #
67
+ Puppet::Functions.create_function(:any) do
68
+ dispatch :any_Hash_2 do
69
+ param 'Hash[Any, Any]', :hash
70
+ block_param 'Callable[2,2]', :block
71
+ end
72
+
73
+ dispatch :any_Hash_1 do
74
+ param 'Hash[Any, Any]', :hash
75
+ block_param 'Callable[1,1]', :block
76
+ end
77
+
78
+ dispatch :any_Enumerable_2 do
79
+ param 'Iterable', :enumerable
80
+ block_param 'Callable[2,2]', :block
81
+ end
82
+
83
+ dispatch :any_Enumerable_1 do
84
+ param 'Iterable', :enumerable
85
+ block_param 'Callable[1,1]', :block
86
+ end
87
+
88
+ def any_Hash_1(hash)
89
+ hash.each_pair.any? { |x| yield(x) }
90
+ end
91
+
92
+ def any_Hash_2(hash)
93
+ hash.each_pair.any? { |x,y| yield(x, y) }
94
+ end
95
+
96
+ def any_Enumerable_1(enumerable)
97
+ Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable).any? { |e| yield(e) }
98
+ end
99
+
100
+ def any_Enumerable_2(enumerable)
101
+ enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
102
+ if enum.hash_style?
103
+ enum.any? { |entry| yield(*entry) }
104
+ else
105
+ enum.each_with_index { |e, i| return true if yield(i, e) }
106
+ false
107
+ end
108
+ end
109
+ end
@@ -1,7 +1,7 @@
1
1
  # Returns the given value if it is of the given
2
- # [data type](https://docs.puppetlabs.com/puppet/latest/reference/lang_data.html), or
2
+ # [data type](https://puppet.com/docs/puppet/latest/lang_data.html), or
3
3
  # otherwise either raises an error or executes an optional two-parameter
4
- # [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html).
4
+ # [lambda](https://puppet.com/docs/puppet/latest/lang_lambdas.html).
5
5
  #
6
6
  # The function takes two mandatory arguments, in this order:
7
7
  #
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # @example Using `assert_type`
12
12
  #
13
- # ~~~ puppet
13
+ # ```puppet
14
14
  # $raw_username = 'Amy Berry'
15
15
  #
16
16
  # # Assert that $raw_username is a non-empty string and assign it to $valid_username.
@@ -19,7 +19,7 @@
19
19
  # # $valid_username contains "Amy Berry".
20
20
  # # If $raw_username was an empty string or a different data type, the Puppet run would
21
21
  # # fail with an "Expected type does not match actual" error.
22
- # ~~~
22
+ # ```
23
23
  #
24
24
  # You can use an optional lambda to provide enhanced feedback. The lambda takes two
25
25
  # mandatory parameters, in this order:
@@ -29,7 +29,7 @@
29
29
  #
30
30
  # @example Using `assert_type` with a warning and default value
31
31
  #
32
- # ~~~ puppet
32
+ # ```puppet
33
33
  # $raw_username = 'Amy Berry'
34
34
  #
35
35
  # # Assert that $raw_username is a non-empty string and assign it to $valid_username.
@@ -43,10 +43,10 @@
43
43
  # # If $raw_username was an empty string, the Puppet run would set $valid_username to
44
44
  # # "anonymous" and output a warning: "The username should be 'String[1, default]', not
45
45
  # # 'String[0, 0]'. Using 'anonymous'."
46
- # ~~~
46
+ # ```
47
47
  #
48
48
  # For more information about data types, see the
49
- # [documentation](https://docs.puppetlabs.com/puppet/latest/reference/lang_data.html).
49
+ # [documentation](https://puppet.com/docs/puppet/latest/lang_data.html).
50
50
  #
51
51
  # @since 4.0.0
52
52
  #
@@ -1,5 +1,17 @@
1
- # Loads a binary file from a module or file system and returns its contents as a Binary.
2
- # (Documented in 3.x stub)
1
+ # Loads a binary file from a module or file system and returns its contents as a `Binary`.
2
+ # The argument to this function should be a `<MODULE NAME>/<FILE>`
3
+ # reference, which will load `<FILE>` from a module's `files`
4
+ # directory. (For example, the reference `mysql/mysqltuner.pl` will load the
5
+ # file `<MODULES DIRECTORY>/mysql/files/mysqltuner.pl`.)
6
+ #
7
+ # This function also accepts an absolute file path that allows reading
8
+ # binary file content from anywhere on disk.
9
+ #
10
+ # An error is raised if the given file does not exists.
11
+ #
12
+ # To search for the existence of files, use the `find_file()` function.
13
+ #
14
+ # - since 4.8.0
3
15
  #
4
16
  # @since 4.8.0
5
17
  #
@@ -12,6 +24,7 @@ Puppet::Functions.create_function(:binary_file, Puppet::Functions::InternalFunct
12
24
  def binary_file(scope, unresolved_path)
13
25
  path = Puppet::Parser::Files.find_file(unresolved_path, scope.compiler.environment)
14
26
  unless path && Puppet::FileSystem.exist?(path)
27
+ #TRANSLATORS the string "binary_file()" should not be translated
15
28
  raise Puppet::ParseError, _("binary_file(): The given file '%{unresolved_path}' does not exist") % { unresolved_path: unresolved_path }
16
29
  end
17
30
  Puppet::Pops::Types::PBinaryType::Binary.from_binary_string(Puppet::FileSystem.binread(path))
@@ -1,19 +1,44 @@
1
- # Make iteration break as if there were no more values to process
1
+ # Breaks an innermost iteration as if it encountered an end of input.
2
+ # This function does not return to the caller.
2
3
  #
3
- # @since 4.7.0
4
+ # The signal produced to stop the iteration bubbles up through
5
+ # the call stack until either terminating the innermost iteration or
6
+ # raising an error if the end of the call stack is reached.
7
+ #
8
+ # The break() function does not accept an argument.
9
+ #
10
+ # @example Using `break`
11
+ #
12
+ # ```puppet
13
+ # $data = [1,2,3]
14
+ # notice $data.map |$x| { if $x == 3 { break() } $x*10 }
15
+ # ```
16
+ #
17
+ # Would notice the value `[10, 20]`
18
+ #
19
+ # @example Using a nested `break`
20
+ #
21
+ # ```puppet
22
+ # function break_if_even($x) {
23
+ # if $x % 2 == 0 { break() }
24
+ # }
25
+ # $data = [1,2,3]
26
+ # notice $data.map |$x| { break_if_even($x); $x*10 }
27
+ #```
28
+ # Would notice the value `[10]`
29
+ #
30
+ # * Also see functions `next` and `return`
31
+ #
32
+ # @since 4.8.0
4
33
  #
5
34
  Puppet::Functions.create_function(:break) do
6
35
  dispatch :break_impl do
7
36
  end
8
37
 
9
38
  def break_impl()
10
- stacktrace = Puppet::Pops::PuppetStack.stacktrace()
11
- if stacktrace.size > 0
12
- file, line = stacktrace[0]
13
- else
14
- file = nil
15
- line = nil
16
- end
39
+ # get file, line if available, else they are set to nil
40
+ file, line = Puppet::Pops::PuppetStack.top_of_stack
41
+
17
42
  # PuppetStopIteration contains file and line and is a StopIteration exception
18
43
  # so it can break a Ruby Kernel#loop or enumeration
19
44
  #
@@ -6,26 +6,53 @@
6
6
  # 2. Any number of arguments to be passed to the called function.
7
7
  # 3. An optional lambda, if the function being called supports it.
8
8
  #
9
+ # This function can also be used to resolve a `Deferred` given as
10
+ # the only argument to the function (does not accept arguments nor
11
+ # a block).
12
+ #
9
13
  # @example Using the `call` function
10
14
  #
11
- # ~~~ puppet
15
+ # ```puppet
12
16
  # $a = 'notice'
13
17
  # call($a, 'message')
14
- # ~~~
18
+ # ```
15
19
  #
16
20
  # @example Using the `call` function with a lambda
17
21
  #
18
- # ~~~ puppet
22
+ # ```puppet
19
23
  # $a = 'each'
20
24
  # $b = [1,2,3]
21
25
  # call($a, $b) |$item| {
22
26
  # notify { $item: }
23
27
  # }
24
- # ~~~
28
+ # ```
25
29
  #
26
30
  # The `call` function can be used to call either Ruby functions or Puppet language
27
31
  # functions.
28
32
  #
33
+ # When used with `Deferred` values, the deferred value can either describe
34
+ # a function call, or a dig into a variable.
35
+ #
36
+ # @example Resolving a deferred function call
37
+ #
38
+ # ```puppet
39
+ # $d = Deferred('join', [[1,2,3], ':']) # A future call to join that joins the arguments 1,2,3 with ':'
40
+ # notice($d.call())
41
+ # ```
42
+ #
43
+ # Would notice the string "1:2:3".
44
+ #
45
+ # @example Resolving a deferred variable value with optional dig into its structure
46
+ #
47
+ # ```puppet
48
+ # $d = Deferred('$facts', ['processors', 'count'])
49
+ # notice($d.call())
50
+ # ```
51
+ #
52
+ # Would notice the value of `$facts['processors']['count']` at the time when the `call` is made.
53
+ #
54
+ # * Deferred values supported since Puppet 5.6.0
55
+ #
29
56
  # @since 5.0.0
30
57
  #
31
58
  Puppet::Functions.create_function(:call, Puppet::Functions::InternalFunction) do
@@ -36,7 +63,17 @@ Puppet::Functions.create_function(:call, Puppet::Functions::InternalFunction) do
36
63
  optional_block_param
37
64
  end
38
65
 
66
+ dispatch :call_deferred do
67
+ scope_param
68
+ param 'Deferred', :deferred
69
+ end
70
+
39
71
  def call_impl_block(scope, function_name, *args, &block)
40
72
  call_function_with_scope(scope, function_name, *args, &block)
41
73
  end
74
+
75
+ def call_deferred(scope, deferred)
76
+ Puppet::Pops::Evaluator::DeferredResolver.resolve(deferred, scope.compiler)
77
+ end
78
+
42
79
  end
@@ -0,0 +1,62 @@
1
+ # Creates a Camel Case version of a String
2
+ #
3
+ # This function is compatible with the stdlib function with the same name.
4
+ #
5
+ # The function does the following:
6
+ # * For a `String` the conversion replaces all combinations of *_<char>* with an upcased version of the
7
+ # character following the _. This is done using Ruby system locale which handles some, but not all
8
+ # special international up-casing rules (for example German double-s ß is upcased to "Ss").
9
+ # * For an `Iterable[Variant[String, Numeric]]` (for example an `Array`) each value is capitalized and the conversion is not recursive.
10
+ # * If the value is `Numeric` it is simply returned (this is for backwards compatibility).
11
+ # * An error is raised for all other data types.
12
+ # * The result will not contain any underscore characters.
13
+ #
14
+ # Please note: This function relies directly on Ruby's String implementation and as such may not be entirely UTF8 compatible.
15
+ # To ensure best compatibility please use this function with Ruby 2.4.0 or greater - https://bugs.ruby-lang.org/issues/10085.
16
+ #
17
+ # @example Camelcase a String
18
+ # ```puppet
19
+ # 'hello_friend'.camelcase()
20
+ # camelcase('hello_friend')
21
+ # ```
22
+ # Would both result in `"HelloFriend"`
23
+ #
24
+ # @example Camelcase of strings in an Array
25
+ # ```puppet
26
+ # ['abc_def', 'bcd_xyz'].capitalize()
27
+ # capitalize(['abc_def', 'bcd_xyz'])
28
+ # ```
29
+ # Would both result in `['AbcDef', 'BcdXyz']`
30
+ #
31
+ Puppet::Functions.create_function(:camelcase) do
32
+
33
+ dispatch :on_numeric do
34
+ param 'Numeric', :arg
35
+ end
36
+
37
+ dispatch :on_string do
38
+ param 'String', :arg
39
+ end
40
+
41
+ dispatch :on_iterable do
42
+ param 'Iterable[Variant[String, Numeric]]', :arg
43
+ end
44
+
45
+ # unit function - since the old implementation skipped Numeric values
46
+ def on_numeric(n)
47
+ n
48
+ end
49
+
50
+ def on_string(s)
51
+ s.split('_').map {|x| x.capitalize }.join('')
52
+ end
53
+
54
+ def on_iterable(a)
55
+ a.map {|x| do_camelcase(x) }
56
+ end
57
+
58
+ def do_camelcase(x)
59
+ # x can only be a String or Numeric because type constraints have been automatically applied
60
+ x.is_a?(String) ? on_string(x) : x
61
+ end
62
+ end
@@ -0,0 +1,61 @@
1
+ # Capitalizes the first character of a String, or the first character of every String in an Iterable value (such as an Array).
2
+ #
3
+ # This function is compatible with the stdlib function with the same name.
4
+ #
5
+ # The function does the following:
6
+ # * For a `String`, a string with its first character in upper case version is returned.
7
+ # This is done using Ruby system locale which handles some, but not all
8
+ # special international up-casing rules (for example German double-s ß is capitalized to "Ss").
9
+ # * For an `Iterable[Variant[String, Numeric]]` (for example an `Array`) each value is capitalized and the conversion is not recursive.
10
+ # * If the value is `Numeric` it is simply returned (this is for backwards compatibility).
11
+ # * An error is raised for all other data types.
12
+ #
13
+ # Please note: This function relies directly on Ruby's String implementation and as such may not be entirely UTF8 compatible.
14
+ # To ensure best compatibility please use this function with Ruby 2.4.0 or greater - https://bugs.ruby-lang.org/issues/10085.
15
+ #
16
+ # @example Capitalizing a String
17
+ # ```puppet
18
+ # 'hello'.capitalize()
19
+ # upcase('hello')
20
+ # ```
21
+ # Would both result in "Hello"
22
+ #
23
+ # @example Capitalizing strings in an Array
24
+ # ```puppet
25
+ # ['abc', 'bcd'].capitalize()
26
+ # capitalize(['abc', 'bcd'])
27
+ # ```
28
+ # Would both result in ['Abc', 'Bcd']
29
+ #
30
+ Puppet::Functions.create_function(:capitalize) do
31
+
32
+ dispatch :on_numeric do
33
+ param 'Numeric', :arg
34
+ end
35
+
36
+ dispatch :on_string do
37
+ param 'String', :arg
38
+ end
39
+
40
+ dispatch :on_iterable do
41
+ param 'Iterable[Variant[String, Numeric]]', :arg
42
+ end
43
+
44
+ # unit function - since the old implementation skipped Numeric values
45
+ def on_numeric(n)
46
+ n
47
+ end
48
+
49
+ def on_string(s)
50
+ s.capitalize
51
+ end
52
+
53
+ def on_iterable(a)
54
+ a.map {|x| do_capitalize(x) }
55
+ end
56
+
57
+ def do_capitalize(x)
58
+ # x can only be a String or Numeric because type constraints have been automatically applied
59
+ x.is_a?(String) ? x.capitalize : x
60
+ end
61
+ end