puppet 6.16.0-x64-mingw32 → 7.0.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 (645) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -3
  3. data/Gemfile.lock +31 -33
  4. data/README.md +4 -5
  5. data/Rakefile +4 -12
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +1 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/agent.rb +2 -2
  15. data/lib/puppet/agent/locker.rb +0 -7
  16. data/lib/puppet/application.rb +172 -98
  17. data/lib/puppet/application/agent.rb +22 -6
  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/configurer.rb +66 -31
  25. data/lib/puppet/configurer/downloader.rb +31 -10
  26. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  27. data/lib/puppet/confine.rb +2 -2
  28. data/lib/puppet/confine/any.rb +1 -1
  29. data/lib/puppet/defaults.rb +166 -169
  30. data/lib/puppet/environments.rb +41 -15
  31. data/lib/puppet/face/catalog.rb +1 -1
  32. data/lib/puppet/face/config.rb +56 -16
  33. data/lib/puppet/face/epp.rb +12 -2
  34. data/lib/puppet/face/facts.rb +66 -6
  35. data/lib/puppet/face/help.rb +1 -1
  36. data/lib/puppet/face/node.rb +3 -3
  37. data/lib/puppet/face/node/clean.rb +2 -2
  38. data/lib/puppet/face/plugin.rb +5 -8
  39. data/lib/puppet/feature/base.rb +1 -1
  40. data/lib/puppet/ffi/windows.rb +12 -0
  41. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  42. data/lib/puppet/ffi/windows/constants.rb +404 -0
  43. data/lib/puppet/ffi/windows/functions.rb +628 -0
  44. data/lib/puppet/ffi/windows/structs.rb +338 -0
  45. data/lib/puppet/file_bucket/dipper.rb +1 -1
  46. data/lib/puppet/file_serving/configuration.rb +0 -5
  47. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  48. data/lib/puppet/file_serving/http_metadata.rb +13 -1
  49. data/lib/puppet/file_serving/metadata.rb +4 -1
  50. data/lib/puppet/file_serving/mount.rb +1 -2
  51. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  52. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  53. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  54. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  55. data/lib/puppet/file_system/file_impl.rb +4 -4
  56. data/lib/puppet/file_system/uniquefile.rb +8 -16
  57. data/lib/puppet/forge.rb +1 -1
  58. data/lib/puppet/forge/cache.rb +1 -1
  59. data/lib/puppet/forge/repository.rb +3 -8
  60. data/lib/puppet/functions/epp.rb +1 -0
  61. data/lib/puppet/functions/inline_epp.rb +1 -0
  62. data/lib/puppet/functions/lstrip.rb +4 -4
  63. data/lib/puppet/functions/new.rb +8 -3
  64. data/lib/puppet/functions/reverse_each.rb +1 -1
  65. data/lib/puppet/functions/rstrip.rb +4 -4
  66. data/lib/puppet/functions/step.rb +1 -1
  67. data/lib/puppet/functions/strip.rb +4 -4
  68. data/lib/puppet/generate/models/type/type.rb +4 -1
  69. data/lib/puppet/gettext/config.rb +5 -5
  70. data/lib/puppet/gettext/module_translations.rb +4 -4
  71. data/lib/puppet/http.rb +23 -13
  72. data/lib/puppet/http/client.rb +170 -115
  73. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  74. data/lib/puppet/http/errors.rb +16 -0
  75. data/lib/puppet/http/external_client.rb +5 -7
  76. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  77. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  78. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  79. data/lib/puppet/http/proxy.rb +137 -0
  80. data/lib/puppet/http/redirector.rb +13 -19
  81. data/lib/puppet/http/resolver.rb +10 -23
  82. data/lib/puppet/http/resolver/server_list.rb +23 -45
  83. data/lib/puppet/http/resolver/settings.rb +7 -10
  84. data/lib/puppet/http/resolver/srv.rb +11 -15
  85. data/lib/puppet/http/response.rb +49 -48
  86. data/lib/puppet/http/response_converter.rb +24 -0
  87. data/lib/puppet/http/response_net_http.rb +42 -0
  88. data/lib/puppet/http/retry_after_handler.rb +4 -13
  89. data/lib/puppet/http/service.rb +15 -27
  90. data/lib/puppet/http/service/ca.rb +11 -22
  91. data/lib/puppet/http/service/compiler.rb +23 -70
  92. data/lib/puppet/http/service/file_server.rb +19 -28
  93. data/lib/puppet/http/service/puppetserver.rb +53 -0
  94. data/lib/puppet/http/service/report.rb +8 -10
  95. data/lib/puppet/http/session.rb +16 -24
  96. data/lib/puppet/{network/http → http}/site.rb +1 -2
  97. data/lib/puppet/indirector.rb +1 -1
  98. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  99. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  100. data/lib/puppet/indirector/exec.rb +1 -1
  101. data/lib/puppet/indirector/fact_search.rb +60 -0
  102. data/lib/puppet/indirector/facts/facter.rb +27 -6
  103. data/lib/puppet/indirector/facts/json.rb +27 -0
  104. data/lib/puppet/indirector/facts/rest.rb +3 -22
  105. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  106. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  107. data/lib/puppet/indirector/file_content/rest.rb +3 -7
  108. data/lib/puppet/indirector/file_metadata/http.rb +25 -5
  109. data/lib/puppet/indirector/file_metadata/rest.rb +5 -11
  110. data/lib/puppet/indirector/file_server.rb +1 -8
  111. data/lib/puppet/indirector/generic_http.rb +0 -11
  112. data/lib/puppet/indirector/hiera.rb +4 -0
  113. data/lib/puppet/indirector/indirection.rb +1 -1
  114. data/lib/puppet/indirector/json.rb +5 -1
  115. data/lib/puppet/indirector/msgpack.rb +1 -1
  116. data/lib/puppet/indirector/node/json.rb +8 -0
  117. data/lib/puppet/indirector/node/rest.rb +2 -4
  118. data/lib/puppet/indirector/report/json.rb +34 -0
  119. data/lib/puppet/indirector/report/processor.rb +2 -2
  120. data/lib/puppet/indirector/report/rest.rb +3 -8
  121. data/lib/puppet/indirector/request.rb +2 -103
  122. data/lib/puppet/indirector/rest.rb +12 -263
  123. data/lib/puppet/indirector/yaml.rb +1 -1
  124. data/lib/puppet/module.rb +1 -2
  125. data/lib/puppet/module_tool/applications.rb +0 -1
  126. data/lib/puppet/network/authconfig.rb +2 -96
  127. data/lib/puppet/network/authorization.rb +13 -35
  128. data/lib/puppet/network/format_support.rb +2 -2
  129. data/lib/puppet/network/formats.rb +2 -1
  130. data/lib/puppet/network/http.rb +3 -3
  131. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  132. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  133. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  134. data/lib/puppet/network/http/connection.rb +247 -316
  135. data/lib/puppet/network/http/handler.rb +0 -1
  136. data/lib/puppet/network/http/route.rb +2 -2
  137. data/lib/puppet/network/http_pool.rb +16 -34
  138. data/lib/puppet/node.rb +1 -30
  139. data/lib/puppet/node/environment.rb +12 -5
  140. data/lib/puppet/node/facts.rb +17 -0
  141. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  142. data/lib/puppet/pal/pal_impl.rb +93 -14
  143. data/lib/puppet/parameter.rb +1 -1
  144. data/lib/puppet/parser/ast/leaf.rb +5 -5
  145. data/lib/puppet/parser/ast/pops_bridge.rb +0 -42
  146. data/lib/puppet/parser/compiler.rb +1 -199
  147. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  148. data/lib/puppet/parser/functions.rb +21 -17
  149. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  150. data/lib/puppet/parser/resource.rb +3 -71
  151. data/lib/puppet/parser/resource/param.rb +6 -0
  152. data/lib/puppet/parser/type_loader.rb +2 -2
  153. data/lib/puppet/pops/adaptable.rb +7 -13
  154. data/lib/puppet/pops/adapters.rb +8 -4
  155. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  156. data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -13
  157. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  158. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  159. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  160. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  161. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  162. data/lib/puppet/pops/loaders.rb +18 -11
  163. data/lib/puppet/pops/lookup/context.rb +1 -1
  164. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  165. data/lib/puppet/pops/model/ast.pp +0 -42
  166. data/lib/puppet/pops/model/ast.rb +0 -290
  167. data/lib/puppet/pops/model/factory.rb +0 -45
  168. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  169. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  170. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  171. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  172. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  173. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  174. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  175. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -22
  176. data/lib/puppet/pops/types/iterable.rb +34 -8
  177. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  178. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  179. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  180. data/lib/puppet/pops/types/type_parser.rb +0 -4
  181. data/lib/puppet/pops/types/types.rb +0 -1
  182. data/lib/puppet/pops/validation/checker4_0.rb +28 -42
  183. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  184. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
  185. data/lib/puppet/provider.rb +0 -13
  186. data/lib/puppet/provider/file/windows.rb +1 -1
  187. data/lib/puppet/provider/nameservice.rb +0 -18
  188. data/lib/puppet/provider/package/apt.rb +34 -0
  189. data/lib/puppet/provider/package/aptitude.rb +1 -1
  190. data/lib/puppet/provider/package/dpkg.rb +1 -11
  191. data/lib/puppet/provider/package/gem.rb +27 -5
  192. data/lib/puppet/provider/package/pip.rb +0 -1
  193. data/lib/puppet/provider/package/pip2.rb +17 -0
  194. data/lib/puppet/provider/package/pkg.rb +0 -4
  195. data/lib/puppet/provider/package/portage.rb +1 -1
  196. data/lib/puppet/provider/package/puppet_gem.rb +6 -4
  197. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  198. data/lib/puppet/provider/package/yum.rb +2 -1
  199. data/lib/puppet/provider/package/zypper.rb +3 -0
  200. data/lib/puppet/provider/service/smf.rb +191 -73
  201. data/lib/puppet/provider/service/windows.rb +23 -7
  202. data/lib/puppet/provider/user/aix.rb +1 -1
  203. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  204. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  205. data/lib/puppet/provider/user/useradd.rb +11 -4
  206. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  207. data/lib/puppet/reference/configuration.rb +2 -0
  208. data/lib/puppet/reference/indirection.rb +1 -1
  209. data/lib/puppet/reports/http.rb +2 -0
  210. data/lib/puppet/resource.rb +3 -90
  211. data/lib/puppet/resource/catalog.rb +1 -14
  212. data/lib/puppet/resource/type.rb +5 -112
  213. data/lib/puppet/resource/type_collection.rb +3 -48
  214. data/lib/puppet/runtime.rb +1 -2
  215. data/lib/puppet/settings.rb +84 -35
  216. data/lib/puppet/settings/base_setting.rb +26 -2
  217. data/lib/puppet/settings/integer_setting.rb +17 -0
  218. data/lib/puppet/settings/port_setting.rb +15 -0
  219. data/lib/puppet/settings/priority_setting.rb +5 -4
  220. data/lib/puppet/ssl.rb +10 -6
  221. data/lib/puppet/ssl/base.rb +3 -5
  222. data/lib/puppet/ssl/certificate.rb +0 -6
  223. data/lib/puppet/ssl/certificate_request.rb +1 -12
  224. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  225. data/lib/puppet/ssl/oids.rb +3 -1
  226. data/lib/puppet/ssl/ssl_context.rb +2 -2
  227. data/lib/puppet/ssl/ssl_provider.rb +37 -1
  228. data/lib/puppet/ssl/state_machine.rb +3 -1
  229. data/lib/puppet/ssl/verifier.rb +2 -0
  230. data/lib/puppet/test/test_helper.rb +19 -16
  231. data/lib/puppet/transaction.rb +3 -9
  232. data/lib/puppet/transaction/persistence.rb +1 -1
  233. data/lib/puppet/transaction/report.rb +10 -8
  234. data/lib/puppet/trusted_external.rb +29 -1
  235. data/lib/puppet/type.rb +9 -77
  236. data/lib/puppet/type/file.rb +45 -22
  237. data/lib/puppet/type/file/checksum.rb +5 -5
  238. data/lib/puppet/type/file/source.rb +33 -13
  239. data/lib/puppet/type/filebucket.rb +4 -4
  240. data/lib/puppet/type/notify.rb +2 -2
  241. data/lib/puppet/type/package.rb +5 -13
  242. data/lib/puppet/type/service.rb +53 -0
  243. data/lib/puppet/type/user.rb +18 -3
  244. data/lib/puppet/util.rb +41 -3
  245. data/lib/puppet/util/autoload.rb +9 -7
  246. data/lib/puppet/util/character_encoding.rb +9 -5
  247. data/lib/puppet/util/checksums.rb +19 -4
  248. data/lib/puppet/util/execution.rb +2 -13
  249. data/lib/puppet/util/fileparsing.rb +2 -2
  250. data/lib/puppet/util/http_proxy.rb +2 -215
  251. data/lib/puppet/util/monkey_patches.rb +0 -46
  252. data/lib/puppet/util/provider_features.rb +1 -1
  253. data/lib/puppet/util/rdoc.rb +0 -7
  254. data/lib/puppet/util/reference.rb +1 -1
  255. data/lib/puppet/util/retry_action.rb +1 -1
  256. data/lib/puppet/util/rubygems.rb +5 -1
  257. data/lib/puppet/util/run_mode.rb +14 -2
  258. data/lib/puppet/util/windows.rb +3 -7
  259. data/lib/puppet/util/windows/daemon.rb +360 -0
  260. data/lib/puppet/util/windows/error.rb +1 -0
  261. data/lib/puppet/util/windows/eventlog.rb +5 -15
  262. data/lib/puppet/util/windows/file.rb +8 -242
  263. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  264. data/lib/puppet/util/windows/principal.rb +8 -6
  265. data/lib/puppet/util/windows/process.rb +4 -226
  266. data/lib/puppet/util/windows/registry.rb +11 -11
  267. data/lib/puppet/util/windows/security.rb +4 -4
  268. data/lib/puppet/util/windows/service.rb +52 -486
  269. data/lib/puppet/util/windows/string.rb +12 -13
  270. data/lib/puppet/util/windows/user.rb +242 -8
  271. data/lib/puppet/util/yaml.rb +0 -22
  272. data/lib/puppet/vendor/require_vendored.rb +0 -1
  273. data/lib/puppet/version.rb +1 -1
  274. data/lib/puppet/x509.rb +5 -1
  275. data/lib/puppet/x509/cert_provider.rb +29 -1
  276. data/locales/puppet.pot +713 -1380
  277. data/man/man5/puppet.conf.5 +84 -98
  278. data/man/man8/puppet-agent.8 +7 -4
  279. data/man/man8/puppet-apply.8 +1 -1
  280. data/man/man8/puppet-catalog.8 +1 -1
  281. data/man/man8/puppet-config.8 +6 -6
  282. data/man/man8/puppet-describe.8 +1 -1
  283. data/man/man8/puppet-device.8 +1 -1
  284. data/man/man8/puppet-doc.8 +1 -1
  285. data/man/man8/puppet-epp.8 +1 -1
  286. data/man/man8/puppet-facts.8 +55 -9
  287. data/man/man8/puppet-filebucket.8 +6 -6
  288. data/man/man8/puppet-generate.8 +1 -1
  289. data/man/man8/puppet-help.8 +1 -1
  290. data/man/man8/puppet-lookup.8 +2 -2
  291. data/man/man8/puppet-module.8 +1 -58
  292. data/man/man8/puppet-node.8 +7 -4
  293. data/man/man8/puppet-parser.8 +1 -1
  294. data/man/man8/puppet-plugin.8 +1 -1
  295. data/man/man8/puppet-report.8 +4 -1
  296. data/man/man8/puppet-resource.8 +1 -1
  297. data/man/man8/puppet-script.8 +1 -1
  298. data/man/man8/puppet-ssl.8 +1 -1
  299. data/man/man8/puppet.8 +2 -2
  300. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  301. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  302. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  303. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  304. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  305. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  306. data/spec/integration/application/agent_spec.rb +157 -59
  307. data/spec/integration/application/apply_spec.rb +150 -150
  308. data/spec/integration/application/doc_spec.rb +16 -6
  309. data/spec/integration/application/filebucket_spec.rb +78 -29
  310. data/spec/integration/application/help_spec.rb +44 -0
  311. data/spec/integration/application/lookup_spec.rb +13 -0
  312. data/spec/integration/application/module_spec.rb +68 -0
  313. data/spec/integration/application/plugin_spec.rb +76 -4
  314. data/spec/integration/configurer_spec.rb +14 -0
  315. data/spec/integration/data_binding_spec.rb +82 -0
  316. data/spec/integration/defaults_spec.rb +33 -5
  317. data/spec/integration/directory_environments_spec.rb +17 -17
  318. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  319. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  320. data/spec/integration/network/http_pool_spec.rb +29 -30
  321. data/spec/integration/node/environment_spec.rb +1 -1
  322. data/spec/integration/parser/catalog_spec.rb +0 -38
  323. data/spec/integration/parser/compiler_spec.rb +11 -0
  324. data/spec/integration/parser/node_spec.rb +0 -9
  325. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  326. data/spec/integration/type/file_spec.rb +6 -5
  327. data/spec/integration/util/execution_spec.rb +22 -0
  328. data/spec/integration/util/windows/adsi_spec.rb +2 -2
  329. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  330. data/spec/integration/util/windows/process_spec.rb +26 -32
  331. data/spec/integration/util/windows/registry_spec.rb +7 -7
  332. data/spec/integration/util/windows/security_spec.rb +1 -1
  333. data/spec/integration/util/windows/user_spec.rb +47 -5
  334. data/spec/integration/util_spec.rb +7 -33
  335. data/spec/lib/puppet_spec/matchers.rb +0 -80
  336. data/spec/lib/puppet_spec/puppetserver.rb +9 -1
  337. data/spec/lib/puppet_spec/settings.rb +7 -1
  338. data/spec/shared_contexts/types_setup.rb +2 -0
  339. data/spec/spec_helper.rb +2 -0
  340. data/spec/unit/agent_spec.rb +0 -2
  341. data/spec/unit/application/agent_spec.rb +3 -4
  342. data/spec/unit/application/config_spec.rb +224 -4
  343. data/spec/unit/application/doc_spec.rb +2 -2
  344. data/spec/unit/application/face_base_spec.rb +6 -4
  345. data/spec/unit/application/facts_spec.rb +74 -8
  346. data/spec/unit/application/filebucket_spec.rb +41 -39
  347. data/spec/unit/application/resource_spec.rb +3 -1
  348. data/spec/unit/application/ssl_spec.rb +17 -4
  349. data/spec/unit/application_spec.rb +9 -4
  350. data/spec/unit/certificate_factory_spec.rb +1 -1
  351. data/spec/unit/configurer/downloader_spec.rb +14 -0
  352. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  353. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  354. data/spec/unit/configurer_spec.rb +96 -44
  355. data/spec/unit/confine_spec.rb +2 -1
  356. data/spec/unit/context/trusted_information_spec.rb +12 -10
  357. data/spec/unit/defaults_spec.rb +77 -28
  358. data/spec/unit/environments_spec.rb +96 -32
  359. data/spec/unit/face/config_spec.rb +65 -12
  360. data/spec/unit/face/facts_spec.rb +4 -0
  361. data/spec/unit/face/node_spec.rb +2 -2
  362. data/spec/unit/face/plugin_spec.rb +73 -33
  363. data/spec/unit/file_bucket/file_spec.rb +1 -1
  364. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  365. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  366. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  367. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  368. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  369. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  370. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  371. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  372. data/spec/unit/file_system_spec.rb +1 -2
  373. data/spec/unit/functions/camelcase_spec.rb +1 -1
  374. data/spec/unit/functions/capitalize_spec.rb +1 -1
  375. data/spec/unit/functions/downcase_spec.rb +1 -1
  376. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  377. data/spec/unit/functions/upcase_spec.rb +1 -1
  378. data/spec/unit/http/client_spec.rb +71 -17
  379. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  380. data/spec/unit/http/external_client_spec.rb +4 -4
  381. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  382. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  383. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  384. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  385. data/spec/unit/http/resolver_spec.rb +34 -15
  386. data/spec/unit/http/response_spec.rb +6 -0
  387. data/spec/unit/http/service/ca_spec.rb +2 -3
  388. data/spec/unit/http/service/compiler_spec.rb +51 -65
  389. data/spec/unit/http/service/file_server_spec.rb +5 -6
  390. data/spec/unit/http/service/puppetserver_spec.rb +112 -0
  391. data/spec/unit/http/service/report_spec.rb +2 -3
  392. data/spec/unit/http/service_spec.rb +1 -3
  393. data/spec/unit/http/session_spec.rb +24 -35
  394. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  395. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  396. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  397. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  398. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  399. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  400. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  401. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  402. data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
  403. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  404. data/spec/unit/indirector/file_server_spec.rb +1 -15
  405. data/spec/unit/indirector/json_spec.rb +8 -8
  406. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  407. data/spec/unit/indirector/node/json_spec.rb +33 -0
  408. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  409. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  410. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  411. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  412. data/spec/unit/indirector/request_spec.rb +3 -267
  413. data/spec/unit/indirector/rest_spec.rb +98 -752
  414. data/spec/unit/indirector/yaml_spec.rb +7 -7
  415. data/spec/unit/interface_spec.rb +3 -3
  416. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  417. data/spec/unit/network/authconfig_spec.rb +2 -132
  418. data/spec/unit/network/authorization_spec.rb +2 -55
  419. data/spec/unit/network/format_support_spec.rb +3 -2
  420. data/spec/unit/network/formats_spec.rb +4 -4
  421. data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -98
  422. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  423. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  424. data/spec/unit/network/http/api_spec.rb +10 -0
  425. data/spec/unit/network/http/connection_spec.rb +61 -73
  426. data/spec/unit/network/http/handler_spec.rb +0 -6
  427. data/spec/unit/network/http_pool_spec.rb +0 -4
  428. data/spec/unit/node/environment_spec.rb +51 -22
  429. data/spec/unit/node_spec.rb +2 -54
  430. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  431. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  432. data/spec/unit/parser/scope_spec.rb +1 -1
  433. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -8
  434. data/spec/unit/pops/loaders/loaders_spec.rb +77 -22
  435. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  436. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  437. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  438. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  439. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  440. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  441. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  442. data/spec/unit/pops/types/type_calculator_spec.rb +7 -17
  443. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  444. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  445. data/spec/unit/pops/visitor_spec.rb +1 -1
  446. data/spec/unit/provider/exec_spec.rb +4 -3
  447. data/spec/unit/provider/nameservice_spec.rb +0 -57
  448. data/spec/unit/provider/package/apt_spec.rb +77 -0
  449. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  450. data/spec/unit/provider/package/dpkg_spec.rb +22 -55
  451. data/spec/unit/provider/package/gem_spec.rb +32 -0
  452. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  453. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  454. data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
  455. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  456. data/spec/unit/provider/package/yum_spec.rb +31 -0
  457. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  458. data/spec/unit/provider/service/base_spec.rb +2 -4
  459. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  460. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  461. data/spec/unit/provider/service/debian_spec.rb +3 -5
  462. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  463. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  464. data/spec/unit/provider/service/init_spec.rb +45 -5
  465. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  466. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  467. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  468. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  469. data/spec/unit/provider/service/runit_spec.rb +2 -1
  470. data/spec/unit/provider/service/smf_spec.rb +402 -166
  471. data/spec/unit/provider/service/src_spec.rb +3 -5
  472. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  473. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  474. data/spec/unit/provider/service/windows_spec.rb +50 -15
  475. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  476. data/spec/unit/provider/user/useradd_spec.rb +22 -16
  477. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  478. data/spec/unit/provider_spec.rb +0 -12
  479. data/spec/unit/puppet_pal_2pec.rb +40 -0
  480. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  481. data/spec/unit/reports/store_spec.rb +17 -13
  482. data/spec/unit/resource/type_collection_spec.rb +2 -22
  483. data/spec/unit/resource_spec.rb +3 -59
  484. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  485. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  486. data/spec/unit/settings/port_setting_spec.rb +31 -0
  487. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  488. data/spec/unit/settings_spec.rb +586 -239
  489. data/spec/unit/ssl/base_spec.rb +36 -3
  490. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  491. data/spec/unit/ssl/certificate_spec.rb +2 -11
  492. data/spec/unit/ssl/ssl_provider_spec.rb +78 -49
  493. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  494. data/spec/unit/ssl/verifier_spec.rb +0 -21
  495. data/spec/unit/test/test_helper_spec.rb +17 -0
  496. data/spec/unit/transaction/persistence_spec.rb +15 -0
  497. data/spec/unit/transaction/report_spec.rb +3 -3
  498. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  499. data/spec/unit/transaction_spec.rb +45 -79
  500. data/spec/unit/type/file/checksum_spec.rb +6 -6
  501. data/spec/unit/type/file/content_spec.rb +1 -1
  502. data/spec/unit/type/file/ensure_spec.rb +1 -1
  503. data/spec/unit/type/file/mode_spec.rb +1 -1
  504. data/spec/unit/type/file/source_spec.rb +4 -5
  505. data/spec/unit/type/file_spec.rb +134 -102
  506. data/spec/unit/type/filebucket_spec.rb +1 -1
  507. data/spec/unit/type/package_spec.rb +1 -1
  508. data/spec/unit/type/service_spec.rb +209 -0
  509. data/spec/unit/type/user_spec.rb +31 -2
  510. data/spec/unit/type_spec.rb +70 -0
  511. data/spec/unit/util/backups_spec.rb +0 -2
  512. data/spec/unit/util/character_encoding_spec.rb +4 -4
  513. data/spec/unit/util/checksums_spec.rb +16 -0
  514. data/spec/unit/util/command_line_spec.rb +11 -6
  515. data/spec/unit/util/execution_spec.rb +0 -29
  516. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  517. data/spec/unit/util/rubygems_spec.rb +2 -2
  518. data/spec/unit/util/run_mode_spec.rb +27 -127
  519. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  520. data/spec/unit/util/windows/service_spec.rb +4 -4
  521. data/spec/unit/util/windows/string_spec.rb +1 -3
  522. data/spec/unit/util/yaml_spec.rb +0 -54
  523. data/spec/unit/util_spec.rb +3 -21
  524. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  525. metadata +76 -270
  526. data/conf/auth.conf +0 -150
  527. data/lib/puppet/application/cert.rb +0 -76
  528. data/lib/puppet/application/key.rb +0 -4
  529. data/lib/puppet/application/man.rb +0 -4
  530. data/lib/puppet/application/status.rb +0 -4
  531. data/lib/puppet/face/key.rb +0 -16
  532. data/lib/puppet/face/man.rb +0 -145
  533. data/lib/puppet/face/module/build.rb +0 -14
  534. data/lib/puppet/face/module/generate.rb +0 -14
  535. data/lib/puppet/face/module/search.rb +0 -103
  536. data/lib/puppet/face/status.rb +0 -51
  537. data/lib/puppet/indirector/certificate/file.rb +0 -9
  538. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  539. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  540. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  541. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  542. data/lib/puppet/indirector/file_content/http.rb +0 -22
  543. data/lib/puppet/indirector/key/file.rb +0 -46
  544. data/lib/puppet/indirector/key/memory.rb +0 -7
  545. data/lib/puppet/indirector/ssl_file.rb +0 -162
  546. data/lib/puppet/indirector/status.rb +0 -3
  547. data/lib/puppet/indirector/status/local.rb +0 -12
  548. data/lib/puppet/indirector/status/rest.rb +0 -27
  549. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  550. data/lib/puppet/network/auth_config_parser.rb +0 -90
  551. data/lib/puppet/network/authstore.rb +0 -283
  552. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  553. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -85
  554. data/lib/puppet/network/http/base_pool.rb +0 -36
  555. data/lib/puppet/network/http/compression.rb +0 -127
  556. data/lib/puppet/network/http/connection_adapter.rb +0 -182
  557. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  558. data/lib/puppet/network/rest_controller.rb +0 -2
  559. data/lib/puppet/network/rights.rb +0 -210
  560. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -64
  561. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -20
  562. data/lib/puppet/parser/environment_compiler.rb +0 -199
  563. data/lib/puppet/pops/types/enumeration.rb +0 -16
  564. data/lib/puppet/resource/capability_finder.rb +0 -154
  565. data/lib/puppet/rest/errors.rb +0 -15
  566. data/lib/puppet/rest/response.rb +0 -35
  567. data/lib/puppet/rest/route.rb +0 -85
  568. data/lib/puppet/rest/routes.rb +0 -135
  569. data/lib/puppet/ssl/host.rb +0 -505
  570. data/lib/puppet/ssl/key.rb +0 -61
  571. data/lib/puppet/ssl/validator.rb +0 -61
  572. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  573. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  574. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  575. data/lib/puppet/status.rb +0 -40
  576. data/lib/puppet/util/connection.rb +0 -88
  577. data/lib/puppet/util/ssl.rb +0 -83
  578. data/lib/puppet/util/windows/api_types.rb +0 -282
  579. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  580. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  581. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  582. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  583. data/lib/puppet/vendor/pathspec/README.md +0 -53
  584. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  585. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  586. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  587. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  588. data/man/man8/puppet-key.8 +0 -126
  589. data/man/man8/puppet-man.8 +0 -76
  590. data/man/man8/puppet-status.8 +0 -108
  591. data/spec/integration/faces/config_spec.rb +0 -91
  592. data/spec/integration/faces/documentation_spec.rb +0 -57
  593. data/spec/integration/file_bucket/file_spec.rb +0 -50
  594. data/spec/integration/file_serving/content_spec.rb +0 -7
  595. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  596. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  597. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  598. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  599. data/spec/integration/module_tool/forge_spec.rb +0 -51
  600. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  601. data/spec/integration/network/authconfig_spec.rb +0 -256
  602. data/spec/integration/provider/service/init_spec.rb +0 -48
  603. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  604. data/spec/integration/provider/service/windows_spec.rb +0 -50
  605. data/spec/integration/reference/providers_spec.rb +0 -21
  606. data/spec/integration/reports_spec.rb +0 -13
  607. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  608. data/spec/integration/ssl/host_spec.rb +0 -72
  609. data/spec/integration/ssl/key_spec.rb +0 -99
  610. data/spec/integration/test/test_helper_spec.rb +0 -31
  611. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  612. data/spec/unit/capability_spec.rb +0 -414
  613. data/spec/unit/face/catalog_spec.rb +0 -6
  614. data/spec/unit/face/key_spec.rb +0 -9
  615. data/spec/unit/face/man_spec.rb +0 -25
  616. data/spec/unit/face/module/search_spec.rb +0 -231
  617. data/spec/unit/face/module_spec.rb +0 -3
  618. data/spec/unit/face/status_spec.rb +0 -9
  619. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  620. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  621. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  622. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  623. data/spec/unit/indirector/key/file_spec.rb +0 -79
  624. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  625. data/spec/unit/indirector/status/local_spec.rb +0 -10
  626. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  627. data/spec/unit/man_spec.rb +0 -31
  628. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  629. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  630. data/spec/unit/network/authstore_spec.rb +0 -422
  631. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  632. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  633. data/spec/unit/network/http/compression_spec.rb +0 -240
  634. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  635. data/spec/unit/network/http_spec.rb +0 -9
  636. data/spec/unit/network/rights_spec.rb +0 -439
  637. data/spec/unit/parser/environment_compiler_spec.rb +0 -723
  638. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  639. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  640. data/spec/unit/rest/route_spec.rb +0 -132
  641. data/spec/unit/ssl/host_spec.rb +0 -650
  642. data/spec/unit/ssl/key_spec.rb +0 -173
  643. data/spec/unit/ssl/validator_spec.rb +0 -278
  644. data/spec/unit/status_spec.rb +0 -45
  645. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,723 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet_spec/compiler'
3
- require 'puppet/parser/environment_compiler'
4
-
5
- describe "Application instantiation" do
6
- include PuppetSpec::Compiler
7
-
8
- let(:env) { Puppet::Node::Environment.create(:testing, []) }
9
- let(:node) { Puppet::Node.new('test', :environment => env) }
10
- let(:loaders) { Puppet::Pops::Loaders.new(env) }
11
- let(:logs) { [] }
12
- let(:notices) { logs.select { |log| log.level == :notice }.map { |log| log.message } }
13
- let(:warnings) { logs.select { |log| log.level == :warning }.map { |log| log.message } }
14
-
15
- def compile_collect_log(string)
16
- Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
17
- compile_to_catalog(string, Puppet::Node.new('other', :environment => env))
18
- end
19
- end
20
-
21
- def compile_to_env_catalog(string, code_id=nil)
22
- Puppet[:code] = string
23
- Puppet::Parser::EnvironmentCompiler.compile(env, code_id).filter { |r| r.virtual? }
24
- end
25
-
26
- before(:each) do
27
- allow_any_instance_of(Puppet::Parser::Compiler).to receive(:loaders).and_return(loaders)
28
- allow_any_instance_of(Puppet::Parser::EnvironmentCompiler).to receive(:loaders).and_return(loaders)
29
- Puppet.push_context({:loaders => loaders, :current_environment => env})
30
- Puppet::Type.newtype :cap, :is_capability => true do
31
- newparam :name
32
- newparam :host
33
- end
34
- end
35
-
36
- after(:each) do
37
- Puppet::Type.rmtype(:cap)
38
- Puppet.pop_context()
39
- end
40
-
41
- MANIFEST = <<-EOS
42
- define prod($host) {
43
- notify { "host ${host}":}
44
- }
45
-
46
- Prod produces Cap { }
47
-
48
- define cons($host) {
49
- notify { "host ${host}": }
50
- }
51
-
52
- Cons consumes Cap { }
53
-
54
- application app {
55
- prod { one: host => ahost, export => Cap[cap] }
56
- cons { two: host => ahost, consume => Cap[cap] }
57
- cons { three: consume => Cap[cap] }
58
- }
59
-
60
- site {
61
- app { anapp:
62
- nodes => {
63
- Node[first] => Prod[one],
64
- Node[second] => Cons[two]
65
- }
66
- }
67
- }
68
- EOS
69
-
70
- MANIFEST_WO_EXPORT = <<-EOS
71
- define prod($host) {
72
- notify { "host ${host}":}
73
- }
74
-
75
- Prod produces Cap { }
76
-
77
- define cons($host) {
78
- notify { "host ${host}": }
79
- }
80
-
81
- Cons consumes Cap { }
82
-
83
- application app {
84
- cons { two: host => ahost, consume => Cap[cap] }
85
- }
86
-
87
- site {
88
- app { anapp:
89
- nodes => {
90
- Node[first] => Prod[one],
91
- Node[second] => Cons[two]
92
- }
93
- }
94
- }
95
- EOS
96
-
97
- MANIFEST_WO_NODE = <<-EOS
98
- define prod($host) {
99
- notify { "host ${host}":}
100
- }
101
-
102
- Prod produces Cap { }
103
-
104
- define cons($host) {
105
- notify { "host ${host}": }
106
- }
107
-
108
- Cons consumes Cap { }
109
-
110
- application app {
111
- prod { one: host => ahost, export => Cap[cap] }
112
- cons { two: host => ahost, consume => Cap[cap] }
113
- }
114
-
115
- site {
116
- app { anapp:
117
- }
118
- }
119
- EOS
120
-
121
- MANIFEST_WITH_STRING_NODES = <<-EOS
122
- application app {
123
- }
124
-
125
- site {
126
- app { anapp:
127
- nodes => "foobar",
128
- }
129
- }
130
- EOS
131
-
132
- MANIFEST_WITH_FALSE_NODES = <<-EOS
133
- application app {
134
- }
135
-
136
- site {
137
- app { anapp:
138
- nodes => false,
139
- }
140
- }
141
- EOS
142
-
143
- MANIFEST_REQ_WO_EXPORT = <<-EOS
144
- define prod($host) {
145
- notify { "host ${host}":}
146
- }
147
-
148
- Prod produces Cap { }
149
-
150
- define cons($host) {
151
- notify { "host ${host}": }
152
- }
153
-
154
- Cons consumes Cap { }
155
-
156
- application app {
157
- cons { two: host => ahost, require => Cap[cap] }
158
- }
159
-
160
- site {
161
- app { anapp:
162
- nodes => {
163
- Node[first] => Prod[one],
164
- Node[second] => Cons[two]
165
- }
166
- }
167
- }
168
- EOS
169
-
170
- MANIFEST_WITH_DOUBLE_EXPORT = <<-EOS
171
- define prod($host) {
172
- notify { "host ${host}":}
173
- }
174
-
175
- Prod produces Cap { }
176
-
177
- define cons($host) {
178
- notify { "host ${host}": }
179
- }
180
-
181
- Cons consumes Cap { }
182
-
183
- application app {
184
- prod { one: host => ahost, export => Cap[cap] }
185
- prod { two: host => anotherhost, export => Cap[cap] }
186
- cons { two: host => ahost, consume => Cap[cap] }
187
- }
188
-
189
- site {
190
- app { anapp:
191
- nodes => {
192
- Node[first] => Prod[one],
193
- Node[second] => Cons[two]
194
- }
195
- }
196
- }
197
- EOS
198
-
199
- FAULTY_MANIFEST = <<-EOS
200
- define prod($host) {
201
- notify { "host ${host}":}
202
- }
203
-
204
- Prod produces Cap { }
205
-
206
- define cons($host) {
207
- notify { "host ${host}": }
208
- }
209
-
210
- Cons consumes Cap { }
211
-
212
- application app {
213
- prod { one: host => ahost, export => Cap[cap] }
214
- cons { two: host => ahost, consume => Cap[cap] }
215
- }
216
-
217
- # app is not in site => error
218
- app { anapp:
219
- nodes => {
220
- Node[first] => Prod[one],
221
- Node[second] => Cons[two]
222
- }
223
- }
224
- EOS
225
-
226
- MANIFEST_WITH_SITE = <<-EOS
227
- define prod($host) {
228
- notify { "host ${host}":}
229
- }
230
-
231
- Prod produces Cap { }
232
-
233
- define cons($host) {
234
- notify { "host ${host}": }
235
- }
236
-
237
- Cons consumes Cap { }
238
-
239
- application app {
240
- prod { one: host => ahost, export => Cap[cap] }
241
- cons { two: host => ahost, consume => Cap[cap] }
242
- }
243
-
244
- $one = not_the_value_one
245
- $two = two
246
-
247
- node default {
248
- notify { "on a node": }
249
- }
250
-
251
- notify { 'ignore me': }
252
-
253
- site {
254
- $one = one
255
- app { anapp:
256
- nodes => {
257
- Node[first] => Prod[$one],
258
- Node[second] => Cons[$two]
259
- }
260
- }
261
- }
262
- EOS
263
-
264
- MANIFEST_WITH_ILLEGAL_RESOURCE = <<-EOS
265
- define prod($host) {
266
- notify { "host ${host}":}
267
- }
268
-
269
- Prod produces Cap { }
270
-
271
- define cons($host) {
272
- notify { "host ${host}": }
273
- }
274
-
275
- Cons consumes Cap { }
276
-
277
- application app {
278
- prod { one: host => ahost, export => Cap[cap] }
279
- cons { two: consume => Cap[cap] }
280
- }
281
-
282
- site {
283
- # The rouge expression is here
284
- notify { 'fail me': }
285
- $one = one
286
- app { anapp:
287
- nodes => {
288
- Node[first] => Prod[one],
289
- Node[second] => Cons[two]
290
- }
291
- }
292
- }
293
- EOS
294
-
295
- MANIFEST_WITH_CLASS = <<-EOS
296
- define test($host) {
297
- notify { "c $host": }
298
- }
299
-
300
- class prod($host) {
301
- notify { "p $host": }
302
- }
303
-
304
- class cons($host) {
305
- test { c: host => $host }
306
- }
307
-
308
- Class[prod] produces Cap {}
309
-
310
- Class[cons] consumes Cap {}
311
-
312
- application app {
313
- class { prod: host => 'ahost', export => Cap[cap]}
314
- class { cons: consume => Cap[cap]}
315
- }
316
-
317
- site {
318
- app { anapp:
319
- nodes => {
320
- Node[first] => Class[prod],
321
- Node[second] => Class[cons]
322
- }
323
- }
324
- }
325
- EOS
326
-
327
-
328
- context 'a node catalog' do
329
- it "is unaffected for a non-participating node" do
330
- catalog = compile_to_catalog(MANIFEST, Puppet::Node.new('other', :environment => env))
331
- types = catalog.resource_keys.map { |type, _| type }.uniq.sort
332
- expect(types).to eq(["Class", "Stage"])
333
- end
334
-
335
- it "an application instance must be contained in a site" do
336
- expect { compile_to_catalog(FAULTY_MANIFEST, Puppet::Node.new('first', :environment => env))
337
- }.to raise_error(/Application instances .* can only be contained within a Site/)
338
- end
339
-
340
- it "does not raise an error when node mappings are not provided" do
341
- expect { compile_to_catalog(MANIFEST_WO_NODE, node) }.to_not raise_error
342
- end
343
-
344
- it "raises an error if node mapping is a string" do
345
- expect { compile_to_catalog(MANIFEST_WITH_STRING_NODES, node)
346
- }.to raise_error(/Invalid node mapping in .*: Mapping must be a hash/)
347
- end
348
-
349
- it "raises an error if node mapping is false" do
350
- expect { compile_to_catalog(MANIFEST_WITH_FALSE_NODES, node)
351
- }.to raise_error(/Invalid node mapping in .*: Mapping must be a hash/)
352
- end
353
-
354
- it "detects that consumed capability is never exported" do
355
- expect { compile_to_env_catalog(MANIFEST_WO_EXPORT)
356
- }.to raise_error(/Capability 'Cap\[cap\]' referenced by 'consume' is never exported/)
357
- end
358
-
359
- it "detects that required capability is never exported" do
360
- expect { compile_to_env_catalog(MANIFEST_REQ_WO_EXPORT)
361
- }.to raise_error(/Capability 'Cap\[cap\]' referenced by 'require' is never exported/)
362
- end
363
-
364
- it "detects that a capability is exported more than once" do
365
- expect { compile_to_env_catalog(MANIFEST_WITH_DOUBLE_EXPORT)
366
- }.to raise_error(/'Cap\[cap\]' is exported by both 'Prod\[one\]' and 'Prod\[two\]'/)
367
- end
368
-
369
- context "for producing node" do
370
- let(:compiled_node) { Puppet::Node.new('first', :environment => env) }
371
- let(:compiled_catalog) { compile_to_catalog(MANIFEST, compiled_node)}
372
-
373
- { "App[anapp]" => 'application instance',
374
- "Cap[cap]" => 'capability resource',
375
- "Prod[one]" => 'component',
376
- "Notify[host ahost]" => 'node resource'
377
- }.each do |k,v|
378
- it "contains the #{v} (#{k})" do
379
- expect(compiled_catalog.resource(k)).not_to be_nil
380
- end
381
- end
382
-
383
- it "does not contain the consumed resource (Cons[two])" do
384
- expect(compiled_catalog.resource("Cons[two]")).to be_nil
385
- end
386
- end
387
-
388
- context "for consuming node" do
389
- let(:compiled_node) { Puppet::Node.new('second', :environment => env) }
390
- let(:compiled_catalog) { compile_to_catalog(MANIFEST, compiled_node)}
391
- let(:cap) {
392
- the_cap = Puppet::Resource.new("Cap", "cap")
393
- the_cap["host"] = "ahost"
394
- the_cap
395
- }
396
-
397
- { "App[anapp]" => 'application instance',
398
- "Cap[cap]" => 'capability resource',
399
- "Cons[two]" => 'component',
400
- "Notify[host ahost]" => 'node resource'
401
- }.each do |k,v|
402
- it "contains the #{v} (#{k})" do
403
- # Mock the connection to Puppet DB
404
- expect(Puppet::Resource::CapabilityFinder).to receive(:find).and_return(cap)
405
- expect(compiled_catalog.resource(k)).not_to be_nil
406
- end
407
- end
408
-
409
- it "does not contain the produced resource (Prod[one])" do
410
- # Mock the connection to Puppet DB
411
- expect(Puppet::Resource::CapabilityFinder).to receive(:find).and_return(cap)
412
- expect(compiled_catalog.resource("Prod[one]")).to be_nil
413
- end
414
- end
415
-
416
- context "for node with class producer" do
417
- let(:compiled_node) { Puppet::Node.new('first', :environment => env) }
418
- let(:compiled_catalog) { compile_to_catalog(MANIFEST_WITH_CLASS, compiled_node)}
419
-
420
- { "App[anapp]" => 'application instance',
421
- "Cap[cap]" => 'capability resource',
422
- "Class[prod]" => 'class',
423
- "Notify[p ahost]" => 'node resource'
424
- }.each do |k,v|
425
- it "contains the #{v} (#{k})" do
426
- cat = compiled_catalog
427
- expect(cat.resource(k)).not_to be_nil
428
- end
429
- end
430
-
431
- it "does not contain the consumed resource (Class[cons])" do
432
- expect(compiled_catalog.resource("Class[cons]")).to be_nil
433
- end
434
- end
435
-
436
- context "for node with class consumer" do
437
- let(:compiled_node) { Puppet::Node.new('second', :environment => env) }
438
- let(:compiled_catalog) { compile_to_catalog(MANIFEST_WITH_CLASS, compiled_node)}
439
- let(:cap) {
440
- the_cap = Puppet::Resource.new("Cap", "cap")
441
- the_cap["host"] = "ahost"
442
- the_cap
443
- }
444
-
445
- { "App[anapp]" => 'application instance',
446
- "Cap[cap]" => 'capability resource',
447
- "Class[cons]" => 'class',
448
- "Notify[c ahost]" => 'node resource'
449
- }.each do |k,v|
450
- it "contains the #{v} (#{k})" do
451
- # Mock the connection to Puppet DB
452
- expect(Puppet::Resource::CapabilityFinder).to receive(:find).and_return(cap)
453
- expect(compiled_catalog.resource(k)).not_to be_nil
454
- end
455
- end
456
-
457
- it "does not contain the produced resource (Class[prod])" do
458
- # Mock the connection to Puppet DB
459
- expect(Puppet::Resource::CapabilityFinder).to receive(:find).and_return(cap)
460
- expect(compiled_catalog.resource("Class[prod]")).to be_nil
461
- end
462
- end
463
-
464
- context "when using a site expression" do
465
- # The site expression must be evaluated in a node catalog compilation because
466
- # the application instantiations inside it may contain other logic (local variables)
467
- # that are used to instantiate an application. The application instances are needed.
468
- #
469
- it "the node expressions is evaluated" do
470
- catalog = compile_to_catalog(MANIFEST_WITH_SITE, Puppet::Node.new('other', :environment => env))
471
- types = catalog.resource_keys.map { |type, _| type }.uniq.sort
472
- expect(types).to eq(["Class", "Node", "Notify", "Stage"])
473
- expect(catalog.resource("Notify[on a node]")).to_not be_nil
474
- expect(catalog.resource("Notify[on the site]")).to be_nil
475
- end
476
-
477
- end
478
-
479
- context "when using a site expression" do
480
- it "the site expression is not evaluated in a node compilation" do
481
- catalog = compile_to_catalog(MANIFEST_WITH_SITE, Puppet::Node.new('other', :environment => env))
482
- types = catalog.resource_keys.map { |type, _| type }.uniq.sort
483
- expect(types).to eq(["Class", "Node", "Notify", "Stage"])
484
- expect(catalog.resource("Notify[on a node]")).to_not be_nil
485
- expect(catalog.resource("Notify[on the site]")).to be_nil
486
- end
487
-
488
- end
489
- end
490
-
491
- describe "in the environment catalog" do
492
- it "does not fail if there is no site expression" do
493
- expect {
494
- compile_to_env_catalog(<<-EOC).to_resource
495
- notify { 'ignore me':}
496
- EOC
497
- }.to_not raise_error()
498
- end
499
-
500
- it "ignores usage of hiera_include() at topscope for classification" do
501
- expect(Puppet).to receive(:debug).with(/Ignoring hiera_include/)
502
-
503
- expect {
504
- compile_to_env_catalog(<<-EOC).to_resource
505
- hiera_include('classes')
506
- site { }
507
- EOC
508
- }.to_not raise_error()
509
-
510
- end
511
-
512
- it 'removes overriden functions after compile' do
513
- expect {
514
- compile_to_env_catalog(<<-EOC)
515
- hiera_include('classes')
516
- site { }
517
- EOC
518
- }.to_not raise_error()
519
- func = Puppet::Pops::Loaders.loaders.puppet_system_loader.load(:function, 'hiera_include')
520
- expect(func).to be_a(Puppet::Functions::Function)
521
- end
522
-
523
- it "includes components and capability resources" do
524
- catalog = compile_to_env_catalog(MANIFEST).to_resource
525
- apps = catalog.resources.select do |res|
526
- res.resource_type && res.resource_type.application?
527
- end
528
- expect(apps.size).to eq(1)
529
- app = apps.first
530
- expect(app["nodes"]).not_to be_nil
531
- comps = catalog.direct_dependents_of(app).map(&:ref).sort
532
- expect(comps).to eq(["Cons[three]", "Cons[two]", "Prod[one]"])
533
-
534
- prod = catalog.resource("Prod[one]")
535
- expect(prod).not_to be_nil
536
- expect(prod.export.map(&:ref)).to eq(["Cap[cap]"])
537
-
538
- cons = catalog.resource("Cons[two]")
539
- expect(cons).not_to be_nil
540
- expect(cons[:consume].ref).to eq("Cap[cap]")
541
- end
542
-
543
- it "includes class components" do
544
- catalog = compile_to_env_catalog(MANIFEST_WITH_CLASS).to_resource
545
- classes = catalog.resources.select do |res|
546
- res.type == 'Class' && (res.title == 'Prod' || res.title == 'Cons')
547
- end
548
- expect(classes.size).to eq(2)
549
- expect(classes.map(&:ref).sort).to eq(["Class[Cons]", "Class[Prod]"])
550
-
551
- prod = catalog.resource("Class[prod]")
552
- expect(prod).not_to be_nil
553
- expect(prod.export.map(&:ref)).to eq(["Cap[cap]"])
554
-
555
- cons = catalog.resource("Class[cons]")
556
- expect(cons).not_to be_nil
557
- expect(cons[:consume].ref).to eq("Cap[cap]")
558
- end
559
-
560
- it "an application instance must be contained in a site" do
561
- expect { compile_to_env_catalog(FAULTY_MANIFEST)
562
- }.to raise_error(/Application instances .* can only be contained within a Site/)
563
- end
564
-
565
- context "when using a site expression" do
566
- it "includes components and capability resources" do
567
- catalog = compile_to_env_catalog(MANIFEST_WITH_SITE).to_resource
568
- apps = catalog.resources.select do |res|
569
- res.resource_type && res.resource_type.application?
570
- end
571
- expect(apps.size).to eq(1)
572
- app = apps.first
573
- expect(app["nodes"]).not_to be_nil
574
- comps = catalog.direct_dependents_of(app).map(&:ref).sort
575
- expect(comps).to eq(["Cons[two]", "Prod[one]"])
576
-
577
- prod = catalog.resource("Prod[one]")
578
- expect(prod).not_to be_nil
579
- expect(prod.export.map(&:ref)).to eq(["Cap[cap]"])
580
-
581
- cons = catalog.resource("Cons[two]")
582
- expect(cons).not_to be_nil
583
- expect(cons[:consume].ref).to eq("Cap[cap]")
584
- end
585
-
586
- it "the site expression is evaluated in an environment compilation" do
587
- catalog = compile_to_env_catalog(MANIFEST_WITH_SITE).to_resource
588
- types = catalog.resource_keys.map { |type, _| type }.uniq.sort
589
- expect(types).to eq(["App", "Class", "Cons", "Prod", "Site", "Stage"])
590
- expect(catalog.resource("Notify[on a node]")).to be_nil
591
- apps = catalog.resources.select do |res|
592
- res.resource_type && res.resource_type.application?
593
- end
594
- expect(apps.size).to eq(1)
595
- app = apps.first
596
- comps = catalog.direct_dependents_of(app).map(&:ref).sort
597
- expect(comps).to eq(["Cons[two]", "Prod[one]"])
598
- end
599
-
600
- it "fails if there are non component resources in the site" do
601
- expect {
602
- compile_to_env_catalog(MANIFEST_WITH_ILLEGAL_RESOURCE).to_resource
603
- }.to raise_error(/Only application components can appear inside a site - Notify\[fail me\] is not allowed \(line: 20\)/)
604
- end
605
- end
606
-
607
- it "includes code_id if specified" do
608
- catalog = compile_to_env_catalog(MANIFEST_WITH_SITE, "12345")
609
- expect(catalog.code_id).to eq("12345")
610
- end
611
-
612
- it "omits code_id if unspecified" do
613
- catalog = compile_to_env_catalog(MANIFEST_WITH_SITE)
614
- expect(catalog.code_id).to be_nil
615
- end
616
- end
617
-
618
-
619
- describe "when validation of nodes" do
620
- it 'validates that the key of a node mapping is a Node' do
621
- expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other', :environment => env))
622
- application app {
623
- }
624
-
625
- site {
626
- app { anapp:
627
- nodes => {
628
- 'hello' => Node[other],
629
- }
630
- }
631
- }
632
- EOS
633
- }.to raise_error(Puppet::Error, /hello is not a Node/)
634
- end
635
-
636
- it 'validates that the value of a node mapping is a resource' do
637
- expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other', :environment => env))
638
- application app {
639
- }
640
-
641
- site {
642
- app { anapp:
643
- nodes => {
644
- Node[other] => 'hello'
645
- }
646
- }
647
- }
648
- EOS
649
- }.to raise_error(Puppet::Error, /hello is not a resource/)
650
- end
651
-
652
- it 'validates that the value can be an array or resources' do
653
- expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other', :environment => env))
654
- define p {
655
- notify {$title:}
656
- }
657
-
658
- application app {
659
- p{one:}
660
- p{two:}
661
- }
662
-
663
- site {
664
- app { anapp:
665
- nodes => {
666
- Node[other] => [P[one],P[two]]
667
- }
668
- }
669
- }
670
- EOS
671
- }.not_to raise_error
672
- end
673
-
674
- it 'validates that the is bound to exactly one node' do
675
- expect { compile_to_catalog(<<-EOS, Puppet::Node.new('first', :environment => env))
676
- define p {
677
- notify {$title:}
678
- }
679
-
680
- application app {
681
- p{one:}
682
- }
683
-
684
- site {
685
- app { anapp:
686
- nodes => {
687
- Node[first] => P[one],
688
- Node[second] => P[one],
689
- }
690
- }
691
- }
692
- EOS
693
- }.to raise_error(Puppet::Error, /maps component P\[one\] to multiple nodes/)
694
- end
695
- end
696
-
697
- describe "site containing a resource named 'plan'" do
698
- it 'finds an application named plan' do
699
- expect {compile_collect_log(<<-PUPPET)}.not_to raise_error
700
- define plan::node_file() {
701
- file { "/tmp/plans/${name}.txt":
702
- content => "this is ${name}.txt",
703
- }
704
- }
705
- Plan::Node_file produces Node_file {}
706
- application plan() {
707
- plan::node_file { "node_file_${name}":
708
- export => Node_file["node_file_${name}"]
709
- }
710
- }
711
- site {
712
- plan { "test":
713
- nodes => {
714
- Node["test.example.com"] => Plan::Node_file["node_file_plan_test"],
715
- }
716
- }
717
- }
718
- PUPPET
719
-
720
- expect(warnings).to include(/Use of future reserved word: 'plan'/)
721
- end
722
- end
723
- end