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
@@ -3,6 +3,7 @@ require 'puppet/indirector'
3
3
  require 'puppet/transaction'
4
4
  require 'puppet/util/tagging'
5
5
  require 'puppet/graph'
6
+ require 'securerandom'
6
7
 
7
8
  require 'puppet/resource/capability_finder'
8
9
 
@@ -32,6 +33,22 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
32
33
  # The id of the code input to the compiler.
33
34
  attr_accessor :code_id
34
35
 
36
+ # The UUID of the catalog
37
+ attr_accessor :catalog_uuid
38
+
39
+ # @return [Integer] catalog format version number. This value is constant
40
+ # for a given version of Puppet; it is incremented when a new release of
41
+ # Puppet changes the API for the various objects that make up the catalog.
42
+ attr_accessor :catalog_format
43
+
44
+ # Inlined file metadata for non-recursive find
45
+ # A hash of title => metadata
46
+ attr_accessor :metadata
47
+
48
+ # Inlined file metadata for recursive search
49
+ # A hash of title => { source => [metadata, ...] }
50
+ attr_accessor :recursive_metadata
51
+
35
52
  # How long this catalog took to retrieve. Used for reporting stats.
36
53
  attr_accessor :retrieval_duration
37
54
 
@@ -272,6 +289,10 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
272
289
  def initialize(name = nil, environment = Puppet::Node::Environment::NONE, code_id = nil)
273
290
  super()
274
291
  @name = name
292
+ @catalog_uuid = SecureRandom.uuid
293
+ @catalog_format = 1
294
+ @metadata = {}
295
+ @recursive_metadata = {}
275
296
  @classes = []
276
297
  @resource_table = {}
277
298
  @resources = []
@@ -379,6 +400,12 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
379
400
  result.code_id = code_id
380
401
  end
381
402
 
403
+ if catalog_uuid = data['catalog_uuid']
404
+ result.catalog_uuid = catalog_uuid
405
+ end
406
+
407
+ result.catalog_format = data['catalog_format'] || 0
408
+
382
409
  if environment = data['environment']
383
410
  result.environment = environment
384
411
  result.environment_instance = Puppet::Node::Environment.remote(environment.to_sym)
@@ -411,20 +438,46 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
411
438
  result.add_class(*classes)
412
439
  end
413
440
 
441
+ if metadata = data['metadata']
442
+ result.metadata = metadata.inject({}) { |h, (k, v)| h[k] = Puppet::FileServing::Metadata.from_data_hash(v); h }
443
+ end
444
+
445
+ if recursive_metadata = data['recursive_metadata']
446
+ result.recursive_metadata = recursive_metadata.inject({}) do |h, (title, source_to_meta_hash)|
447
+ h[title] = source_to_meta_hash.inject({}) do |inner_h, (source, metas)|
448
+ inner_h[source] = metas.map {|meta| Puppet::FileServing::Metadata.from_data_hash(meta)}
449
+ inner_h
450
+ end
451
+ h
452
+ end
453
+ end
454
+
414
455
  result
415
456
  end
416
457
 
417
458
  def to_data_hash
459
+ metadata_hash = metadata.inject({}) { |h, (k, v)| h[k] = v.to_data_hash; h }
460
+ recursive_metadata_hash = recursive_metadata.inject({}) do |h, (title, source_to_meta_hash)|
461
+ h[title] = source_to_meta_hash.inject({}) do |inner_h, (source, metas)|
462
+ inner_h[source] = metas.map {|meta| meta.to_data_hash}
463
+ inner_h
464
+ end
465
+ h
466
+ end
467
+
418
468
  {
419
469
  'tags' => tags,
420
470
  'name' => name,
421
471
  'version' => version,
422
472
  'code_id' => code_id,
423
- 'environment' => environment.to_s,
473
+ 'catalog_uuid' => catalog_uuid,
474
+ 'catalog_format' => catalog_format,
475
+ 'environment' => environment.to_s,
424
476
  'resources' => @resources.collect { |v| @resource_table[v].to_data_hash },
425
477
  'edges' => edges. collect { |e| e.to_data_hash },
426
- 'classes' => classes
427
- }
478
+ 'classes' => classes,
479
+ }.merge(metadata_hash.empty? ? {} : {'metadata' => metadata_hash})
480
+ .merge(recursive_metadata_hash.empty? ? {} : {'recursive_metadata' => recursive_metadata_hash})
428
481
  end
429
482
 
430
483
  # Convert our catalog into a RAL catalog.
@@ -536,6 +589,10 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
536
589
 
537
590
  result.version = self.version
538
591
  result.code_id = self.code_id
592
+ result.catalog_uuid = self.catalog_uuid
593
+ result.catalog_format = self.catalog_format
594
+ result.metadata = self.metadata
595
+ result.recursive_metadata = self.recursive_metadata
539
596
 
540
597
  map = {}
541
598
  resources.each do |resource|
@@ -1,5 +1,6 @@
1
1
  require 'time'
2
2
  require 'puppet/network/format_support'
3
+ require 'puppet/util/psych_support'
3
4
 
4
5
  module Puppet
5
6
  class Resource
@@ -11,6 +12,7 @@ module Puppet
11
12
  #
12
13
  # @api private
13
14
  class Status
15
+ include Puppet::Util::PsychSupport
14
16
  include Puppet::Util::Tagging
15
17
  include Puppet::Network::FormatSupport
16
18
 
@@ -181,7 +183,14 @@ module Puppet
181
183
  @failed = data['failed']
182
184
 
183
185
  @events = data['events'].map do |event|
184
- Puppet::Transaction::Event.from_data_hash(event)
186
+ # in YAML (for reports) we serialize this as an object, but
187
+ # in PSON it becomes a hash. Depending on where we came from
188
+ # we might not need to deserialize it.
189
+ if event.class == Puppet::Transaction::Event
190
+ event
191
+ else
192
+ Puppet::Transaction::Event.from_data_hash(event)
193
+ end
185
194
  end
186
195
  end
187
196
 
@@ -194,7 +203,7 @@ module Puppet
194
203
  'resource_type' => @resource_type,
195
204
  'containment_path' => @containment_path,
196
205
  'evaluation_time' => @evaluation_time,
197
- 'tags' => @tags,
206
+ 'tags' => @tags.to_a,
198
207
  'time' => @time.iso8601(9),
199
208
  'failed' => @failed,
200
209
  'changed' => @changed,
@@ -174,12 +174,9 @@ class Puppet::Resource::Type
174
174
 
175
175
  if code
176
176
  if @match # Only bother setting up the ephemeral scope if there are match variables to add into it
177
- begin
178
- elevel = scope.ephemeral_level
177
+ scope.with_guarded_scope do
179
178
  scope.ephemeral_from(@match, file, line)
180
179
  code.safeevaluate(scope)
181
- ensure
182
- scope.unset_ephemeral_var(elevel)
183
180
  end
184
181
  else
185
182
  code.safeevaluate(scope)
@@ -346,6 +343,9 @@ class Puppet::Resource::Type
346
343
  end
347
344
 
348
345
  # Validate and set any arguments passed by the resource as variables in the scope.
346
+ #
347
+ # This method is known to only be used on the server/compile side.
348
+ #
349
349
  # @param resource [Puppet::Parser::Resource] the resource
350
350
  # @param scope [Puppet::Parser::Scope] the scope
351
351
  #
@@ -360,9 +360,6 @@ class Puppet::Resource::Type
360
360
  resource.add_parameters_from_consume
361
361
  inject_external_parameters(resource, scope)
362
362
 
363
- resource_hash = {}
364
- resource.each { |k, v| resource_hash[k.to_s] = v.value unless k == :name || k == :title }
365
-
366
363
  if @type == :hostclass
367
364
  scope[TITLE] = resource.title.to_s.downcase
368
365
  scope[NAME] = resource.name.to_s.downcase
@@ -370,12 +367,21 @@ class Puppet::Resource::Type
370
367
  scope[TITLE] = resource.title
371
368
  scope[NAME] = resource.name
372
369
  end
373
-
374
370
  scope.class_set(self.name,scope) if hostclass? || node?
375
371
 
376
- assign_defaults(resource, scope, resource_hash)
377
- validate_resource_hash(resource, resource_hash)
378
- resource_hash.each { |param, value| exceptwrap { scope[param] = value }}
372
+ param_hash = scope.with_parameter_scope(arguments.keys) do |param_scope|
373
+ # Assign directly to the parameter scope to avoid scope parameter validation at this point. It
374
+ # will happen anyway when the values are assigned to the scope after the parameter scoped has
375
+ # been popped.
376
+ resource.each { |k, v| param_scope[k.to_s] = v.value unless k == :name || k == :title }
377
+ assign_defaults(resource, param_scope, scope)
378
+ param_scope.to_hash
379
+ end
380
+
381
+ validate_resource_hash(resource, param_hash)
382
+
383
+ # Assign parameter values to current scope
384
+ param_hash.each { |param, value| exceptwrap { scope[param] = value }}
379
385
  end
380
386
 
381
387
  # Lookup and inject parameters from external scope
@@ -385,29 +391,30 @@ class Puppet::Resource::Type
385
391
  # Only lookup parameters for host classes
386
392
  return unless type == :hostclass
387
393
  parameters = resource.parameters
388
- arguments.each do |param_name, _|
389
- name = param_name.to_sym
390
- param = parameters[name]
394
+ arguments.each do |param_name, default|
395
+ sym_name = param_name.to_sym
396
+ param = parameters[sym_name]
391
397
  next unless param.nil? || param.value.nil?
392
- value = lookup_external_default_for(param_name, scope)
393
- resource[name] = value unless value.nil?
398
+ catch(:no_such_key) do
399
+ bound_value = Puppet::Pops::Lookup.search_and_merge("#{name}::#{param_name}", Puppet::Pops::Lookup::Invocation.new(scope), nil)
400
+ # Assign bound value but don't let an undef trump a default expression
401
+ resource[sym_name] = bound_value unless bound_value.nil? && !default.nil?
402
+ end
394
403
  end
395
404
  end
396
405
  private :inject_external_parameters
397
406
 
398
- def assign_defaults(resource, scope, resource_hash)
407
+ def assign_defaults(resource, param_scope, scope)
399
408
  return unless resource.is_a?(Puppet::Parser::Resource)
400
409
  parameters = resource.parameters
401
- hashed_types = parameter_struct.hashed_elements
402
410
  arguments.each do |param_name, default|
403
411
  next if default.nil?
404
412
  name = param_name.to_sym
405
413
  param = parameters[name]
406
414
  next unless param.nil? || param.value.nil?
407
-
408
- value = default.safeevaluate(scope)
415
+ value = exceptwrap { param_scope.evaluate3x(param_name, default, scope) }
409
416
  resource[name] = value
410
- resource_hash[param_name] = value
417
+ param_scope[param_name] = value
411
418
  end
412
419
  end
413
420
  private :assign_defaults
@@ -552,21 +559,4 @@ class Puppet::Resource::Type
552
559
  type_factory.struct(members)
553
560
  end
554
561
  private :create_params_struct
555
-
556
- # Consult external data bindings for class parameter values which must be
557
- # namespaced in the backend.
558
- #
559
- # Example:
560
- #
561
- # class foo($port=0){ ... }
562
- #
563
- # We make a request to the backend for the key 'foo::port' not 'foo'
564
- #
565
- def lookup_external_default_for(param, scope)
566
- if type == :hostclass
567
- catch(:no_such_key) { return Puppet::Pops::Lookup.search_and_merge("#{name}::#{param}", Puppet::Pops::Lookup::Invocation.new(scope), nil) }
568
- end
569
- nil
570
- end
571
- private :lookup_external_default_for
572
562
  end
@@ -1077,7 +1077,7 @@ Generated on #{Time.now}.
1077
1077
  #
1078
1078
  # @api private
1079
1079
  # @todo this code duplicates {Puppet::Util::RunMode#which_dir} as described
1080
- # in {http://projects.puppetlabs.com/issues/16637 #16637}
1080
+ # in {https://projects.puppetlabs.com/issues/16637 #16637}
1081
1081
  def which_configuration_file
1082
1082
  if explicit_config_file? or Puppet.features.root? then
1083
1083
  return main_config_file
@@ -82,7 +82,7 @@ private
82
82
  def unique_sections_in(ini, file, allowed_section_names)
83
83
  ini.section_lines.collect do |section|
84
84
  if !allowed_section_names.empty? && !allowed_section_names.include?(section.name)
85
- raise(Puppet::Error, "Illegal section '#{section.name}' in config file #{file} at line #{section.line_number}. The only valid puppet.conf sections are: [#{allowed_section_names.join(", ")}]. Please use the directory environments feature to specify environments. (See http://docs.puppetlabs.com/puppet/latest/reference/environments.html)")
85
+ raise(Puppet::Error, "Illegal section '#{section.name}' in config file #{file} at line #{section.line_number}. The only valid puppet.conf sections are: [#{allowed_section_names.join(", ")}]. Please use the directory environments feature to specify environments. (See https://docs.puppetlabs.com/puppet/latest/reference/environments.html)")
86
86
  end
87
87
  section.name
88
88
  end.uniq
@@ -3,7 +3,7 @@
3
3
  class Puppet::Settings::EnvironmentConf
4
4
 
5
5
  ENVIRONMENT_CONF_ONLY_SETTINGS = [:modulepath, :manifest, :config_version].freeze
6
- VALID_SETTINGS = (ENVIRONMENT_CONF_ONLY_SETTINGS + [:environment_timeout, :environment_data_provider]).freeze
6
+ VALID_SETTINGS = (ENVIRONMENT_CONF_ONLY_SETTINGS + [:environment_timeout, :environment_data_provider, :static_catalogs]).freeze
7
7
 
8
8
  # Given a path to a directory environment, attempts to load and parse an
9
9
  # environment.conf in ini format, and return an EnvironmentConf instance.
@@ -39,8 +39,8 @@ class Puppet::Settings::EnvironmentConf
39
39
  # Configuration values are exactly those returned by the environment object,
40
40
  # without interpolation. This is a special case for the default configured
41
41
  # environment returned by the Puppet::Environments::StaticPrivate loader.
42
- def self.static_for(environment, environment_timeout = 0)
43
- Static.new(environment, environment_timeout)
42
+ def self.static_for(environment, environment_timeout = 0, static_catalogs = false)
43
+ Static.new(environment, environment_timeout, static_catalogs)
44
44
  end
45
45
 
46
46
  attr_reader :section, :path_to_env, :global_modulepath
@@ -108,6 +108,12 @@ class Puppet::Settings::EnvironmentConf
108
108
  end
109
109
  end
110
110
 
111
+ def static_catalogs
112
+ get_setting(:static_catalogs, Puppet.settings.value(:static_catalogs)) do |value|
113
+ value
114
+ end
115
+ end
116
+
111
117
  def config_version
112
118
  get_setting(:config_version) do |config_version|
113
119
  absolute(config_version)
@@ -141,7 +147,7 @@ class Puppet::Settings::EnvironmentConf
141
147
 
142
148
  def get_setting(setting_name, default = nil)
143
149
  value = raw_setting(setting_name)
144
- value ||= default
150
+ value = default if value.nil?
145
151
  yield value
146
152
  end
147
153
 
@@ -161,10 +167,12 @@ class Puppet::Settings::EnvironmentConf
161
167
  class Static
162
168
  attr_reader :environment_timeout
163
169
  attr_reader :environment_data_provider
170
+ attr_reader :static_catalogs
164
171
 
165
- def initialize(environment, environment_timeout, environment_data_provider = 'none')
172
+ def initialize(environment, environment_timeout, static_catalogs, environment_data_provider = 'none')
166
173
  @environment = environment
167
174
  @environment_timeout = environment_timeout
175
+ @static_catalogs = static_catalogs
168
176
  @environment_data_provider = environment_data_provider
169
177
  end
170
178
 
@@ -62,7 +62,7 @@ module Puppet::SSL::CertificateFactory
62
62
  # extensions to.
63
63
  # @param csr [OpenSSL::X509::Request] The CSR associated with the given
64
64
  # certificate, which may specify requested extensions for the given cert.
65
- # See http://tools.ietf.org/html/rfc2985 Section 5.4.2 Extension request
65
+ # See https://tools.ietf.org/html/rfc2985 Section 5.4.2 Extension request
66
66
  # @param issuer [OpenSSL::X509::Certificate, OpenSSL::X509::Request] An X509 CSR
67
67
  # if this is a self signed certificate, or the X509 certificate of the CA if
68
68
  # this is a CA signed certificate.
@@ -100,7 +100,7 @@ module Puppet::SSL::CertificateFactory
100
100
  # something went wrong up there. --daniel 2011-10-11
101
101
  defaults = { "nsComment" => "Puppet Ruby/OpenSSL Internal Certificate" }
102
102
 
103
- # See http://www.openssl.org/docs/apps/x509v3_config.html
103
+ # See https://www.openssl.org/docs/apps/x509v3_config.html
104
104
  # for information about the special meanings of 'hash', 'keyid', 'issuer'
105
105
  override = {
106
106
  "subjectKeyIdentifier" => "hash",
@@ -126,7 +126,7 @@ module Puppet::SSL::CertificateFactory
126
126
  # complaint that the issuer keyid can't be fetched, which breaks all
127
127
  # sorts of things in our test suite and, e.g., bootstrapping the CA.
128
128
  #
129
- # http://tools.ietf.org/html/rfc5280#section-4.2.1.1 says that, to be a
129
+ # https://tools.ietf.org/html/rfc5280#section-4.2.1.1 says that, to be a
130
130
  # conforming CA we MAY omit the field if we are self-signed, which I
131
131
  # think gives us a pass in the specific case.
132
132
  #
@@ -23,7 +23,7 @@ require 'puppet/ssl/certificate_signer'
23
23
  #
24
24
  # This behavior is dictated by PKCS#9/RFC 2985 section 5.4.2.
25
25
  #
26
- # @see http://tools.ietf.org/html/rfc2985 "RFC 2985 Section 5.4.2 Extension request"
26
+ # @see https://tools.ietf.org/html/rfc2985 "RFC 2985 Section 5.4.2 Extension request"
27
27
  #
28
28
  class Puppet::SSL::CertificateRequest < Puppet::SSL::Base
29
29
  wraps OpenSSL::X509::Request
@@ -193,7 +193,7 @@ DOC
193
193
  #
194
194
  # The format of CSR attributes is specified in PKCS#10/RFC 2986
195
195
  #
196
- # @see http://tools.ietf.org/html/rfc2986 "RFC 2986 Certification Request Syntax Specification"
196
+ # @see https://tools.ietf.org/html/rfc2986 "RFC 2986 Certification Request Syntax Specification"
197
197
  #
198
198
  # @api public
199
199
  #
@@ -289,8 +289,8 @@ DOC
289
289
  # that in turn holds the elements. This is why we have to unpack an array
290
290
  # every time we unpack a Set/Seq.
291
291
  #
292
- # @see http://tools.ietf.org/html/rfc2985#ref-10 5.4.2 CSR Extension Request structure
293
- # @see http://tools.ietf.org/html/rfc5280 4.1 Certificate Extension structure
292
+ # @see https://tools.ietf.org/html/rfc2985#ref-10 5.4.2 CSR Extension Request structure
293
+ # @see https://tools.ietf.org/html/rfc5280 4.1 Certificate Extension structure
294
294
  #
295
295
  # @api private
296
296
  #
@@ -1,6 +1,6 @@
1
1
  # Take care of signing a certificate in a FIPS 140-2 compliant manner.
2
2
  #
3
- # @see http://projects.puppetlabs.com/issues/17295
3
+ # @see https://projects.puppetlabs.com/issues/17295
4
4
  #
5
5
  # @api private
6
6
  class Puppet::SSL::CertificateSigner
@@ -48,7 +48,7 @@ class Puppet::SSL::Validator::DefaultValidator #< class Puppet::SSL::Validator
48
48
  # chain being verified.
49
49
  #
50
50
  # From the [OpenSSL
51
- # documentation](http://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html):
51
+ # documentation](https://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html):
52
52
  # The `verify_callback` function is used to control the behaviour when the
53
53
  # SSL_VERIFY_PEER flag is set. It must be supplied by the application and
54
54
  # receives two arguments: preverify_ok indicates, whether the verification of
@@ -121,7 +121,13 @@ module Puppet::Test
121
121
  end
122
122
 
123
123
  # The process environment is a shared, persistent resource.
124
- $old_env = ENV.to_hash
124
+ # Can't use Puppet.features.microsoft_windows? as it may be mocked out in a test. This can cause test recurring test failures
125
+ if (!!File::ALT_SEPARATOR)
126
+ mode = :windows
127
+ else
128
+ mode = :posix
129
+ end
130
+ $old_env = Puppet::Util.get_environment(mode)
125
131
 
126
132
  # So is the load_path
127
133
  $old_load_path = $LOAD_PATH.dup
@@ -171,13 +177,19 @@ module Puppet::Test
171
177
  end
172
178
  $saved_indirection_state = nil
173
179
 
180
+ # Can't use Puppet.features.microsoft_windows? as it may be mocked out in a test. This can cause test recurring test failures
181
+ if (!!File::ALT_SEPARATOR)
182
+ mode = :windows
183
+ else
184
+ mode = :posix
185
+ end
174
186
  # Restore the global process environment. Can't just assign because this
175
187
  # is a magic variable, sadly, and doesn't do that™. It is sufficiently
176
188
  # faster to use the compare-then-set model to avoid excessive work that it
177
189
  # justifies the complexity. --daniel 2012-03-15
178
- unless ENV.to_hash == $old_env
179
- ENV.clear
180
- $old_env.each {|k, v| ENV[k] = v }
190
+ unless Puppet::Util.get_environment(mode) == $old_env
191
+ Puppet::Util.clear_environment(mode)
192
+ $old_env.each {|k, v| Puppet::Util.set_env(k, v, mode) }
181
193
  end
182
194
 
183
195
  # Restore the load_path late, to avoid messing with stubs from the test.