puppet 4.5.3-x86-mingw32 → 4.6.1-x86-mingw32

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

Potentially problematic release.


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

Files changed (422) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +10 -1
  3. data/ext/debian/control +2 -4
  4. data/ext/project_data.yaml +4 -4
  5. data/install.rb +6 -2
  6. data/lib/puppet.rb +3 -1
  7. data/lib/puppet/agent/locker.rb +1 -1
  8. data/lib/puppet/application.rb +6 -4
  9. data/lib/puppet/application/agent.rb +2 -1
  10. data/lib/puppet/application/cert.rb +35 -2
  11. data/lib/puppet/application/device.rb +1 -1
  12. data/lib/puppet/application/generate.rb +5 -0
  13. data/lib/puppet/application/lookup.rb +3 -3
  14. data/lib/puppet/application_support.rb +1 -1
  15. data/lib/puppet/compilable_resource_type.rb +15 -0
  16. data/lib/puppet/configurer.rb +67 -10
  17. data/lib/puppet/configurer/plugin_handler.rb +2 -4
  18. data/lib/puppet/data_providers/hiera_config.rb +1 -1
  19. data/lib/puppet/defaults.rb +34 -7
  20. data/lib/puppet/environments.rb +4 -2
  21. data/lib/puppet/error.rb +1 -1
  22. data/lib/puppet/external/dot.rb +1 -1
  23. data/lib/puppet/face/ca.rb +4 -1
  24. data/lib/puppet/face/certificate.rb +7 -1
  25. data/lib/puppet/face/epp.rb +5 -5
  26. data/lib/puppet/face/generate.rb +64 -0
  27. data/lib/puppet/face/help.rb +19 -13
  28. data/lib/puppet/face/man.rb +1 -1
  29. data/lib/puppet/feature/external_facts.rb +1 -1
  30. data/lib/puppet/file_system.rb +16 -0
  31. data/lib/puppet/file_system/file_impl.rb +5 -0
  32. data/lib/puppet/file_system/memory_impl.rb +4 -0
  33. data/lib/puppet/file_system/path_pattern.rb +1 -0
  34. data/lib/puppet/file_system/windows.rb +19 -0
  35. data/lib/puppet/functions.rb +3 -5
  36. data/lib/puppet/functions/assert_type.rb +1 -1
  37. data/lib/puppet/functions/defined.rb +7 -5
  38. data/lib/puppet/functions/dig.rb +2 -18
  39. data/lib/puppet/functions/hiera.rb +1 -1
  40. data/lib/puppet/functions/lest.rb +1 -37
  41. data/lib/puppet/functions/new.rb +2 -473
  42. data/lib/puppet/functions/reverse_each.rb +2 -59
  43. data/lib/puppet/functions/scanf.rb +4 -4
  44. data/lib/puppet/functions/step.rb +1 -63
  45. data/lib/puppet/functions/then.rb +1 -61
  46. data/lib/puppet/functions/type.rb +1 -40
  47. data/lib/puppet/functions/unwrap.rb +40 -0
  48. data/lib/puppet/generate/models/type/property.rb +70 -0
  49. data/lib/puppet/generate/models/type/type.rb +57 -0
  50. data/lib/puppet/generate/templates/type/pcore.erb +41 -0
  51. data/lib/puppet/generate/type.rb +239 -0
  52. data/lib/puppet/graph/simple_graph.rb +2 -6
  53. data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
  54. data/lib/puppet/indirector/facts/facter.rb +1 -1
  55. data/lib/puppet/indirector/key/ca.rb +2 -2
  56. data/lib/puppet/indirector/request.rb +25 -4
  57. data/lib/puppet/indirector/rest.rb +73 -3
  58. data/lib/puppet/info_service/class_information_service.rb +1 -2
  59. data/lib/puppet/interface/documentation.rb +1 -1
  60. data/lib/puppet/loaders.rb +2 -0
  61. data/lib/puppet/metatype/manager.rb +6 -6
  62. data/lib/puppet/module.rb +8 -1
  63. data/lib/puppet/module_tool.rb +2 -2
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +2 -2
  66. data/lib/puppet/module_tool/metadata.rb +1 -1
  67. data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
  68. data/lib/puppet/network/http/rack/rest.rb +15 -1
  69. data/lib/puppet/network/rights.rb +1 -11
  70. data/lib/puppet/node/environment.rb +7 -3
  71. data/lib/puppet/node/facts.rb +1 -1
  72. data/lib/puppet/parameter.rb +23 -3
  73. data/lib/puppet/parameter/boolean.rb +1 -1
  74. data/lib/puppet/parameter/value.rb +1 -1
  75. data/lib/puppet/parser.rb +0 -1
  76. data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
  77. data/lib/puppet/parser/ast/resource.rb +5 -0
  78. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  79. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  80. data/lib/puppet/parser/compiler.rb +14 -17
  81. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
  82. data/lib/puppet/parser/environment_compiler.rb +10 -0
  83. data/lib/puppet/parser/functions/create_resources.rb +39 -24
  84. data/lib/puppet/parser/functions/defined.rb +2 -26
  85. data/lib/puppet/parser/functions/dig.rb +29 -0
  86. data/lib/puppet/parser/functions/lest.rb +49 -0
  87. data/lib/puppet/parser/functions/new.rb +530 -0
  88. data/lib/puppet/parser/functions/require.rb +1 -1
  89. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  90. data/lib/puppet/parser/functions/scanf.rb +4 -4
  91. data/lib/puppet/parser/functions/step.rb +84 -0
  92. data/lib/puppet/parser/functions/then.rb +73 -0
  93. data/lib/puppet/parser/functions/type.rb +53 -0
  94. data/lib/puppet/parser/resource.rb +16 -7
  95. data/lib/puppet/parser/scope.rb +36 -28
  96. data/lib/puppet/parser/type_loader.rb +1 -1
  97. data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
  98. data/lib/puppet/pops.rb +13 -0
  99. data/lib/puppet/pops/adapters.rb +49 -49
  100. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
  101. data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
  102. data/lib/puppet/pops/evaluator/closure.rb +39 -13
  103. data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
  104. data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
  105. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  106. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
  107. data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
  108. data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
  109. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  110. data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
  111. data/lib/puppet/pops/functions/function.rb +5 -0
  112. data/lib/puppet/pops/issues.rb +1 -1
  113. data/lib/puppet/pops/label_provider.rb +2 -2
  114. data/lib/puppet/pops/loader/base_loader.rb +12 -15
  115. data/lib/puppet/pops/loader/loader.rb +15 -50
  116. data/lib/puppet/pops/loader/loader_paths.rb +28 -2
  117. data/lib/puppet/pops/loader/module_loaders.rb +16 -1
  118. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  119. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
  120. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
  121. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
  123. data/lib/puppet/pops/loader/static_loader.rb +55 -0
  124. data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
  125. data/lib/puppet/pops/loader/typed_name.rb +50 -0
  126. data/lib/puppet/pops/loaders.rb +64 -19
  127. data/lib/puppet/pops/merge_strategy.rb +7 -7
  128. data/lib/puppet/pops/migration/migration_checker.rb +4 -0
  129. data/lib/puppet/pops/model/model_label_provider.rb +2 -0
  130. data/lib/puppet/pops/parser/egrammar.ra +8 -5
  131. data/lib/puppet/pops/parser/eparser.rb +1550 -1498
  132. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  133. data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
  134. data/lib/puppet/pops/parser/lexer2.rb +14 -1
  135. data/lib/puppet/pops/parser/locator.rb +30 -1
  136. data/lib/puppet/pops/parser/parser_support.rb +0 -3
  137. data/lib/puppet/pops/parser/slurp_support.rb +3 -3
  138. data/lib/puppet/pops/patterns.rb +9 -1
  139. data/lib/puppet/pops/pcore.rb +67 -11
  140. data/lib/puppet/pops/puppet_stack.rb +43 -0
  141. data/lib/puppet/pops/resource/param.rb +51 -0
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
  143. data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
  144. data/lib/puppet/pops/serialization.rb +17 -0
  145. data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
  146. data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
  147. data/lib/puppet/pops/serialization/deserializer.rb +60 -0
  148. data/lib/puppet/pops/serialization/extension.rb +126 -0
  149. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  150. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  151. data/lib/puppet/pops/serialization/json.rb +247 -0
  152. data/lib/puppet/pops/serialization/object.rb +63 -0
  153. data/lib/puppet/pops/serialization/rgen.rb +151 -0
  154. data/lib/puppet/pops/serialization/serializer.rb +91 -0
  155. data/lib/puppet/pops/serialization/time_factory.rb +66 -0
  156. data/lib/puppet/pops/types/annotatable.rb +36 -0
  157. data/lib/puppet/pops/types/implementation_registry.rb +3 -8
  158. data/lib/puppet/pops/types/p_meta_type.rb +83 -0
  159. data/lib/puppet/pops/types/p_object_type.rb +110 -117
  160. data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
  161. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
  162. data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
  163. data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
  164. data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
  165. data/lib/puppet/pops/types/puppet_object.rb +0 -5
  166. data/lib/puppet/pops/types/ruby_generator.rb +9 -2
  167. data/lib/puppet/pops/types/type_calculator.rb +6 -1
  168. data/lib/puppet/pops/types/type_factory.rb +14 -12
  169. data/lib/puppet/pops/types/type_formatter.rb +78 -33
  170. data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
  171. data/lib/puppet/pops/types/type_parser.rb +27 -2
  172. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  173. data/lib/puppet/pops/types/types.rb +366 -13
  174. data/lib/puppet/pops/validation.rb +4 -4
  175. data/lib/puppet/pops/validation/checker4_0.rb +5 -2
  176. data/lib/puppet/pops/visitor.rb +2 -2
  177. data/lib/puppet/property.rb +64 -5
  178. data/lib/puppet/provider.rb +1 -1
  179. data/lib/puppet/provider/aixobject.rb +3 -3
  180. data/lib/puppet/provider/group/aix.rb +4 -4
  181. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  182. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  183. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
  184. data/lib/puppet/provider/mount/parsed.rb +1 -1
  185. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  186. data/lib/puppet/provider/package/appdmg.rb +3 -3
  187. data/lib/puppet/provider/package/apple.rb +1 -1
  188. data/lib/puppet/provider/package/dnf.rb +5 -0
  189. data/lib/puppet/provider/package/nim.rb +1 -1
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pip.rb +5 -3
  192. data/lib/puppet/provider/package/pip3.rb +1 -1
  193. data/lib/puppet/provider/package/pkg.rb +5 -5
  194. data/lib/puppet/provider/package/pkgdmg.rb +4 -4
  195. data/lib/puppet/provider/package/pkgin.rb +1 -1
  196. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  197. data/lib/puppet/provider/package/portage.rb +48 -8
  198. data/lib/puppet/provider/package/sun.rb +1 -1
  199. data/lib/puppet/provider/package/tdnf.rb +28 -0
  200. data/lib/puppet/provider/package/yum.rb +22 -4
  201. data/lib/puppet/provider/parsedfile.rb +2 -2
  202. data/lib/puppet/provider/service/base.rb +1 -1
  203. data/lib/puppet/provider/service/bsd.rb +1 -1
  204. data/lib/puppet/provider/service/daemontools.rb +2 -2
  205. data/lib/puppet/provider/service/debian.rb +3 -3
  206. data/lib/puppet/provider/service/init.rb +5 -3
  207. data/lib/puppet/provider/service/launchd.rb +16 -2
  208. data/lib/puppet/provider/service/runit.rb +1 -1
  209. data/lib/puppet/provider/service/smf.rb +8 -1
  210. data/lib/puppet/provider/service/systemd.rb +39 -6
  211. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  212. data/lib/puppet/provider/user/aix.rb +3 -2
  213. data/lib/puppet/provider/user/directoryservice.rb +4 -3
  214. data/lib/puppet/provider/user/hpux.rb +1 -1
  215. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  216. data/lib/puppet/provider/user/windows_adsi.rb +3 -0
  217. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  218. data/lib/puppet/reference/type.rb +1 -1
  219. data/lib/puppet/resource.rb +33 -7
  220. data/lib/puppet/resource/capability_finder.rb +74 -54
  221. data/lib/puppet/resource/status.rb +11 -2
  222. data/lib/puppet/settings.rb +17 -6
  223. data/lib/puppet/settings/environment_conf.rb +1 -1
  224. data/lib/puppet/settings/server_list_setting.rb +20 -0
  225. data/lib/puppet/ssl/certificate_authority.rb +32 -9
  226. data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
  227. data/lib/puppet/ssl/host.rb +3 -3
  228. data/lib/puppet/ssl/oids.rb +10 -0
  229. data/lib/puppet/ssl/validator/default_validator.rb +2 -2
  230. data/lib/puppet/test/test_helper.rb +2 -2
  231. data/lib/puppet/transaction.rb +12 -0
  232. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  233. data/lib/puppet/transaction/event.rb +29 -2
  234. data/lib/puppet/transaction/event_manager.rb +1 -1
  235. data/lib/puppet/transaction/persistence.rb +84 -0
  236. data/lib/puppet/transaction/report.rb +49 -2
  237. data/lib/puppet/transaction/resource_harness.rb +98 -18
  238. data/lib/puppet/type.rb +63 -21
  239. data/lib/puppet/type/augeas.rb +3 -3
  240. data/lib/puppet/type/cron.rb +1 -1
  241. data/lib/puppet/type/file.rb +39 -2
  242. data/lib/puppet/type/file/data_sync.rb +13 -5
  243. data/lib/puppet/type/host.rb +1 -1
  244. data/lib/puppet/type/mount.rb +2 -6
  245. data/lib/puppet/type/notify.rb +1 -1
  246. data/lib/puppet/type/package.rb +1 -1
  247. data/lib/puppet/type/resources.rb +1 -1
  248. data/lib/puppet/type/scheduled_task.rb +1 -1
  249. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  250. data/lib/puppet/type/tidy.rb +1 -1
  251. data/lib/puppet/type/yumrepo.rb +3 -3
  252. data/lib/puppet/type/zone.rb +1 -1
  253. data/lib/puppet/util.rb +2 -2
  254. data/lib/puppet/util/classgen.rb +1 -1
  255. data/lib/puppet/util/command_line.rb +6 -2
  256. data/lib/puppet/util/command_line/trollop.rb +1 -1
  257. data/lib/puppet/util/execution.rb +2 -2
  258. data/lib/puppet/util/http_proxy.rb +1 -1
  259. data/lib/puppet/util/inifile.rb +1 -1
  260. data/lib/puppet/util/instance_loader.rb +1 -1
  261. data/lib/puppet/util/logging.rb +1 -1
  262. data/lib/puppet/util/multi_match.rb +1 -1
  263. data/lib/puppet/util/plist.rb +15 -5
  264. data/lib/puppet/util/profiler.rb +1 -1
  265. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  266. data/lib/puppet/util/psych_support.rb +1 -1
  267. data/lib/puppet/util/rdoc.rb +2 -2
  268. data/lib/puppet/util/rubygems.rb +1 -1
  269. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  270. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  271. data/lib/puppet/util/windows/adsi.rb +30 -8
  272. data/lib/puppet/util/windows/api_types.rb +1 -1
  273. data/lib/puppet/util/windows/file.rb +59 -0
  274. data/lib/puppet/util/windows/process.rb +10 -0
  275. data/lib/puppet/util/windows/security.rb +1 -1
  276. data/lib/puppet/util/windows/user.rb +22 -4
  277. data/lib/puppet/util/yaml.rb +15 -3
  278. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  279. data/lib/puppet/vendor/rgen_patch.rb +1 -1
  280. data/lib/puppet/version.rb +2 -2
  281. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  282. data/spec/integration/agent/logging_spec.rb +15 -14
  283. data/spec/integration/application/apply_spec.rb +1 -0
  284. data/spec/integration/directory_environments_spec.rb +16 -0
  285. data/spec/integration/environments/settings_spec.rb +32 -4
  286. data/spec/integration/faces/documentation_spec.rb +1 -1
  287. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  288. data/spec/integration/node/environment_spec.rb +21 -0
  289. data/spec/integration/parser/collection_spec.rb +10 -0
  290. data/spec/integration/parser/compiler_spec.rb +76 -840
  291. data/spec/integration/parser/functions/require_spec.rb +3 -3
  292. data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
  293. data/spec/integration/parser/pcore_resource_spec.rb +208 -0
  294. data/spec/integration/parser/resource_expressions_spec.rb +4 -2
  295. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  296. data/spec/integration/transaction/report_spec.rb +666 -0
  297. data/spec/integration/type/file_spec.rb +11 -12
  298. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  299. data/spec/integration/util/windows/principal_spec.rb +109 -60
  300. data/spec/integration/util/windows/process_spec.rb +4 -2
  301. data/spec/integration/util/windows/security_spec.rb +34 -8
  302. data/spec/integration/util/windows/user_spec.rb +26 -4
  303. data/spec/lib/puppet_spec/files.rb +2 -2
  304. data/spec/lib/puppet_spec/network.rb +12 -8
  305. data/spec/shared_examples/rhel_package_provider.rb +341 -0
  306. data/spec/spec_helper.rb +8 -2
  307. data/spec/unit/application/cert_spec.rb +20 -0
  308. data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
  309. data/spec/unit/configurer_spec.rb +46 -0
  310. data/spec/unit/defaults_spec.rb +14 -0
  311. data/spec/unit/face/generate_spec.rb +230 -0
  312. data/spec/unit/face/help_spec.rb +53 -0
  313. data/spec/unit/face/parser_spec.rb +6 -0
  314. data/spec/unit/face/plugin_spec.rb +0 -4
  315. data/spec/unit/file_system_spec.rb +85 -0
  316. data/spec/unit/functions/lookup_spec.rb +4 -4
  317. data/spec/unit/functions/match_spec.rb +2 -2
  318. data/spec/unit/functions/regsubst_spec.rb +1 -1
  319. data/spec/unit/functions/split_spec.rb +1 -1
  320. data/spec/unit/functions/unwrap_spec.rb +29 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +8 -8
  323. data/spec/unit/indirector/facts/facter_spec.rb +1 -9
  324. data/spec/unit/indirector/rest_spec.rb +95 -9
  325. data/spec/unit/module_spec.rb +43 -7
  326. data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
  327. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  328. data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
  329. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
  331. data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
  332. data/spec/unit/network/rights_spec.rb +1 -1
  333. data/spec/unit/parameter_spec.rb +11 -0
  334. data/spec/unit/parser/compiler_spec.rb +19 -33
  335. data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
  336. data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
  337. data/spec/unit/parser/functions/require_spec.rb +2 -2
  338. data/spec/unit/parser/resource_spec.rb +21 -11
  339. data/spec/unit/parser/scope_spec.rb +1 -5
  340. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
  341. data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
  342. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
  344. data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
  345. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  346. data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
  347. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
  348. data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
  349. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  350. data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
  351. data/spec/unit/pops/serialization/packer_spec.rb +153 -0
  352. data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
  353. data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
  354. data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
  355. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
  356. data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
  357. data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
  358. data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
  359. data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
  360. data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
  361. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
  362. data/spec/unit/pops/types/type_parser_spec.rb +1 -1
  363. data/spec/unit/pops/types/types_spec.rb +1 -1
  364. data/spec/unit/pops/validator/validator_spec.rb +18 -1
  365. data/spec/unit/property_spec.rb +48 -11
  366. data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
  367. data/spec/unit/provider/package/dnf_spec.rb +1 -99
  368. data/spec/unit/provider/package/pacman_spec.rb +4 -4
  369. data/spec/unit/provider/package/pip_spec.rb +14 -0
  370. data/spec/unit/provider/package/pkg_spec.rb +6 -0
  371. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
  372. data/spec/unit/provider/package/portage_spec.rb +64 -8
  373. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  374. data/spec/unit/provider/package/windows/package_spec.rb +4 -1
  375. data/spec/unit/provider/package/windows_spec.rb +8 -2
  376. data/spec/unit/provider/package/yum_spec.rb +6 -377
  377. data/spec/unit/provider/service/base_spec.rb +6 -0
  378. data/spec/unit/provider/service/debian_spec.rb +16 -7
  379. data/spec/unit/provider/service/gentoo_spec.rb +6 -0
  380. data/spec/unit/provider/service/init_spec.rb +7 -0
  381. data/spec/unit/provider/service/launchd_spec.rb +35 -4
  382. data/spec/unit/provider/service/openrc_spec.rb +6 -0
  383. data/spec/unit/provider/service/smf_spec.rb +31 -6
  384. data/spec/unit/provider/service/src_spec.rb +6 -0
  385. data/spec/unit/provider/service/systemd_spec.rb +70 -20
  386. data/spec/unit/provider/service/upstart_spec.rb +6 -0
  387. data/spec/unit/provider/user/aix_spec.rb +7 -0
  388. data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
  389. data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
  390. data/spec/unit/resource/capability_finder_spec.rb +51 -3
  391. data/spec/unit/resource/catalog_spec.rb +5 -0
  392. data/spec/unit/resource/type_spec.rb +2 -2
  393. data/spec/unit/resource_spec.rb +19 -0
  394. data/spec/unit/settings_spec.rb +13 -0
  395. data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
  396. data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
  397. data/spec/unit/ssl/host_spec.rb +1 -1
  398. data/spec/unit/ssl/oids_spec.rb +24 -21
  399. data/spec/unit/transaction/event_spec.rb +3 -1
  400. data/spec/unit/transaction/persistence_spec.rb +173 -0
  401. data/spec/unit/transaction/report_spec.rb +64 -1
  402. data/spec/unit/transaction/resource_harness_spec.rb +91 -0
  403. data/spec/unit/type/file/content_spec.rb +47 -15
  404. data/spec/unit/type/file_spec.rb +28 -0
  405. data/spec/unit/type/mount_spec.rb +5 -12
  406. data/spec/unit/type/yumrepo_spec.rb +1 -5
  407. data/spec/unit/type_spec.rb +32 -0
  408. data/spec/unit/util/command_line_spec.rb +11 -0
  409. data/spec/unit/util/execution_spec.rb +1 -1
  410. data/spec/unit/util/plist_spec.rb +16 -3
  411. data/spec/unit/util/storage_spec.rb +4 -1
  412. data/spec/unit/util/windows/adsi_spec.rb +23 -2
  413. data/spec/unit/util/windows/file_spec.rb +56 -1
  414. data/spec/unit/util/windows/sid_spec.rb +31 -7
  415. data/spec/unit/util/yaml_spec.rb +12 -0
  416. data/spec/unit/util_spec.rb +87 -20
  417. metadata +91 -48
  418. data/ext/puppetlisten/puppetlisten.rb +0 -77
  419. data/ext/puppetlisten/puppetrun.rb +0 -38
  420. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  421. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  422. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -46,7 +46,7 @@ resource and relationship expressions.
46
46
 
47
47
  vals.each do |klass|
48
48
  # lookup the class in the scopes
49
- if classobj = find_hostclass(klass)
49
+ if classobj = environment.known_resource_types.find_hostclass(klass)
50
50
  klass = classobj.name
51
51
  else
52
52
  raise Puppet::ParseError, "Could not find class #{klass}"
@@ -0,0 +1,83 @@
1
+ Puppet::Parser::Functions::newfunction(
2
+ :reverse_each,
3
+ :type => :rvalue,
4
+ :arity => -1,
5
+ :doc => <<-DOC
6
+ Reverses the order of the elements of something that is iterable and optionally runs a
7
+ [lambda](http://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) for each
8
+ element.
9
+
10
+ This function takes one to two arguments:
11
+
12
+ 1. An `Iterable` that the function will iterate over.
13
+ 2. An optional lambda, which the function calls for each element in the first argument. It must
14
+ request one parameter.
15
+
16
+ **Example:** Using the `reverse_each` function
17
+
18
+ ```puppet
19
+ $data.reverse_each |$parameter| { <PUPPET CODE BLOCK> }
20
+ ```
21
+
22
+ or
23
+
24
+ ```puppet
25
+ $reverse_data = $data.reverse_each
26
+ ```
27
+
28
+ or
29
+
30
+ ```puppet
31
+ reverse_each($data) |$parameter| { <PUPPET CODE BLOCK> }
32
+ ```
33
+
34
+ or
35
+
36
+ ```puppet
37
+ $reverse_data = reverse_each($data)
38
+ ```
39
+
40
+ When no second argument is present, Puppet returns an `Iterable` that represents the reverse
41
+ order of its first argument. This allows methods on `Iterable` to be chained.
42
+
43
+ When a lamdba is given as the second argument, Puppet iterates the first argument in reverse
44
+ order and passes each value in turn to the lambda, then returns `undef`.
45
+
46
+ **Example:** Using the `reverse_each` function with an array and a one-parameter lambda
47
+
48
+ ``` puppet
49
+ # Puppet will log a notice for each of the three items
50
+ # in $data in reverse order.
51
+ $data = [1,2,3]
52
+ $data.reverse_each |$item| { notice($item) }
53
+ ```
54
+
55
+ When no second argument is present, Puppet returns a new `Iterable` which allows it to
56
+ be directly chained into another function that takes an `Iterable` as an argument.
57
+
58
+ **Example:** Using the `reverse_each` function chained with a `map` function.
59
+
60
+ ```puppet
61
+ # For the array $data, return an array containing each
62
+ # value multiplied by 10 in reverse order
63
+ $data = [1,2,3]
64
+ $transformed_data = $data.reverse_each.map |$item| { $item * 10 }
65
+ # $transformed_data is set to [30,20,10]
66
+ ```
67
+
68
+ **Example:** Using `reverse_each` function chained with a `map` in alternative syntax
69
+
70
+ ```puppet
71
+ # For the array $data, return an array containing each
72
+ # value multiplied by 10 in reverse order
73
+ $data = [1,2,3]
74
+ $transformed_data = map(reverse_each($data)) |$item| { $item * 10 }
75
+ # $transformed_data is set to [30,20,10]
76
+ ```
77
+
78
+ * Since 4.4.0
79
+
80
+ DOC
81
+ ) do |args|
82
+ function_fail(["reverse_each() is only available when parser/evaluator future is in effect"])
83
+ end
@@ -6,13 +6,13 @@ Puppet::Parser::Functions::newfunction(
6
6
  :arity => 2,
7
7
  :doc => <<-DOC
8
8
  Scans a string and returns an array of one or more converted values based on the given format string.
9
- See the documenation of Ruby's String#scanf method for details about the supported formats (which
9
+ See the documentation of Ruby's String#scanf method for details about the supported formats (which
10
10
  are similar but not identical to the formats used in Puppet's `sprintf` function.)
11
11
 
12
12
  This function takes two mandatory arguments: the first is the string to convert, and the second is
13
- the format string. The result of the scan is an array, with each sucessfully scanned and transformed value.
14
- The scanning stops if a scan is unsuccesful, and the scanned result up to that point is returned. If there
15
- was no succesful scan, the result is an empty array.
13
+ the format string. The result of the scan is an array, with each successfully scanned and transformed value.
14
+ The scanning stops if a scan is unsuccessful, and the scanned result up to that point is returned. If there
15
+ was no successful scan, the result is an empty array.
16
16
 
17
17
  "42".scanf("%i")
18
18
 
@@ -0,0 +1,84 @@
1
+ Puppet::Parser::Functions::newfunction(
2
+ :step,
3
+ :type => :rvalue,
4
+ :arity => -1,
5
+ :doc => <<-DOC
6
+ Provides stepping with given interval over elements in an iterable and optionally runs a
7
+ [lambda](http://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) for each
8
+ element.
9
+
10
+ This function takes two to three arguments:
11
+
12
+ 1. An 'Iterable' that the function will iterate over.
13
+ 2. An `Integer` step factor. This must be a positive integer.
14
+ 3. An optional lambda, which the function calls for each element in the interval. It must
15
+ request one parameter.
16
+
17
+ **Example:** Using the `step` function
18
+
19
+ ```puppet
20
+ $data.step(<n>) |$parameter| { <PUPPET CODE BLOCK> }
21
+ ```
22
+
23
+ or
24
+
25
+ ```puppet
26
+ $stepped_data = $data.step(<n>)
27
+ ```
28
+
29
+ or
30
+ ```puppet
31
+ step($data, <n>) |$parameter| { <PUPPET CODE BLOCK> }
32
+ ```
33
+
34
+ or
35
+
36
+ ```puppet
37
+ $stepped_data = step($data, <n>)
38
+ ```
39
+
40
+ When no block is given, Puppet returns an `Iterable` that yields the first element and every nth successor
41
+ element, from its first argument. This allows functions on iterables to be chained.
42
+ When a block is given, Puppet iterates and calls the block with the first element and then with
43
+ every nth successor element. It then returns `undef`.
44
+
45
+ **Example:** Using the `step` function with an array, a step factor, and a one-parameter block
46
+
47
+ ```puppet
48
+ # For the array $data, call a block with the first element and then with each 3rd successor element
49
+ $data = [1,2,3,4,5,6,7,8]
50
+ $data.step(3) |$item| {
51
+ notice($item)
52
+ }
53
+ # Puppet notices the values '1', '4', '7'.
54
+ ```
55
+
56
+ When no block is given, Puppet returns a new `Iterable` which allows it to be directly chained into
57
+ another function that takes an `Iterable` as an argument.
58
+
59
+ **Example:** Using the `step` function chained with a `map` function.
60
+
61
+ ```puppet
62
+ # For the array $data, return an array, set to the first element and each 5th successor element, in reverse
63
+ # order multiplied by 10
64
+ $data = Integer[0,20]
65
+ $transformed_data = $data.step(5).map |$item| { $item * 10 }
66
+ $transformed_data contains [0,50,100,150,200]
67
+ ```
68
+
69
+ **Example:** The same example using `step` function chained with a `map` in alternative syntax
70
+
71
+ ```puppet
72
+ # For the array $data, return an array, set to the first and each 5th
73
+ # successor, in reverse order, multiplied by 10
74
+ $data = Integer[0,20]
75
+ $transformed_data = map(step($data, 5)) |$item| { $item * 10 }
76
+ $transformed_data contains [0,50,100,150,200]
77
+ ```
78
+
79
+ * Since 4.4.0
80
+
81
+ DOC
82
+ ) do |args|
83
+ function_fail(["step() is only available when parser/evaluator future is in effect"])
84
+ end
@@ -0,0 +1,73 @@
1
+ Puppet::Parser::Functions::newfunction(
2
+ :lest,
3
+ :type => :rvalue,
4
+ :arity => -2,
5
+ :doc => <<-DOC
6
+ Call a [lambda](https://docs.puppet.com/puppet/latest/reference/lang_lambdas.html)
7
+ with the given argument unless the argument is undef. Return `undef` if argument is
8
+ `undef`, and otherwise the result of giving the argument to the lambda.
9
+
10
+ This is useful to process a sequence of operations where an intermediate
11
+ result may be `undef` (which makes the entire sequence `undef`).
12
+ The `then` function is especially useful with the function `dig` which
13
+ performs in a similar way "digging out" a value in a complex structure.
14
+
15
+ **Example:** Using `dig` and `then`
16
+
17
+ ```puppet
18
+ $data = {a => { b => [{x => 10, y => 20}, {x => 100, y => 200}]}}
19
+ notice $data.dig(a, b, 1, x).then |$x| { $x * 2 }
20
+ ```
21
+
22
+ Would notice the value 200
23
+
24
+ Contrast this with:
25
+
26
+ ```puppet
27
+ $data = {a => { b => [{x => 10, y => 20}, {ex => 100, why => 200}]}}
28
+ notice $data.dig(a, b, 1, x).then |$x| { $x * 2 }
29
+ ```
30
+
31
+ Which would notice `undef` since the last lookup of 'x' results in `undef` which
32
+ is returned (without calling the lambda given to the `then` function).
33
+
34
+ As a result there is no need for conditional logic or a temporary (non local)
35
+ variable as the result is now either the wanted value (`x`) multiplied
36
+ by 2 or `undef`.
37
+
38
+ Calls to `then` can be chained. In the next example, a structure is using an offset based on
39
+ using 1 as the index to the first element (instead of 0 which is used in the language).
40
+ We are not sure if user input actually contains an index at all, or if it is
41
+ outside the range of available names.args.
42
+
43
+ **Example:** Chaining calls to the `then` function
44
+
45
+ ```puppet
46
+ # Names to choose from
47
+ $names = ['Ringo', 'Paul', 'George', 'John']
48
+
49
+ # Structure where 'beatle 2' is wanted (but where the number refers
50
+ # to 'Paul' because input comes from a source using 1 for the first
51
+ # element).
52
+
53
+ $data = ['singer', { beatle => 2 }]
54
+ $picked = assert_type(String,
55
+ # the data we are interested in is the second in the array,
56
+ # a hash, where we want the value of the key 'beatle'
57
+ $data.dig(1, 'beatle')
58
+ # and we want the index in $names before the given index
59
+ .then |$x| { $names[$x-1] }
60
+ # so we can construct a string with that beatle's name
61
+ .then |$x| { "Picked Beatle '${x}'" }
62
+ )
63
+ ```
64
+
65
+ Would notice "Picked Beatle 'Paul'", and would raise an error if the result
66
+ was not a String.
67
+
68
+ * Since 4.5.0
69
+
70
+ DOC
71
+ ) do |args|
72
+ function_fail(["then() is only available when parser/evaluator future is in effect"])
73
+ end
@@ -0,0 +1,53 @@
1
+ Puppet::Parser::Functions::newfunction(
2
+ :type,
3
+ :type => :rvalue,
4
+ :arity => -1,
5
+ :doc => <<-DOC
6
+ Returns the data type of a given value with a given degree of generality.
7
+
8
+ ```puppet
9
+ type InferenceFidelity = Enum[generalized, reduced, detailed]
10
+
11
+ function type(Any $value, InferenceFidelity $fidelity = 'detailed') # returns Type
12
+ ```
13
+
14
+ **Example:** Using `type`
15
+
16
+ ``` puppet
17
+ notice type(42) =~ Type[Integer]
18
+ ```
19
+
20
+ Would notice `true`.
21
+
22
+ By default, the best possible inference is made where all details are retained.
23
+ This is good when the type is used for further type calculations but is overwhelmingly
24
+ rich in information if it is used in a error message.
25
+
26
+ The optional argument `$fidelity` may be given as (from lowest to highest fidelity):
27
+
28
+ * `generalized` - reduces to common type and drops size constraints
29
+ * `reduced` - reduces to common type in collections
30
+ * `detailed` - (default) all details about inferred types is retained
31
+
32
+ **Example:** Using `type()` with different inference fidelity:
33
+
34
+ ``` puppet
35
+ notice type([3.14, 42], 'generalized')
36
+ notice type([3.14, 42], 'reduced'')
37
+ notice type([3.14, 42], 'detailed')
38
+ notice type([3.14, 42])
39
+ ```
40
+
41
+ Would notice the four values:
42
+
43
+ 1. 'Array[Numeric]'
44
+ 2. 'Array[Numeric, 2, 2]'
45
+ 3. 'Tuple[Float[3.14], Integer[42,42]]]'
46
+ 4. 'Tuple[Float[3.14], Integer[42,42]]]'
47
+
48
+ * Since 4.4.0
49
+
50
+ DOC
51
+ ) do |args|
52
+ function_fail(["type() is only available when parser/evaluator future is in effect"])
53
+ end
@@ -7,9 +7,6 @@ class Puppet::Parser::Resource < Puppet::Resource
7
7
  require 'puppet/parser/resource/param'
8
8
  require 'puppet/util/tagging'
9
9
  require 'puppet/parser/yaml_trimmer'
10
- require 'puppet/resource/type_collection_helper'
11
-
12
- include Puppet::Resource::TypeCollectionHelper
13
10
 
14
11
  include Puppet::Util
15
12
  include Puppet::Util::MethodHelper
@@ -75,7 +72,7 @@ class Puppet::Parser::Resource < Puppet::Resource
75
72
  return if evaluated?
76
73
  Puppet::Util::Profiler.profile("Evaluated resource #{self}", [:compiler, :evaluate_resource, self]) do
77
74
  @evaluated = true
78
- if builtin?
75
+ if builtin_type?
79
76
  devfail "Cannot evaluate a builtin type (#{type})"
80
77
  elsif resource_type.nil?
81
78
  self.fail "Cannot find definition #{type}"
@@ -109,6 +106,7 @@ class Puppet::Parser::Resource < Puppet::Resource
109
106
  @finished = true
110
107
  add_defaults
111
108
  add_scope_tags
109
+ replace_sensitive_data
112
110
  validate if do_validate
113
111
  end
114
112
 
@@ -189,7 +187,9 @@ class Puppet::Parser::Resource < Puppet::Resource
189
187
  unless value.nil?
190
188
  case param.name
191
189
  when :before, :subscribe, :notify, :require
192
- value = value.flatten if value.is_a?(Array)
190
+ if value.is_a?(Array)
191
+ value = value.flatten.reject {|v| v.nil? || v == :undef }
192
+ end
193
193
  result[param.name] = value
194
194
  else
195
195
  result[param.name] = value
@@ -256,7 +256,7 @@ class Puppet::Parser::Resource < Puppet::Resource
256
256
  scope.with_global_scope do |global_scope|
257
257
  cns_scope = global_scope.newscope(:source => self, :resource => self)
258
258
  cns.to_hash.each { |name, value| cns_scope[name.to_s] = value }
259
-
259
+
260
260
  # evaluate mappings in that scope
261
261
  resource_type.arguments.keys.each do |name|
262
262
  if expr = blueprint[:mappings][name]
@@ -307,6 +307,15 @@ class Puppet::Parser::Resource < Puppet::Resource
307
307
  end
308
308
  end
309
309
 
310
+ def replace_sensitive_data
311
+ parameters.each_pair do |name, param|
312
+ if param.value.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive)
313
+ @sensitive_parameters << name
314
+ param.value = param.value.unwrap
315
+ end
316
+ end
317
+ end
318
+
310
319
  # Accept a parameter from an override.
311
320
  def override_parameter(param)
312
321
  # This can happen if the override is defining a new parameter, rather
@@ -333,7 +342,7 @@ class Puppet::Parser::Resource < Puppet::Resource
333
342
  # syntax. It's important that we use a copy of the new param instance
334
343
  # here, not the old one, and not the original new one, so that the source
335
344
  # is registered correctly for later overrides but the values aren't
336
- # implcitly shared when multiple resources are overrriden at once (see
345
+ # implicitly shared when multiple resources are overridden at once (see
337
346
  # ticket #3556).
338
347
  if param.add
339
348
  param = param.dup
@@ -6,7 +6,6 @@ require 'forwardable'
6
6
  require 'puppet/parser'
7
7
  require 'puppet/parser/templatewrapper'
8
8
 
9
- require 'puppet/resource/type_collection_helper'
10
9
  require 'puppet/util/methodhelper'
11
10
 
12
11
  # This class is part of the internal parser/evaluator/compiler functionality of Puppet.
@@ -18,7 +17,6 @@ class Puppet::Parser::Scope
18
17
  extend Forwardable
19
18
  include Puppet::Util::MethodHelper
20
19
 
21
- include Puppet::Resource::TypeCollectionHelper
22
20
  require 'puppet/parser/resource'
23
21
 
24
22
  AST = Puppet::Parser::AST
@@ -349,11 +347,11 @@ class Puppet::Parser::Scope
349
347
  end
350
348
 
351
349
  def find_hostclass(name)
352
- known_resource_types.find_hostclass(name)
350
+ environment.known_resource_types.find_hostclass(name)
353
351
  end
354
352
 
355
353
  def find_definition(name)
356
- known_resource_types.find_definition(name)
354
+ environment.known_resource_types.find_definition(name)
357
355
  end
358
356
 
359
357
  def find_global_scope()
@@ -467,7 +465,8 @@ class Puppet::Parser::Scope
467
465
  # Look up a defined type.
468
466
  def lookuptype(name)
469
467
  # This happens a lot, avoid making a call to make a call
470
- known_resource_types.find_definition(name) || known_resource_types.find_hostclass(name)
468
+ krt = environment.known_resource_types
469
+ krt.find_definition(name) || krt.find_hostclass(name)
471
470
  end
472
471
 
473
472
  def undef_as(x,v)
@@ -976,18 +975,19 @@ class Puppet::Parser::Scope
976
975
  end
977
976
  end
978
977
 
978
+ # @api private
979
979
  def find_resource_type(type)
980
- # It still works fine without the type == 'class' short-cut, but it is a lot slower.
981
- return nil if ["class", "node"].include? type.to_s.downcase
982
- find_builtin_resource_type(type) || find_defined_resource_type(type)
980
+ raise Puppet::DevError, "Scope#find_resource_type() is no longer supported, use Puppet::Pops::Evaluator::Runtime3ResourceSupport instead"
983
981
  end
984
982
 
983
+ # @api private
985
984
  def find_builtin_resource_type(type)
986
- Puppet::Type.type(type.to_s.downcase.to_sym)
985
+ raise Puppet::DevError, "Scope#find_builtin_resource_type() is no longer supported, use Puppet::Pops::Evaluator::Runtime3ResourceSupport instead"
987
986
  end
988
987
 
988
+ # @api private
989
989
  def find_defined_resource_type(type)
990
- known_resource_types.find_definition(type.to_s.downcase)
990
+ raise Puppet::DevError, "Scope#find_defined_resource_type() is no longer supported, use Puppet::Pops::Evaluator::Runtime3ResourceSupport instead"
991
991
  end
992
992
 
993
993
 
@@ -1005,25 +1005,33 @@ class Puppet::Parser::Scope
1005
1005
  end
1006
1006
  end
1007
1007
 
1008
+ # Called from two places:
1009
+ # runtime3support when creating resources
1010
+ # ast::resource - used by create resources ?
1011
+ # @api private
1008
1012
  def resolve_type_and_titles(type, titles)
1009
- raise ArgumentError, "titles must be an array" unless titles.is_a?(Array)
1010
-
1011
- case type.downcase
1012
- when "class"
1013
- # resolve the titles
1014
- titles = titles.collect do |a_title|
1015
- hostclass = find_hostclass(a_title)
1016
- hostclass ? hostclass.name : a_title
1017
- end
1018
- when "node"
1019
- # no-op
1020
- else
1021
- # resolve the type
1022
- resource_type = find_resource_type(type)
1023
- type = resource_type.name if resource_type
1024
- end
1013
+ raise Puppet::DevError, "Scope#resolve_type_and_title() is no longer supported, use Puppet::Pops::Evaluator::Runtime3ResourceSupport instead"
1025
1014
 
1026
- return [type, titles]
1015
+ # Puppet.deprecation_warning('Scope#resolve_type_and_titles is deprecated.')
1016
+ #
1017
+ # raise ArgumentError, "titles must be an array" unless titles.is_a?(Array)
1018
+ #
1019
+ # case type.downcase
1020
+ # when "class"
1021
+ # # resolve the titles
1022
+ # titles = titles.collect do |a_title|
1023
+ # hostclass = find_hostclass(a_title)
1024
+ # hostclass ? hostclass.name : a_title
1025
+ # end
1026
+ # when "node"
1027
+ # # no-op
1028
+ # else
1029
+ # # resolve the type
1030
+ # resource_type = find_resource_type(type)
1031
+ # type = resource_type.name if resource_type
1032
+ # end
1033
+ #
1034
+ # return [type, titles]
1027
1035
  end
1028
1036
 
1029
1037
  # Transforms references to classes to the form suitable for
@@ -1056,7 +1064,7 @@ class Puppet::Parser::Scope
1056
1064
  when Puppet::Pops::Types::PResourceType
1057
1065
  assert_class_and_title(name.type_name, name.title)
1058
1066
  name.title.sub(/^([^:]{1,2})/, '::\1')
1059
- end
1067
+ end.downcase
1060
1068
  end
1061
1069
  end
1062
1070