puppet 6.17.0-x64-mingw32 → 7.1.0-x64-mingw32

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

Potentially problematic release.


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

Files changed (622) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +32 -30
  5. data/README.md +2 -3
  6. data/Rakefile +4 -12
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/build_defaults.yaml +1 -1
  9. data/ext/osx/file_mapping.yaml +0 -5
  10. data/ext/project_data.yaml +2 -14
  11. data/ext/redhat/puppet.spec.erb +0 -1
  12. data/ext/windows/service/daemon.rb +6 -5
  13. data/install.rb +21 -17
  14. data/lib/puppet.rb +11 -20
  15. data/lib/puppet/agent/locker.rb +0 -7
  16. data/lib/puppet/application.rb +172 -98
  17. data/lib/puppet/application/agent.rb +8 -3
  18. data/lib/puppet/application/apply.rb +18 -20
  19. data/lib/puppet/application/device.rb +100 -104
  20. data/lib/puppet/application/doc.rb +1 -1
  21. data/lib/puppet/application/filebucket.rb +15 -11
  22. data/lib/puppet/application/lookup.rb +16 -4
  23. data/lib/puppet/application/ssl.rb +1 -1
  24. data/lib/puppet/application_support.rb +7 -0
  25. data/lib/puppet/configurer.rb +46 -19
  26. data/lib/puppet/configurer/downloader.rb +31 -10
  27. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  28. data/lib/puppet/confine.rb +1 -1
  29. data/lib/puppet/confine/any.rb +1 -1
  30. data/lib/puppet/defaults.rb +116 -162
  31. data/lib/puppet/environments.rb +72 -62
  32. data/lib/puppet/face/catalog.rb +1 -1
  33. data/lib/puppet/face/config.rb +56 -16
  34. data/lib/puppet/face/epp.rb +12 -2
  35. data/lib/puppet/face/facts.rb +66 -6
  36. data/lib/puppet/face/help.rb +1 -1
  37. data/lib/puppet/face/node.rb +3 -3
  38. data/lib/puppet/face/node/clean.rb +10 -2
  39. data/lib/puppet/face/plugin.rb +5 -8
  40. data/lib/puppet/feature/base.rb +1 -1
  41. data/lib/puppet/ffi/posix.rb +10 -0
  42. data/lib/puppet/ffi/posix/constants.rb +14 -0
  43. data/lib/puppet/ffi/posix/functions.rb +24 -0
  44. data/lib/puppet/ffi/windows.rb +12 -0
  45. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  46. data/lib/puppet/ffi/windows/constants.rb +404 -0
  47. data/lib/puppet/ffi/windows/functions.rb +628 -0
  48. data/lib/puppet/ffi/windows/structs.rb +338 -0
  49. data/lib/puppet/file_bucket/dipper.rb +1 -1
  50. data/lib/puppet/file_serving/configuration.rb +0 -5
  51. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  52. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  53. data/lib/puppet/file_serving/mount.rb +1 -2
  54. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  55. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  56. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  57. data/lib/puppet/file_system/file_impl.rb +3 -3
  58. data/lib/puppet/forge/repository.rb +0 -1
  59. data/lib/puppet/functions/epp.rb +1 -0
  60. data/lib/puppet/functions/inline_epp.rb +1 -0
  61. data/lib/puppet/functions/lstrip.rb +4 -4
  62. data/lib/puppet/functions/new.rb +8 -3
  63. data/lib/puppet/functions/reverse_each.rb +1 -1
  64. data/lib/puppet/functions/rstrip.rb +4 -4
  65. data/lib/puppet/functions/step.rb +1 -1
  66. data/lib/puppet/functions/strip.rb +4 -4
  67. data/lib/puppet/generate/models/type/type.rb +4 -1
  68. data/lib/puppet/gettext/config.rb +5 -5
  69. data/lib/puppet/gettext/module_translations.rb +4 -4
  70. data/lib/puppet/http.rb +23 -13
  71. data/lib/puppet/http/client.rb +165 -115
  72. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  73. data/lib/puppet/http/errors.rb +16 -0
  74. data/lib/puppet/http/external_client.rb +5 -7
  75. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  76. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  77. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  78. data/lib/puppet/http/proxy.rb +137 -0
  79. data/lib/puppet/http/redirector.rb +4 -12
  80. data/lib/puppet/http/resolver.rb +10 -23
  81. data/lib/puppet/http/resolver/server_list.rb +23 -45
  82. data/lib/puppet/http/resolver/settings.rb +7 -10
  83. data/lib/puppet/http/resolver/srv.rb +11 -15
  84. data/lib/puppet/http/response.rb +36 -54
  85. data/lib/puppet/http/response_converter.rb +24 -0
  86. data/lib/puppet/http/response_net_http.rb +42 -0
  87. data/lib/puppet/http/retry_after_handler.rb +4 -13
  88. data/lib/puppet/http/service.rb +15 -27
  89. data/lib/puppet/http/service/ca.rb +11 -22
  90. data/lib/puppet/http/service/compiler.rb +23 -70
  91. data/lib/puppet/http/service/file_server.rb +19 -28
  92. data/lib/puppet/http/service/puppetserver.rb +53 -0
  93. data/lib/puppet/http/service/report.rb +8 -10
  94. data/lib/puppet/http/session.rb +16 -24
  95. data/lib/puppet/{network/http → http}/site.rb +1 -2
  96. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  97. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  98. data/lib/puppet/indirector/exec.rb +1 -1
  99. data/lib/puppet/indirector/fact_search.rb +60 -0
  100. data/lib/puppet/indirector/facts/facter.rb +27 -6
  101. data/lib/puppet/indirector/facts/json.rb +27 -0
  102. data/lib/puppet/indirector/facts/rest.rb +3 -22
  103. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  104. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  105. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  106. data/lib/puppet/indirector/file_metadata/http.rb +1 -0
  107. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  108. data/lib/puppet/indirector/file_server.rb +1 -8
  109. data/lib/puppet/indirector/generic_http.rb +0 -11
  110. data/lib/puppet/indirector/hiera.rb +4 -0
  111. data/lib/puppet/indirector/indirection.rb +1 -1
  112. data/lib/puppet/indirector/json.rb +5 -1
  113. data/lib/puppet/indirector/msgpack.rb +1 -1
  114. data/lib/puppet/indirector/node/json.rb +8 -0
  115. data/lib/puppet/indirector/node/rest.rb +2 -4
  116. data/lib/puppet/indirector/report/json.rb +34 -0
  117. data/lib/puppet/indirector/report/processor.rb +2 -2
  118. data/lib/puppet/indirector/report/rest.rb +3 -8
  119. data/lib/puppet/indirector/request.rb +1 -102
  120. data/lib/puppet/indirector/rest.rb +12 -263
  121. data/lib/puppet/indirector/yaml.rb +1 -1
  122. data/lib/puppet/module.rb +1 -2
  123. data/lib/puppet/module_tool/applications.rb +0 -1
  124. data/lib/puppet/network/authconfig.rb +2 -96
  125. data/lib/puppet/network/authorization.rb +13 -35
  126. data/lib/puppet/network/format_support.rb +2 -2
  127. data/lib/puppet/network/formats.rb +2 -1
  128. data/lib/puppet/network/http.rb +3 -3
  129. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  130. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  131. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  132. data/lib/puppet/network/http/connection.rb +247 -316
  133. data/lib/puppet/network/http/handler.rb +0 -1
  134. data/lib/puppet/network/http/route.rb +2 -2
  135. data/lib/puppet/network/http_pool.rb +16 -34
  136. data/lib/puppet/node.rb +1 -30
  137. data/lib/puppet/node/environment.rb +12 -5
  138. data/lib/puppet/node/facts.rb +17 -0
  139. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  140. data/lib/puppet/pal/pal_impl.rb +93 -14
  141. data/lib/puppet/parameter.rb +1 -1
  142. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  143. data/lib/puppet/parser/compiler.rb +0 -198
  144. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  145. data/lib/puppet/parser/functions.rb +21 -17
  146. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  147. data/lib/puppet/parser/resource.rb +0 -69
  148. data/lib/puppet/parser/templatewrapper.rb +1 -1
  149. data/lib/puppet/parser/type_loader.rb +2 -2
  150. data/lib/puppet/pops/adaptable.rb +7 -13
  151. data/lib/puppet/pops/adapters.rb +8 -4
  152. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  153. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  154. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  155. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  156. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  157. data/lib/puppet/pops/issues.rb +0 -5
  158. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  159. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  160. data/lib/puppet/pops/loaders.rb +18 -11
  161. data/lib/puppet/pops/lookup/context.rb +1 -1
  162. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  163. data/lib/puppet/pops/model/ast.pp +0 -42
  164. data/lib/puppet/pops/model/ast.rb +0 -290
  165. data/lib/puppet/pops/model/factory.rb +0 -45
  166. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  167. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  168. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  169. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  170. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  171. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  172. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  173. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  174. data/lib/puppet/pops/types/iterable.rb +34 -8
  175. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  176. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  177. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  178. data/lib/puppet/pops/types/type_parser.rb +0 -4
  179. data/lib/puppet/pops/types/types.rb +0 -1
  180. data/lib/puppet/pops/validation/checker4_0.rb +28 -52
  181. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  182. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  183. data/lib/puppet/provider.rb +0 -13
  184. data/lib/puppet/provider/file/windows.rb +1 -1
  185. data/lib/puppet/provider/nameservice.rb +0 -18
  186. data/lib/puppet/provider/package/apt.rb +34 -0
  187. data/lib/puppet/provider/package/dpkg.rb +1 -11
  188. data/lib/puppet/provider/package/gem.rb +27 -5
  189. data/lib/puppet/provider/package/pip.rb +0 -1
  190. data/lib/puppet/provider/package/pip2.rb +17 -0
  191. data/lib/puppet/provider/package/pkg.rb +0 -4
  192. data/lib/puppet/provider/package/portage.rb +1 -1
  193. data/lib/puppet/provider/package/puppet_gem.rb +6 -4
  194. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  195. data/lib/puppet/provider/package/yum.rb +1 -0
  196. data/lib/puppet/provider/package/zypper.rb +3 -0
  197. data/lib/puppet/provider/service/smf.rb +191 -73
  198. data/lib/puppet/provider/user/aix.rb +3 -3
  199. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  200. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  201. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  202. data/lib/puppet/reference/configuration.rb +2 -0
  203. data/lib/puppet/reference/indirection.rb +1 -1
  204. data/lib/puppet/resource.rb +1 -89
  205. data/lib/puppet/resource/catalog.rb +1 -14
  206. data/lib/puppet/resource/type.rb +5 -120
  207. data/lib/puppet/resource/type_collection.rb +3 -48
  208. data/lib/puppet/runtime.rb +1 -2
  209. data/lib/puppet/settings.rb +84 -35
  210. data/lib/puppet/settings/base_setting.rb +26 -2
  211. data/lib/puppet/settings/integer_setting.rb +17 -0
  212. data/lib/puppet/settings/port_setting.rb +15 -0
  213. data/lib/puppet/settings/priority_setting.rb +5 -4
  214. data/lib/puppet/ssl.rb +10 -6
  215. data/lib/puppet/ssl/base.rb +3 -5
  216. data/lib/puppet/ssl/certificate.rb +0 -6
  217. data/lib/puppet/ssl/certificate_request.rb +1 -12
  218. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  219. data/lib/puppet/ssl/oids.rb +3 -1
  220. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  221. data/lib/puppet/ssl/state_machine.rb +3 -1
  222. data/lib/puppet/ssl/verifier.rb +2 -0
  223. data/lib/puppet/test/test_helper.rb +11 -6
  224. data/lib/puppet/transaction.rb +3 -9
  225. data/lib/puppet/transaction/persistence.rb +1 -1
  226. data/lib/puppet/transaction/report.rb +10 -8
  227. data/lib/puppet/trusted_external.rb +2 -2
  228. data/lib/puppet/type.rb +4 -79
  229. data/lib/puppet/type/file.rb +7 -9
  230. data/lib/puppet/type/file/checksum.rb +1 -1
  231. data/lib/puppet/type/file/source.rb +29 -9
  232. data/lib/puppet/type/filebucket.rb +4 -4
  233. data/lib/puppet/type/notify.rb +2 -2
  234. data/lib/puppet/type/package.rb +5 -13
  235. data/lib/puppet/type/service.rb +4 -0
  236. data/lib/puppet/type/user.rb +19 -4
  237. data/lib/puppet/util.rb +26 -12
  238. data/lib/puppet/util/autoload.rb +9 -7
  239. data/lib/puppet/util/character_encoding.rb +9 -5
  240. data/lib/puppet/util/execution.rb +2 -13
  241. data/lib/puppet/util/http_proxy.rb +2 -215
  242. data/lib/puppet/util/monkey_patches.rb +0 -46
  243. data/lib/puppet/util/posix.rb +53 -4
  244. data/lib/puppet/util/rdoc.rb +0 -7
  245. data/lib/puppet/util/retry_action.rb +1 -1
  246. data/lib/puppet/util/rubygems.rb +5 -1
  247. data/lib/puppet/util/run_mode.rb +14 -2
  248. data/lib/puppet/util/windows.rb +3 -7
  249. data/lib/puppet/util/windows/daemon.rb +360 -0
  250. data/lib/puppet/util/windows/error.rb +1 -0
  251. data/lib/puppet/util/windows/eventlog.rb +4 -9
  252. data/lib/puppet/util/windows/file.rb +8 -242
  253. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  254. data/lib/puppet/util/windows/process.rb +4 -226
  255. data/lib/puppet/util/windows/security.rb +4 -4
  256. data/lib/puppet/util/windows/service.rb +9 -460
  257. data/lib/puppet/util/windows/string.rb +12 -13
  258. data/lib/puppet/util/windows/user.rb +219 -0
  259. data/lib/puppet/util/yaml.rb +0 -22
  260. data/lib/puppet/vendor/require_vendored.rb +0 -1
  261. data/lib/puppet/version.rb +1 -1
  262. data/lib/puppet/x509.rb +5 -1
  263. data/lib/puppet/x509/cert_provider.rb +29 -1
  264. data/locales/puppet.pot +656 -1351
  265. data/man/man5/puppet.conf.5 +72 -97
  266. data/man/man8/puppet-agent.8 +6 -3
  267. data/man/man8/puppet-apply.8 +1 -1
  268. data/man/man8/puppet-catalog.8 +1 -1
  269. data/man/man8/puppet-config.8 +6 -6
  270. data/man/man8/puppet-describe.8 +1 -1
  271. data/man/man8/puppet-device.8 +1 -1
  272. data/man/man8/puppet-doc.8 +1 -1
  273. data/man/man8/puppet-epp.8 +1 -1
  274. data/man/man8/puppet-facts.8 +55 -9
  275. data/man/man8/puppet-filebucket.8 +6 -6
  276. data/man/man8/puppet-generate.8 +1 -1
  277. data/man/man8/puppet-help.8 +1 -1
  278. data/man/man8/puppet-lookup.8 +2 -2
  279. data/man/man8/puppet-module.8 +1 -58
  280. data/man/man8/puppet-node.8 +7 -4
  281. data/man/man8/puppet-parser.8 +1 -1
  282. data/man/man8/puppet-plugin.8 +1 -1
  283. data/man/man8/puppet-report.8 +4 -1
  284. data/man/man8/puppet-resource.8 +1 -1
  285. data/man/man8/puppet-script.8 +1 -1
  286. data/man/man8/puppet-ssl.8 +1 -1
  287. data/man/man8/puppet.8 +2 -2
  288. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  289. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  290. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  291. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  292. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  293. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  294. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  295. data/spec/integration/application/agent_spec.rb +70 -61
  296. data/spec/integration/application/apply_spec.rb +150 -150
  297. data/spec/integration/application/doc_spec.rb +16 -6
  298. data/spec/integration/application/filebucket_spec.rb +78 -29
  299. data/spec/integration/application/help_spec.rb +44 -0
  300. data/spec/integration/application/lookup_spec.rb +13 -0
  301. data/spec/integration/application/module_spec.rb +68 -0
  302. data/spec/integration/application/plugin_spec.rb +76 -4
  303. data/spec/integration/configurer_spec.rb +14 -0
  304. data/spec/integration/data_binding_spec.rb +82 -0
  305. data/spec/integration/defaults_spec.rb +32 -3
  306. data/spec/integration/directory_environments_spec.rb +17 -17
  307. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  308. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  309. data/spec/integration/network/http_pool_spec.rb +3 -21
  310. data/spec/integration/node/environment_spec.rb +1 -1
  311. data/spec/integration/parser/catalog_spec.rb +0 -38
  312. data/spec/integration/parser/node_spec.rb +0 -9
  313. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  314. data/spec/integration/type/file_spec.rb +5 -4
  315. data/spec/integration/util/execution_spec.rb +22 -0
  316. data/spec/integration/util/windows/adsi_spec.rb +2 -2
  317. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  318. data/spec/integration/util/windows/process_spec.rb +26 -32
  319. data/spec/integration/util/windows/security_spec.rb +1 -1
  320. data/spec/integration/util/windows/user_spec.rb +7 -0
  321. data/spec/integration/util_spec.rb +7 -33
  322. data/spec/lib/puppet_spec/matchers.rb +0 -80
  323. data/spec/lib/puppet_spec/puppetserver.rb +9 -1
  324. data/spec/lib/puppet_spec/settings.rb +7 -1
  325. data/spec/shared_contexts/types_setup.rb +2 -0
  326. data/spec/spec_helper.rb +2 -0
  327. data/spec/unit/agent_spec.rb +0 -2
  328. data/spec/unit/application/agent_spec.rb +3 -4
  329. data/spec/unit/application/config_spec.rb +224 -4
  330. data/spec/unit/application/doc_spec.rb +2 -2
  331. data/spec/unit/application/face_base_spec.rb +6 -4
  332. data/spec/unit/application/facts_spec.rb +74 -8
  333. data/spec/unit/application/filebucket_spec.rb +41 -39
  334. data/spec/unit/application/resource_spec.rb +3 -1
  335. data/spec/unit/application/ssl_spec.rb +17 -4
  336. data/spec/unit/application_spec.rb +43 -4
  337. data/spec/unit/certificate_factory_spec.rb +1 -1
  338. data/spec/unit/configurer/downloader_spec.rb +14 -0
  339. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  340. data/spec/unit/configurer_spec.rb +96 -44
  341. data/spec/unit/confine_spec.rb +2 -1
  342. data/spec/unit/context/trusted_information_spec.rb +2 -6
  343. data/spec/unit/defaults_spec.rb +26 -32
  344. data/spec/unit/environments_spec.rb +173 -32
  345. data/spec/unit/face/config_spec.rb +65 -12
  346. data/spec/unit/face/facts_spec.rb +4 -0
  347. data/spec/unit/face/node_spec.rb +16 -4
  348. data/spec/unit/face/plugin_spec.rb +73 -33
  349. data/spec/unit/file_bucket/file_spec.rb +1 -1
  350. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  351. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  352. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  353. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  354. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  355. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  356. data/spec/unit/file_system_spec.rb +1 -2
  357. data/spec/unit/functions/camelcase_spec.rb +1 -1
  358. data/spec/unit/functions/capitalize_spec.rb +1 -1
  359. data/spec/unit/functions/downcase_spec.rb +1 -1
  360. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  361. data/spec/unit/functions/upcase_spec.rb +1 -1
  362. data/spec/unit/http/client_spec.rb +7 -9
  363. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  364. data/spec/unit/http/external_client_spec.rb +4 -4
  365. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  366. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  367. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  368. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  369. data/spec/unit/http/resolver_spec.rb +34 -15
  370. data/spec/unit/http/service/ca_spec.rb +2 -3
  371. data/spec/unit/http/service/compiler_spec.rb +51 -65
  372. data/spec/unit/http/service/file_server_spec.rb +5 -6
  373. data/spec/unit/http/service/puppetserver_spec.rb +112 -0
  374. data/spec/unit/http/service/report_spec.rb +2 -3
  375. data/spec/unit/http/service_spec.rb +1 -3
  376. data/spec/unit/http/session_spec.rb +24 -35
  377. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  378. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  379. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  380. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  381. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  382. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  383. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  384. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  385. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  386. data/spec/unit/indirector/file_server_spec.rb +1 -15
  387. data/spec/unit/indirector/json_spec.rb +8 -8
  388. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  389. data/spec/unit/indirector/node/json_spec.rb +33 -0
  390. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  391. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  392. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  393. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  394. data/spec/unit/indirector/request_spec.rb +2 -266
  395. data/spec/unit/indirector/rest_spec.rb +98 -752
  396. data/spec/unit/indirector/yaml_spec.rb +7 -7
  397. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  398. data/spec/unit/network/authconfig_spec.rb +2 -132
  399. data/spec/unit/network/authorization_spec.rb +2 -55
  400. data/spec/unit/network/format_support_spec.rb +3 -2
  401. data/spec/unit/network/formats_spec.rb +4 -4
  402. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
  403. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  404. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  405. data/spec/unit/network/http/api_spec.rb +10 -0
  406. data/spec/unit/network/http/connection_spec.rb +19 -41
  407. data/spec/unit/network/http/handler_spec.rb +0 -6
  408. data/spec/unit/network/http_pool_spec.rb +0 -4
  409. data/spec/unit/node/environment_spec.rb +51 -22
  410. data/spec/unit/node_spec.rb +2 -54
  411. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  412. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  413. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  414. data/spec/unit/pops/loaders/loaders_spec.rb +76 -21
  415. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  416. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  417. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  418. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  419. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  420. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  421. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  422. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  423. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  424. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  425. data/spec/unit/pops/visitor_spec.rb +1 -1
  426. data/spec/unit/provider/exec_spec.rb +4 -3
  427. data/spec/unit/provider/nameservice_spec.rb +0 -57
  428. data/spec/unit/provider/package/apt_spec.rb +77 -0
  429. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  430. data/spec/unit/provider/package/dpkg_spec.rb +22 -55
  431. data/spec/unit/provider/package/gem_spec.rb +32 -0
  432. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  433. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  434. data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
  435. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  436. data/spec/unit/provider/package/yum_spec.rb +31 -0
  437. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  438. data/spec/unit/provider/service/base_spec.rb +2 -4
  439. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  440. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  441. data/spec/unit/provider/service/debian_spec.rb +3 -5
  442. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  443. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  444. data/spec/unit/provider/service/init_spec.rb +45 -5
  445. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  446. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  447. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  448. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  449. data/spec/unit/provider/service/runit_spec.rb +2 -1
  450. data/spec/unit/provider/service/smf_spec.rb +402 -166
  451. data/spec/unit/provider/service/src_spec.rb +3 -5
  452. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  453. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  454. data/spec/unit/provider/service/windows_spec.rb +28 -1
  455. data/spec/unit/provider/user/aix_spec.rb +5 -0
  456. data/spec/unit/provider/user/pw_spec.rb +2 -0
  457. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  458. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  459. data/spec/unit/provider_spec.rb +0 -12
  460. data/spec/unit/puppet_pal_2pec.rb +40 -0
  461. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  462. data/spec/unit/reports/store_spec.rb +17 -13
  463. data/spec/unit/resource/type_collection_spec.rb +2 -22
  464. data/spec/unit/resource_spec.rb +0 -56
  465. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  466. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  467. data/spec/unit/settings/port_setting_spec.rb +31 -0
  468. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  469. data/spec/unit/settings_spec.rb +586 -239
  470. data/spec/unit/ssl/base_spec.rb +36 -3
  471. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  472. data/spec/unit/ssl/certificate_spec.rb +2 -11
  473. data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
  474. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  475. data/spec/unit/ssl/verifier_spec.rb +0 -21
  476. data/spec/unit/transaction/persistence_spec.rb +15 -0
  477. data/spec/unit/transaction/report_spec.rb +2 -2
  478. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  479. data/spec/unit/transaction_spec.rb +45 -79
  480. data/spec/unit/type/file/checksum_spec.rb +6 -6
  481. data/spec/unit/type/file/content_spec.rb +1 -1
  482. data/spec/unit/type/file/ensure_spec.rb +1 -1
  483. data/spec/unit/type/file/mode_spec.rb +1 -1
  484. data/spec/unit/type/file/source_spec.rb +1 -2
  485. data/spec/unit/type/file_spec.rb +12 -6
  486. data/spec/unit/type/filebucket_spec.rb +1 -1
  487. data/spec/unit/type/package_spec.rb +1 -1
  488. data/spec/unit/type/service_spec.rb +35 -2
  489. data/spec/unit/type/user_spec.rb +31 -2
  490. data/spec/unit/type_spec.rb +20 -0
  491. data/spec/unit/util/backups_spec.rb +0 -2
  492. data/spec/unit/util/character_encoding_spec.rb +4 -4
  493. data/spec/unit/util/command_line_spec.rb +11 -6
  494. data/spec/unit/util/execution_spec.rb +0 -29
  495. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  496. data/spec/unit/util/posix_spec.rb +357 -15
  497. data/spec/unit/util/rubygems_spec.rb +2 -2
  498. data/spec/unit/util/run_mode_spec.rb +27 -127
  499. data/spec/unit/util/storage_spec.rb +3 -1
  500. data/spec/unit/util/windows/string_spec.rb +1 -3
  501. data/spec/unit/util/yaml_spec.rb +0 -54
  502. data/spec/unit/util_spec.rb +0 -18
  503. metadata +84 -261
  504. data/conf/auth.conf +0 -150
  505. data/lib/puppet/application/cert.rb +0 -76
  506. data/lib/puppet/application/key.rb +0 -4
  507. data/lib/puppet/application/man.rb +0 -4
  508. data/lib/puppet/application/status.rb +0 -4
  509. data/lib/puppet/face/key.rb +0 -16
  510. data/lib/puppet/face/man.rb +0 -145
  511. data/lib/puppet/face/module/build.rb +0 -14
  512. data/lib/puppet/face/module/generate.rb +0 -14
  513. data/lib/puppet/face/module/search.rb +0 -103
  514. data/lib/puppet/face/status.rb +0 -51
  515. data/lib/puppet/indirector/certificate/file.rb +0 -9
  516. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  517. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  518. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  519. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  520. data/lib/puppet/indirector/file_content/http.rb +0 -22
  521. data/lib/puppet/indirector/key/file.rb +0 -46
  522. data/lib/puppet/indirector/key/memory.rb +0 -7
  523. data/lib/puppet/indirector/ssl_file.rb +0 -162
  524. data/lib/puppet/indirector/status.rb +0 -3
  525. data/lib/puppet/indirector/status/local.rb +0 -12
  526. data/lib/puppet/indirector/status/rest.rb +0 -27
  527. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  528. data/lib/puppet/network/auth_config_parser.rb +0 -90
  529. data/lib/puppet/network/authstore.rb +0 -283
  530. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  531. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  532. data/lib/puppet/network/http/base_pool.rb +0 -36
  533. data/lib/puppet/network/http/compression.rb +0 -127
  534. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  535. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  536. data/lib/puppet/network/rest_controller.rb +0 -2
  537. data/lib/puppet/network/rights.rb +0 -210
  538. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  539. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  540. data/lib/puppet/parser/environment_compiler.rb +0 -202
  541. data/lib/puppet/pops/types/enumeration.rb +0 -16
  542. data/lib/puppet/resource/capability_finder.rb +0 -154
  543. data/lib/puppet/rest/errors.rb +0 -15
  544. data/lib/puppet/rest/response.rb +0 -35
  545. data/lib/puppet/rest/route.rb +0 -85
  546. data/lib/puppet/rest/routes.rb +0 -135
  547. data/lib/puppet/ssl/host.rb +0 -505
  548. data/lib/puppet/ssl/key.rb +0 -61
  549. data/lib/puppet/ssl/validator.rb +0 -61
  550. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  551. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  552. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  553. data/lib/puppet/status.rb +0 -40
  554. data/lib/puppet/util/connection.rb +0 -88
  555. data/lib/puppet/util/ssl.rb +0 -83
  556. data/lib/puppet/util/windows/api_types.rb +0 -295
  557. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  558. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  559. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  560. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  561. data/lib/puppet/vendor/pathspec/README.md +0 -53
  562. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  563. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  564. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  565. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  566. data/man/man8/puppet-key.8 +0 -126
  567. data/man/man8/puppet-man.8 +0 -76
  568. data/man/man8/puppet-status.8 +0 -108
  569. data/spec/integration/faces/config_spec.rb +0 -91
  570. data/spec/integration/faces/documentation_spec.rb +0 -57
  571. data/spec/integration/file_bucket/file_spec.rb +0 -50
  572. data/spec/integration/file_serving/content_spec.rb +0 -7
  573. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  574. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  575. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  576. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  577. data/spec/integration/module_tool/forge_spec.rb +0 -51
  578. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  579. data/spec/integration/network/authconfig_spec.rb +0 -256
  580. data/spec/integration/provider/service/init_spec.rb +0 -48
  581. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  582. data/spec/integration/provider/service/windows_spec.rb +0 -50
  583. data/spec/integration/reference/providers_spec.rb +0 -21
  584. data/spec/integration/reports_spec.rb +0 -13
  585. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  586. data/spec/integration/ssl/host_spec.rb +0 -72
  587. data/spec/integration/ssl/key_spec.rb +0 -99
  588. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  589. data/spec/unit/capability_spec.rb +0 -414
  590. data/spec/unit/face/catalog_spec.rb +0 -6
  591. data/spec/unit/face/key_spec.rb +0 -9
  592. data/spec/unit/face/man_spec.rb +0 -25
  593. data/spec/unit/face/module/search_spec.rb +0 -231
  594. data/spec/unit/face/module_spec.rb +0 -3
  595. data/spec/unit/face/status_spec.rb +0 -9
  596. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  597. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  598. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  599. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  600. data/spec/unit/indirector/key/file_spec.rb +0 -79
  601. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  602. data/spec/unit/indirector/status/local_spec.rb +0 -10
  603. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  604. data/spec/unit/man_spec.rb +0 -31
  605. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  606. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  607. data/spec/unit/network/authstore_spec.rb +0 -422
  608. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  609. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  610. data/spec/unit/network/http/compression_spec.rb +0 -240
  611. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  612. data/spec/unit/network/http_spec.rb +0 -9
  613. data/spec/unit/network/rights_spec.rb +0 -439
  614. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  615. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  616. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  617. data/spec/unit/rest/route_spec.rb +0 -132
  618. data/spec/unit/ssl/host_spec.rb +0 -650
  619. data/spec/unit/ssl/key_spec.rb +0 -173
  620. data/spec/unit/ssl/validator_spec.rb +0 -278
  621. data/spec/unit/status_spec.rb +0 -45
  622. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -0,0 +1,128 @@
1
+ {
2
+ "pagination": {
3
+ "limit": 20,
4
+ "offset": 0,
5
+ "first": "/v3/releases?module=puppetlabs-bacula&sort_by=version&exclude_fields=readme%2Cchangelog%2Clicense%2Curi%2Cmodule%2Ctags%2Csupported%2Cfile_size%2Cdownloads%2Ccreated_at%2Cupdated_at%2Cdeleted_at&limit=20&offset=0",
6
+ "previous": null,
7
+ "current": "/v3/releases?module=puppetlabs-bacula&sort_by=version&exclude_fields=readme%2Cchangelog%2Clicense%2Curi%2Cmodule%2Ctags%2Csupported%2Cfile_size%2Cdownloads%2Ccreated_at%2Cupdated_at%2Cdeleted_at&limit=20&offset=0",
8
+ "next": null,
9
+ "total": 2
10
+ },
11
+ "results": [
12
+ {
13
+ "slug": "puppetlabs-bacula-0.0.2",
14
+ "version": "0.0.2",
15
+ "metadata": {
16
+ "description": "This module manages Bacula, a complete backup solution",
17
+ "source": "http://github.com/puppetlabs/puppetlabs-bacula",
18
+ "checksums": {
19
+ "templates/client_config.erb": "5d4005eda5ace78fd90a8cb6dcb388bd",
20
+ "spec/spec_helper.rb": "ca19ec4f451ebc7fdb035b52eae6e909",
21
+ "templates/bacula-fd.conf.erb": "344fff616e138fbf8cd150f4bab8125d",
22
+ "CHANGELOG": "a20043858790de6086b9b30c36806cd2",
23
+ "manifests/config/validate.pp": "7d2f9f7cffb2bd1d221eb699ea55f246",
24
+ "LICENSE": "26ce13c80c7a8493533c65c32dc29f09",
25
+ "manifests/director.pp": "36f34f749314634173b6a47b92a58421",
26
+ "manifests/config/client.pp": "5d25cbfd94be2829d9d530673cd2307f",
27
+ "lib/puppet/parser/functions/generate_clients.rb": "e09d77f88d18ec3e59bbe7bae4a48036",
28
+ "manifests/common.pp": "67391e5560ee7fc97d873ab5c3e2f84c",
29
+ "manifests/client.pp": "42e9255711d0a6abed6ab8deafb1248c",
30
+ "manifests/console.pp": "4cf8ac2f96f9268e2a3d70ed777797b7",
31
+ "README.md": "13d0f1119d510e41c539cbc3825a4f82",
32
+ "templates/bacula-sd.conf.erb": "df7987695bf1dd18bb789a2673b2cd95",
33
+ "manifests/config.pp": "624a225f85f907e7db5cf717561953f3",
34
+ "tests/init.pp": "b95d199119d5e592df7e1580bf23fe06",
35
+ "templates/bconsole.conf.erb": "ba5e1ef7d320a48bde6e403dc956952a",
36
+ "manifests/bat.pp": "3743bddf0197b4110e54a8e297e927e8",
37
+ "manifests/storage.pp": "84f4ec1413df4fdec7288c18d6ba2897",
38
+ "templates/bacula-dir.conf.erb": "5ab5aa263cf318ebf65c6b52a0726647",
39
+ "metadata.json": "d34d0b70aba36510fbc2df4e667479ef",
40
+ "spec/spec.opts": "a600ded995d948e393fbe2320ba8e51c",
41
+ "Modulefile": "63f93af605871a69211cd3f79ac62582",
42
+ "manifests/init.pp": "fafac38161dd69f4b7e452cf910812f4"
43
+ },
44
+ "summary": "This module manages a bacula infrastructure",
45
+ "author": "Puppet Labs",
46
+ "dependencies": [
47
+
48
+ ],
49
+ "project_page": "http://github.com/puppetlabs/puppetlabs-bacula",
50
+ "types": [
51
+
52
+ ],
53
+ "license": "Apache",
54
+ "version": "0.0.2",
55
+ "name": "puppetlabs-bacula"
56
+ },
57
+ "pdk": false,
58
+ "validation_score": 22,
59
+ "file_uri": "/v3/files/puppetlabs-bacula-0.0.2.tar.gz",
60
+ "file_md5": "6cd7b8a3ec788e4ddbd06ae59be45d7a",
61
+ "file_sha256": "4cea5bae3c2b3dbe236bdc87ab9caa4f6d41943d1bf81651b2c0e08205910cdd",
62
+ "reference": null,
63
+ "tasks": [
64
+
65
+ ],
66
+ "plans": [
67
+
68
+ ],
69
+ "deleted_for": null
70
+ },
71
+ {
72
+ "slug": "puppetlabs-bacula-0.0.1",
73
+ "version": "0.0.1",
74
+ "metadata": {
75
+ "description": "This module manages Bacula, a complete backup solution",
76
+ "source": "http://github.com/puppetlabs/puppetlabs-bacula",
77
+ "checksums": {
78
+ "spec/spec_helper.rb": "ca19ec4f451ebc7fdb035b52eae6e909",
79
+ "templates/bacula-fd.conf.erb": "344fff616e138fbf8cd150f4bab8125d",
80
+ "CHANGELOG": "28c8a36d149971979b867491203b5fef",
81
+ "manifests/config/validate.pp": "e74d9dfbf4814d455a2c4a27ac516571",
82
+ "LICENSE": "26ce13c80c7a8493533c65c32dc29f09",
83
+ "manifests/director.pp": "bec6d5b6b8befca9640edb8bdb8b5b10",
84
+ "manifests/common.pp": "9c037f51fd8b70c4bed0ceeb55f93ffb",
85
+ "manifests/client.pp": "42e9255711d0a6abed6ab8deafb1248c",
86
+ "manifests/console.pp": "1ee546361e47c0bc43299b3b62baa925",
87
+ "README.md": "470c6e1e9b4d877bcfdc88d751de8d19",
88
+ "templates/bacula-sd.conf.erb": "df7987695bf1dd18bb789a2673b2cd95",
89
+ "manifests/config.pp": "4410fadc6d82543e0b19039e3365fd3a",
90
+ "tests/init.pp": "b95d199119d5e592df7e1580bf23fe06",
91
+ "templates/bconsole.conf.erb": "ba5e1ef7d320a48bde6e403dc956952a",
92
+ "manifests/bat.pp": "3743bddf0197b4110e54a8e297e927e8",
93
+ "manifests/storage.pp": "13eadb4376a07d095d1ee13e8ff60846",
94
+ "templates/bacula-dir.conf.erb": "c0b1b57660cf965bcff7e5fda547ee03",
95
+ "metadata.json": "d34d0b70aba36510fbc2df4e667479ef",
96
+ "spec/spec.opts": "a600ded995d948e393fbe2320ba8e51c",
97
+ "Modulefile": "082b764ac91831266b7cbda75f79c199",
98
+ "manifests/init.pp": "6b9d2e9ca0a06c1a318837307fadcc70"
99
+ },
100
+ "summary": "This module manages a bacula infrastructure",
101
+ "author": "Puppet Labs",
102
+ "dependencies": [
103
+
104
+ ],
105
+ "project_page": "http://github.com/puppetlabs/puppetlabs-bacula",
106
+ "types": [
107
+
108
+ ],
109
+ "license": "Apache",
110
+ "version": "0.0.1",
111
+ "name": "puppetlabs-bacula"
112
+ },
113
+ "pdk": false,
114
+ "validation_score": 38,
115
+ "file_uri": "/v3/files/puppetlabs-bacula-0.0.1.tar.gz",
116
+ "file_md5": "c29882cf29eff17f18dcb74cc544c200",
117
+ "file_sha256": "7a68af4ab6e413a1cb3ec1694ddc3956138aa4c34d97abbe61a50947d0b12069",
118
+ "reference": null,
119
+ "tasks": [
120
+
121
+ ],
122
+ "plans": [
123
+
124
+ ],
125
+ "deleted_for": null
126
+ }
127
+ ]
128
+ }
@@ -0,0 +1,30 @@
1
+ concurrent-ruby (1.1.5)
2
+
3
+ deep_merge (1.0.1)
4
+
5
+ fast_gettext (1.1.2)
6
+
7
+ gettext (3.2.2)
8
+
9
+ hiera-eyaml (3.2.0)
10
+
11
+ highline (1.6.21)
12
+
13
+ hocon (1.3.1, 1.2.5)
14
+
15
+ locale (2.1.3, 2.1.2)
16
+
17
+ multi_json (1.14.1)
18
+
19
+ optimist (3.0.1)
20
+
21
+ puppet-resource_api (1.8.13)
22
+
23
+ puppetserver-ca (1.8.0)
24
+
25
+ semantic_puppet (1.0.2)
26
+
27
+ text (1.3.1)
28
+
29
+ world_airports (1.1.3)
30
+
@@ -6,6 +6,10 @@ test_aix_user:
6
6
  no_password_user:
7
7
  lastupdate = another_last_update
8
8
 
9
+ tab_password_user:
10
+ password = some_password
11
+ lastupdate = another_last_update
12
+
9
13
  daemon:
10
14
  password = *
11
15
 
@@ -15,21 +15,17 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
15
15
  let(:formatter) { Puppet::Network::FormatHandler.format(:rich_data_json) }
16
16
 
17
17
  context 'server_list' do
18
- before :each do
19
- Puppet[:log_level] = 'debug'
20
- end
21
-
22
18
  it "uses the first server in the list" do
23
19
  Puppet[:server_list] = '127.0.0.1'
20
+ Puppet[:log_level] = 'debug'
24
21
 
25
22
  server.start_server do |port|
26
- Puppet[:masterport] = port
23
+ Puppet[:serverport] = port
27
24
  expect {
28
- expect {
29
- agent.command_line.args << '--test'
30
- agent.run
31
- }.to exit_with(0)
32
- }.to output(%r{HTTP GET https://127.0.0.1:#{port}/status/v1/simple/master returned 200 OK}).to_stdout
25
+ agent.command_line.args << '--test'
26
+ agent.run
27
+ }.to exit_with(0)
28
+ .and output(%r{HTTP GET https://127.0.0.1:#{port}/status/v1/simple/server returned 200 OK}).to_stdout
33
29
  end
34
30
  end
35
31
 
@@ -37,16 +33,16 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
37
33
  Puppet[:server_list] = "puppet.example.com,#{Puppet[:server]}"
38
34
 
39
35
  server.start_server do |port|
40
- Puppet[:masterport] = port
36
+ Puppet[:serverport] = port
41
37
  expect {
42
- expect {
43
- agent.command_line.args << '--test'
44
- agent.run
45
- }.to exit_with(0)
46
- }.to output(%r{Unable to connect to server from server_list setting: Request to https://puppet.example.com:#{port}/status/v1/simple/master failed}).to_stdout
38
+ agent.command_line.args << '--test'
39
+ agent.run
40
+ }.to exit_with(0)
41
+ .and output(%r{Notice: Applied catalog}).to_stdout
42
+ .and output(%r{Unable to connect to server from server_list setting: Request to https://puppet.example.com:#{port}/status/v1/simple/server failed}).to_stderr
47
43
 
48
44
  report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
49
- expect(report.master_used).to eq("127.0.0.1:#{port}")
45
+ expect(report.server_used).to eq("127.0.0.1:#{port}")
50
46
  end
51
47
  end
52
48
 
@@ -54,36 +50,36 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
54
50
  Puppet[:server_list] = "puppet.example.com"
55
51
 
56
52
  expect {
57
- expect {
58
- expect {
59
- agent.command_line.args << '--test'
60
- agent.run
61
- }.to exit_with(1)
62
- }.to output(%r{Unable to connect to server from server_list setting: Could not select a functional puppet master from server_list: 'puppet.example.com'}).to_stdout
63
- }.to output(/Error: Could not run Puppet configuration client: Could not select a functional puppet master from server_list: 'puppet.example.com'/).to_stderr
53
+ agent.command_line.args << '--test'
54
+ agent.run
55
+ }.to exit_with(1)
56
+ .and output(a_string_matching(%r{Unable to connect to server from server_list setting})
57
+ .and matching(/Error: Could not run Puppet configuration client: Could not select a functional puppet server from server_list: 'puppet.example.com'/)).to_stderr
64
58
 
65
59
  # I'd expect puppet to update the last run report even if the server_list was
66
60
  # exhausted, but it doesn't work that way currently, see PUP-6708
67
61
  expect(File).to_not be_exist(Puppet[:lastrunreport])
68
62
  end
69
63
 
70
- it "omits master_used when not using server_list" do
64
+ it "omits server_used when not using server_list" do
65
+ Puppet[:log_level] = 'debug'
66
+
71
67
  server.start_server do |port|
72
- Puppet[:masterport] = port
68
+ Puppet[:serverport] = port
73
69
  expect {
74
- expect {
75
- agent.command_line.args << '--test'
76
- agent.run
77
- }.to exit_with(0)
78
- }.to output(%r{Resolved service 'puppet' to https://127.0.0.1:#{port}/puppet/v3}).to_stdout
70
+ agent.command_line.args << '--test'
71
+ agent.run
72
+ }.to exit_with(0)
73
+ .and output(%r{Resolved service 'puppet' to https://127.0.0.1:#{port}/puppet/v3}).to_stdout
79
74
  end
80
75
 
81
76
  report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
82
- expect(report.master_used).to be_nil
77
+ expect(report.server_used).to be_nil
83
78
  end
84
79
 
85
80
  it "server_list takes precedence over server" do
86
81
  Puppet[:server] = 'notvalid.example.com'
82
+ Puppet[:log_level] = 'debug'
87
83
 
88
84
  server.start_server do |port|
89
85
  Puppet[:server_list] = "127.0.0.1:#{port}"
@@ -95,7 +91,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
95
91
  .and output(%r{Debug: Resolved service 'puppet' to https://127.0.0.1:#{port}/puppet/v3}).to_stdout
96
92
 
97
93
  report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
98
- expect(report.master_used).to eq("127.0.0.1:#{port}")
94
+ expect(report.server_used).to eq("127.0.0.1:#{port}")
99
95
  end
100
96
  end
101
97
  end
@@ -114,13 +110,12 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
114
110
  }
115
111
 
116
112
  server.start_server(mounts: {catalog: catalog_handler}) do |port|
117
- Puppet[:masterport] = port
113
+ Puppet[:serverport] = port
118
114
  expect {
119
- expect {
120
- agent.command_line.args << '--test'
121
- agent.run
122
- }.to exit_with(2)
123
- }.to output(%r{Notice: /Stage\[main\]/Main/Notify\[deferred\]/message: defined 'message' as '1:2:3'}).to_stdout
115
+ agent.command_line.args << '--test'
116
+ agent.run
117
+ }.to exit_with(2)
118
+ .and output(%r{Notice: /Stage\[main\]/Main/Notify\[deferred\]/message: defined 'message' as '1:2:3'}).to_stdout
124
119
  end
125
120
  end
126
121
 
@@ -137,13 +132,12 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
137
132
  }
138
133
 
139
134
  server.start_server(mounts: {catalog: catalog_handler}) do |port|
140
- Puppet[:masterport] = port
135
+ Puppet[:serverport] = port
141
136
  expect {
142
- expect {
143
- agent.command_line.args << '--test'
144
- agent.run
145
- }.to exit_with(2)
146
- }.to output(a_string_matching(
137
+ agent.command_line.args << '--test'
138
+ agent.run
139
+ }.to exit_with(2)
140
+ .and output(a_string_matching(
147
141
  /Notice: Sensitive \[value redacted\]/
148
142
  ).and matching(
149
143
  /Notify\[sensitive\]\/message: changed \[redacted\] to \[redacted\]/
@@ -202,7 +196,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
202
196
  }
203
197
 
204
198
  server.start_server(mounts: {catalog: catalog_handler}) do |port|
205
- Puppet[:masterport] = port
199
+ Puppet[:serverport] = port
206
200
  expect {
207
201
  expect {
208
202
  agent.command_line.args << '--test'
@@ -247,13 +241,12 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
247
241
  }
248
242
 
249
243
  server.start_server(mounts: mounts) do |port|
250
- Puppet[:masterport] = port
244
+ Puppet[:serverport] = port
251
245
  expect {
252
- expect {
253
- agent.command_line.args << '--test'
254
- agent.run
255
- }.to exit_with(2)
256
- }.to output(/content changed '{md5}d41d8cd98f00b204e9800998ecf8427e' to '{md5}4cf49285ae567157ebfba72bd04ccf32'/).to_stdout
246
+ agent.command_line.args << '--test'
247
+ agent.run
248
+ }.to exit_with(2)
249
+ .and output(/content changed '{sha256}e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' to '{sha256}3bef83ad320b471d8e3a03c9b9f150749eea610fe266560395d3195cfbd8e6b8'/).to_stdout
257
250
 
258
251
  # verify puppet restored binary content
259
252
  expect(File.binread(path)).to eq(binary_content)
@@ -296,7 +289,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
296
289
  }
297
290
 
298
291
  server.start_server(mounts: {catalog: catalog_handler}) do |puppetserver_port|
299
- Puppet[:masterport] = puppetserver_port
292
+ Puppet[:serverport] = puppetserver_port
300
293
 
301
294
  # override path to system cacert bundle, this must be done before
302
295
  # the SSLContext is created and the call to X509::Store.set_default_paths
@@ -348,7 +341,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
348
341
  }
349
342
 
350
343
  server.start_server(mounts: {catalog: catalog_handler}) do |puppetserver_port|
351
- Puppet[:masterport] = puppetserver_port
344
+ Puppet[:serverport] = puppetserver_port
352
345
 
353
346
  # override path to system cacert bundle, this must be done before
354
347
  # the SSLContext is created and the call to X509::Store.set_default_paths
@@ -399,7 +392,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
399
392
  }
400
393
 
401
394
  server.start_server(mounts: {catalog: catalog_handler}) do |puppetserver_port|
402
- Puppet[:masterport] = puppetserver_port
395
+ Puppet[:serverport] = puppetserver_port
403
396
 
404
397
  # set path to external cacert bundle, this must be done before
405
398
  # the SSLContext is created
@@ -421,7 +414,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
421
414
  path = Puppet[:agent_catalog_run_lockfile]
422
415
 
423
416
  th = Thread.new {
424
- %x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(2)"}
417
+ %x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(20)"}
425
418
  }
426
419
 
427
420
  until File.exists?(path) && File.size(path) > 0 do
@@ -438,12 +431,23 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
438
431
 
439
432
  it "waits for other agent run to finish before starting" do
440
433
  server.start_server do |port|
434
+ script = tmpfile('wait_for_log_entry')
435
+ logdest = tmpfile('agent_log')
441
436
  path = Puppet[:agent_catalog_run_lockfile]
442
- Puppet[:masterport] = port
437
+ Puppet[:serverport] = port
443
438
  Puppet[:waitforlock] = 1
444
439
 
445
440
  th = Thread.new {
446
- %x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(2)"}
441
+ File.write(script, <<~SCRIPT)
442
+ $0 = 'puppet'
443
+ # lock pidfile
444
+ File.write('#{path}', Process.pid)
445
+ # wait for foreground agent to fail once
446
+ until File.exists?("#{logdest}") && File.readlines("#{logdest}").grep(/Will try again/).any? do
447
+ sleep 0.1
448
+ end
449
+ SCRIPT
450
+ %x{ruby '#{script}'}
447
451
  }
448
452
 
449
453
  until File.exists?(path) && File.size(path) > 0 do
@@ -451,9 +455,14 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
451
455
  end
452
456
 
453
457
  expect {
454
- agent.command_line.args << '--test'
458
+ agent.command_line.args << '--test' << '--logdest' << logdest << '--logdest' << 'console'
455
459
  agent.run
456
- }.to exit_with(0).and output(/Info: Will try again in #{Puppet[:waitforlock]} seconds./).to_stdout
460
+ }.to exit_with(0)
461
+ .and output(a_string_matching(
462
+ /Info: Will try again in #{Puppet[:waitforlock]} seconds/
463
+ ).and matching(
464
+ /Applied catalog/
465
+ )).to_stdout
457
466
 
458
467
  th.kill # kill thread so we don't wait too much
459
468
  end
@@ -465,7 +474,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
465
474
  Puppet[:maxwaitforlock] = 0
466
475
 
467
476
  th = Thread.new {
468
- %x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(2)"}
477
+ %x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(20)"}
469
478
  }
470
479
 
471
480
  until File.exists?(path) && File.size(path) > 0 do
@@ -6,6 +6,8 @@ require 'puppet_spec/https'
6
6
  describe "apply", unless: Puppet::Util::Platform.jruby? do
7
7
  include PuppetSpec::Files
8
8
 
9
+ let(:apply) { Puppet::Application[:apply] }
10
+
9
11
  before :each do
10
12
  Puppet[:reports] = "none"
11
13
  # Let exceptions be raised instead of exiting
@@ -19,76 +21,51 @@ describe "apply", unless: Puppet::Util::Platform.jruby? do
19
21
  resource = Puppet::Resource.new(:file, file_to_create, :parameters => {:content => "my stuff"})
20
22
  catalog.add_resource resource
21
23
 
22
- manifest = file_containing("manifest", catalog.to_json)
23
-
24
- puppet = Puppet::Application[:apply]
25
- puppet.options[:catalog] = manifest
26
-
27
- puppet.apply
24
+ apply.command_line.args = ['--catalog', file_containing("manifest", catalog.to_json)]
25
+ expect {
26
+ apply.run
27
+ }.to output(/ensure: defined content as/).to_stdout
28
28
 
29
29
  expect(Puppet::FileSystem.exist?(file_to_create)).to be_truthy
30
30
  expect(File.read(file_to_create)).to eq("my stuff")
31
31
  end
32
32
 
33
- context 'from environment with a pcore defined resource type' do
34
- include PuppetSpec::Compiler
35
-
36
- let!(:envdir) { tmpdir('environments') }
33
+ context 'and pcore types are available' do
34
+ let(:envdir) { my_fixture('environments') }
37
35
  let(:env_name) { 'spec' }
38
- let(:dir_structure) {
39
- {
40
- '.resource_types' => {
41
- 'applytest.pp' => <<-CODE
42
- Puppet::Resource::ResourceType3.new(
43
- 'applytest',
44
- [Puppet::Resource::Param.new(String, 'message')],
45
- [Puppet::Resource::Param.new(String, 'name', true)])
46
- CODE
47
- },
48
- 'modules' => {
49
- 'amod' => {
50
- 'lib' => {
51
- 'puppet' => {
52
- 'type' => { 'applytest.rb' => <<-CODE
53
- Puppet::Type.newtype(:applytest) do
54
- newproperty(:message) do
55
- def sync
56
- Puppet.send(@resource[:loglevel], self.should)
57
- end
58
36
 
59
- def retrieve
60
- :absent
61
- end
37
+ before(:each) do
38
+ Puppet[:environmentpath] = envdir
39
+ Puppet[:environment] = env_name
40
+ end
62
41
 
63
- def insync?(is)
64
- false
65
- end
42
+ it 'does not load the pcore type' do
43
+ apply = Puppet::Application[:apply]
44
+ apply.command_line.args = [ '-e', "Applytest { message => 'the default'} applytest { 'applytest was here': }" ]
66
45
 
67
- defaultto { @resource[:name] }
68
- end
46
+ expect {
47
+ apply.run
48
+ }.to exit_with(0)
49
+ .and output(a_string_matching(
50
+ /the Puppet::Type says hello/
51
+ ).and matching(
52
+ /applytest was here/
53
+ )).to_stdout
54
+ end
55
+ end
69
56
 
70
- newparam(:name) do
71
- desc "An arbitrary tag for your own reference; the name of the message."
72
- Puppet.notice('the Puppet::Type says hello')
73
- isnamevar
74
- end
75
- end
76
- CODE
77
- }
78
- }
79
- }
80
- }
81
- }
82
- }
83
- }
57
+ context 'from environment with a pcore defined resource type' do
58
+ include PuppetSpec::Compiler
84
59
 
60
+ let(:envdir) { my_fixture('environments') }
61
+ let(:env_name) { 'spec' }
85
62
  let(:environments) { Puppet::Environments::Directories.new(envdir, []) }
86
63
  let(:env) { Puppet::Node::Environment.create(:'spec', [File.join(envdir, 'spec', 'modules')]) }
87
64
  let(:node) { Puppet::Node.new('test', :environment => env) }
65
+
88
66
  around(:each) do |example|
89
67
  Puppet::Type.rmtype(:applytest)
90
68
  Puppet[:environment] = env_name
91
- dir_contained_in(envdir, env_name => dir_structure)
92
69
  Puppet.override(:environments => environments, :current_environment => env) do
93
70
  example.run
94
71
  end
@@ -96,12 +73,13 @@ end
96
73
 
97
74
  it 'does not load the pcore type' do
98
75
  catalog = compile_to_catalog('applytest { "applytest was here":}', node)
99
- apply = Puppet::Application[:apply]
100
- apply.options[:catalog] = file_containing('manifest', catalog.to_json)
76
+ apply.command_line.args = ['--catalog', file_containing('manifest', catalog.to_json)]
101
77
 
102
78
  Puppet[:environmentpath] = envdir
103
79
  expect_any_instance_of(Puppet::Pops::Loader::Runtime3TypeLoader).not_to receive(:find)
104
- expect { apply.run }.to have_printed(/the Puppet::Type says hello.*applytest was here/m)
80
+ expect {
81
+ apply.run
82
+ }.to output(/the Puppet::Type says hello.*applytest was here/m).to_stdout
105
83
  end
106
84
 
107
85
  # Test just to verify that the Pcore Resource Type and not the Ruby one is produced when the catalog is produced
@@ -113,7 +91,9 @@ end
113
91
 
114
92
  expect(compiler.loaders.runtime3_type_loader.instance_variable_get(:@resource_3x_loader)).to receive(:set_entry).once.with(tn, rt, instance_of(String))
115
93
  .and_return(Puppet::Pops::Loader::Loader::NamedEntry.new(tn, rt, nil))
116
- expect { compiler.compile }.not_to have_printed(/the Puppet::Type says hello/)
94
+ expect {
95
+ compiler.compile
96
+ }.not_to output(/the Puppet::Type says hello/).to_stdout
117
97
  end
118
98
 
119
99
  it "does not fail when pcore type is loaded twice" do
@@ -226,36 +206,36 @@ end
226
206
  catalog = compile_to_catalog('include mod', node)
227
207
 
228
208
  Puppet[:environment] = env_name
229
- apply = Puppet::Application[:apply]
230
- apply.options[:catalog] = file_containing('manifest', catalog.to_json)
231
- expect { apply.run_command; exit(0) }.to exit_with(0)
232
- expect(@logs.map(&:to_s)).to include('The Street 23')
209
+ apply.command_line.args = ['--catalog', file_containing('manifest', catalog.to_json)]
210
+
211
+ expect {
212
+ apply.run
213
+ }.to output(%r{Notify\[The Street 23\]/message: defined 'message' as 'The Street 23'}).to_stdout
233
214
  end
234
215
  end
235
216
 
236
- it "applies a given file even when a directory environment is specified" do
217
+ it "raises if the environment directory does not exist" do
237
218
  manifest = file_containing("manifest.pp", "notice('it was applied')")
219
+ apply.command_line.args = [manifest]
238
220
 
239
221
  special = Puppet::Node::Environment.create(:special, [])
240
222
  Puppet.override(:current_environment => special) do
241
223
  Puppet[:environment] = 'special'
242
- puppet = Puppet::Application[:apply]
243
- allow(puppet).to receive(:command_line).and_return(double('command_line', :args => [manifest]))
244
- expect { puppet.run_command }.to exit_with(0)
224
+ expect {
225
+ apply.run
226
+ }.to raise_error(Puppet::Environments::EnvironmentNotFound,
227
+ /Could not find a directory environment named 'special' anywhere in the path/)
245
228
  end
246
-
247
- expect(@logs.map(&:to_s)).to include('it was applied')
248
229
  end
249
230
 
250
231
  it "adds environment to the $server_facts variable" do
251
232
  manifest = file_containing("manifest.pp", "notice(\"$server_facts\")")
233
+ apply.command_line.args = [manifest]
252
234
 
253
- puppet = Puppet::Application[:apply]
254
- allow(puppet).to receive(:command_line).and_return(double('command_line', :args => [manifest]))
255
-
256
- expect { puppet.run_command }.to exit_with(0)
257
-
258
- expect(@logs.map(&:to_s)).to include(/{environment =>.*/)
235
+ expect {
236
+ apply.run
237
+ }.to exit_with(0)
238
+ .and output(/{environment => production}/).to_stdout
259
239
  end
260
240
 
261
241
  it "applies a given file even when an ENC is configured", :unless => Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
@@ -271,48 +251,36 @@ end
271
251
  Puppet[:environment] = 'special'
272
252
  Puppet[:node_terminus] = 'exec'
273
253
  Puppet[:external_nodes] = enc
274
- puppet = Puppet::Application[:apply]
275
- allow(puppet).to receive(:command_line).and_return(double('command_line', :args => [manifest]))
276
- expect { puppet.run_command }.to exit_with(0)
254
+ apply.command_line.args = [manifest]
255
+ expect {
256
+ apply.run
257
+ }.to exit_with(0)
258
+ .and output(/Notice: Scope\(Class\[main\]\): specific manifest applied/).to_stdout
277
259
  end
278
-
279
- expect(@logs.map(&:to_s)).to include('specific manifest applied')
280
260
  end
281
261
 
282
262
  context "handles errors" do
283
263
  it "logs compile errors once" do
284
- Puppet.initialize_settings([])
285
- apply = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => []))
286
- apply.options[:code] = '08'
287
-
288
- msg = 'valid octal'
289
- callback = Proc.new do |actual|
290
- expect(actual.scan(Regexp.new(msg))).to eq([msg])
291
- end
292
-
293
- expect do
264
+ apply.command_line.args = ['-e', '08']
265
+ expect {
294
266
  apply.run
295
- end.to have_printed(callback).and_exit_with(1)
267
+ }.to exit_with(1)
268
+ .and output(/Not a valid octal number/).to_stderr
296
269
  end
297
270
 
298
271
  it "logs compile post processing errors once" do
299
- Puppet.initialize_settings([])
300
- apply = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => []))
301
272
  path = File.expand_path('/tmp/content_file_test.Q634Dlmtime')
302
- apply.options[:code] = "file { '#{path}':
273
+ apply.command_line.args = ['-e', "file { '#{path}':
303
274
  content => 'This is the test file content',
304
275
  ensure => present,
305
276
  checksum => mtime
306
- }"
277
+ }"]
307
278
 
308
- msg = 'You cannot specify content when using checksum'
309
- callback = Proc.new do |actual|
310
- expect(actual.scan(Regexp.new(msg))).to eq([msg])
311
- end
312
-
313
- expect do
279
+ expect {
314
280
  apply.run
315
- end.to have_printed(callback).and_exit_with(1)
281
+ }.to exit_with(1)
282
+ .and output(/Compiled catalog/).to_stdout
283
+ .and output(/You cannot specify content when using checksum/).to_stderr
316
284
  end
317
285
  end
318
286
 
@@ -337,51 +305,42 @@ end
337
305
  Puppet[:environmentpath] = envdir
338
306
  end
339
307
 
340
- def init_cli_args_and_apply_app(args, execute)
341
- Puppet.initialize_settings(args)
342
- puppet = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => args))
343
- puppet.options[:code] = execute
344
- return puppet
345
- end
308
+ context "given a modulepath" do
309
+ let(:args) { ['-e', execute] }
346
310
 
347
- context "given the --modulepath option" do
348
- let(:args) { ['-e', execute, '--modulepath', modulepath] }
311
+ before :each do
312
+ Puppet[:modulepath] = modulepath
349
313
 
350
- it "looks in --modulepath even when the default directory environment exists" do
351
- apply = init_cli_args_and_apply_app(args, execute)
314
+ apply.command_line.args = args
315
+ end
352
316
 
353
- expect do
354
- expect { apply.run }.to exit_with(0)
355
- end.to have_printed('amod class included')
317
+ it "looks in modulepath even when the default directory environment exists" do
318
+ expect {
319
+ apply.run
320
+ }.to exit_with(0)
321
+ .and output(/amod class included/).to_stdout
356
322
  end
357
323
 
358
- it "looks in --modulepath even when given a specific directory --environment" do
359
- args << '--environment' << 'production'
360
- apply = init_cli_args_and_apply_app(args, execute)
324
+ it "looks in modulepath even when given a specific directory --environment" do
325
+ apply.command_line.args = args << '--environment' << 'production'
361
326
 
362
- expect do
363
- expect { apply.run }.to exit_with(0)
364
- end.to have_printed('amod class included')
327
+ expect {
328
+ apply.run
329
+ }.to exit_with(0)
330
+ .and output(/amod class included/).to_stdout
365
331
  end
366
332
 
367
- it "looks in --modulepath when given multiple paths in --modulepath" do
368
- args = ['-e', execute, '--modulepath', [tmpdir('notmodulepath'), modulepath].join(File::PATH_SEPARATOR)]
369
- apply = init_cli_args_and_apply_app(args, execute)
333
+ it "looks in modulepath when given multiple paths in modulepath" do
334
+ Puppet[:modulepath] = [tmpdir('notmodulepath'), modulepath].join(File::PATH_SEPARATOR)
370
335
 
371
- expect do
372
- expect { apply.run }.to exit_with(0)
373
- end.to have_printed('amod class included')
336
+ expect {
337
+ apply.run
338
+ }.to exit_with(0)
339
+ .and output(/amod class included/).to_stdout
374
340
  end
375
341
  end
376
342
 
377
- # When executing an ENC script, output cannot be captured using
378
- # expect { }.to have_printed(...)
379
- # External node script execution will fail, likely due to the tampering
380
- # with the basic file descriptors.
381
- # Workaround: Define a log destination and merely inspect logs.
382
343
  context "with an ENC" do
383
- let(:logdest) { tmpfile('logdest') }
384
- let(:args) { ['-e', execute, '--logdest', logdest ] }
385
344
  let(:enc) do
386
345
  script_containing('enc_script',
387
346
  :windows => '@echo environment: spec',
@@ -394,17 +353,23 @@ end
394
353
  end
395
354
 
396
355
  it "should use the environment that the ENC mandates" do
397
- apply = init_cli_args_and_apply_app(args, execute)
398
- expect { apply.run }.to exit_with(0)
399
- expect(@logs.map(&:to_s)).to include('amod class included')
356
+ apply.command_line.args = ['-e', execute]
357
+
358
+ expect {
359
+ apply.run
360
+ }.to exit_with(0)
361
+ .and output(a_string_matching(/amod class included/)
362
+ .and matching(/Compiled catalog for .* in environment spec/)).to_stdout
400
363
  end
401
364
 
402
365
  it "should prefer the ENC environment over the configured one and emit a warning" do
403
- apply = init_cli_args_and_apply_app(args + [ '--environment', 'production' ], execute)
404
- expect { apply.run }.to exit_with(0)
405
- logs = @logs.map(&:to_s)
406
- expect(logs).to include('amod class included')
407
- expect(logs).to include(match(/doesn't match server specified environment/))
366
+ apply.command_line.args = ['-e', execute, '--environment', 'production']
367
+
368
+ expect {
369
+ apply.run
370
+ }.to exit_with(0)
371
+ .and output(a_string_matching('amod class included')
372
+ .and matching(/doesn't match server specified environment/)).to_stdout
408
373
  end
409
374
  end
410
375
  end
@@ -475,8 +440,7 @@ class amod::bad_type {
475
440
  context 'and the file is not serialized with rich_data' do
476
441
  it 'will notify a string that is the result of Regexp#inspect (from Runtime3xConverter)' do
477
442
  catalog = compile_to_catalog(execute, node)
478
- apply = Puppet::Application[:apply]
479
- apply.options[:catalog] = file_containing('manifest', catalog.to_json)
443
+ apply.command_line.args = ['--catalog', file_containing('manifest', catalog.to_json)]
480
444
  expect(apply).to receive(:apply_catalog) do |cat|
481
445
  expect(cat.resource(:notify, 'rx')['message']).to be_a(String)
482
446
  expect(cat.resource(:notify, 'bin')['message']).to be_a(String)
@@ -491,8 +455,7 @@ class amod::bad_type {
491
455
 
492
456
  it 'will notify a string that is the result of to_s on uknown data types' do
493
457
  json = compile_to_catalog('include amod::bad_type', node).to_json
494
- apply = Puppet::Application[:apply]
495
- apply.options[:catalog] = file_containing('manifest', json)
458
+ apply.command_line.args = ['--catalog', file_containing('manifest', json)]
496
459
  expect(apply).to receive(:apply_catalog) do |catalog|
497
460
  expect(catalog.resource(:notify, 'bogus')['message']).to be_a(String)
498
461
  end
@@ -514,11 +477,10 @@ class amod::bad_type {
514
477
  context 'and the file is serialized with rich_data' do
515
478
  it 'will notify a regexp using Regexp#to_s' do
516
479
  catalog = compile_to_catalog(execute, node)
517
- apply = Puppet::Application[:apply]
518
480
  serialized_catalog = Puppet.override(rich_data: true) do
519
481
  catalog.to_json
520
482
  end
521
- apply.options[:catalog] = file_containing('manifest', serialized_catalog)
483
+ apply.command_line.args = ['--catalog', file_containing('manifest', serialized_catalog)]
522
484
  expect(apply).to receive(:apply_catalog) do |cat|
523
485
  expect(cat.resource(:notify, 'rx')['message']).to be_a(Regexp)
524
486
  # The resource return in this expect is a String, but since it was a Binary type that
@@ -541,7 +503,6 @@ class amod::bad_type {
541
503
  let(:env_dir) { File.join(Puppet[:environmentpath], env_name) }
542
504
  let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(env_dir, 'modules')]) }
543
505
  let(:node) { Puppet::Node.new(Puppet[:certname], environment: environment) }
544
- let(:apply) { Puppet::Application[:apply] }
545
506
 
546
507
  before :each do
547
508
  Puppet[:environment] = env_name
@@ -564,14 +525,14 @@ class amod::bad_type {
564
525
 
565
526
  expect {
566
527
  apply.command_line.args << manifest
567
- apply.run
528
+ apply.run
568
529
  }.to exit_with(0)
569
530
  .and output(a_string_matching(
570
531
  /dir1\]\/ensure: created/
571
532
  ).and matching(
572
533
  /dir1\/dir2\]\/ensure: created/
573
534
  ).and matching(
574
- /dir1\/dir2\/file\]\/ensure: defined content as '{md5}51f37efb13c3a1e486106f90db6490a5'/
535
+ /dir1\/dir2\/file\]\/ensure: defined content as '{sha256}b37c1d77e09471b3139b2cdfee449fd8ba72ebf7634d52023aff0c0cd088cf1b'/
575
536
  )).to_stdout
576
537
 
577
538
  dest_file = File.join(base_dir, 'dir1', 'dir2', 'file')
@@ -579,6 +540,46 @@ class amod::bad_type {
579
540
  end
580
541
  end
581
542
 
543
+ context 'http file sources' do
544
+ include_context 'https client'
545
+
546
+ it "requires the caller to URL encode special characters in the request path and query" do
547
+ Puppet[:server] = '127.0.0.1'
548
+ request = nil
549
+
550
+ response_proc = -> (req, res) {
551
+ request = req
552
+
553
+ res['Content-Type'] = 'text/plain'
554
+ res.body = "from the server"
555
+ }
556
+
557
+ https = PuppetSpec::HTTPSServer.new
558
+ https.start_server(response_proc: response_proc) do |https_port|
559
+ dest = tmpfile('http_file_source')
560
+
561
+ # spaces in path are encoded as %20 and '[' in query is encoded as %5B,
562
+ # but ':', '=', '-' are not encoded
563
+ manifest = file_containing("manifest.pp", <<~MANIFEST)
564
+ file { "#{dest}":
565
+ ensure => file,
566
+ source => "https://#{Puppet[:server]}:#{https_port}/path%20to%20file?x=b%5Bc&sv=2019-02-02&st=2020-07-28T20:18:53Z&se=2020-07-28T21:03:00Z&sr=b&sp=r&sig=JaZhcqxT4akJcOwUdUGrQB2m1geUoh89iL8WMag8a8c=",
567
+ }
568
+ MANIFEST
569
+
570
+ expect {
571
+ apply.command_line.args << manifest
572
+ apply.run
573
+ }.to exit_with(0)
574
+ .and output(%r{Main/File\[#{dest}\]/ensure: defined content as}).to_stdout
575
+
576
+ expect(request.path).to eq('/path to file')
577
+ expect(request.query).to include('x' => 'b[c')
578
+ expect(request.query).to include('sig' => 'JaZhcqxT4akJcOwUdUGrQB2m1geUoh89iL8WMag8a8c=')
579
+ end
580
+ end
581
+ end
582
+
582
583
  context 'http report processor' do
583
584
  include_context 'https client'
584
585
 
@@ -586,7 +587,6 @@ class amod::bad_type {
586
587
  Puppet[:reports] = 'http'
587
588
  end
588
589
 
589
- let(:apply) { Puppet::Application[:apply] }
590
590
  let(:unknown_server) do
591
591
  unknown_ca_cert = cert_fixture('unknown-ca.pem')
592
592
  PuppetSpec::HTTPSServer.new(