puppet 5.5.17-x64-mingw32 → 5.5.22-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 (340) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +1 -1
  3. data/Gemfile +4 -5
  4. data/Gemfile.lock +59 -55
  5. data/ext/build_defaults.yaml +1 -0
  6. data/ext/cert_inspector +3 -3
  7. data/ext/puppet-test +2 -2
  8. data/ext/regexp_nodes/regexp_nodes.rb +4 -4
  9. data/ext/windows/service/daemon.rb +54 -8
  10. data/install.rb +6 -6
  11. data/lib/puppet.rb +5 -2
  12. data/lib/puppet/agent.rb +5 -13
  13. data/lib/puppet/application.rb +1 -1
  14. data/lib/puppet/application/agent.rb +3 -1
  15. data/lib/puppet/application/apply.rb +2 -2
  16. data/lib/puppet/application/describe.rb +3 -9
  17. data/lib/puppet/application/doc.rb +1 -1
  18. data/lib/puppet/application/filebucket.rb +13 -0
  19. data/lib/puppet/application/lookup.rb +1 -1
  20. data/lib/puppet/application/script.rb +2 -2
  21. data/lib/puppet/configurer.rb +106 -31
  22. data/lib/puppet/configurer/downloader.rb +33 -16
  23. data/lib/puppet/daemon.rb +1 -1
  24. data/lib/puppet/defaults.rb +86 -40
  25. data/lib/puppet/error.rb +9 -1
  26. data/lib/puppet/external/nagios/base.rb +1 -1
  27. data/lib/puppet/face/ca.rb +1 -1
  28. data/lib/puppet/face/module/list.rb +5 -5
  29. data/lib/puppet/face/module/search.rb +1 -1
  30. data/lib/puppet/face/module/uninstall.rb +1 -1
  31. data/lib/puppet/face/module/upgrade.rb +1 -1
  32. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  33. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  34. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  35. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  36. data/lib/puppet/file_system.rb +0 -8
  37. data/lib/puppet/file_system/memory_file.rb +1 -1
  38. data/lib/puppet/file_system/posix.rb +3 -2
  39. data/lib/puppet/file_system/uniquefile.rb +4 -0
  40. data/lib/puppet/forge.rb +3 -3
  41. data/lib/puppet/functions/epp.rb +4 -4
  42. data/lib/puppet/functions/inline_epp.rb +5 -5
  43. data/lib/puppet/functions/new.rb +8 -3
  44. data/lib/puppet/functions/reduce.rb +2 -4
  45. data/lib/puppet/functions/reverse_each.rb +1 -1
  46. data/lib/puppet/functions/step.rb +1 -1
  47. data/lib/puppet/gettext/module_translations.rb +1 -1
  48. data/lib/puppet/graph/rb_tree_map.rb +2 -2
  49. data/lib/puppet/graph/simple_graph.rb +6 -5
  50. data/lib/puppet/indirector/catalog/compiler.rb +8 -0
  51. data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
  52. data/lib/puppet/indirector/hiera.rb +6 -0
  53. data/lib/puppet/indirector/resource/ral.rb +1 -3
  54. data/lib/puppet/indirector/resource/validator.rb +1 -1
  55. data/lib/puppet/interface.rb +2 -1
  56. data/lib/puppet/loaders.rb +0 -1
  57. data/lib/puppet/metatype/manager.rb +1 -1
  58. data/lib/puppet/module.rb +1 -1
  59. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  60. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  61. data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
  62. data/lib/puppet/module_tool/metadata.rb +1 -1
  63. data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
  64. data/lib/puppet/module_tool/tar/mini.rb +1 -1
  65. data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
  66. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  67. data/lib/puppet/network/http/connection.rb +14 -12
  68. data/lib/puppet/network/http/pool.rb +7 -1
  69. data/lib/puppet/network/http/rack/rest.rb +2 -2
  70. data/lib/puppet/network/http/site.rb +1 -1
  71. data/lib/puppet/network/resolver.rb +2 -2
  72. data/lib/puppet/node/environment.rb +11 -3
  73. data/lib/puppet/parser/ast.rb +1 -1
  74. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  75. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  76. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  77. data/lib/puppet/parser/environment_compiler.rb +3 -0
  78. data/lib/puppet/parser/functions.rb +14 -10
  79. data/lib/puppet/parser/functions/epp.rb +3 -3
  80. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  81. data/lib/puppet/parser/resource.rb +3 -2
  82. data/lib/puppet/parser/resource/param.rb +6 -0
  83. data/lib/puppet/pops/adaptable.rb +7 -13
  84. data/lib/puppet/pops/adapters.rb +8 -4
  85. data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
  86. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  87. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  88. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
  89. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  90. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
  91. data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
  92. data/lib/puppet/pops/issues.rb +5 -0
  93. data/lib/puppet/pops/loaders.rb +1 -1
  94. data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
  95. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  96. data/lib/puppet/pops/merge_strategy.rb +22 -18
  97. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  98. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  99. data/lib/puppet/pops/parser/locator.rb +1 -1
  100. data/lib/puppet/pops/parser/pn_parser.rb +17 -16
  101. data/lib/puppet/pops/puppet_stack.rb +51 -48
  102. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  103. data/lib/puppet/pops/types/iterable.rb +34 -8
  104. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  105. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  106. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  107. data/lib/puppet/pops/types/string_converter.rb +10 -10
  108. data/lib/puppet/pops/types/type_calculator.rb +24 -0
  109. data/lib/puppet/pops/types/types.rb +3 -3
  110. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  111. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  112. data/lib/puppet/property.rb +1 -1
  113. data/lib/puppet/property/ensure.rb +1 -1
  114. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  115. data/lib/puppet/provider/cron/crontab.rb +1 -1
  116. data/lib/puppet/provider/exec.rb +6 -2
  117. data/lib/puppet/provider/group/groupadd.rb +19 -19
  118. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  119. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  120. data/lib/puppet/provider/mount.rb +1 -1
  121. data/lib/puppet/provider/mount/parsed.rb +8 -8
  122. data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
  123. data/lib/puppet/provider/nameservice/pw.rb +2 -2
  124. data/lib/puppet/provider/package/aix.rb +17 -2
  125. data/lib/puppet/provider/package/apt.rb +14 -3
  126. data/lib/puppet/provider/package/dnfmodule.rb +141 -0
  127. data/lib/puppet/provider/package/dpkg.rb +16 -18
  128. data/lib/puppet/provider/package/fink.rb +20 -3
  129. data/lib/puppet/provider/package/gem.rb +4 -2
  130. data/lib/puppet/provider/package/openbsd.rb +14 -2
  131. data/lib/puppet/provider/package/pip.rb +37 -10
  132. data/lib/puppet/provider/package/pkg.rb +18 -5
  133. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  134. data/lib/puppet/provider/package/pkgng.rb +16 -4
  135. data/lib/puppet/provider/package/portage.rb +4 -4
  136. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  137. data/lib/puppet/provider/package/rpm.rb +6 -6
  138. data/lib/puppet/provider/package/windows/package.rb +1 -1
  139. data/lib/puppet/provider/package/yum.rb +28 -20
  140. data/lib/puppet/provider/package/zypper.rb +1 -0
  141. data/lib/puppet/provider/package_targetable.rb +5 -4
  142. data/lib/puppet/provider/parsedfile.rb +1 -1
  143. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
  144. data/lib/puppet/provider/selmodule/semodule.rb +43 -26
  145. data/lib/puppet/provider/service/daemontools.rb +9 -9
  146. data/lib/puppet/provider/service/openbsd.rb +1 -1
  147. data/lib/puppet/provider/service/rcng.rb +2 -2
  148. data/lib/puppet/provider/service/runit.rb +2 -8
  149. data/lib/puppet/provider/service/systemd.rb +31 -13
  150. data/lib/puppet/provider/user/directoryservice.rb +31 -6
  151. data/lib/puppet/provider/user/hpux.rb +1 -1
  152. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  153. data/lib/puppet/provider/user/useradd.rb +39 -20
  154. data/lib/puppet/provider/user/windows_adsi.rb +4 -5
  155. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  156. data/lib/puppet/reference/indirection.rb +2 -2
  157. data/lib/puppet/reference/metaparameter.rb +1 -3
  158. data/lib/puppet/reference/providers.rb +1 -1
  159. data/lib/puppet/reference/type.rb +3 -9
  160. data/lib/puppet/reports.rb +1 -1
  161. data/lib/puppet/resource.rb +1 -1
  162. data/lib/puppet/resource/catalog.rb +1 -1
  163. data/lib/puppet/resource/type.rb +10 -1
  164. data/lib/puppet/settings.rb +3 -3
  165. data/lib/puppet/settings/environment_conf.rb +1 -0
  166. data/lib/puppet/ssl/certificate.rb +2 -1
  167. data/lib/puppet/ssl/certificate_authority.rb +6 -5
  168. data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
  169. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  170. data/lib/puppet/ssl/host.rb +3 -3
  171. data/lib/puppet/ssl/oids.rb +1 -1
  172. data/lib/puppet/test/test_helper.rb +20 -12
  173. data/lib/puppet/transaction/report.rb +1 -1
  174. data/lib/puppet/transaction/resource_harness.rb +1 -1
  175. data/lib/puppet/type.rb +8 -4
  176. data/lib/puppet/type/cron.rb +1 -1
  177. data/lib/puppet/type/exec.rb +7 -3
  178. data/lib/puppet/type/file.rb +14 -2
  179. data/lib/puppet/type/file/data_sync.rb +5 -1
  180. data/lib/puppet/type/group.rb +4 -2
  181. data/lib/puppet/type/interface.rb +1 -1
  182. data/lib/puppet/type/notify.rb +3 -2
  183. data/lib/puppet/type/package.rb +97 -8
  184. data/lib/puppet/type/schedule.rb +1 -1
  185. data/lib/puppet/type/selboolean.rb +17 -3
  186. data/lib/puppet/type/service.rb +2 -8
  187. data/lib/puppet/type/user.rb +5 -9
  188. data/lib/puppet/util.rb +35 -12
  189. data/lib/puppet/util/autoload.rb +9 -7
  190. data/lib/puppet/util/command_line/trollop.rb +1 -1
  191. data/lib/puppet/util/http_proxy.rb +8 -14
  192. data/lib/puppet/util/instance_loader.rb +1 -1
  193. data/lib/puppet/util/log.rb +1 -1
  194. data/lib/puppet/util/log/destinations.rb +3 -12
  195. data/lib/puppet/util/logging.rb +30 -18
  196. data/lib/puppet/util/metric.rb +2 -2
  197. data/lib/puppet/util/monkey_patches.rb +1 -1
  198. data/lib/puppet/util/nagios_maker.rb +2 -2
  199. data/lib/puppet/util/network_device/cisco/device.rb +1 -1
  200. data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
  201. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  202. data/lib/puppet/util/pidlock.rb +12 -6
  203. data/lib/puppet/util/plist.rb +6 -0
  204. data/lib/puppet/util/provider_features.rb +2 -4
  205. data/lib/puppet/util/rdoc.rb +1 -1
  206. data/lib/puppet/util/reference.rb +1 -1
  207. data/lib/puppet/util/resource_template.rb +1 -1
  208. data/lib/puppet/util/selinux.rb +3 -1
  209. data/lib/puppet/util/windows/adsi.rb +60 -30
  210. data/lib/puppet/util/windows/api_types.rb +45 -32
  211. data/lib/puppet/util/windows/eventlog.rb +1 -6
  212. data/lib/puppet/util/windows/principal.rb +8 -6
  213. data/lib/puppet/util/windows/process.rb +16 -15
  214. data/lib/puppet/util/windows/registry.rb +17 -15
  215. data/lib/puppet/util/windows/security.rb +1 -0
  216. data/lib/puppet/util/windows/sid.rb +3 -3
  217. data/lib/puppet/vendor.rb +1 -1
  218. data/lib/puppet/version.rb +1 -1
  219. data/lib/puppet_pal.rb +2 -2
  220. data/locales/puppet.pot +362 -318
  221. data/man/man5/puppet.conf.5 +39 -9
  222. data/man/man8/puppet-agent.8 +2 -2
  223. data/man/man8/puppet-apply.8 +1 -1
  224. data/man/man8/puppet-ca.8 +1 -1
  225. data/man/man8/puppet-catalog.8 +1 -1
  226. data/man/man8/puppet-cert.8 +1 -1
  227. data/man/man8/puppet-certificate.8 +1 -1
  228. data/man/man8/puppet-certificate_request.8 +1 -1
  229. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  230. data/man/man8/puppet-config.8 +1 -1
  231. data/man/man8/puppet-describe.8 +1 -1
  232. data/man/man8/puppet-device.8 +1 -1
  233. data/man/man8/puppet-doc.8 +1 -1
  234. data/man/man8/puppet-epp.8 +1 -1
  235. data/man/man8/puppet-facts.8 +1 -1
  236. data/man/man8/puppet-filebucket.8 +16 -1
  237. data/man/man8/puppet-generate.8 +1 -1
  238. data/man/man8/puppet-help.8 +1 -1
  239. data/man/man8/puppet-key.8 +1 -1
  240. data/man/man8/puppet-lookup.8 +1 -1
  241. data/man/man8/puppet-man.8 +1 -1
  242. data/man/man8/puppet-master.8 +1 -1
  243. data/man/man8/puppet-module.8 +1 -1
  244. data/man/man8/puppet-node.8 +1 -1
  245. data/man/man8/puppet-parser.8 +1 -1
  246. data/man/man8/puppet-plugin.8 +1 -1
  247. data/man/man8/puppet-report.8 +1 -1
  248. data/man/man8/puppet-resource.8 +1 -1
  249. data/man/man8/puppet-script.8 +1 -1
  250. data/man/man8/puppet-status.8 +1 -1
  251. data/man/man8/puppet.8 +2 -2
  252. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
  253. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
  254. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  255. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  256. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  257. data/spec/integration/configurer_spec.rb +66 -0
  258. data/spec/integration/data_binding_spec.rb +1 -0
  259. data/spec/integration/defaults_spec.rb +1 -2
  260. data/spec/integration/faces/plugin_spec.rb +29 -47
  261. data/spec/integration/indirector/facts/facter_spec.rb +4 -0
  262. data/spec/integration/parser/compiler_spec.rb +11 -0
  263. data/spec/integration/type/notify_spec.rb +46 -0
  264. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  265. data/spec/integration/util/windows/registry_spec.rb +7 -7
  266. data/spec/shared_contexts/types_setup.rb +2 -0
  267. data/spec/unit/agent_spec.rb +34 -26
  268. data/spec/unit/application/apply_spec.rb +2 -12
  269. data/spec/unit/configurer/downloader_spec.rb +10 -0
  270. data/spec/unit/configurer/fact_handler_spec.rb +0 -4
  271. data/spec/unit/configurer_spec.rb +430 -415
  272. data/spec/unit/daemon_spec.rb +0 -1
  273. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  274. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  275. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  276. data/spec/unit/file_system/uniquefile_spec.rb +11 -0
  277. data/spec/unit/forge/forge_spec.rb +1 -3
  278. data/spec/unit/forge/repository_spec.rb +1 -3
  279. data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
  280. data/spec/unit/indirector/resource/ral_spec.rb +4 -4
  281. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  282. data/spec/unit/network/http/connection_spec.rb +43 -1
  283. data/spec/unit/network/http/pool_spec.rb +32 -0
  284. data/spec/unit/node_spec.rb +7 -4
  285. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  286. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
  287. data/spec/unit/provider/exec_spec.rb +209 -0
  288. data/spec/unit/provider/group/groupadd_spec.rb +30 -1
  289. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  290. data/spec/unit/provider/package/aix_spec.rb +29 -0
  291. data/spec/unit/provider/package/apt_spec.rb +13 -2
  292. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  293. data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
  294. data/spec/unit/provider/package/dpkg_spec.rb +35 -7
  295. data/spec/unit/provider/package/openbsd_spec.rb +17 -0
  296. data/spec/unit/provider/package/pip_spec.rb +93 -22
  297. data/spec/unit/provider/package/pkg_spec.rb +13 -1
  298. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  299. data/spec/unit/provider/package/pkgng_spec.rb +36 -0
  300. data/spec/unit/provider/package/portage_spec.rb +4 -4
  301. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  302. data/spec/unit/provider/package/yum_spec.rb +90 -0
  303. data/spec/unit/provider/package/zypper_spec.rb +13 -0
  304. data/spec/unit/provider/package_targetable_spec.rb +60 -0
  305. data/spec/unit/provider/selmodule_spec.rb +118 -47
  306. data/spec/unit/provider/service/daemontools_spec.rb +24 -0
  307. data/spec/unit/provider/service/runit_spec.rb +24 -0
  308. data/spec/unit/provider/service/systemd_spec.rb +109 -36
  309. data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
  310. data/spec/unit/provider/user/hpux_spec.rb +2 -2
  311. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  312. data/spec/unit/provider/user/useradd_spec.rb +81 -16
  313. data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
  314. data/spec/unit/puppet_pal_2pec.rb +3 -0
  315. data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
  316. data/spec/unit/ssl/certificate_spec.rb +7 -0
  317. data/spec/unit/ssl/host_spec.rb +2 -0
  318. data/spec/unit/test/test_helper_spec.rb +17 -0
  319. data/spec/unit/type/exec_spec.rb +6 -12
  320. data/spec/unit/type/file/content_spec.rb +9 -3
  321. data/spec/unit/type/file_spec.rb +9 -4
  322. data/spec/unit/type/package_spec.rb +8 -0
  323. data/spec/unit/type/selboolean_spec.rb +4 -6
  324. data/spec/unit/type/service_spec.rb +9 -8
  325. data/spec/unit/type/user_spec.rb +19 -13
  326. data/spec/unit/util/execution_spec.rb +16 -0
  327. data/spec/unit/util/http_proxy_spec.rb +97 -0
  328. data/spec/unit/util/log/destinations_spec.rb +2 -26
  329. data/spec/unit/util/log_spec.rb +0 -138
  330. data/spec/unit/util/logging_spec.rb +200 -0
  331. data/spec/unit/util/pidlock_spec.rb +67 -40
  332. data/spec/unit/util/plist_spec.rb +20 -0
  333. data/spec/unit/util/windows/adsi_spec.rb +55 -4
  334. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  335. data/spec/unit/util/windows/sid_spec.rb +2 -2
  336. data/tasks/manpages.rake +1 -0
  337. metadata +16 -7
  338. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  339. data/locales/ja/puppet.po +0 -12114
  340. data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -248,6 +248,8 @@ class ResourceTypeImpl
248
248
  #######################
249
249
 
250
250
  # Applications are not supported
251
+ #
252
+ # @deprecated application orchestration will be removed in puppet 7
251
253
  def application?
252
254
  false
253
255
  end
@@ -23,13 +23,16 @@ module Puppet::Pops::Types
23
23
  #
24
24
  # An `ArgumentError` is raised for all other objects.
25
25
  #
26
- # @param o [Object] The object to produce an `Iterable` for
26
+ # @param my_caller [Object] The calling object to reference in errors
27
+ # @param obj [Object] The object to produce an `Iterable` for
28
+ # @param infer_elements [Boolean] Whether or not to recursively infer all elements of obj. Optional
29
+ #
27
30
  # @return [Iterable,nil] The produced `Iterable`
28
31
  # @raise [ArgumentError] In case an `Iterable` cannot be produced
29
32
  # @api public
30
- def self.asserted_iterable(caller, obj)
31
- iter = self.on(obj)
32
- raise ArgumentError, "#{caller.class}(): wrong argument type (#{obj.class}; is not Iterable." if iter.nil?
33
+ def self.asserted_iterable(my_caller, obj, infer_elements = false)
34
+ iter = self.on(obj, nil, infer_elements)
35
+ raise ArgumentError, "#{my_caller.class}(): wrong argument type (#{obj.class}; is not Iterable." if iter.nil?
33
36
  iter
34
37
  end
35
38
 
@@ -48,11 +51,14 @@ module Puppet::Pops::Types
48
51
  # The value `nil` is returned for all other objects.
49
52
  #
50
53
  # @param o [Object] The object to produce an `Iterable` for
51
- # @param element_type [PAnyType] the element type for the iterator. Optional (inferred if not provided)
54
+ # @param element_type [PAnyType] the element type for the iterator. Optional
55
+ # @param infer_elements [Boolean] if element_type is nil, whether or not to recursively
56
+ # infer types for the entire collection. Optional
57
+ #
52
58
  # @return [Iterable,nil] The produced `Iterable` or `nil` if it couldn't be produced
53
59
  #
54
60
  # @api public
55
- def self.on(o, element_type = nil)
61
+ def self.on(o, element_type = nil, infer_elements = true)
56
62
  case o
57
63
  when IteratorProducer
58
64
  o.iterator
@@ -64,7 +70,7 @@ module Puppet::Pops::Types
64
70
  if o.empty?
65
71
  Iterator.new(PUnitType::DEFAULT, o.each)
66
72
  else
67
- if element_type.nil?
73
+ if element_type.nil? && infer_elements
68
74
  tc = TypeCalculator.singleton
69
75
  element_type = PVariantType.maybe_create(o.map {|e| tc.infer_set(e) })
70
76
  end
@@ -75,7 +81,7 @@ module Puppet::Pops::Types
75
81
  if o.empty?
76
82
  HashIterator.new(PHashType::DEFAULT_KEY_PAIR_TUPLE, o.each)
77
83
  else
78
- if element_type.nil?
84
+ if element_type.nil? && infer_elements
79
85
  tc = TypeCalculator.singleton
80
86
  element_type = PTupleType.new([
81
87
  PVariantType.maybe_create(o.keys.map {|e| tc.infer_set(e) }),
@@ -202,6 +208,26 @@ module Puppet::Pops::Types
202
208
  @enumeration.send(name, *arguments, &block)
203
209
  end
204
210
 
211
+ def next
212
+ @enumeration.next
213
+ end
214
+
215
+ def map(*args, &block)
216
+ @enumeration.map(*args, &block)
217
+ end
218
+
219
+ def reduce(*args, &block)
220
+ @enumeration.reduce(*args, &block)
221
+ end
222
+
223
+ def all?(&block)
224
+ @enumeration.all?(&block)
225
+ end
226
+
227
+ def any?(&block)
228
+ @enumeration.any?(&block)
229
+ end
230
+
205
231
  def step(step, &block)
206
232
  raise ArgumentError if step <= 0
207
233
  r = self
@@ -22,7 +22,7 @@ class PMetaType < PAnyType
22
22
  end
23
23
 
24
24
  def instance?(o, guard = nil)
25
- assignable?(TypeCalculator.infer(o), guard)
25
+ raise NotImplementedError, "Subclass of PMetaType should implement 'instance?'"
26
26
  end
27
27
 
28
28
  # Called from the TypeParser once it has found a type using the Loader. The TypeParser will
@@ -22,7 +22,7 @@ class PSensitiveType < PTypeWithContainedType
22
22
  end
23
23
 
24
24
  def inspect
25
- "#<#{to_s}>"
25
+ "#<#{self}>"
26
26
  end
27
27
  end
28
28
 
@@ -349,6 +349,10 @@ class PTypeSetType < PMetaType
349
349
  self.class == o.class && @name_authority == o.name_authority && @name == o.name && @version == o.version
350
350
  end
351
351
 
352
+ def instance?(o, guard = nil)
353
+ o.is_a?(PTypeSetType)
354
+ end
355
+
352
356
  DEFAULT = self.new({
353
357
  KEY_NAME => 'DefaultTypeSet',
354
358
  KEY_NAME_AUTHORITY => Pcore::RUNTIME_NAME_AUTHORITY,
@@ -728,7 +728,7 @@ class StringConverter
728
728
  when :c
729
729
  char = [val].pack("U")
730
730
  char = f.alt? ? "\"#{char}\"" : char
731
- Kernel.format(f.orig_fmt.gsub('c','s'), char)
731
+ Kernel.format(f.orig_fmt.tr('c','s'), char)
732
732
 
733
733
  when :s
734
734
  fmt = f.alt? ? 'p' : 's'
@@ -781,7 +781,7 @@ class StringConverter
781
781
 
782
782
  when :p
783
783
  # width & precision applied to string, not the the name of the type
784
- "Binary(\"#{Kernel.format(f.orig_fmt.gsub('p', 's'), val.to_s)}\")"
784
+ "Binary(\"#{Kernel.format(f.orig_fmt.tr('p', 's'), val.to_s)}\")"
785
785
 
786
786
  when :b
787
787
  Kernel.format(f.orig_fmt.gsub('b', substitute), val.relaxed_to_s)
@@ -817,23 +817,23 @@ class StringConverter
817
817
 
818
818
  when :c
819
819
  c_val = val.capitalize
820
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.gsub('c', 's'), c_val)
820
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('c', 's'), c_val)
821
821
 
822
822
  when :C
823
823
  c_val = val.split('::').map {|s| s.capitalize }.join('::')
824
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.gsub('C', 's'), c_val)
824
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('C', 's'), c_val)
825
825
 
826
826
  when :u
827
827
  c_val = val.upcase
828
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.gsub('u', 's'), c_val)
828
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('u', 's'), c_val)
829
829
 
830
830
  when :d
831
831
  c_val = val.downcase
832
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.gsub('d', 's'), c_val)
832
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('d', 's'), c_val)
833
833
 
834
834
  when :t # trim
835
835
  c_val = val.strip
836
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.gsub('t', 's'), c_val)
836
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('t', 's'), c_val)
837
837
 
838
838
  else
839
839
  raise FormatError.new('String', f.format, 'cCudspt')
@@ -916,7 +916,7 @@ class StringConverter
916
916
  case f.format
917
917
  when :p
918
918
  str_regexp = PRegexpType.regexp_to_s_with_delimiters(val)
919
- f.orig_fmt == '%p' ? str_regexp : Kernel.format(f.orig_fmt.gsub('p', 's'), str_regexp)
919
+ f.orig_fmt == '%p' ? str_regexp : Kernel.format(f.orig_fmt.tr('p', 's'), str_regexp)
920
920
  when :s
921
921
  str_regexp = PRegexpType.regexp_to_s(val)
922
922
  str_regexp = puppet_quote(str_regexp) if f.alt?
@@ -1093,10 +1093,10 @@ class StringConverter
1093
1093
  f = get_format(val_type, format_map)
1094
1094
  case f.format
1095
1095
  when :s
1096
- str_val = f.alt? ? "\"#{val.to_s}\"" : val.to_s
1096
+ str_val = f.alt? ? "\"#{val}\"" : val.to_s
1097
1097
  Kernel.format(f.orig_fmt, str_val)
1098
1098
  when :p
1099
- Kernel.format(f.orig_fmt.gsub('p', 's'), val.to_s)
1099
+ Kernel.format(f.orig_fmt.tr('p', 's'), val.to_s)
1100
1100
  else
1101
1101
  raise FormatError.new('Type', f.format, 'sp')
1102
1102
  end
@@ -120,6 +120,30 @@ class TypeCalculator
120
120
  singleton.infer(o)
121
121
  end
122
122
 
123
+ # Infers a type if given object may have callable members, else returns nil.
124
+ # Caller must check for nil or if returned type supports members.
125
+ # This is a much cheaper call than doing a call to the general infer(o) method.
126
+ #
127
+ # @api private
128
+ def self.infer_callable_methods_t(o)
129
+ # If being a value that cannot have Pcore based methods callable from Puppet Language
130
+ if (o.is_a?(String) ||
131
+ o.is_a?(Numeric) ||
132
+ o.is_a?(TrueClass) ||
133
+ o.is_a?(FalseClass) ||
134
+ o.is_a?(Regexp) ||
135
+ o.instance_of?(Array) ||
136
+ o.instance_of?(Hash) ||
137
+ Types::PUndefType::DEFAULT.instance?(o)
138
+ )
139
+ return nil
140
+ end
141
+ # For other objects (e.g. PObjectType instances, and runtime types) full inference needed, since that will
142
+ # cover looking into the runtime type registry.
143
+ #
144
+ infer(o)
145
+ end
146
+
123
147
  # @api public
124
148
  def self.generalize(o)
125
149
  singleton.generalize(o)
@@ -340,7 +340,7 @@ class PAnyType < TypedModelObject
340
340
  # @raises ArgumentError
341
341
  #
342
342
  def self.new_function(type)
343
- raise ArgumentError.new("Creation of new instance of type '#{type.to_s}' is not supported")
343
+ raise ArgumentError.new("Creation of new instance of type '#{type}' is not supported")
344
344
  end
345
345
 
346
346
  # Answers the question if instances of this type can represent themselves as a string that
@@ -1268,7 +1268,7 @@ class PFloatType < PNumericType
1268
1268
  else
1269
1269
  begin
1270
1270
  # support a binary as float
1271
- if from[0] == '0' && from[1].downcase == 'b'
1271
+ if from[0] == '0' && from[1].casecmp('b').zero?
1272
1272
  from = Integer(from)
1273
1273
  end
1274
1274
  Float(from)
@@ -1699,7 +1699,7 @@ class PRegexpType < PScalarType
1699
1699
  # @param regexp [Regexp] the regular expression
1700
1700
  # @return [String] the Regexp as a slash delimited string with slashes escaped
1701
1701
  def self.regexp_to_s_with_delimiters(regexp)
1702
- regexp.options == 0 ? regexp.inspect : "/#{regexp.to_s}/"
1702
+ regexp.options == 0 ? regexp.inspect : "/#{regexp}/"
1703
1703
  end
1704
1704
 
1705
1705
  # @param regexp [Regexp] the regular expression
@@ -194,6 +194,11 @@ class Checker4_0 < Evaluator::LiteralEvaluator
194
194
  end
195
195
  end
196
196
 
197
+ def check_Application(o)
198
+ check_NamedDefinition(o)
199
+ acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
200
+ end
201
+
197
202
  def check_AssignmentExpression(o)
198
203
  case o.operator
199
204
  when '='
@@ -291,6 +296,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
291
296
  end
292
297
 
293
298
  def check_CapabilityMapping(o)
299
+ acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
294
300
  ok =
295
301
  case o.component
296
302
  when Model::QualifiedReference
@@ -575,36 +581,40 @@ class Checker4_0 < Evaluator::LiteralEvaluator
575
581
  # @api private
576
582
  class Puppet::Util::FileNamespaceAdapter < Puppet::Pops::Adaptable::Adapter
577
583
  attr_accessor :file_to_namespace
584
+
585
+ def self.create_adapter(env)
586
+ adapter = super(env)
587
+ adapter.file_to_namespace = {}
588
+ adapter
589
+ end
578
590
  end
579
591
 
580
592
  def namespace_for_file(file)
581
593
  env = Puppet.lookup(:current_environment)
582
594
  return NO_NAMESPACE if env.nil?
583
595
 
584
- Puppet::Util::FileNamespaceAdapter.adapt(env) do |adapter|
585
- adapter.file_to_namespace ||= {}
596
+ adapter = Puppet::Util::FileNamespaceAdapter.adapt(env)
586
597
 
587
- file_namespace = adapter.file_to_namespace[file]
588
- return file_namespace unless file_namespace.nil? # No cache entry, so we do the calculation
598
+ file_namespace = adapter.file_to_namespace[file]
599
+ return file_namespace unless file_namespace.nil? # No cache entry, so we do the calculation
589
600
 
590
- path = Pathname.new(file)
601
+ path = Pathname.new(file)
591
602
 
592
- return adapter.file_to_namespace[file] = NO_NAMESPACE if path.extname != ".pp"
603
+ return adapter.file_to_namespace[file] = NO_NAMESPACE if path.extname != ".pp"
593
604
 
594
- path = path.expand_path
605
+ path = path.expand_path
595
606
 
596
- return adapter.file_to_namespace[file] = NO_NAMESPACE if initial_manifest?(path, env.manifest)
607
+ return adapter.file_to_namespace[file] = NO_NAMESPACE if initial_manifest?(path, env.manifest)
597
608
 
598
- #All auto-loaded files from modules come from a module search path dir
599
- relative_path = get_module_relative_path(path, env.full_modulepath)
609
+ #All auto-loaded files from modules come from a module search path dir
610
+ relative_path = get_module_relative_path(path, env.full_modulepath)
600
611
 
601
- return adapter.file_to_namespace[file] = NO_NAMESPACE if relative_path == NO_PATH
612
+ return adapter.file_to_namespace[file] = NO_NAMESPACE if relative_path == NO_PATH
602
613
 
603
- #If a file comes from a module, but isn't in the right place, always error
604
- names = dir_to_names(relative_path)
614
+ #If a file comes from a module, but isn't in the right place, always error
615
+ names = dir_to_names(relative_path)
605
616
 
606
- return adapter.file_to_namespace[file] = (names == BAD_MODULE_FILE ? BAD_MODULE_FILE : names.join("::").freeze)
607
- end
617
+ return adapter.file_to_namespace[file] = (names == BAD_MODULE_FILE ? BAD_MODULE_FILE : names.join("::").freeze)
608
618
  end
609
619
 
610
620
  def initial_manifest?(path, manifest_setting)
@@ -850,6 +860,10 @@ class Checker4_0 < Evaluator::LiteralEvaluator
850
860
  rvalue(o.matching_expr)
851
861
  end
852
862
 
863
+ def check_SiteDefinition(o)
864
+ acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
865
+ end
866
+
853
867
  def check_UnaryExpression(o)
854
868
  rvalue(o.expr)
855
869
  end
@@ -31,6 +31,7 @@ class ValidatorFactory_4_0 < Factory
31
31
  p[Issues::RT_NO_STORECONFIGS] = Puppet[:storeconfigs] ? :ignore : :warning
32
32
 
33
33
  p[Issues::FUTURE_RESERVED_WORD] = :deprecation
34
+ p[Issues::DEPRECATED_APP_ORCHESTRATION] = :deprecation
34
35
 
35
36
  p[Issues::DUPLICATE_KEY] = Puppet[:strict] == :off ? :ignore : Puppet[:strict]
36
37
  p[Issues::NAME_WITH_HYPHEN] = :error
@@ -209,7 +209,7 @@ class Puppet::Property < Puppet::Parameter
209
209
  else
210
210
  return "#{name} changed #{is_to_s(current_value)} to #{should_to_s(newvalue)}"
211
211
  end
212
- rescue Puppet::Error, Puppet::DevError
212
+ rescue Puppet::Error
213
213
  raise
214
214
  rescue => detail
215
215
  message = _("Could not convert change '%{name}' to string: %{detail}") % { name: name, detail: detail }
@@ -56,7 +56,7 @@ class Puppet::Property::Ensure < Puppet::Property
56
56
  else
57
57
  return _('%{name} changed %{is} to %{should}') % { name: name, is: is_to_s(currentvalue), should: should_to_s(newvalue) }
58
58
  end
59
- rescue Puppet::Error, Puppet::DevError
59
+ rescue Puppet::Error
60
60
  raise
61
61
  rescue => detail
62
62
  raise Puppet::DevError, _("Could not convert change %{name} to string: %{detail}") % { name: self.name, detail: detail }, detail.backtrace
@@ -103,7 +103,7 @@ Puppet::Type.type(:augeas).provide(:augeas) do
103
103
  inSingleTick = !inSingleTick if ch == "'"
104
104
  inDoubleTick = !inDoubleTick if ch == "\""
105
105
  fail(_("unmatched [")) if nbracket < 0
106
- end until ((nbracket == 0 && !inSingleTick && !inDoubleTick && (ch =~ /\s/)) || sc.eos?)
106
+ end until ((nbracket == 0 && !inSingleTick && !inDoubleTick && (ch =~ /\s/)) || sc.eos?) # rubocop:disable Lint/Loop
107
107
  len = sc.pos - start
108
108
  len -= 1 unless sc.eos?
109
109
  unless p = sc.string[start, len]
@@ -212,7 +212,7 @@ Puppet::Type.type(:cron).provide(:crontab, :parent => Puppet::Provider::ParsedFi
212
212
  else
213
213
  cmd_string = record[:command].gsub(/\s+/, "_")
214
214
  index = ( @name_index += 1 )
215
- record[:name] = "unmanaged:#{cmd_string}-#{ index.to_s }"
215
+ record[:name] = "unmanaged:#{cmd_string}-#{ index }"
216
216
  record[:unmanaged] = true
217
217
  end
218
218
  if envs.nil? or envs.empty?
@@ -47,7 +47,11 @@ class Puppet::Provider::Exec < Puppet::Provider
47
47
  # This is backwards compatible all the way to Ruby 1.8.7.
48
48
  Timeout::timeout(resource[:timeout], Timeout::Error) do
49
49
  cwd = resource[:cwd]
50
- cwd ||= Dir.pwd
50
+ # It's ok if cwd is nil. In that case Puppet::Util::Execution.execute() simply will not attempt to
51
+ # change the working directory, which is exactly the right behavior when no cwd parameter is
52
+ # expressed on the resource. Moreover, attempting to change to the directory that is already
53
+ # the working directory can fail under some circumstances, so avoiding the directory change attempt
54
+ # is preferable to defaulting cwd to that directory.
51
55
 
52
56
  # note that we are passing "false" for the "override_locale" parameter, which ensures that the user's
53
57
  # default/system locale will be respected. Callers may override this behavior by setting locale-related
@@ -88,6 +92,6 @@ class Puppet::Provider::Exec < Puppet::Provider
88
92
  def validatecmd(command)
89
93
  exe = extractexe(command)
90
94
  # if we're not fully qualified, require a path
91
- self.fail _("'%{command}' is not qualified and no path was specified. Please qualify the command or specify a path.") % { command: command } if !absolute_path?(exe) and resource[:path].nil?
95
+ self.fail _("'%{exe}' is not qualified and no path was specified. Please qualify the command or specify a path.") % { exe: exe } if !absolute_path?(exe) and resource[:path].nil?
92
96
  end
93
97
  end
@@ -28,25 +28,9 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
28
28
  get(:gid)
29
29
  end
30
30
 
31
- def findgroup(key, value)
32
- group_file = "/etc/group"
33
- group_keys = ['group_name', 'password', 'gid', 'user_list']
34
- index = group_keys.index(key)
35
- File.open(group_file) do |f|
36
- f.each_line do |line|
37
- group = line.split(":")
38
- if group[index] == value
39
- f.close
40
- return group
41
- end
42
- end
43
- end
44
- false
45
- end
46
-
47
31
  def localgid
48
- group = findgroup('group_name', resource[:name])
49
- return group[2] if group
32
+ group = findgroup(:group_name, resource[:name])
33
+ return group[:gid] if group
50
34
  false
51
35
  end
52
36
 
@@ -56,7 +40,7 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
56
40
  # to ensure consistent behaviour of the useradd provider when
57
41
  # using both useradd and luseradd
58
42
  if not @resource.allowdupe? and @resource.forcelocal?
59
- if @resource.should(:gid) and findgroup('gid', @resource.should(:gid).to_s)
43
+ if @resource.should(:gid) and findgroup(:gid, @resource.should(:gid).to_s)
60
44
  raise(Puppet::Error, _("GID %{resource} already exists, use allowdupe to force group creation") % { resource: @resource.should(:gid).to_s })
61
45
  end
62
46
  elsif @resource.allowdupe? and not @resource.forcelocal?
@@ -108,4 +92,20 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
108
92
  [command(:delete), @resource[:name]]
109
93
  end
110
94
  end
95
+
96
+ private
97
+
98
+ def findgroup(key, value)
99
+ group_file = "/etc/group"
100
+ group_keys = [:group_name, :password, :gid, :user_list]
101
+ index = group_keys.index(key)
102
+ @group_content ||= File.read(group_file)
103
+ @group_content.each_line do |line|
104
+ group = line.split(":")
105
+ if group[index] == value
106
+ return Hash[group_keys.zip(group)]
107
+ end
108
+ end
109
+ false
110
+ end
111
111
  end