puppet 5.4.0-x64-mingw32 → 5.5.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (441) hide show
  1. data/Gemfile +3 -3
  2. data/MAINTAINERS +0 -19
  3. data/README.md +5 -5
  4. data/Rakefile +26 -0
  5. data/conf/auth.conf +5 -0
  6. data/ext/project_data.yaml +1 -0
  7. data/ext/regexp_nodes/regexp_nodes.rb +3 -4
  8. data/lib/puppet/application/apply.rb +1 -1
  9. data/lib/puppet/application/cert.rb +3 -1
  10. data/lib/puppet/application/device.rb +100 -13
  11. data/lib/puppet/application/facts.rb +5 -0
  12. data/lib/puppet/application/lookup.rb +12 -2
  13. data/lib/puppet/configurer.rb +37 -17
  14. data/lib/puppet/confine.rb +4 -1
  15. data/lib/puppet/datatypes.rb +1 -1
  16. data/lib/puppet/environments.rb +1 -1
  17. data/lib/puppet/error.rb +6 -3
  18. data/lib/puppet/external/dot.rb +0 -7
  19. data/lib/puppet/external/nagios/parser.rb +1 -1
  20. data/lib/puppet/face/config.rb +92 -10
  21. data/lib/puppet/face/epp.rb +31 -6
  22. data/lib/puppet/face/facts.rb +49 -0
  23. data/lib/puppet/face/help.rb +33 -35
  24. data/lib/puppet/face/help/action.erb +1 -1
  25. data/lib/puppet/face/help/face.erb +1 -1
  26. data/lib/puppet/face/man.rb +55 -12
  27. data/lib/puppet/face/parser.rb +30 -3
  28. data/lib/puppet/file_bucket/file.rb +0 -2
  29. data/lib/puppet/file_serving/base.rb +10 -10
  30. data/lib/puppet/forge.rb +3 -3
  31. data/lib/puppet/forge/errors.rb +3 -3
  32. data/lib/puppet/functions.rb +1 -3
  33. data/lib/puppet/functions/alert.rb +1 -1
  34. data/lib/puppet/functions/all.rb +6 -6
  35. data/lib/puppet/functions/annotate.rb +10 -10
  36. data/lib/puppet/functions/any.rb +6 -6
  37. data/lib/puppet/functions/assert_type.rb +4 -4
  38. data/lib/puppet/functions/binary_file.rb +14 -2
  39. data/lib/puppet/functions/break.rb +31 -2
  40. data/lib/puppet/functions/call.rb +4 -4
  41. data/lib/puppet/functions/contain.rb +19 -3
  42. data/lib/puppet/functions/convert_to.rb +6 -5
  43. data/lib/puppet/functions/crit.rb +1 -1
  44. data/lib/puppet/functions/debug.rb +1 -1
  45. data/lib/puppet/functions/defined.rb +11 -9
  46. data/lib/puppet/functions/dig.rb +26 -2
  47. data/lib/puppet/functions/each.rb +8 -8
  48. data/lib/puppet/functions/emerg.rb +1 -1
  49. data/lib/puppet/functions/empty.rb +79 -0
  50. data/lib/puppet/functions/err.rb +1 -1
  51. data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
  52. data/lib/puppet/functions/filter.rb +7 -7
  53. data/lib/puppet/functions/find_file.rb +15 -1
  54. data/lib/puppet/functions/flatten.rb +64 -0
  55. data/lib/puppet/functions/hiera.rb +6 -6
  56. data/lib/puppet/functions/hiera_array.rb +6 -6
  57. data/lib/puppet/functions/hiera_hash.rb +6 -6
  58. data/lib/puppet/functions/hiera_include.rb +8 -8
  59. data/lib/puppet/functions/include.rb +28 -2
  60. data/lib/puppet/functions/info.rb +1 -1
  61. data/lib/puppet/functions/inline_epp.rb +2 -2
  62. data/lib/puppet/functions/join.rb +56 -0
  63. data/lib/puppet/functions/json_data.rb +2 -2
  64. data/lib/puppet/functions/keys.rb +25 -0
  65. data/lib/puppet/functions/length.rb +44 -0
  66. data/lib/puppet/functions/lest.rb +39 -1
  67. data/lib/puppet/functions/lookup.rb +2 -1
  68. data/lib/puppet/functions/map.rb +10 -9
  69. data/lib/puppet/functions/match.rb +6 -6
  70. data/lib/puppet/functions/new.rb +995 -2
  71. data/lib/puppet/functions/next.rb +1 -1
  72. data/lib/puppet/functions/notice.rb +1 -1
  73. data/lib/puppet/functions/reduce.rb +6 -6
  74. data/lib/puppet/functions/regsubst.rb +9 -3
  75. data/lib/puppet/functions/require.rb +36 -2
  76. data/lib/puppet/functions/return.rb +1 -1
  77. data/lib/puppet/functions/reverse_each.rb +71 -2
  78. data/lib/puppet/functions/slice.rb +23 -9
  79. data/lib/puppet/functions/split.rb +12 -10
  80. data/lib/puppet/functions/step.rb +73 -1
  81. data/lib/puppet/functions/strftime.rb +176 -2
  82. data/lib/puppet/functions/then.rb +65 -2
  83. data/lib/puppet/functions/tree_each.rb +19 -19
  84. data/lib/puppet/functions/type.rb +42 -1
  85. data/lib/puppet/functions/unique.rb +13 -13
  86. data/lib/puppet/functions/unwrap.rb +8 -4
  87. data/lib/puppet/functions/values.rb +25 -0
  88. data/lib/puppet/functions/versioncmp.rb +1 -1
  89. data/lib/puppet/functions/warning.rb +1 -1
  90. data/lib/puppet/functions/with.rb +6 -4
  91. data/lib/puppet/functions/yaml_data.rb +3 -1
  92. data/lib/puppet/indirector/certificate_status/file.rb +1 -1
  93. data/lib/puppet/indirector/facts/facter.rb +1 -3
  94. data/lib/puppet/indirector/facts/rest.rb +21 -0
  95. data/lib/puppet/indirector/facts/yaml.rb +0 -4
  96. data/lib/puppet/indirector/rest.rb +2 -2
  97. data/lib/puppet/module.rb +3 -3
  98. data/lib/puppet/module/task.rb +2 -3
  99. data/lib/puppet/module_tool/applications/application.rb +4 -4
  100. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  101. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  102. data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
  103. data/lib/puppet/module_tool/metadata.rb +3 -3
  104. data/lib/puppet/network/authconfig.rb +1 -1
  105. data/lib/puppet/network/format_support.rb +1 -1
  106. data/lib/puppet/network/formats.rb +5 -7
  107. data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
  108. data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
  109. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
  110. data/lib/puppet/network/http/error.rb +3 -3
  111. data/lib/puppet/network/resolver.rb +1 -2
  112. data/lib/puppet/parser/compiler.rb +12 -5
  113. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
  114. data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
  115. data/lib/puppet/parser/functions/new.rb +31 -46
  116. data/lib/puppet/parser/parser_factory.rb +1 -1
  117. data/lib/puppet/parser/resource.rb +1 -1
  118. data/lib/puppet/parser/type_loader.rb +11 -11
  119. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  120. data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
  121. data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
  122. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
  123. data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
  124. data/lib/puppet/pops/functions/dispatch.rb +1 -1
  125. data/lib/puppet/pops/issue_reporter.rb +18 -1
  126. data/lib/puppet/pops/issues.rb +6 -3
  127. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
  128. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
  129. data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
  130. data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
  131. data/lib/puppet/pops/loaders.rb +18 -7
  132. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  133. data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
  134. data/lib/puppet/pops/model/factory.rb +6 -3
  135. data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
  136. data/lib/puppet/pops/model/pn_transformer.rb +400 -0
  137. data/lib/puppet/pops/parser/egrammar.ra +1 -1
  138. data/lib/puppet/pops/parser/eparser.rb +1 -1
  139. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  140. data/lib/puppet/pops/parser/lexer_support.rb +3 -2
  141. data/lib/puppet/pops/parser/locator.rb +0 -2
  142. data/lib/puppet/pops/parser/pn_parser.rb +316 -0
  143. data/lib/puppet/pops/pcore.rb +17 -17
  144. data/lib/puppet/pops/pn.rb +236 -0
  145. data/lib/puppet/pops/serialization/json.rb +7 -7
  146. data/lib/puppet/pops/types/class_loader.rb +6 -3
  147. data/lib/puppet/pops/types/implementation_registry.rb +28 -35
  148. data/lib/puppet/pops/types/p_object_type.rb +3 -3
  149. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  150. data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
  151. data/lib/puppet/pops/types/ruby_generator.rb +3 -4
  152. data/lib/puppet/pops/types/type_calculator.rb +1 -1
  153. data/lib/puppet/pops/types/type_factory.rb +0 -4
  154. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  155. data/lib/puppet/pops/types/type_parser.rb +14 -7
  156. data/lib/puppet/pops/types/types.rb +1 -1
  157. data/lib/puppet/pops/utils.rb +2 -2
  158. data/lib/puppet/pops/validation/checker4_0.rb +6 -2
  159. data/lib/puppet/provider/group/groupadd.rb +3 -1
  160. data/lib/puppet/provider/group/windows_adsi.rb +4 -7
  161. data/lib/puppet/provider/nameservice.rb +3 -3
  162. data/lib/puppet/provider/package/pacman.rb +4 -4
  163. data/lib/puppet/provider/package/pip.rb +3 -3
  164. data/lib/puppet/provider/package/pkgdmg.rb +3 -3
  165. data/lib/puppet/provider/package/pkgutil.rb +2 -2
  166. data/lib/puppet/provider/package/portage.rb +9 -9
  167. data/lib/puppet/provider/package/zypper.rb +2 -2
  168. data/lib/puppet/provider/service/base.rb +1 -1
  169. data/lib/puppet/provider/service/smf.rb +3 -2
  170. data/lib/puppet/provider/service/systemd.rb +1 -1
  171. data/lib/puppet/provider/user/useradd.rb +6 -2
  172. data/lib/puppet/provider/user/windows_adsi.rb +1 -1
  173. data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
  174. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  175. data/lib/puppet/reference/configuration.rb +2 -0
  176. data/lib/puppet/reference/type.rb +11 -11
  177. data/lib/puppet/resource.rb +1 -1
  178. data/lib/puppet/resource/capability_finder.rb +5 -5
  179. data/lib/puppet/resource/catalog.rb +6 -3
  180. data/lib/puppet/resource/status.rb +9 -2
  181. data/lib/puppet/resource/type.rb +1 -1
  182. data/lib/puppet/settings.rb +31 -19
  183. data/lib/puppet/settings/base_setting.rb +5 -0
  184. data/lib/puppet/settings/config_file.rb +1 -1
  185. data/lib/puppet/settings/ttl_setting.rb +5 -0
  186. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  187. data/lib/puppet/ssl/certificate_request.rb +0 -2
  188. data/lib/puppet/syntax_checkers/json.rb +1 -1
  189. data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
  190. data/lib/puppet/transaction/event.rb +1 -1
  191. data/lib/puppet/transaction/report.rb +18 -12
  192. data/lib/puppet/type.rb +9 -13
  193. data/lib/puppet/type/augeas.rb +2 -2
  194. data/lib/puppet/type/cron.rb +11 -6
  195. data/lib/puppet/type/exec.rb +1 -1
  196. data/lib/puppet/type/file.rb +4 -5
  197. data/lib/puppet/type/host.rb +1 -1
  198. data/lib/puppet/type/k5login.rb +30 -54
  199. data/lib/puppet/type/package.rb +3 -3
  200. data/lib/puppet/type/schedule.rb +12 -12
  201. data/lib/puppet/type/scheduled_task.rb +2 -2
  202. data/lib/puppet/type/ssh_authorized_key.rb +5 -5
  203. data/lib/puppet/type/sshkey.rb +2 -2
  204. data/lib/puppet/type/tidy.rb +1 -1
  205. data/lib/puppet/type/user.rb +1 -1
  206. data/lib/puppet/type/yumrepo.rb +26 -5
  207. data/lib/puppet/util.rb +0 -4
  208. data/lib/puppet/util/backups.rb +1 -1
  209. data/lib/puppet/util/inifile.rb +3 -4
  210. data/lib/puppet/util/json.rb +68 -0
  211. data/lib/puppet/util/json_lockfile.rb +3 -3
  212. data/lib/puppet/util/log.rb +2 -5
  213. data/lib/puppet/util/log/destinations.rb +2 -2
  214. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  215. data/lib/puppet/util/plist.rb +1 -1
  216. data/lib/puppet/util/reference.rb +1 -8
  217. data/lib/puppet/util/tagging.rb +1 -1
  218. data/lib/puppet/util/warnings.rb +0 -2
  219. data/lib/puppet/util/windows/adsi.rb +15 -18
  220. data/lib/puppet/util/windows/com.rb +2 -1
  221. data/lib/puppet/util/windows/file.rb +2 -2
  222. data/lib/puppet/util/windows/principal.rb +7 -6
  223. data/lib/puppet/util/windows/sid.rb +60 -7
  224. data/lib/puppet/util/windows/taskscheduler.rb +0 -9
  225. data/lib/puppet/version.rb +1 -1
  226. data/lib/puppet_pal.rb +53 -48
  227. data/locales/ja/puppet.po +1357 -912
  228. data/locales/puppet.pot +549 -466
  229. data/man/man5/puppet.conf.5 +103 -20
  230. data/man/man8/puppet-agent.8 +6 -2
  231. data/man/man8/puppet-apply.8 +2 -2
  232. data/man/man8/puppet-ca.8 +1 -1
  233. data/man/man8/puppet-catalog.8 +1 -1
  234. data/man/man8/puppet-cert.8 +1 -1
  235. data/man/man8/puppet-certificate.8 +1 -1
  236. data/man/man8/puppet-certificate_request.8 +1 -1
  237. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  238. data/man/man8/puppet-config.8 +35 -1
  239. data/man/man8/puppet-describe.8 +1 -1
  240. data/man/man8/puppet-device.8 +33 -11
  241. data/man/man8/puppet-doc.8 +1 -1
  242. data/man/man8/puppet-epp.8 +34 -12
  243. data/man/man8/puppet-facts.8 +50 -1
  244. data/man/man8/puppet-filebucket.8 +38 -11
  245. data/man/man8/puppet-generate.8 +1 -1
  246. data/man/man8/puppet-help.8 +1 -1
  247. data/man/man8/puppet-key.8 +1 -1
  248. data/man/man8/puppet-lookup.8 +1 -1
  249. data/man/man8/puppet-man.8 +10 -4
  250. data/man/man8/puppet-master.8 +1 -1
  251. data/man/man8/puppet-module.8 +15 -6
  252. data/man/man8/puppet-node.8 +1 -1
  253. data/man/man8/puppet-parser.8 +31 -8
  254. data/man/man8/puppet-plugin.8 +1 -1
  255. data/man/man8/puppet-report.8 +1 -1
  256. data/man/man8/puppet-resource.8 +1 -1
  257. data/man/man8/puppet-script.8 +67 -0
  258. data/man/man8/puppet-status.8 +1 -1
  259. data/man/man8/puppet.8 +3 -3
  260. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
  261. data/spec/integration/application/apply_spec.rb +15 -15
  262. data/spec/integration/application/lookup_spec.rb +21 -0
  263. data/spec/integration/faces/config_spec.rb +16 -4
  264. data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
  265. data/spec/integration/parser/catalog_spec.rb +1 -1
  266. data/spec/integration/parser/collection_spec.rb +2 -2
  267. data/spec/integration/parser/compiler_spec.rb +17 -18
  268. data/spec/integration/parser/pcore_resource_spec.rb +2 -2
  269. data/spec/integration/parser/scope_spec.rb +2 -2
  270. data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
  271. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  272. data/spec/integration/ssl/key_spec.rb +1 -1
  273. data/spec/integration/transaction/report_spec.rb +3 -3
  274. data/spec/integration/transaction_spec.rb +0 -1
  275. data/spec/integration/type/file_spec.rb +10 -11
  276. data/spec/integration/type_spec.rb +1 -2
  277. data/spec/integration/util/windows/adsi_spec.rb +86 -1
  278. data/spec/integration/util/windows/principal_spec.rb +11 -2
  279. data/spec/integration/util/windows/security_spec.rb +2 -2
  280. data/spec/lib/matchers/json.rb +4 -4
  281. data/spec/lib/puppet_spec/language.rb +34 -35
  282. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  283. data/spec/shared_behaviours/file_server_terminus.rb +0 -2
  284. data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
  285. data/spec/spec_helper.rb +1 -1
  286. data/spec/unit/application/cert_spec.rb +21 -9
  287. data/spec/unit/application/device_spec.rb +96 -2
  288. data/spec/unit/application/face_base_spec.rb +2 -2
  289. data/spec/unit/application/lookup_spec.rb +0 -1
  290. data/spec/unit/configurer_spec.rb +14 -0
  291. data/spec/unit/confine_spec.rb +16 -0
  292. data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
  293. data/spec/unit/datatypes_spec.rb +49 -0
  294. data/spec/unit/environments_spec.rb +7 -0
  295. data/spec/unit/face/config_spec.rb +116 -12
  296. data/spec/unit/face/epp_face_spec.rb +53 -2
  297. data/spec/unit/face/facts_spec.rb +53 -0
  298. data/spec/unit/face/help_spec.rb +62 -69
  299. data/spec/unit/face/man_spec.rb +26 -0
  300. data/spec/unit/face/module/list_spec.rb +0 -1
  301. data/spec/unit/face/parser_spec.rb +78 -0
  302. data/spec/unit/file_bucket/dipper_spec.rb +0 -4
  303. data/spec/unit/file_serving/content_spec.rb +0 -1
  304. data/spec/unit/file_serving/fileset_spec.rb +0 -1
  305. data/spec/unit/file_serving/metadata_spec.rb +0 -1
  306. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
  307. data/spec/unit/forge_spec.rb +1 -2
  308. data/spec/unit/functions/assert_type_spec.rb +1 -1
  309. data/spec/unit/functions/empty_spec.rb +77 -0
  310. data/spec/unit/functions/epp_spec.rb +1 -1
  311. data/spec/unit/functions/flatten_spec.rb +31 -0
  312. data/spec/unit/functions/include_spec.rb +2 -2
  313. data/spec/unit/functions/inline_epp_spec.rb +1 -1
  314. data/spec/unit/functions/join_spec.rb +33 -0
  315. data/spec/unit/functions/keys_spec.rb +31 -0
  316. data/spec/unit/functions/length_spec.rb +50 -0
  317. data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
  318. data/spec/unit/functions/lookup_spec.rb +52 -0
  319. data/spec/unit/functions/shared.rb +1 -1
  320. data/spec/unit/functions/values_spec.rb +30 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +30 -32
  323. data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
  324. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
  325. data/spec/unit/indirector/facts/rest_spec.rb +45 -0
  326. data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
  327. data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
  328. data/spec/unit/indirector/indirection_spec.rb +1 -1
  329. data/spec/unit/indirector/node/ldap_spec.rb +2 -2
  330. data/spec/unit/indirector/request_spec.rb +0 -2
  331. data/spec/unit/indirector/rest_spec.rb +2 -2
  332. data/spec/unit/indirector_spec.rb +0 -1
  333. data/spec/unit/info_service_spec.rb +1 -1
  334. data/spec/unit/interface/action_manager_spec.rb +1 -1
  335. data/spec/unit/interface/action_spec.rb +1 -1
  336. data/spec/unit/module_spec.rb +0 -5
  337. data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
  338. data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
  339. data/spec/unit/network/formats_spec.rb +5 -13
  340. data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
  341. data/spec/unit/network/http/connection_spec.rb +1 -1
  342. data/spec/unit/network/http/handler_spec.rb +3 -2
  343. data/spec/unit/node/environment_spec.rb +1 -1
  344. data/spec/unit/node_spec.rb +3 -3
  345. data/spec/unit/parser/compiler_spec.rb +9 -2
  346. data/spec/unit/parser/environment_compiler_spec.rb +8 -8
  347. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  348. data/spec/unit/parser/functions/fail_spec.rb +1 -1
  349. data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
  350. data/spec/unit/parser/functions/realize_spec.rb +1 -1
  351. data/spec/unit/parser/resource_spec.rb +0 -1
  352. data/spec/unit/parser/scope_spec.rb +3 -3
  353. data/spec/unit/parser/type_loader_spec.rb +1 -1
  354. data/spec/unit/pops/adaptable_spec.rb +0 -1
  355. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
  356. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
  357. data/spec/unit/pops/factory_rspec_helper.rb +1 -1
  358. data/spec/unit/pops/factory_spec.rb +5 -5
  359. data/spec/unit/pops/issues_spec.rb +23 -8
  360. data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
  361. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  362. data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
  363. data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
  364. data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
  365. data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
  366. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
  367. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
  368. data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
  369. data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
  370. data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
  371. data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
  372. data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
  373. data/spec/unit/pops/pn_spec.rb +148 -0
  374. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  375. data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
  376. data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
  377. data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
  378. data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
  379. data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
  380. data/spec/unit/pops/types/string_converter_spec.rb +3 -3
  381. data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
  382. data/spec/unit/pops/validator/validator_spec.rb +3 -1
  383. data/spec/unit/property_spec.rb +2 -2
  384. data/spec/unit/provider/aixobject_spec.rb +1 -1
  385. data/spec/unit/provider/cron/crontab_spec.rb +3 -3
  386. data/spec/unit/provider/exec/posix_spec.rb +6 -6
  387. data/spec/unit/provider/group/groupadd_spec.rb +4 -4
  388. data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
  389. data/spec/unit/provider/ldap_spec.rb +0 -1
  390. data/spec/unit/provider/nameservice_spec.rb +5 -5
  391. data/spec/unit/provider/package/rpm_spec.rb +3 -4
  392. data/spec/unit/provider/package/yum_spec.rb +6 -2
  393. data/spec/unit/provider/parsedfile_spec.rb +1 -1
  394. data/spec/unit/provider/service/base_spec.rb +2 -4
  395. data/spec/unit/provider/service/init_spec.rb +2 -2
  396. data/spec/unit/provider/service/openrc_spec.rb +2 -2
  397. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  398. data/spec/unit/provider/service/smf_spec.rb +2 -0
  399. data/spec/unit/provider/service/systemd_spec.rb +3 -3
  400. data/spec/unit/provider/service/upstart_spec.rb +7 -7
  401. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
  402. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
  403. data/spec/unit/provider/user/useradd_spec.rb +15 -9
  404. data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
  405. data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
  406. data/spec/unit/puppet_pal_2pec.rb +4 -5
  407. data/spec/unit/resource/catalog_spec.rb +8 -3
  408. data/spec/unit/resource/status_spec.rb +15 -4
  409. data/spec/unit/resource/type_spec.rb +2 -3
  410. data/spec/unit/settings_spec.rb +9 -4
  411. data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
  412. data/spec/unit/ssl/certificate_request_spec.rb +1 -2
  413. data/spec/unit/transaction/report_spec.rb +41 -0
  414. data/spec/unit/transaction_spec.rb +1 -1
  415. data/spec/unit/type/exec_spec.rb +7 -9
  416. data/spec/unit/type/file/selinux_spec.rb +0 -1
  417. data/spec/unit/type/file_spec.rb +4 -3
  418. data/spec/unit/type/k5login_spec.rb +79 -10
  419. data/spec/unit/type/mount_spec.rb +1 -1
  420. data/spec/unit/type/nagios_spec.rb +6 -6
  421. data/spec/unit/type/user_spec.rb +1 -1
  422. data/spec/unit/type/yumrepo_spec.rb +18 -0
  423. data/spec/unit/type/zfs_spec.rb +1 -1
  424. data/spec/unit/type_spec.rb +14 -15
  425. data/spec/unit/util/docs_spec.rb +1 -1
  426. data/spec/unit/util/execution_spec.rb +0 -1
  427. data/spec/unit/util/inifile_spec.rb +35 -4
  428. data/spec/unit/util/log/destinations_spec.rb +2 -2
  429. data/spec/unit/util/log_spec.rb +6 -5
  430. data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
  431. data/spec/unit/util/plist_spec.rb +3 -3
  432. data/spec/unit/util/selinux_spec.rb +2 -2
  433. data/spec/unit/util/tagging_spec.rb +1 -7
  434. data/spec/unit/util/windows/adsi_spec.rb +31 -27
  435. data/spec/unit/util/windows/sid_spec.rb +86 -15
  436. data/spec/unit/util_spec.rb +2 -2
  437. data/spec/watchr.rb +0 -1
  438. data/tasks/benchmark.rake +37 -0
  439. data/tasks/manpages.rake +1 -1
  440. metadata +83 -11
  441. checksums.yaml +0 -7
@@ -7,7 +7,7 @@
7
7
 
8
8
  require 'net/http'
9
9
  require 'cgi'
10
- require 'json'
10
+ require 'puppet/util/json'
11
11
 
12
12
  # @api private
13
13
  module Puppet::Resource::CapabilityFinder
@@ -92,7 +92,7 @@ module Puppet::Resource::CapabilityFinder
92
92
  response = Puppet::Util::Puppetdb::Http.action(url) do |conn, uri|
93
93
  conn.get(uri, { 'Accept' => 'application/json'})
94
94
  end
95
- JSON.parse(response.body)
95
+ Puppet::Util::Json.load(response.body)
96
96
  end
97
97
 
98
98
  # The format of the response body is documented at
@@ -104,14 +104,12 @@ module Puppet::Resource::CapabilityFinder
104
104
  end
105
105
 
106
106
  result
107
- rescue JSON::JSONError => e
107
+ rescue Puppet::Util::Json::ParseError => e
108
108
  #TRANSLATOR PuppetDB is a product name and should not be translated
109
109
  raise Puppet::DevError, _("Invalid JSON from PuppetDB when looking up %{capability}\n%{detail}") % { capability: cap, detail: e }
110
110
  end
111
111
  end
112
112
 
113
- private
114
-
115
113
  # Find a distinct copy of the given capability resource by searching for only
116
114
  # resources matching the given code_id. Returns `nil` if no code_id is
117
115
  # supplied or if there isn't exactly one matching resource.
@@ -132,6 +130,7 @@ module Puppet::Resource::CapabilityFinder
132
130
  end
133
131
  end
134
132
  end
133
+ private_class_method :disambiguate_by_code_id
135
134
 
136
135
  def self.instantiate_resource(resource_hash)
137
136
  real_type = resource_hash['type']
@@ -147,4 +146,5 @@ module Puppet::Resource::CapabilityFinder
147
146
  end
148
147
  return resource
149
148
  end
149
+ private_class_method :instantiate_resource
150
150
  end
@@ -235,7 +235,10 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
235
235
 
236
236
  begin
237
237
  transaction.report.as_logging_destination do
238
- transaction.evaluate
238
+ transaction_evaluate_time = Puppet::Util.thinmark do
239
+ transaction.evaluate
240
+ end
241
+ transaction.report.add_times(:transaction_evaluation, transaction_evaluate_time)
239
242
  end
240
243
  ensure
241
244
  # Don't try to store state unless we're a host config
@@ -595,7 +598,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
595
598
  transaction = Puppet::Transaction.new(self, options[:report], prioritizer)
596
599
  transaction.tags = options[:tags] if options[:tags]
597
600
  transaction.ignoreschedules = true if options[:ignoreschedules]
598
- transaction.for_network_device = options[:network_device]
601
+ transaction.for_network_device = Puppet.lookup(:network_device) { nil } || options[:network_device]
599
602
 
600
603
  transaction
601
604
  end
@@ -671,7 +674,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
671
674
  map.clear
672
675
 
673
676
  result.add_class(*self.classes)
674
- result.tag(*self.tags)
677
+ result.merge_tags_from(self)
675
678
 
676
679
  result
677
680
  end
@@ -31,7 +31,7 @@ module Puppet
31
31
 
32
32
  # Boolean status types set while evaluating `@real_resource`.
33
33
  STATES = [:skipped, :failed, :failed_to_restart, :restarted, :changed, :out_of_sync, :scheduled, :corrective_change]
34
- attr_accessor *STATES
34
+ attr_accessor(*STATES)
35
35
 
36
36
  # @!attribute [r] source_description
37
37
  # @return [String] The textual description of the path to `@real_resource`
@@ -74,6 +74,10 @@ module Puppet
74
74
  # @return [String] The class name of `@real_resource`
75
75
  attr_reader :resource_type
76
76
 
77
+ # @!attribute [rw] provider_used
78
+ # @return [String] The class name of the provider used for the resource
79
+ attr_accessor :provider_used
80
+
77
81
  # @!attribute [r] title
78
82
  # @return [String] The title of `@real_resource`
79
83
  attr_reader :title
@@ -163,15 +167,17 @@ module Puppet
163
167
  @file = resource.file
164
168
  @line = resource.line
165
169
 
166
- tag(*resource.tags)
170
+ merge_tags_from(resource)
167
171
  @time = Time.now
168
172
  @events = []
169
173
  @resource_type = resource.type.to_s.capitalize
174
+ @provider_used = resource.provider.class.name.to_s unless resource.provider.nil?
170
175
  @title = resource.title
171
176
  end
172
177
 
173
178
  def initialize_from_hash(data)
174
179
  @resource_type = data['resource_type']
180
+ @provider_used = data['provider_used']
175
181
  @title = data['title']
176
182
  @resource = data['resource']
177
183
  @containment_path = data['containment_path']
@@ -201,6 +207,7 @@ module Puppet
201
207
  'line' => @line,
202
208
  'resource' => @resource,
203
209
  'resource_type' => @resource_type,
210
+ 'provider_used' => @provider_used,
204
211
  'containment_path' => @containment_path,
205
212
  'evaluation_time' => @evaluation_time,
206
213
  'tags' => @tags.to_a,
@@ -258,7 +258,7 @@ class Puppet::Resource::Type
258
258
  end
259
259
 
260
260
  if ['Class', 'Node'].include? resource.type
261
- scope.catalog.tag(*resource.tags)
261
+ scope.catalog.merge_tags_from(resource)
262
262
  end
263
263
  end
264
264
 
@@ -1296,31 +1296,43 @@ Generated on #{Time.now}.
1296
1296
  # @api public
1297
1297
  def interpolate(name)
1298
1298
  setting = @defaults[name]
1299
+ return nil unless setting
1299
1300
 
1300
- if setting
1301
- val = lookup(name)
1302
- # if we interpolate code, all hell breaks loose.
1303
- if name == :code
1304
- val
1305
- else
1306
- # Convert it if necessary
1307
- begin
1308
- val = convert(val, name)
1309
- rescue InterpolationError => err
1310
- # This happens because we don't have access to the param name when the
1311
- # exception is originally raised, but we want it in the message
1312
- raise InterpolationError, _("Error converting value for param '%{name}': %{detail}") % { name: name, detail: err }, err.backtrace
1313
- end
1301
+ lookup_and_convert(name) do |val|
1302
+ setting.munge(val)
1303
+ end
1304
+ end
1314
1305
 
1315
- setting.munge(val)
1316
- end
1317
- else
1318
- nil
1306
+ def print(name)
1307
+ setting = @defaults[name]
1308
+ return nil unless setting
1309
+
1310
+ lookup_and_convert(name) do |val|
1311
+ setting.print(val)
1319
1312
  end
1320
1313
  end
1321
1314
 
1322
1315
  private
1323
1316
 
1317
+ def lookup_and_convert(name, &block)
1318
+ val = lookup(name)
1319
+ # if we interpolate code, all hell breaks loose.
1320
+ if name == :code
1321
+ val
1322
+ else
1323
+ # Convert it if necessary
1324
+ begin
1325
+ val = convert(val, name)
1326
+ rescue InterpolationError => err
1327
+ # This happens because we don't have access to the param name when the
1328
+ # exception is originally raised, but we want it in the message
1329
+ raise InterpolationError, _("Error converting value for param '%{name}': %{detail}") % { name: name, detail: err }, err.backtrace
1330
+ end
1331
+
1332
+ yield val
1333
+ end
1334
+ end
1335
+
1324
1336
  def convert(value, setting_name)
1325
1337
  case value
1326
1338
  when nil
@@ -1397,7 +1409,7 @@ Generated on #{Time.now}.
1397
1409
  @values[name] = old_value
1398
1410
  raise e
1399
1411
  end
1400
- end
1412
+ end
1401
1413
 
1402
1414
  def inspect
1403
1415
  %Q{<#{self.class}:#{self.object_id} @name="#{@name}" @values="#{@values}">}
@@ -157,6 +157,11 @@ class Puppet::Settings::BaseSetting
157
157
  value
158
158
  end
159
159
 
160
+ # Print the value for the user in a config compatible format
161
+ def print(value)
162
+ munge(value)
163
+ end
164
+
160
165
  def set_meta(meta)
161
166
  Puppet.notice("#{name} does not support meta data. Ignoring.")
162
167
  end
@@ -131,7 +131,7 @@ private
131
131
  value = string.sub(/\{\s*([^}]+)\s*\}/) do
132
132
  params = $1
133
133
  params.split(/\s*,\s*/).each do |str|
134
- if str =~ /^\s*(\w+)\s*=\s*([\w\d]+)\s*$/
134
+ if str =~ /^\s*(\w+)\s*=\s*([\w]+)\s*$/
135
135
  param, value = $1.intern, $2
136
136
  result[param] = value
137
137
  unless [:owner, :mode, :group].include?(param)
@@ -25,6 +25,11 @@ class Puppet::Settings::TTLSetting < Puppet::Settings::BaseSetting
25
25
  self.class.munge(value, @name)
26
26
  end
27
27
 
28
+ def print(value)
29
+ val = munge(value)
30
+ val == Float::INFINITY ? 'unlimited' : val
31
+ end
32
+
28
33
  # Convert the value to Numeric, parsing numeric string with units if necessary.
29
34
  def self.munge(value, param_name)
30
35
  case
@@ -54,8 +54,6 @@ module Puppet::SSL::CertificateFactory
54
54
  return cert
55
55
  end
56
56
 
57
- private
58
-
59
57
  # Add X509v3 extensions to the given certificate.
60
58
  #
61
59
  # @param cert [OpenSSL::X509::Certificate] The certificate to add the
@@ -114,6 +112,7 @@ module Puppet::SSL::CertificateFactory
114
112
  generate_extension(ef, oid, *val)
115
113
  end
116
114
  end
115
+ private_class_method :add_extensions_to
117
116
 
118
117
  # Woot! We're a CA.
119
118
  def self.build_ca_extensions
@@ -216,4 +215,5 @@ module Puppet::SSL::CertificateFactory
216
215
  OpenSSL::X509::Extension.new(oid, OpenSSL::ASN1::UTF8String.new(val).to_der, crit)
217
216
  end
218
217
  end
218
+ private_class_method :generate_extension
219
219
  end
@@ -238,8 +238,6 @@ DOC
238
238
  end
239
239
  end
240
240
 
241
- private
242
-
243
241
  PRIVATE_EXTENSIONS = [
244
242
  'subjectAltName', '2.5.29.17',
245
243
  ]
@@ -20,7 +20,7 @@ class Puppet::SyntaxCheckers::Json < Puppet::Plugins::SyntaxCheckers::SyntaxChec
20
20
  #raise ArgumentError.new("Json syntax checker: location_info must be a Hash") unless location_info.is_a?(Hash)
21
21
 
22
22
  begin
23
- JSON.parse(text)
23
+ Puppet::Util::Json.load(text)
24
24
  rescue => e
25
25
  # Cap the message to 100 chars and replace newlines
26
26
  msg = _("JSON syntax checker: Cannot parse invalid JSON string. \"%{message}\"") % { message: e.message().slice(0,100).gsub(/\r?\n/, "\\n") }
@@ -86,7 +86,7 @@ class Puppet::Transaction::AdditionalResourceGenerator
86
86
  # tags such as the type name to support implicit filtering as well as
87
87
  # explicit. Note that resource#tags returns a duplicate of the resource's
88
88
  # tags.
89
- sentinel.tag(*resource.tags)
89
+ sentinel.merge_tags_from(resource)
90
90
  priority = @prioritizer.generate_priority_contained_in(resource, sentinel)
91
91
  @relationship_graph.add_vertex(sentinel, priority)
92
92
 
@@ -131,7 +131,7 @@ class Puppet::Transaction::AdditionalResourceGenerator
131
131
 
132
132
  def add_resource(res, parent_resource, priority=nil)
133
133
  if @catalog.resource(res.ref).nil?
134
- res.tag(*parent_resource.tags)
134
+ res.merge_tags_from(parent_resource)
135
135
  if parent_resource.depthfirst?
136
136
  @catalog.add_resource_before(parent_resource, res)
137
137
  else
@@ -12,7 +12,7 @@ class Puppet::Transaction::Event
12
12
  include Puppet::Network::FormatSupport
13
13
 
14
14
  ATTRIBUTES = [:name, :resource, :property, :previous_value, :desired_value, :historical_value, :status, :message, :file, :line, :source_description, :audited, :invalidate_refreshes, :redacted, :corrective_change]
15
- attr_accessor *ATTRIBUTES
15
+ attr_accessor(*ATTRIBUTES)
16
16
  attr_accessor :time
17
17
  attr_reader :default_log_level
18
18
 
@@ -134,6 +134,8 @@ class Puppet::Transaction::Report
134
134
  #
135
135
  attr_accessor :transaction_completed
136
136
 
137
+ TOTAL = "total".freeze
138
+
137
139
  def self.from_data_hash(data)
138
140
  obj = self.allocate
139
141
  obj.initialize_from_hash(data)
@@ -151,8 +153,12 @@ class Puppet::Transaction::Report
151
153
  end
152
154
 
153
155
  # @api private
154
- def add_times(name, value)
155
- @external_times[name] = value
156
+ def add_times(name, value, accumulate = true)
157
+ if @external_times[name] && accumulate
158
+ @external_times[name] += value
159
+ else
160
+ @external_times[name] = value
161
+ end
156
162
  end
157
163
 
158
164
  # @api private
@@ -204,7 +210,7 @@ class Puppet::Transaction::Report
204
210
  resource_metrics = add_metric(:resources, calculate_resource_metrics)
205
211
  add_metric(:time, calculate_time_metrics)
206
212
  change_metric = calculate_change_metric
207
- add_metric(:changes, {"total" => change_metric})
213
+ add_metric(:changes, {TOTAL => change_metric})
208
214
  add_metric(:events, calculate_event_metrics)
209
215
  @status = compute_status(resource_metrics, change_metric)
210
216
  @noop_pending = @resource_statuses.any? { |name,res| has_noop_events?(res) }
@@ -218,7 +224,7 @@ class Puppet::Transaction::Report
218
224
  @external_times ||= {}
219
225
  @host = Puppet[:node_name_value]
220
226
  @time = Time.now
221
- @report_format = 8
227
+ @report_format = 9
222
228
  @puppet_version = Puppet.version
223
229
  @configuration_version = configuration_version
224
230
  @transaction_uuid = transaction_uuid
@@ -345,9 +351,9 @@ class Puppet::Transaction::Report
345
351
 
346
352
  report[key].keys.sort { |a,b|
347
353
  # sort by label
348
- if a == :total
354
+ if a == TOTAL
349
355
  1
350
- elsif b == :total
356
+ elsif b == TOTAL
351
357
  -1
352
358
  else
353
359
  report[key][a].to_s <=> report[key][b].to_s
@@ -375,7 +381,7 @@ class Puppet::Transaction::Report
375
381
  metric.values.each do |metric_name, label, value|
376
382
  report[key][metric_name.to_s] = value
377
383
  end
378
- report[key]["total"] = 0 unless key == "time" or report[key].include?("total")
384
+ report[key][TOTAL] = 0 unless key == "time" or report[key].include?(TOTAL)
379
385
  end
380
386
  (report["time"] ||= {})["last_run"] = Time.now.tv_sec
381
387
  report
@@ -393,10 +399,10 @@ class Puppet::Transaction::Report
393
399
  #
394
400
  def exit_status
395
401
  status = 0
396
- if @metrics["changes"] && @metrics["changes"]["total"] &&
402
+ if @metrics["changes"] && @metrics["changes"][TOTAL] &&
397
403
  @metrics["resources"] && @metrics["resources"]["failed"] &&
398
404
  @metrics["resources"]["failed_to_restart"]
399
- status |= 2 if @metrics["changes"]["total"] > 0
405
+ status |= 2 if @metrics["changes"][TOTAL] > 0
400
406
  status |= 4 if @metrics["resources"]["failed"] > 0
401
407
  status |= 4 if @metrics["resources"]["failed_to_restart"] > 0
402
408
  else
@@ -422,7 +428,7 @@ class Puppet::Transaction::Report
422
428
  metrics = Hash.new(0)
423
429
  %w{total failure success}.each { |m| metrics[m] = 0 }
424
430
  resource_statuses.each do |name, status|
425
- metrics["total"] += status.events.length
431
+ metrics[TOTAL] += status.events.length
426
432
  status.events.each do |event|
427
433
  metrics[event.status] += 1
428
434
  end
@@ -433,7 +439,7 @@ class Puppet::Transaction::Report
433
439
 
434
440
  def calculate_resource_metrics
435
441
  metrics = {}
436
- metrics["total"] = resource_statuses.length
442
+ metrics[TOTAL] = resource_statuses.length
437
443
 
438
444
  # force every resource key in the report to be present
439
445
  # even if no resources is in this given state
@@ -461,7 +467,7 @@ class Puppet::Transaction::Report
461
467
  metrics[name.to_s.downcase] = value
462
468
  end
463
469
 
464
- metrics["total"] = metrics.values.inject(0) { |a,b| a+b }
470
+ metrics[TOTAL] = metrics.values.inject(0) { |a,b| a+b }
465
471
 
466
472
  metrics
467
473
  end
@@ -391,7 +391,7 @@ class Type
391
391
  @key_attributes_cache ||= key_attribute_parameters.collect { |p| p.name }
392
392
  end
393
393
 
394
- # Returns a mapping from the title string to setting of attribute value(s).
394
+ # Returns a mapping from the title string to setting of attribute values.
395
395
  # This default implementation provides a mapping of title to the one and only _namevar_ present
396
396
  # in the type's definition.
397
397
  # @note Advanced: some logic requires this mapping to be done differently, using a different
@@ -1474,7 +1474,7 @@ class Type
1474
1474
  @subclasses << sub
1475
1475
  end
1476
1476
 
1477
- # @return [Array<Puppet::Resource>] turns attribute value(s) into list of resources
1477
+ # @return [Array<Puppet::Resource>] turns attribute values into list of resources
1478
1478
  def munge(references)
1479
1479
  references = [references] unless references.is_a?(Array)
1480
1480
  references.collect do |ref|
@@ -1582,7 +1582,7 @@ class Type
1582
1582
  Multiple resources can be specified as an array of references. When this
1583
1583
  attribute is present:
1584
1584
 
1585
- * The required resource(s) will be applied **before** this resource.
1585
+ * The required resources will be applied **before** this resource.
1586
1586
 
1587
1587
  This is one of the four relationship metaparameters, along with
1588
1588
  `before`, `notify`, and `subscribe`. For more context, including the
@@ -1596,7 +1596,7 @@ class Type
1596
1596
  Multiple resources can be specified as an array of references. When this
1597
1597
  attribute is present:
1598
1598
 
1599
- * The subscribed resource(s) will be applied _before_ this resource.
1599
+ * The subscribed resources will be applied _before_ this resource.
1600
1600
  * If Puppet makes changes to any of the subscribed resources, it will cause
1601
1601
  this resource to _refresh._ (Refresh behavior varies by resource
1602
1602
  type: services will restart, mounts will unmount and re-mount, etc. Not
@@ -1614,7 +1614,7 @@ class Type
1614
1614
  Multiple resources can be specified as an array of references. When this
1615
1615
  attribute is present:
1616
1616
 
1617
- * This resource will be applied _before_ the dependent resource(s).
1617
+ * This resource will be applied _before_ the dependent resources.
1618
1618
 
1619
1619
  This is one of the four relationship metaparameters, along with
1620
1620
  `require`, `notify`, and `subscribe`. For more context, including the
@@ -1628,7 +1628,7 @@ class Type
1628
1628
  Multiple resources can be specified as an array of references. When this
1629
1629
  attribute is present:
1630
1630
 
1631
- * This resource will be applied _before_ the notified resource(s).
1631
+ * This resource will be applied _before_ the notified resources.
1632
1632
  * If Puppet makes changes to this resource, it will cause all of the
1633
1633
  notified resources to _refresh._ (Refresh behavior varies by resource
1634
1634
  type: services will restart, mounts will unmount and re-mount, etc. Not
@@ -1700,7 +1700,7 @@ The value of this parameter must be a reference to a capability resource,
1700
1700
  or an array of such references. Each capability resource referenced here
1701
1701
  must have been exported by another resource in the same environment.
1702
1702
 
1703
- The referenced capability resource(s) will be looked up, added to the
1703
+ The referenced capability resources will be looked up, added to the
1704
1704
  current node catalog, and processed following the underlying consumes
1705
1705
  clause.
1706
1706
 
@@ -2232,8 +2232,6 @@ end
2232
2232
 
2233
2233
  # class methods dealing with Type management
2234
2234
 
2235
- public
2236
-
2237
2235
  # The Type class attribute accessors
2238
2236
  class << self
2239
2237
  # @return [String] the name of the resource type; e.g., "File"
@@ -2343,8 +2341,6 @@ end
2343
2341
  # instance methods related to instance intrinsics
2344
2342
  # e.g., initialize and name
2345
2343
 
2346
- public
2347
-
2348
2344
  # @return [Hash] hash of parameters originally defined
2349
2345
  # @api private
2350
2346
  attr_reader :original_parameters
@@ -2388,7 +2384,7 @@ end
2388
2384
  end
2389
2385
  end
2390
2386
 
2391
- @tags = resource.tags
2387
+ merge_tags_from(resource)
2392
2388
 
2393
2389
  @original_parameters = resource.to_hash
2394
2390
 
@@ -2632,7 +2628,7 @@ end
2632
2628
  #
2633
2629
  def to_resource
2634
2630
  resource = self.retrieve_resource
2635
- resource.tag(*self.tags)
2631
+ resource.merge_tags_from(self)
2636
2632
 
2637
2633
  @parameters.each do |name, param|
2638
2634
  # Avoid adding each instance name twice