puppet 4.3.2 → 4.4.0

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 (487) hide show
  1. checksums.yaml +4 -4
  2. data/COMMITTERS.md +2 -2
  3. data/CONTRIBUTING.md +6 -6
  4. data/LICENSE +1 -1
  5. data/README.md +8 -9
  6. data/conf/auth.conf +2 -2
  7. data/ext/README.environment +1 -1
  8. data/ext/debian/README.source +1 -1
  9. data/ext/debian/control +1 -1
  10. data/ext/debian/copyright +4 -4
  11. data/ext/debian/puppetmaster.README.debian +11 -9
  12. data/ext/emacs/puppet-mode.el +1 -1
  13. data/ext/envpuppet +2 -2
  14. data/ext/ips/puppetagent.xml +1 -1
  15. data/ext/ips/puppetmaster.xml +1 -1
  16. data/ext/project_data.yaml +8 -0
  17. data/ext/puppet-test +3 -3
  18. data/ext/rack/example-passenger-vhost.conf +1 -1
  19. data/ext/redhat/puppet.spec.erb +2 -2
  20. data/ext/regexp_nodes/regexp_nodes.rb +1 -1
  21. data/ext/solaris/pkginfo +1 -1
  22. data/ext/solaris/smf/puppet.xml +1 -1
  23. data/ext/suse/puppet.spec +2 -2
  24. data/ext/upload_facts.rb +1 -1
  25. data/ext/windows/puppet_interactive.bat +6 -0
  26. data/ext/windows/puppet_shell.bat +9 -0
  27. data/ext/windows/run_puppet_interactive.bat +9 -0
  28. data/ext/yaml_nodes.rb +1 -1
  29. data/install.rb +30 -20
  30. data/lib/puppet/agent.rb +1 -1
  31. data/lib/puppet/application/agent.rb +4 -2
  32. data/lib/puppet/application/apply.rb +7 -4
  33. data/lib/puppet/application/cert.rb +1 -1
  34. data/lib/puppet/application/device.rb +1 -1
  35. data/lib/puppet/application/filebucket.rb +1 -1
  36. data/lib/puppet/application/inspect.rb +1 -1
  37. data/lib/puppet/application/lookup.rb +4 -4
  38. data/lib/puppet/application/master.rb +2 -2
  39. data/lib/puppet/application/resource.rb +1 -1
  40. data/lib/puppet/configurer.rb +100 -22
  41. data/lib/puppet/data_providers/hiera_config.rb +28 -3
  42. data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
  43. data/lib/puppet/data_providers/hiera_support.rb +1 -1
  44. data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
  45. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
  46. data/lib/puppet/defaults.rb +65 -19
  47. data/lib/puppet/environments.rb +3 -1
  48. data/lib/puppet/face/config.rb +1 -1
  49. data/lib/puppet/face/epp.rb +1 -1
  50. data/lib/puppet/face/help/man.erb +1 -1
  51. data/lib/puppet/face/module/install.rb +6 -6
  52. data/lib/puppet/face/parser.rb +12 -9
  53. data/lib/puppet/face/status.rb +2 -1
  54. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  55. data/lib/puppet/feature/telnet.rb +9 -0
  56. data/lib/puppet/file_serving/http_metadata.rb +46 -0
  57. data/lib/puppet/file_serving/metadata.rb +18 -2
  58. data/lib/puppet/file_serving/terminus_selector.rb +2 -0
  59. data/lib/puppet/file_system.rb +2 -2
  60. data/lib/puppet/file_system/file_impl.rb +2 -2
  61. data/lib/puppet/file_system/memory_impl.rb +1 -1
  62. data/lib/puppet/file_system/uniquefile.rb +1 -1
  63. data/lib/puppet/forge.rb +1 -1
  64. data/lib/puppet/forge/repository.rb +1 -31
  65. data/lib/puppet/functions.rb +45 -6
  66. data/lib/puppet/functions/assert_type.rb +9 -9
  67. data/lib/puppet/functions/each.rb +5 -13
  68. data/lib/puppet/functions/filter.rb +5 -14
  69. data/lib/puppet/functions/map.rb +6 -14
  70. data/lib/puppet/functions/reduce.rb +5 -13
  71. data/lib/puppet/functions/reverse_each.rb +82 -0
  72. data/lib/puppet/functions/scanf.rb +15 -18
  73. data/lib/puppet/functions/slice.rb +22 -36
  74. data/lib/puppet/functions/split.rb +2 -2
  75. data/lib/puppet/functions/step.rb +88 -0
  76. data/lib/puppet/functions/type.rb +70 -0
  77. data/lib/puppet/graph/rb_tree_map.rb +1 -1
  78. data/lib/puppet/indirector/catalog/compiler.rb +188 -5
  79. data/lib/puppet/indirector/file_content/http.rb +15 -0
  80. data/lib/puppet/indirector/file_metadata/http.rb +27 -0
  81. data/lib/puppet/indirector/generic_http.rb +16 -0
  82. data/lib/puppet/indirector/node/exec.rb +1 -1
  83. data/lib/puppet/indirector/node/ldap.rb +1 -1
  84. data/lib/puppet/indirector/rest.rb +2 -1
  85. data/lib/puppet/info_service/class_information_service.rb +13 -12
  86. data/lib/puppet/loaders.rb +1 -0
  87. data/lib/puppet/module.rb +3 -0
  88. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
  89. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
  90. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
  91. data/lib/puppet/module_tool/tar/mini.rb +3 -3
  92. data/lib/puppet/network/http/pool.rb +9 -0
  93. data/lib/puppet/node.rb +1 -1
  94. data/lib/puppet/node/environment.rb +11 -2
  95. data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
  96. data/lib/puppet/parser/compiler.rb +3 -3
  97. data/lib/puppet/parser/environment_compiler.rb +0 -1
  98. data/lib/puppet/parser/functions.rb +28 -16
  99. data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
  100. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  101. data/lib/puppet/parser/functions/map.rb +1 -1
  102. data/lib/puppet/parser/functions/scanf.rb +15 -26
  103. data/lib/puppet/parser/functions/slice.rb +17 -24
  104. data/lib/puppet/parser/functions/split.rb +1 -1
  105. data/lib/puppet/parser/resource.rb +19 -17
  106. data/lib/puppet/parser/scope.rb +176 -5
  107. data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
  108. data/lib/puppet/pops.rb +0 -8
  109. data/lib/puppet/pops/adaptable.rb +4 -1
  110. data/lib/puppet/pops/adapters.rb +38 -13
  111. data/lib/puppet/pops/binder/binder.rb +21 -17
  112. data/lib/puppet/pops/binder/binder_issues.rb +8 -6
  113. data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
  114. data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
  115. data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
  116. data/lib/puppet/pops/binder/bindings_model.rb +49 -47
  117. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
  118. data/lib/puppet/pops/binder/injector.rb +53 -48
  119. data/lib/puppet/pops/binder/key_factory.rb +10 -6
  120. data/lib/puppet/pops/binder/producers.rb +67 -62
  121. data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
  122. data/lib/puppet/pops/evaluator/closure.rb +84 -68
  123. data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
  124. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
  125. data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
  126. data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
  127. data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
  128. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
  129. data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
  130. data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
  131. data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
  132. data/lib/puppet/pops/issue_reporter.rb +6 -4
  133. data/lib/puppet/pops/issues.rb +34 -11
  134. data/lib/puppet/pops/loader/base_loader.rb +1 -1
  135. data/lib/puppet/pops/loader/loader.rb +1 -1
  136. data/lib/puppet/pops/loader/loader_paths.rb +15 -0
  137. data/lib/puppet/pops/loader/module_loaders.rb +17 -13
  138. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
  139. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
  140. data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
  141. data/lib/puppet/pops/loaders.rb +51 -9
  142. data/lib/puppet/pops/lookup.rb +14 -12
  143. data/lib/puppet/pops/merge_strategy.rb +16 -19
  144. data/lib/puppet/pops/model/factory.rb +26 -2
  145. data/lib/puppet/pops/model/model.rb +8 -8
  146. data/lib/puppet/pops/model/model_label_provider.rb +13 -7
  147. data/lib/puppet/pops/model/model_meta.rb +17 -0
  148. data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
  149. data/lib/puppet/pops/parser/egrammar.ra +38 -14
  150. data/lib/puppet/pops/parser/eparser.rb +1353 -1276
  151. data/lib/puppet/pops/parser/epp_support.rb +11 -7
  152. data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
  153. data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
  154. data/lib/puppet/pops/parser/lexer2.rb +26 -19
  155. data/lib/puppet/pops/parser/lexer_support.rb +85 -7
  156. data/lib/puppet/pops/parser/locator.rb +21 -0
  157. data/lib/puppet/pops/parser/parser_support.rb +19 -16
  158. data/lib/puppet/pops/parser/slurp_support.rb +11 -7
  159. data/lib/puppet/pops/types/class_loader.rb +23 -19
  160. data/lib/puppet/pops/types/enumeration.rb +9 -26
  161. data/lib/puppet/pops/types/iterable.rb +308 -0
  162. data/lib/puppet/pops/types/recursion_guard.rb +82 -0
  163. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  164. data/lib/puppet/pops/types/type_asserter.rb +10 -9
  165. data/lib/puppet/pops/types/type_calculator.rb +138 -381
  166. data/lib/puppet/pops/types/type_factory.rb +91 -57
  167. data/lib/puppet/pops/types/type_formatter.rb +334 -0
  168. data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
  169. data/lib/puppet/pops/types/type_parser.rb +159 -112
  170. data/lib/puppet/pops/types/types.rb +2057 -1247
  171. data/lib/puppet/pops/utils.rb +11 -10
  172. data/lib/puppet/pops/validation.rb +11 -9
  173. data/lib/puppet/pops/validation/checker4_0.rb +83 -55
  174. data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
  175. data/lib/puppet/provider/aixobject.rb +1 -1
  176. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  177. data/lib/puppet/provider/cron/crontab.rb +1 -1
  178. data/lib/puppet/provider/exec/windows.rb +1 -1
  179. data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
  180. data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
  181. data/lib/puppet/provider/package/appdmg.rb +3 -2
  182. data/lib/puppet/provider/package/dnf.rb +1 -1
  183. data/lib/puppet/provider/package/pip.rb +5 -8
  184. data/lib/puppet/provider/package/pip3.rb +1 -1
  185. data/lib/puppet/provider/package/pkg.rb +1 -1
  186. data/lib/puppet/provider/package/pkgdmg.rb +3 -2
  187. data/lib/puppet/provider/package/pkgng.rb +13 -4
  188. data/lib/puppet/provider/package/windows.rb +1 -1
  189. data/lib/puppet/provider/package/yum.rb +1 -1
  190. data/lib/puppet/provider/package/zypper.rb +19 -0
  191. data/lib/puppet/provider/service/debian.rb +2 -2
  192. data/lib/puppet/provider/service/launchd.rb +6 -18
  193. data/lib/puppet/provider/service/systemd.rb +9 -2
  194. data/lib/puppet/provider/sshkey/parsed.rb +1 -1
  195. data/lib/puppet/provider/user/aix.rb +1 -1
  196. data/lib/puppet/provider/user/directoryservice.rb +33 -58
  197. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  198. data/lib/puppet/provider/zpool/zpool.rb +1 -1
  199. data/lib/puppet/reference/configuration.rb +1 -1
  200. data/lib/puppet/reference/providers.rb +1 -1
  201. data/lib/puppet/resource.rb +15 -12
  202. data/lib/puppet/resource/capability_finder.rb +20 -13
  203. data/lib/puppet/resource/catalog.rb +60 -3
  204. data/lib/puppet/resource/status.rb +11 -2
  205. data/lib/puppet/resource/type.rb +28 -38
  206. data/lib/puppet/settings.rb +1 -1
  207. data/lib/puppet/settings/config_file.rb +1 -1
  208. data/lib/puppet/settings/environment_conf.rb +13 -5
  209. data/lib/puppet/ssl/certificate_factory.rb +3 -3
  210. data/lib/puppet/ssl/certificate_request.rb +4 -4
  211. data/lib/puppet/ssl/certificate_signer.rb +1 -1
  212. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  213. data/lib/puppet/test/test_helper.rb +16 -4
  214. data/lib/puppet/transaction.rb +15 -2
  215. data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
  216. data/lib/puppet/transaction/report.rb +31 -1
  217. data/lib/puppet/transaction/resource_harness.rb +0 -25
  218. data/lib/puppet/type.rb +11 -11
  219. data/lib/puppet/type/augeas.rb +1 -1
  220. data/lib/puppet/type/cron.rb +12 -12
  221. data/lib/puppet/type/file.rb +91 -39
  222. data/lib/puppet/type/file/checksum_value.rb +53 -0
  223. data/lib/puppet/type/file/content.rb +26 -111
  224. data/lib/puppet/type/file/data_sync.rb +84 -0
  225. data/lib/puppet/type/file/ensure.rb +17 -14
  226. data/lib/puppet/type/file/selcontext.rb +1 -1
  227. data/lib/puppet/type/file/source.rb +103 -18
  228. data/lib/puppet/type/filebucket.rb +1 -1
  229. data/lib/puppet/type/interface.rb +8 -3
  230. data/lib/puppet/type/macauthorization.rb +1 -1
  231. data/lib/puppet/type/package.rb +6 -0
  232. data/lib/puppet/type/schedule.rb +1 -1
  233. data/lib/puppet/type/stage.rb +1 -1
  234. data/lib/puppet/type/user.rb +19 -17
  235. data/lib/puppet/type/yumrepo.rb +20 -0
  236. data/lib/puppet/util.rb +109 -22
  237. data/lib/puppet/util/autoload.rb +16 -11
  238. data/lib/puppet/util/checksums.rb +74 -31
  239. data/lib/puppet/util/execution.rb +1 -1
  240. data/lib/puppet/util/http_proxy.rb +72 -0
  241. data/lib/puppet/util/log.rb +2 -0
  242. data/lib/puppet/util/logging.rb +43 -1
  243. data/lib/puppet/util/monkey_patches.rb +2 -2
  244. data/lib/puppet/util/multi_match.rb +51 -0
  245. data/lib/puppet/util/network_device/cisco/device.rb +10 -2
  246. data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
  247. data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
  248. data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
  249. data/lib/puppet/util/plist.rb +130 -0
  250. data/lib/puppet/util/resource_template.rb +1 -1
  251. data/lib/puppet/util/run_mode.rb +2 -2
  252. data/lib/puppet/util/skip_tags.rb +9 -0
  253. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  254. data/lib/puppet/util/windows/access_control_list.rb +3 -3
  255. data/lib/puppet/util/windows/adsi.rb +4 -4
  256. data/lib/puppet/util/windows/api_types.rb +24 -18
  257. data/lib/puppet/util/windows/com.rb +3 -3
  258. data/lib/puppet/util/windows/error.rb +1 -1
  259. data/lib/puppet/util/windows/file.rb +8 -8
  260. data/lib/puppet/util/windows/principal.rb +23 -14
  261. data/lib/puppet/util/windows/process.rb +78 -11
  262. data/lib/puppet/util/windows/registry.rb +1 -1
  263. data/lib/puppet/util/windows/root_certs.rb +5 -5
  264. data/lib/puppet/util/windows/security.rb +33 -35
  265. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  266. data/lib/puppet/util/windows/sid.rb +42 -4
  267. data/lib/puppet/util/windows/taskscheduler.rb +15 -15
  268. data/lib/puppet/util/windows/user.rb +10 -10
  269. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
  270. data/lib/puppet/vendor/pathspec/LICENSE +2 -2
  271. data/lib/puppet/vendor/pathspec/README.md +1 -1
  272. data/lib/puppet/vendor/rgen/README.rdoc +1 -1
  273. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
  274. data/lib/puppet/version.rb +1 -1
  275. data/lib/semver.rb +17 -1
  276. data/man/man5/puppet.conf.5 +12 -12
  277. data/man/man8/extlookup2hiera.8 +1 -1
  278. data/man/man8/puppet-agent.8 +2 -2
  279. data/man/man8/puppet-apply.8 +2 -2
  280. data/man/man8/puppet-ca.8 +2 -2
  281. data/man/man8/puppet-catalog.8 +2 -2
  282. data/man/man8/puppet-cert.8 +2 -2
  283. data/man/man8/puppet-certificate.8 +2 -2
  284. data/man/man8/puppet-certificate_request.8 +2 -2
  285. data/man/man8/puppet-certificate_revocation_list.8 +2 -2
  286. data/man/man8/puppet-config.8 +3 -3
  287. data/man/man8/puppet-describe.8 +1 -1
  288. data/man/man8/puppet-device.8 +1 -1
  289. data/man/man8/puppet-doc.8 +1 -1
  290. data/man/man8/puppet-epp.8 +2 -2
  291. data/man/man8/puppet-facts.8 +2 -2
  292. data/man/man8/puppet-file.8 +2 -2
  293. data/man/man8/puppet-filebucket.8 +2 -2
  294. data/man/man8/puppet-help.8 +2 -2
  295. data/man/man8/puppet-inspect.8 +2 -2
  296. data/man/man8/puppet-key.8 +2 -2
  297. data/man/man8/puppet-man.8 +2 -2
  298. data/man/man8/puppet-master.8 +2 -2
  299. data/man/man8/puppet-module.8 +9 -9
  300. data/man/man8/puppet-node.8 +2 -2
  301. data/man/man8/puppet-parser.8 +2 -2
  302. data/man/man8/puppet-plugin.8 +2 -2
  303. data/man/man8/puppet-report.8 +2 -2
  304. data/man/man8/puppet-resource.8 +2 -2
  305. data/man/man8/puppet-resource_type.8 +2 -2
  306. data/man/man8/puppet-status.8 +3 -3
  307. data/man/man8/puppet.8 +1 -1
  308. data/spec/fixtures/module.tar.gz +0 -0
  309. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
  310. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
  311. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
  312. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
  313. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
  314. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
  315. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
  316. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
  317. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
  318. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
  319. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
  320. data/spec/fixtures/unit/module/trailing-comma.json +1 -1
  321. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
  322. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
  323. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
  324. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
  325. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
  326. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
  327. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
  328. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
  329. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
  330. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
  331. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
  332. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
  333. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
  334. data/spec/integration/defaults_spec.rb +14 -2
  335. data/spec/integration/file_system/uniquefile_spec.rb +29 -0
  336. data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
  337. data/spec/integration/node/environment_spec.rb +13 -0
  338. data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
  339. data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
  340. data/spec/integration/parser/undef_param_spec.rb +8 -0
  341. data/spec/integration/provider/yumrepo_spec.rb +1 -1
  342. data/spec/integration/test/test_helper_spec.rb +28 -0
  343. data/spec/integration/transaction/report_spec.rb +16 -0
  344. data/spec/integration/transaction_spec.rb +11 -0
  345. data/spec/integration/type/file_spec.rb +194 -4
  346. data/spec/integration/type/package_spec.rb +5 -1
  347. data/spec/integration/type/tidy_spec.rb +21 -9
  348. data/spec/integration/util/execution_spec.rb +22 -0
  349. data/spec/integration/util/windows/principal_spec.rb +90 -4
  350. data/spec/integration/util/windows/process_spec.rb +31 -0
  351. data/spec/integration/util/windows/security_spec.rb +6 -6
  352. data/spec/integration/util/windows/user_spec.rb +1 -1
  353. data/spec/integration/util_spec.rb +49 -27
  354. data/spec/lib/puppet_spec/compiler.rb +17 -0
  355. data/spec/lib/puppet_spec/files.rb +2 -2
  356. data/spec/lib/puppet_spec/pops.rb +13 -0
  357. data/spec/shared_behaviours/iterative_functions.rb +1 -1
  358. data/spec/shared_contexts/types_setup.rb +96 -0
  359. data/spec/unit/agent_spec.rb +1 -0
  360. data/spec/unit/application/agent_spec.rb +10 -0
  361. data/spec/unit/application/apply_spec.rb +9 -0
  362. data/spec/unit/configurer/downloader_spec.rb +5 -5
  363. data/spec/unit/configurer_spec.rb +271 -39
  364. data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
  365. data/spec/unit/defaults_spec.rb +15 -0
  366. data/spec/unit/environments_spec.rb +24 -4
  367. data/spec/unit/face/parser_spec.rb +43 -2
  368. data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
  369. data/spec/unit/file_serving/metadata_spec.rb +50 -0
  370. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
  371. data/spec/unit/file_system_spec.rb +26 -0
  372. data/spec/unit/functions/assert_type_spec.rb +36 -2
  373. data/spec/unit/functions/defined_spec.rb +2 -2
  374. data/spec/unit/functions/epp_spec.rb +11 -3
  375. data/spec/unit/functions/lookup_spec.rb +58 -13
  376. data/spec/unit/functions/regsubst_spec.rb +1 -1
  377. data/spec/unit/functions/reverse_each_spec.rb +108 -0
  378. data/spec/unit/functions/step_spec.rb +113 -0
  379. data/spec/unit/functions/type_spec.rb +35 -0
  380. data/spec/unit/functions4_spec.rb +61 -5
  381. data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
  382. data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
  383. data/spec/unit/indirector/indirection_spec.rb +1 -1
  384. data/spec/unit/info_service_spec.rb +94 -32
  385. data/spec/unit/module_spec.rb +14 -0
  386. data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
  387. data/spec/unit/network/authstore_spec.rb +1 -1
  388. data/spec/unit/network/http/connection_spec.rb +1 -0
  389. data/spec/unit/network/http/pool_spec.rb +30 -0
  390. data/spec/unit/node_spec.rb +1 -1
  391. data/spec/unit/parser/compiler_spec.rb +16 -0
  392. data/spec/unit/parser/scope_spec.rb +28 -11
  393. data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
  394. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
  395. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
  396. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
  397. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
  398. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
  399. data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
  400. data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
  401. data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
  402. data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
  403. data/spec/unit/pops/parser/parser_spec.rb +10 -0
  404. data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
  405. data/spec/unit/pops/types/iterable_spec.rb +262 -0
  406. data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
  407. data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
  408. data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
  409. data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
  410. data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
  411. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
  412. data/spec/unit/pops/types/type_parser_spec.rb +58 -13
  413. data/spec/unit/pops/types/types_spec.rb +241 -0
  414. data/spec/unit/pops/validator/validator_spec.rb +100 -43
  415. data/spec/unit/provider/cron/parsed_spec.rb +1 -0
  416. data/spec/unit/provider/macauthorization_spec.rb +5 -2
  417. data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
  418. data/spec/unit/provider/package/appdmg_spec.rb +3 -3
  419. data/spec/unit/provider/package/dnf_spec.rb +16 -0
  420. data/spec/unit/provider/package/pip3_spec.rb +60 -42
  421. data/spec/unit/provider/package/pip_spec.rb +47 -34
  422. data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
  423. data/spec/unit/provider/package/pkgng_spec.rb +4 -2
  424. data/spec/unit/provider/package/yum_spec.rb +11 -0
  425. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  426. data/spec/unit/provider/service/launchd_spec.rb +17 -35
  427. data/spec/unit/provider/service/systemd_spec.rb +7 -0
  428. data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
  429. data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
  430. data/spec/unit/resource/capability_finder_spec.rb +28 -15
  431. data/spec/unit/resource/catalog_spec.rb +33 -1
  432. data/spec/unit/resource/type_spec.rb +149 -7
  433. data/spec/unit/resource_spec.rb +96 -57
  434. data/spec/unit/settings/environment_conf_spec.rb +18 -1
  435. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  436. data/spec/unit/transaction/report_spec.rb +27 -0
  437. data/spec/unit/transaction/resource_harness_spec.rb +0 -47
  438. data/spec/unit/transaction_spec.rb +5 -0
  439. data/spec/unit/type/file/checksum_spec.rb +6 -0
  440. data/spec/unit/type/file/checksum_value_spec.rb +286 -0
  441. data/spec/unit/type/file/content_spec.rb +12 -193
  442. data/spec/unit/type/file/source_spec.rb +211 -119
  443. data/spec/unit/type/file_spec.rb +133 -34
  444. data/spec/unit/type/interface_spec.rb +32 -0
  445. data/spec/unit/type/macauthorization_spec.rb +4 -1
  446. data/spec/unit/type/yumrepo_spec.rb +2 -2
  447. data/spec/unit/util/filetype_spec.rb +1 -1
  448. data/spec/unit/util/http_proxy_spec.rb +2 -2
  449. data/spec/unit/util/log/destinations_spec.rb +0 -2
  450. data/spec/unit/util/logging_spec.rb +69 -0
  451. data/spec/unit/util/multi_match_spec.rb +39 -0
  452. data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
  453. data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
  454. data/spec/unit/util/plist_spec.rb +110 -0
  455. data/spec/unit/util/resource_template_spec.rb +2 -2
  456. data/spec/unit/util/run_mode_spec.rb +27 -3
  457. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  458. data/spec/unit/util/windows/api_types_spec.rb +42 -0
  459. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
  460. data/spec/unit/util/windows/sid_spec.rb +1 -1
  461. data/spec/unit/util_spec.rb +123 -13
  462. data/tasks/cfpropertylist.rake +15 -0
  463. metadata +114 -26
  464. data/lib/puppet/vendor/load_plist.rb +0 -1
  465. data/lib/puppet/vendor/plist/CHANGELOG +0 -82
  466. data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
  467. data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
  468. data/lib/puppet/vendor/plist/README +0 -36
  469. data/lib/puppet/vendor/plist/Rakefile +0 -144
  470. data/lib/puppet/vendor/plist/docs/USAGE +0 -104
  471. data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
  472. data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
  473. data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
  474. data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
  475. data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
  476. data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
  477. data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
  478. data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
  479. data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
  480. data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
  481. data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
  482. data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
  483. data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
  484. data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
  485. data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
  486. data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
  487. data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
@@ -31,7 +31,7 @@ module Puppet::DataProviders::HieraSupport
31
31
 
32
32
  def data_providers(data_key, lookup_invocation)
33
33
  @hiera_config ||= Puppet::DataProviders::HieraConfig.new(provider_root(data_key, lookup_invocation.scope))
34
- @data_providers ||= @hiera_config.create_data_providers(lookup_invocation)
34
+ @data_providers ||= @hiera_config.create_configured_data_providers(lookup_invocation, self)
35
35
  end
36
36
  private :data_providers
37
37
  end
@@ -5,8 +5,8 @@ require_relative 'hiera_interpolate'
5
5
 
6
6
  module Puppet::DataProviders
7
7
  class JsonDataProviderFactory < Puppet::Plugins::DataProviders::FileBasedDataProviderFactory
8
- def create(name, paths)
9
- JsonDataProvider.new(name, paths)
8
+ def create(name, paths, parent_data_provider)
9
+ JsonDataProvider.new(name, paths, parent_data_provider)
10
10
  end
11
11
 
12
12
  def path_extension
@@ -5,8 +5,8 @@ require_relative 'hiera_interpolate'
5
5
 
6
6
  module Puppet::DataProviders
7
7
  class YamlDataProviderFactory < Puppet::Plugins::DataProviders::FileBasedDataProviderFactory
8
- def create(name, paths)
9
- YamlDataProvider.new(name, paths)
8
+ def create(name, paths, parent_data_provider)
9
+ YamlDataProvider.new(name, paths, parent_data_provider)
10
10
  end
11
11
 
12
12
  def path_extension
@@ -111,10 +111,11 @@ module Puppet
111
111
 
112
112
  Valid values for this setting are:
113
113
 
114
- * `deprecations` --- disables deprecation warnings.",
114
+ * `deprecations` --- disables deprecation warnings.
115
+ * `undefined_variables` --- disables warnings about non existing variables.",
115
116
  :hook => proc do |value|
116
117
  values = munge(value)
117
- valid = %w[deprecations]
118
+ valid = %w[deprecations undefined_variables]
118
119
  invalid = values - (values & valid)
119
120
  if not invalid.empty?
120
121
  raise ArgumentError, "Cannot disable unrecognized warning types #{invalid.inspect}. Valid values are #{valid.inspect}."
@@ -147,6 +148,17 @@ module Puppet
147
148
  :type => :boolean,
148
149
  :desc => "Whether to enable experimental performance profiling",
149
150
  },
151
+ :static_catalogs => {
152
+ :default => true,
153
+ :type => :boolean,
154
+ :desc => "Whether to compile a static catalog."
155
+ },
156
+ :strict_environment_mode => {
157
+ :default => false,
158
+ :type => :boolean,
159
+ :desc => "Whether the agent specified environment should be considered authoritative,
160
+ causing the run to fail if the retrieved catalog does not match it.",
161
+ },
150
162
  :autoflush => {
151
163
  :default => true,
152
164
  :type => :boolean,
@@ -233,11 +245,11 @@ module Puppet
233
245
  be set in `[master]`, `[agent]`, or an environment config section.",
234
246
  :call_hook => :on_define_and_write,
235
247
  :hook => proc do |value|
236
- ENV["PATH"] = "" if ENV["PATH"].nil?
237
- ENV["PATH"] = value unless value == "none"
238
- paths = ENV["PATH"].split(File::PATH_SEPARATOR)
248
+ Puppet::Util.set_env('PATH', '') if Puppet::Util.get_env('PATH').nil?
249
+ Puppet::Util.set_env('PATH', value) unless value == 'none'
250
+ paths = Puppet::Util.get_env('PATH').split(File::PATH_SEPARATOR)
239
251
  Puppet::Util::Platform.default_paths.each do |path|
240
- ENV["PATH"] += File::PATH_SEPARATOR + path unless paths.include?(path)
252
+ Puppet::Util.set_env('PATH', Puppet::Util.get_env('PATH') + File::PATH_SEPARATOR + path) unless paths.include?(path)
241
253
  end
242
254
  value
243
255
  end
@@ -272,7 +284,7 @@ module Puppet
272
284
 
273
285
  This setting must have a value set to enable **directory environments.** The
274
286
  recommended value is `$codedir/environments`. For more details, see
275
- http://docs.puppetlabs.com/puppet/latest/reference/environments.html",
287
+ https://docs.puppetlabs.com/puppet/latest/reference/environments.html",
276
288
  :type => :path,
277
289
  },
278
290
  :always_cache_features => {
@@ -572,15 +584,15 @@ module Puppet
572
584
  `certname` setting as its requested Subject CN.
573
585
 
574
586
  This is the name used when managing a node's permissions in
575
- [auth.conf](http://docs.puppetlabs.com/puppet/latest/reference/config_file_auth.html).
587
+ [auth.conf](https://docs.puppetlabs.com/puppet/latest/reference/config_file_auth.html).
576
588
  In most cases, it is also used as the node's name when matching
577
- [node definitions](http://docs.puppetlabs.com/puppet/latest/reference/lang_node_definitions.html)
589
+ [node definitions](https://docs.puppetlabs.com/puppet/latest/reference/lang_node_definitions.html)
578
590
  and requesting data from an ENC. (This can be changed with the `node_name_value`
579
591
  and `node_name_fact` settings, although you should only do so if you have
580
592
  a compelling reason.)
581
593
 
582
594
  A node's certname is available in Puppet manifests as `$trusted['certname']`. (See
583
- [Facts and Built-In Variables](http://docs.puppetlabs.com/puppet/latest/reference/lang_facts_and_builtin_vars.html)
595
+ [Facts and Built-In Variables](https://docs.puppetlabs.com/puppet/latest/reference/lang_facts_and_builtin_vars.html)
584
596
  for more details.)
585
597
 
586
598
  * For best compatibility, you should limit the value of `certname` to
@@ -781,6 +793,21 @@ EOT
781
793
  :values => ["md5", "sha256"],
782
794
  :desc => 'Which digest algorithm to use for file resources and the filebucket.
783
795
  Valid values are md5, sha256. Default is md5.',
796
+ },
797
+ :supported_checksum_types => {
798
+ :default => ['md5', 'sha256'],
799
+ :type => :array,
800
+ :desc => 'Checksum types supported by this agent for use in file resources of a
801
+ static catalog. Values must be comma-separated. Valid types are md5,
802
+ md5lite, sha256, sha256lite, sha1, sha1lite, mtime, ctime.',
803
+ :hook => proc do |value|
804
+ values = munge(value)
805
+ valid = ['md5', 'md5lite', 'sha256', 'sha256lite', 'sha1', 'sha1lite', 'mtime', 'ctime']
806
+ invalid = values.reject {|alg| valid.include?(alg)}
807
+ if not invalid.empty?
808
+ raise ArgumentError, "Unrecognized checksum types #{invalid} are not supported. Valid values are #{valid}."
809
+ end
810
+ end
784
811
  }
785
812
  )
786
813
 
@@ -896,7 +923,7 @@ EOT
896
923
  the request.
897
924
 
898
925
  For info on autosign configuration files, see
899
- [the guide to Puppet's config files](http://docs.puppetlabs.com/guides/configuring.html).",
926
+ [the guide to Puppet's config files](http://docs.puppetlabs.com/puppet/latest/reference/config_about_settings.html).",
900
927
  },
901
928
  :allow_duplicate_certs => {
902
929
  :default => false,
@@ -969,7 +996,7 @@ EOT
969
996
  directory environments instead. If you need to use something other than the
970
997
  environment's `manifests` directory as the main manifest, you can set
971
998
  `manifest` in environment.conf. For more info, see
972
- http://docs.puppetlabs.com/puppet/latest/reference/environments.html",
999
+ https://docs.puppetlabs.com/puppet/latest/reference/environments.html",
973
1000
  },
974
1001
  :modulepath => {
975
1002
  :default => "",
@@ -983,7 +1010,7 @@ EOT
983
1010
  directory environments instead. If you need to use something other than the
984
1011
  default modulepath of `<ACTIVE ENVIRONMENT'S MODULES DIR>:$basemodulepath`,
985
1012
  you can set `modulepath` in environment.conf. For more info, see
986
- http://docs.puppetlabs.com/puppet/latest/reference/environments.html",
1013
+ https://docs.puppetlabs.com/puppet/latest/reference/environments.html",
987
1014
  },
988
1015
  :config_version => {
989
1016
  :default => "",
@@ -995,7 +1022,7 @@ EOT
995
1022
  Setting a global value for config_version in puppet.conf is not allowed
996
1023
  (but it can be overridden from the commandline). Please set a
997
1024
  per-environment value in environment.conf instead. For more info, see
998
- http://docs.puppetlabs.com/puppet/latest/reference/environments.html",
1025
+ https://docs.puppetlabs.com/puppet/latest/reference/environments.html",
999
1026
  }
1000
1027
  )
1001
1028
 
@@ -1107,7 +1134,7 @@ EOT
1107
1134
  These are the modules that will be used by _all_ environments. Note that
1108
1135
  the `modules` directory of the active environment will have priority over
1109
1136
  any global directories. For more info, see
1110
- http://docs.puppetlabs.com/puppet/latest/reference/environments.html",
1137
+ https://docs.puppetlabs.com/puppet/latest/reference/environments.html",
1111
1138
  },
1112
1139
  :ssl_client_header => {
1113
1140
  :default => "HTTP_X_CLIENT_DN",
@@ -1283,7 +1310,7 @@ EOT
1283
1310
  For control over logging destinations, see the `--logdest` command line
1284
1311
  option in the manual pages for puppet master, puppet agent, and puppet
1285
1312
  apply. You can see man pages by running `puppet <SUBCOMMAND> --help`,
1286
- or read them online at http://docs.puppetlabs.com/references/latest/man/."
1313
+ or read them online at https://docs.puppetlabs.com/references/latest/man/."
1287
1314
  },
1288
1315
  :server => {
1289
1316
  :default => "puppet",
@@ -1328,7 +1355,7 @@ EOT
1328
1355
  event _would_ have been sent.
1329
1356
 
1330
1357
  **Important note:**
1331
- [The `noop` metaparameter](http://docs.puppetlabs.com/references/latest/metaparameter.html#noop)
1358
+ [The `noop` metaparameter](https://docs.puppetlabs.com/references/latest/metaparameter.html#noop)
1332
1359
  allows you to apply individual resources in noop mode, and will override
1333
1360
  the global value of the `noop` setting. This means a resource with
1334
1361
  `noop => false` _will_ be changed if necessary, even when running puppet
@@ -1413,7 +1440,16 @@ EOT
1413
1440
  :default => false,
1414
1441
  :type => :boolean,
1415
1442
  :desc => "Whether to sleep for a pseudo-random (but consistent) amount of time before
1416
- a run.",
1443
+ a run.
1444
+
1445
+ For example, without `splay` enabled, your agent checks in every 30
1446
+ minutes at :01 and :31 past the hour. After enabling `splay`, the agent
1447
+ will wait the pseudorandom sleep time, say eight minutes, and then check
1448
+ in every 30 minutes, at :09 and :39 after the hour. If you restart the
1449
+ same agent at 12:45 PM, it will wait its eight minutes, and check in at
1450
+ 12:52 PM, and every 30 minutes after that, at 1:22 PM, 1:52 PM, and so
1451
+ on. Other agents will have different sleep times, and so will check in
1452
+ at different times even if they are all restarted at the same time.",
1417
1453
  },
1418
1454
  :clientbucketdir => {
1419
1455
  :default => "$vardir/clientbucket",
@@ -1565,7 +1601,11 @@ EOT
1565
1601
  :pluginsync => {
1566
1602
  :default => true,
1567
1603
  :type => :boolean,
1568
- :desc => "Whether plugins should be synced with the central server.",
1604
+ :desc => "Whether plugins should be synced with the central server. This setting is
1605
+ deprecated.",
1606
+ :hook => proc { |value|
1607
+ Puppet.deprecation_warning "Setting 'pluginsync' is deprecated."
1608
+ }
1569
1609
  },
1570
1610
 
1571
1611
  :pluginsignore => {
@@ -1601,6 +1641,12 @@ EOT
1601
1641
  only resources tagged with the specified tags will be applied.
1602
1642
  Values must be comma-separated.",
1603
1643
  },
1644
+ :skip_tags => {
1645
+ :default => "",
1646
+ :desc => "Tags to use to filter resources. If this is set, then
1647
+ only resources not tagged with the specified tags will be applied.
1648
+ Values must be comma-separated.",
1649
+ },
1604
1650
  :evaltrace => {
1605
1651
  :default => false,
1606
1652
  :type => :boolean,
@@ -40,6 +40,8 @@ module Puppet::Environments
40
40
  end
41
41
 
42
42
  def clear_all
43
+ root = Puppet.lookup(:root_environment) { nil }
44
+ root.instance_variable_set(:@static_catalogs, nil) unless root.nil?
43
45
  end
44
46
  end
45
47
 
@@ -110,7 +112,7 @@ module Puppet::Environments
110
112
  def get_conf(name)
111
113
  env = get(name)
112
114
  if env
113
- Puppet::Settings::EnvironmentConf.static_for(env)
115
+ Puppet::Settings::EnvironmentConf.static_for(env, 0, Puppet[:static_catalogs])
114
116
  else
115
117
  nil
116
118
  end
@@ -9,7 +9,7 @@ Puppet::Face.define(:config, '0.0.1') do
9
9
 
10
10
  description "This subcommand can inspect and modify settings from Puppet's
11
11
  'puppet.conf' configuration file. For documentation about individual settings,
12
- see http://docs.puppetlabs.com/references/latest/configuration.html."
12
+ see https://docs.puppetlabs.com/references/latest/configuration.html."
13
13
 
14
14
  option "--section SECTION_NAME" do
15
15
  default_to { "main" }
@@ -172,7 +172,7 @@ Puppet::Face.define(:epp, '0.0.1') do
172
172
 
173
173
  show_filename = templates.count > 1
174
174
  dumps = templates.each do |file|
175
- buffer.print dump_parse(File.read(file), file, options, show_filename)
175
+ buffer.print dump_parse(Puppet::FileSystem.read(file, :encoding => 'utf-8'), file, options, show_filename)
176
176
  end
177
177
 
178
178
  if !missing_files.empty?
@@ -23,7 +23,7 @@ settings, so you can specify `--server <servername>`, or
23
23
  `--run_mode <runmode>` as an argument.
24
24
 
25
25
  See the configuration file documentation at
26
- <http://docs.puppetlabs.com/references/stable/configuration.html> for the
26
+ <https://docs.puppetlabs.com/references/stable/configuration.html> for the
27
27
  full list of acceptable parameters. A commented list of all
28
28
  configuration options can also be generated by running puppet with
29
29
  `--genconfig`.
@@ -21,7 +21,7 @@ Puppet::Face.define(:module, '1.0.0') do
21
21
 
22
22
  $ puppet module install puppetlabs-vcsrepo
23
23
  Preparing to install into /etc/puppetlabs/code/modules ...
24
- Downloading from http://forgeapi.puppetlabs.com ...
24
+ Downloading from https://forgeapi.puppetlabs.com ...
25
25
  Installing -- do not interrupt ...
26
26
  /etc/puppetlabs/code/modules
27
27
  └── puppetlabs-vcsrepo (v0.0.4)
@@ -30,7 +30,7 @@ Puppet::Face.define(:module, '1.0.0') do
30
30
 
31
31
  $ puppet module install puppetlabs-vcsrepo --environment development
32
32
  Preparing to install into /etc/puppetlabs/code/environments/development/modules ...
33
- Downloading from http://forgeapi.puppetlabs.com ...
33
+ Downloading from https://forgeapi.puppetlabs.com ...
34
34
  Installing -- do not interrupt ...
35
35
  /etc/puppetlabs/code/environments/development/modules
36
36
  └── puppetlabs-vcsrepo (v0.0.4)
@@ -39,7 +39,7 @@ Puppet::Face.define(:module, '1.0.0') do
39
39
 
40
40
  $ puppet module install puppetlabs-vcsrepo -v 0.0.4
41
41
  Preparing to install into /etc/puppetlabs/modules ...
42
- Downloading from http://forgeapi.puppetlabs.com ...
42
+ Downloading from https://forgeapi.puppetlabs.com ...
43
43
  Installing -- do not interrupt ...
44
44
  /etc/puppetlabs/code/modules
45
45
  └── puppetlabs-vcsrepo (v0.0.4)
@@ -48,7 +48,7 @@ Puppet::Face.define(:module, '1.0.0') do
48
48
 
49
49
  $ puppet module install puppetlabs-vcsrepo --target-dir=/opt/puppetlabs/puppet/modules
50
50
  Preparing to install into /opt/puppetlabs/puppet/modules ...
51
- Downloading from http://forgeapi.puppetlabs.com ...
51
+ Downloading from https://forgeapi.puppetlabs.com ...
52
52
  Installing -- do not interrupt ...
53
53
  /opt/puppetlabs/puppet/modules
54
54
  └── puppetlabs-vcsrepo (v0.0.4)
@@ -57,7 +57,7 @@ Puppet::Face.define(:module, '1.0.0') do
57
57
 
58
58
  $ puppet module install puppetlabs-vcsrepo --target-dir=/opt/puppetlabs/puppet/modules --modulepath /etc/puppetlabs/code/modules
59
59
  Preparing to install into /opt/puppetlabs/puppet/modules ...
60
- Downloading from http://forgeapi.puppetlabs.com ...
60
+ Downloading from https://forgeapi.puppetlabs.com ...
61
61
  Installing -- do not interrupt ...
62
62
  /opt/puppetlabs/puppet/modules
63
63
  └── puppetlabs-vcsrepo (v0.0.4)
@@ -66,7 +66,7 @@ Puppet::Face.define(:module, '1.0.0') do
66
66
 
67
67
  $ puppet module install puppetlabs-vcsrepo-0.0.4.tar.gz
68
68
  Preparing to install into /etc/puppetlabs/code/modules ...
69
- Downloading from http://forgeapi.puppetlabs.com ...
69
+ Downloading from https://forgeapi.puppetlabs.com ...
70
70
  Installing -- do not interrupt ...
71
71
  /etc/puppetlabs/code/modules
72
72
  └── puppetlabs-vcsrepo (v0.0.4)
@@ -107,7 +107,7 @@ Puppet::Face.define(:parser, '0.0.1') do
107
107
  missing_files = files - available_files
108
108
 
109
109
  dumps = available_files.collect do |file|
110
- dump_parse(File.read(file), file, options)
110
+ dump_parse(Puppet::FileSystem.read(file, :encoding => 'utf-8'), file, options)
111
111
  end.join("")
112
112
 
113
113
  if missing_files.empty?
@@ -146,13 +146,16 @@ Puppet::Face.define(:parser, '0.0.1') do
146
146
  # @api private
147
147
  def validate_manifest(manifest = nil)
148
148
  env = Puppet.lookup(:current_environment)
149
- validation_environment = manifest ? env.override_with(:manifest => manifest) : env
150
-
151
- validation_environment.check_for_reparse
152
- validation_environment.known_resource_types.clear
153
-
154
- rescue => detail
155
- Puppet.log_exception(detail)
156
- exit(1)
149
+ loaders = Puppet::Pops::Loaders.new(env)
150
+ Puppet.override( {:loaders => loaders } , 'For puppet parser validate') do
151
+ begin
152
+ validation_environment = manifest ? env.override_with(:manifest => manifest) : env
153
+ validation_environment.check_for_reparse
154
+ validation_environment.known_resource_types.clear
155
+ rescue => detail
156
+ Puppet.log_exception(detail)
157
+ exit(1)
158
+ end
159
+ end
157
160
  end
158
161
  end
@@ -37,7 +37,8 @@ Puppet::Indirector::Face.define(:status, '0.0.1') do
37
37
  This action requires that the server's `auth.conf` file allow find
38
38
  access to the `status` REST terminus. Puppet agent does not use this
39
39
  facility, and it is turned off by default. See
40
- <http://docs.puppetlabs.com/guides/rest_auth_conf.html> for more details.
40
+ <https://docs.puppetlabs.com/puppet/latest/reference/config_file_auth.html>
41
+ for more details.
41
42
  EOT
42
43
  find.examples <<-'EOT'
43
44
  Check the status of the configured puppet master:
@@ -0,0 +1,3 @@
1
+ require 'puppet/util/feature'
2
+
3
+ Puppet.features.add(:cfpropertylist, :libs => ['cfpropertylist'])
@@ -0,0 +1,9 @@
1
+ require 'puppet/util/feature'
2
+
3
+ Puppet.features.add :telnet do
4
+ begin
5
+ require 'net/telnet'
6
+ rescue LoadError
7
+ false
8
+ end
9
+ end
@@ -0,0 +1,46 @@
1
+ require 'puppet/file_serving/metadata'
2
+
3
+ # Simplified metadata representation, suitable for the information
4
+ # that is available from HTTP headers.
5
+ class Puppet::FileServing::HttpMetadata < Puppet::FileServing::Metadata
6
+
7
+ def initialize(http_response, path = '/dev/null')
8
+ super(path)
9
+
10
+ # ignore options that do not apply to HTTP metadata
11
+ @owner = @group = @mode = nil
12
+
13
+ # hash available checksums for eventual collection
14
+ @checksums = {}
15
+ # use a default mtime in case there is no usable HTTP header
16
+ @checksums[:mtime] = "{mtime}#{Time.now}"
17
+
18
+ if checksum = http_response['content-md5']
19
+ # convert base64 digest to hex
20
+ checksum = checksum.unpack("m0").first.unpack("H*").first
21
+ @checksums[:md5] = "{md5}#{checksum}"
22
+ end
23
+
24
+ if last_modified = http_response['last-modified']
25
+ mtime = DateTime.httpdate(last_modified).to_time
26
+ @checksums[:mtime] = "{mtime}#{mtime}"
27
+ end
28
+
29
+ @ftype = 'file'
30
+
31
+ self
32
+ end
33
+
34
+ # Override of the parent class method. Does not call super!
35
+ # We can only return metadata that was extracted from the
36
+ # HTTP headers during #initialize.
37
+ def collect
38
+ # Prefer the checksum_type from the indirector request options
39
+ # but fall back to the alternative otherwise
40
+ [ @checksum_type, :md5, :mtime ].each do |type|
41
+ @checksum_type = type
42
+ @checksum = @checksums[type]
43
+ return if @checksum
44
+ end
45
+ end
46
+ end
@@ -3,6 +3,7 @@ require 'puppet/indirector'
3
3
  require 'puppet/file_serving'
4
4
  require 'puppet/file_serving/base'
5
5
  require 'puppet/util/checksums'
6
+ require 'uri'
6
7
 
7
8
  # A class that handles retrieving file metadata.
8
9
  class Puppet::FileServing::Metadata < Puppet::FileServing::Base
@@ -12,7 +13,7 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
12
13
  extend Puppet::Indirector
13
14
  indirects :file_metadata, :terminus_class => :selector
14
15
 
15
- attr_reader :path, :owner, :group, :mode, :checksum_type, :checksum, :ftype, :destination, :source_permissions
16
+ attr_reader :path, :owner, :group, :mode, :checksum_type, :checksum, :ftype, :destination, :source_permissions, :content_uri
16
17
 
17
18
  PARAM_ORDER = [:mode, :ftype, :owner, :group]
18
19
 
@@ -28,6 +29,18 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
28
29
  @source_permissions = source_permissions.intern
29
30
  end
30
31
 
32
+ def content_uri=(path)
33
+ begin
34
+ uri = URI.parse(URI.escape(path))
35
+ rescue URI::InvalidURIError => detail
36
+ raise(ArgumentError, "Could not understand URI #{path}: #{detail}")
37
+ end
38
+ raise(ArgumentError, "Cannot use opaque URLs '#{path}'") unless uri.hierarchical?
39
+ raise(ArgumentError, "Must use URLs of type puppet as content URI") if uri.scheme != "puppet"
40
+
41
+ @content_uri = path
42
+ end
43
+
31
44
  class MetaStat
32
45
  extend Forwardable
33
46
 
@@ -121,6 +134,8 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
121
134
  @checksum_type ||= Puppet[:digest_algorithm]
122
135
  @ftype = data.delete('type')
123
136
  @destination = data.delete('destination')
137
+ @source = data.delete('source')
138
+ @content_uri = data.delete('content_uri')
124
139
  super(path,data)
125
140
  end
126
141
 
@@ -136,7 +151,8 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
136
151
  },
137
152
  'type' => ftype,
138
153
  'destination' => destination,
139
- }
154
+ }.merge(content_uri ? {'content_uri' => content_uri} : {})
155
+ .merge(source ? {'source' => source} : {})
140
156
  )
141
157
  end
142
158