puppet 6.29.0 → 7.0.0

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

Potentially problematic release.


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

Files changed (811) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/CONTRIBUTING.md +5 -5
  4. data/Gemfile +5 -7
  5. data/Gemfile.lock +52 -143
  6. data/README.md +5 -5
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/README.environment +8 -0
  9. data/ext/build_defaults.yaml +1 -1
  10. data/ext/dbfix.sql +132 -0
  11. data/ext/debian/README.Debian +8 -0
  12. data/ext/debian/README.source +2 -0
  13. data/ext/debian/TODO.Debian +1 -0
  14. data/ext/debian/changelog.erb +1122 -0
  15. data/ext/debian/compat +1 -0
  16. data/ext/debian/control +144 -0
  17. data/ext/debian/copyright +339 -0
  18. data/ext/debian/docs +1 -0
  19. data/ext/debian/fileserver.conf +41 -0
  20. data/ext/debian/puppet-common.dirs +13 -0
  21. data/ext/debian/puppet-common.install +3 -0
  22. data/ext/debian/puppet-common.lintian-overrides +5 -0
  23. data/ext/debian/puppet-common.manpages +28 -0
  24. data/ext/debian/puppet-common.postinst +35 -0
  25. data/ext/debian/puppet-common.postrm +33 -0
  26. data/ext/debian/puppet-el.dirs +1 -0
  27. data/ext/debian/puppet-el.emacsen-install +25 -0
  28. data/ext/debian/puppet-el.emacsen-remove +11 -0
  29. data/ext/debian/puppet-el.emacsen-startup +9 -0
  30. data/ext/debian/puppet-el.install +1 -0
  31. data/ext/debian/puppet-testsuite.install +2 -0
  32. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  33. data/ext/debian/puppet.lintian-overrides +3 -0
  34. data/ext/debian/puppet.logrotate +20 -0
  35. data/ext/debian/puppet.postinst +20 -0
  36. data/ext/debian/puppet.postrm +20 -0
  37. data/ext/debian/puppet.preinst +20 -0
  38. data/ext/debian/puppetmaster-common.install +2 -0
  39. data/ext/debian/puppetmaster-common.manpages +2 -0
  40. data/ext/debian/puppetmaster-common.postinst +6 -0
  41. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  42. data/ext/debian/puppetmaster-passenger.postinst +162 -0
  43. data/ext/debian/puppetmaster-passenger.postrm +61 -0
  44. data/ext/debian/puppetmaster.README.debian +17 -0
  45. data/ext/debian/puppetmaster.default +14 -0
  46. data/ext/debian/puppetmaster.init +137 -0
  47. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  48. data/ext/debian/puppetmaster.postinst +20 -0
  49. data/ext/debian/puppetmaster.postrm +5 -0
  50. data/ext/debian/puppetmaster.preinst +22 -0
  51. data/ext/debian/rules +132 -0
  52. data/ext/debian/source/format +1 -0
  53. data/ext/debian/source/options +1 -0
  54. data/ext/debian/vim-puppet.README.Debian +13 -0
  55. data/ext/debian/vim-puppet.dirs +5 -0
  56. data/ext/debian/vim-puppet.yaml +7 -0
  57. data/ext/debian/watch +2 -0
  58. data/ext/freebsd/puppetd +26 -0
  59. data/ext/freebsd/puppetmasterd +26 -0
  60. data/ext/gentoo/conf.d/puppet +5 -0
  61. data/ext/gentoo/conf.d/puppetmaster +12 -0
  62. data/ext/gentoo/init.d/puppet +38 -0
  63. data/ext/gentoo/init.d/puppetmaster +51 -0
  64. data/ext/gentoo/puppet/fileserver.conf +41 -0
  65. data/ext/ips/puppet-agent +44 -0
  66. data/ext/ips/puppet-master +44 -0
  67. data/ext/ips/puppet.p5m.erb +12 -0
  68. data/ext/ips/puppetagent.xml +42 -0
  69. data/ext/ips/puppetmaster.xml +42 -0
  70. data/ext/ips/rules +19 -0
  71. data/ext/ips/transforms +34 -0
  72. data/ext/ldap/puppet.schema +24 -0
  73. data/ext/logcheck/puppet +23 -0
  74. data/{examples → ext}/nagios/check_puppet.rb +2 -2
  75. data/ext/osx/file_mapping.yaml +28 -0
  76. data/ext/osx/postflight.erb +109 -0
  77. data/ext/osx/preflight.erb +52 -0
  78. data/ext/osx/prototype.plist.erb +38 -0
  79. data/ext/osx/puppet.plist +0 -2
  80. data/ext/project_data.yaml +2 -16
  81. data/ext/redhat/fileserver.conf +41 -0
  82. data/ext/redhat/logrotate +21 -0
  83. data/ext/redhat/puppet.spec.erb +841 -0
  84. data/ext/redhat/server.init +128 -0
  85. data/ext/redhat/server.sysconfig +13 -0
  86. data/{examples/enc → ext}/regexp_nodes/classes/databases +0 -0
  87. data/{examples/enc → ext}/regexp_nodes/classes/webservers +0 -0
  88. data/{examples/enc → ext}/regexp_nodes/environment/development +0 -0
  89. data/{examples/enc → ext}/regexp_nodes/parameters/service/prod +0 -0
  90. data/{examples/enc → ext}/regexp_nodes/parameters/service/qa +0 -0
  91. data/{examples/enc → ext}/regexp_nodes/parameters/service/sandbox +0 -0
  92. data/{examples/enc → ext}/regexp_nodes/regexp_nodes.rb +0 -0
  93. data/ext/solaris/pkginfo +6 -0
  94. data/ext/solaris/smf/puppetd.xml +77 -0
  95. data/ext/solaris/smf/puppetmasterd.xml +77 -0
  96. data/ext/solaris/smf/svc-puppetd +71 -0
  97. data/ext/solaris/smf/svc-puppetmasterd +67 -0
  98. data/ext/suse/puppet.spec +310 -0
  99. data/ext/suse/server.init +173 -0
  100. data/ext/windows/service/daemon.rb +6 -5
  101. data/ext/yaml_nodes.rb +105 -0
  102. data/install.rb +21 -17
  103. data/lib/puppet/agent.rb +11 -47
  104. data/lib/puppet/application/agent.rb +16 -18
  105. data/lib/puppet/application/apply.rb +4 -24
  106. data/lib/puppet/application/device.rb +100 -106
  107. data/lib/puppet/application/filebucket.rb +13 -10
  108. data/lib/puppet/application/lookup.rb +24 -74
  109. data/lib/puppet/application/resource.rb +16 -32
  110. data/lib/puppet/application/script.rb +0 -2
  111. data/lib/puppet/application/ssl.rb +1 -13
  112. data/lib/puppet/application.rb +178 -108
  113. data/lib/puppet/application_support.rb +0 -7
  114. data/lib/puppet/concurrent/thread_local_singleton.rb +3 -6
  115. data/lib/puppet/configurer/downloader.rb +1 -2
  116. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  117. data/lib/puppet/configurer.rb +86 -183
  118. data/lib/puppet/confine/variable.rb +1 -1
  119. data/lib/puppet/defaults.rb +130 -244
  120. data/lib/puppet/environments.rb +82 -146
  121. data/lib/puppet/face/facts.rb +5 -103
  122. data/lib/puppet/face/generate.rb +0 -2
  123. data/lib/puppet/face/help/action.erb +0 -1
  124. data/lib/puppet/face/help/face.erb +0 -1
  125. data/lib/puppet/face/help.rb +1 -1
  126. data/lib/puppet/face/node/clean.rb +0 -11
  127. data/lib/puppet/face/plugin.rb +5 -8
  128. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  129. data/lib/puppet/ffi/windows/constants.rb +404 -0
  130. data/lib/puppet/ffi/windows/functions.rb +628 -0
  131. data/lib/puppet/ffi/windows/structs.rb +338 -0
  132. data/lib/puppet/ffi/windows.rb +12 -0
  133. data/lib/puppet/file_serving/configuration/parser.rb +3 -34
  134. data/lib/puppet/file_serving/configuration.rb +0 -8
  135. data/lib/puppet/file_serving/fileset.rb +2 -14
  136. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  137. data/lib/puppet/file_serving/metadata.rb +0 -3
  138. data/lib/puppet/file_serving/mount/file.rb +4 -4
  139. data/lib/puppet/file_serving/mount.rb +1 -2
  140. data/lib/puppet/file_system/file_impl.rb +8 -10
  141. data/lib/puppet/file_system/jruby.rb +1 -1
  142. data/lib/puppet/file_system/memory_file.rb +1 -8
  143. data/lib/puppet/file_system/windows.rb +6 -8
  144. data/lib/puppet/file_system.rb +1 -1
  145. data/lib/puppet/forge/repository.rb +0 -1
  146. data/lib/puppet/forge.rb +4 -4
  147. data/lib/puppet/functions/all.rb +1 -1
  148. data/lib/puppet/functions/camelcase.rb +1 -1
  149. data/lib/puppet/functions/capitalize.rb +2 -2
  150. data/lib/puppet/functions/downcase.rb +2 -2
  151. data/lib/puppet/functions/empty.rb +0 -8
  152. data/lib/puppet/functions/find_template.rb +2 -2
  153. data/lib/puppet/functions/get.rb +5 -5
  154. data/lib/puppet/functions/group_by.rb +5 -13
  155. data/lib/puppet/functions/lest.rb +1 -1
  156. data/lib/puppet/functions/new.rb +100 -100
  157. data/lib/puppet/functions/next.rb +1 -18
  158. data/lib/puppet/functions/partition.rb +4 -12
  159. data/lib/puppet/functions/require.rb +5 -5
  160. data/lib/puppet/functions/sort.rb +3 -3
  161. data/lib/puppet/functions/strftime.rb +0 -1
  162. data/lib/puppet/functions/tree_each.rb +10 -7
  163. data/lib/puppet/functions/type.rb +4 -4
  164. data/lib/puppet/functions/unwrap.rb +2 -17
  165. data/lib/puppet/functions/upcase.rb +2 -2
  166. data/lib/puppet/functions/versioncmp.rb +2 -6
  167. data/lib/puppet/generate/models/type/type.rb +4 -1
  168. data/lib/puppet/generate/type.rb +0 -9
  169. data/lib/puppet/http/client.rb +167 -137
  170. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  171. data/lib/puppet/http/errors.rb +16 -0
  172. data/lib/puppet/http/external_client.rb +5 -7
  173. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  174. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  175. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  176. data/lib/puppet/http/proxy.rb +137 -0
  177. data/lib/puppet/http/redirector.rb +4 -17
  178. data/lib/puppet/http/resolver/server_list.rb +10 -25
  179. data/lib/puppet/http/resolver/settings.rb +4 -7
  180. data/lib/puppet/http/resolver/srv.rb +7 -11
  181. data/lib/puppet/http/resolver.rb +5 -15
  182. data/lib/puppet/http/response.rb +36 -54
  183. data/lib/puppet/http/response_converter.rb +24 -0
  184. data/lib/puppet/http/response_net_http.rb +42 -0
  185. data/lib/puppet/http/retry_after_handler.rb +4 -13
  186. data/lib/puppet/http/service/ca.rb +11 -22
  187. data/lib/puppet/http/service/compiler.rb +23 -144
  188. data/lib/puppet/http/service/file_server.rb +19 -29
  189. data/lib/puppet/http/service/puppetserver.rb +26 -12
  190. data/lib/puppet/http/service/report.rb +8 -10
  191. data/lib/puppet/http/service.rb +12 -26
  192. data/lib/puppet/http/session.rb +11 -20
  193. data/lib/puppet/{network/http → http}/site.rb +1 -2
  194. data/lib/puppet/http.rb +22 -13
  195. data/lib/puppet/indirector/catalog/compiler.rb +6 -25
  196. data/lib/puppet/indirector/catalog/rest.rb +2 -5
  197. data/lib/puppet/indirector/facts/facter.rb +6 -6
  198. data/lib/puppet/indirector/facts/rest.rb +3 -22
  199. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  200. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  201. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  202. data/lib/puppet/indirector/file_server.rb +1 -8
  203. data/lib/puppet/indirector/generic_http.rb +0 -11
  204. data/lib/puppet/indirector/indirection.rb +1 -1
  205. data/lib/puppet/indirector/node/rest.rb +2 -4
  206. data/lib/puppet/indirector/report/rest.rb +3 -8
  207. data/lib/puppet/indirector/request.rb +0 -101
  208. data/lib/puppet/indirector/resource/ral.rb +1 -6
  209. data/lib/puppet/indirector/rest.rb +12 -263
  210. data/lib/puppet/indirector/terminus.rb +0 -4
  211. data/lib/puppet/interface/documentation.rb +0 -1
  212. data/lib/puppet/module/plan.rb +1 -0
  213. data/lib/puppet/module/task.rb +1 -1
  214. data/lib/puppet/module.rb +0 -1
  215. data/lib/puppet/module_tool/applications/installer.rb +2 -56
  216. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  217. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  218. data/lib/puppet/module_tool/applications.rb +0 -1
  219. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  220. data/lib/puppet/network/authconfig.rb +2 -96
  221. data/lib/puppet/network/authorization.rb +13 -35
  222. data/lib/puppet/network/formats.rb +0 -67
  223. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  224. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  225. data/lib/puppet/network/http/connection.rb +247 -316
  226. data/lib/puppet/network/http/handler.rb +0 -1
  227. data/lib/puppet/network/http.rb +3 -3
  228. data/lib/puppet/network/http_pool.rb +16 -34
  229. data/lib/puppet/node/environment.rb +11 -10
  230. data/lib/puppet/node.rb +2 -31
  231. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  232. data/lib/puppet/pal/pal_impl.rb +4 -2
  233. data/lib/puppet/parser/ast/leaf.rb +2 -3
  234. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  235. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  236. data/lib/puppet/parser/compiler.rb +0 -198
  237. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  238. data/lib/puppet/parser/resource.rb +1 -70
  239. data/lib/puppet/parser/scope.rb +0 -1
  240. data/lib/puppet/parser/templatewrapper.rb +1 -2
  241. data/lib/puppet/pops/evaluator/closure.rb +5 -7
  242. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  243. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  244. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -4
  245. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  246. data/lib/puppet/pops/issues.rb +0 -5
  247. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  248. data/lib/puppet/pops/lookup/lookup_adapter.rb +2 -3
  249. data/lib/puppet/pops/model/ast.pp +0 -42
  250. data/lib/puppet/pops/model/ast.rb +0 -291
  251. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  252. data/lib/puppet/pops/model/factory.rb +1 -47
  253. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  254. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  255. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  256. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  257. data/lib/puppet/pops/parser/egrammar.ra +0 -58
  258. data/lib/puppet/pops/parser/eparser.rb +1685 -1896
  259. data/lib/puppet/pops/parser/lexer2.rb +91 -92
  260. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  261. data/lib/puppet/pops/parser/slurp_support.rb +0 -1
  262. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  263. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  264. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  265. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  266. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  267. data/lib/puppet/pops/types/type_formatter.rb +3 -4
  268. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  269. data/lib/puppet/pops/types/type_parser.rb +0 -4
  270. data/lib/puppet/pops/types/types.rb +1 -2
  271. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  272. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  273. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  274. data/lib/puppet/property/list.rb +1 -1
  275. data/lib/puppet/provider/aix_object.rb +1 -1
  276. data/lib/puppet/provider/exec/posix.rb +4 -16
  277. data/lib/puppet/provider/group/groupadd.rb +10 -18
  278. data/lib/puppet/provider/nameservice.rb +0 -18
  279. data/lib/puppet/provider/package/apt.rb +2 -34
  280. data/lib/puppet/provider/package/aptitude.rb +0 -6
  281. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  282. data/lib/puppet/provider/package/dpkg.rb +0 -10
  283. data/lib/puppet/provider/package/gem.rb +23 -3
  284. data/lib/puppet/provider/package/nim.rb +6 -11
  285. data/lib/puppet/provider/package/pip.rb +3 -16
  286. data/lib/puppet/provider/package/pkg.rb +2 -23
  287. data/lib/puppet/provider/package/portage.rb +1 -1
  288. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  289. data/lib/puppet/provider/package/puppetserver_gem.rb +17 -8
  290. data/lib/puppet/provider/package/windows/exe_package.rb +1 -30
  291. data/lib/puppet/provider/package/windows/package.rb +1 -2
  292. data/lib/puppet/provider/package/windows.rb +1 -14
  293. data/lib/puppet/provider/package/yum.rb +1 -1
  294. data/lib/puppet/provider/parsedfile.rb +0 -3
  295. data/lib/puppet/provider/service/base.rb +1 -1
  296. data/lib/puppet/provider/service/debian.rb +0 -2
  297. data/lib/puppet/provider/service/init.rb +9 -10
  298. data/lib/puppet/provider/service/launchd.rb +2 -2
  299. data/lib/puppet/provider/service/redhat.rb +1 -1
  300. data/lib/puppet/provider/service/smf.rb +194 -76
  301. data/lib/puppet/provider/service/systemd.rb +6 -16
  302. data/lib/puppet/provider/service/upstart.rb +5 -5
  303. data/lib/puppet/provider/service/windows.rb +0 -38
  304. data/lib/puppet/provider/user/aix.rb +3 -46
  305. data/lib/puppet/provider/user/directoryservice.rb +11 -39
  306. data/lib/puppet/provider/user/useradd.rb +24 -134
  307. data/lib/puppet/provider.rb +1 -14
  308. data/lib/puppet/reference/configuration.rb +8 -7
  309. data/lib/puppet/reference/indirection.rb +1 -1
  310. data/lib/puppet/reference/providers.rb +2 -2
  311. data/lib/puppet/resource/catalog.rb +2 -15
  312. data/lib/puppet/resource/type.rb +3 -119
  313. data/lib/puppet/resource/type_collection.rb +3 -49
  314. data/lib/puppet/resource.rb +6 -127
  315. data/lib/puppet/runtime.rb +2 -13
  316. data/lib/puppet/settings/environment_conf.rb +0 -1
  317. data/lib/puppet/settings/integer_setting.rb +17 -0
  318. data/lib/puppet/settings/port_setting.rb +15 -0
  319. data/lib/puppet/settings/priority_setting.rb +5 -4
  320. data/lib/puppet/settings.rb +82 -98
  321. data/lib/puppet/ssl/base.rb +3 -5
  322. data/lib/puppet/ssl/certificate.rb +0 -6
  323. data/lib/puppet/ssl/certificate_request.rb +1 -12
  324. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  325. data/lib/puppet/ssl/oids.rb +3 -1
  326. data/lib/puppet/ssl/ssl_provider.rb +36 -75
  327. data/lib/puppet/ssl/state_machine.rb +20 -14
  328. data/lib/puppet/ssl/verifier.rb +2 -6
  329. data/lib/puppet/ssl.rb +10 -6
  330. data/lib/puppet/test/test_helper.rb +2 -7
  331. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  332. data/lib/puppet/transaction/persistence.rb +1 -21
  333. data/lib/puppet/transaction/report.rb +3 -19
  334. data/lib/puppet/transaction.rb +1 -7
  335. data/lib/puppet/type/exec.rb +6 -36
  336. data/lib/puppet/type/file/checksum.rb +1 -1
  337. data/lib/puppet/type/file/data_sync.rb +1 -1
  338. data/lib/puppet/type/file/mode.rb +0 -6
  339. data/lib/puppet/type/file/selcontext.rb +1 -1
  340. data/lib/puppet/type/file/source.rb +1 -1
  341. data/lib/puppet/type/file.rb +12 -32
  342. data/lib/puppet/type/filebucket.rb +4 -4
  343. data/lib/puppet/type/group.rb +1 -0
  344. data/lib/puppet/type/package.rb +8 -16
  345. data/lib/puppet/type/resources.rb +1 -1
  346. data/lib/puppet/type/service.rb +41 -26
  347. data/lib/puppet/type/tidy.rb +3 -22
  348. data/lib/puppet/type/user.rb +13 -35
  349. data/lib/puppet/type.rb +1 -77
  350. data/lib/puppet/util/autoload.rb +8 -1
  351. data/lib/puppet/util/command_line.rb +1 -1
  352. data/lib/puppet/util/execution.rb +0 -11
  353. data/lib/puppet/util/filetype.rb +2 -2
  354. data/lib/puppet/util/http_proxy.rb +2 -215
  355. data/lib/puppet/util/json.rb +0 -20
  356. data/lib/puppet/util/log.rb +4 -8
  357. data/lib/puppet/util/logging.rb +25 -1
  358. data/lib/puppet/util/monkey_patches.rb +2 -59
  359. data/lib/puppet/util/package.rb +16 -25
  360. data/lib/puppet/util/pidlock.rb +1 -1
  361. data/lib/puppet/util/posix.rb +5 -54
  362. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  363. data/lib/puppet/util/rdoc.rb +0 -7
  364. data/lib/puppet/util/retry_action.rb +1 -1
  365. data/lib/puppet/util/run_mode.rb +9 -1
  366. data/lib/puppet/util/selinux.rb +4 -30
  367. data/lib/puppet/util/suidmanager.rb +2 -1
  368. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  369. data/lib/puppet/util/tagging.rb +0 -1
  370. data/lib/puppet/util/windows/adsi.rb +0 -46
  371. data/lib/puppet/util/windows/daemon.rb +360 -0
  372. data/lib/puppet/util/windows/error.rb +1 -0
  373. data/lib/puppet/util/windows/eventlog.rb +4 -9
  374. data/lib/puppet/util/windows/file.rb +8 -242
  375. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  376. data/lib/puppet/util/windows/principal.rb +2 -9
  377. data/lib/puppet/util/windows/process.rb +4 -226
  378. data/lib/puppet/util/windows/service.rb +11 -457
  379. data/lib/puppet/util/windows/sid.rb +2 -6
  380. data/lib/puppet/util/windows/string.rb +12 -13
  381. data/lib/puppet/util/windows/user.rb +2 -0
  382. data/lib/puppet/util/windows.rb +3 -11
  383. data/lib/puppet/util/yaml.rb +1 -42
  384. data/lib/puppet/util.rb +5 -5
  385. data/lib/puppet/vendor/require_vendored.rb +0 -1
  386. data/lib/puppet/version.rb +1 -1
  387. data/lib/puppet/x509/cert_provider.rb +29 -1
  388. data/lib/puppet/x509.rb +5 -1
  389. data/lib/puppet.rb +34 -27
  390. data/locales/puppet.pot +9633 -5
  391. data/man/man5/puppet.conf.5 +286 -401
  392. data/man/man8/puppet-agent.8 +2 -5
  393. data/man/man8/puppet-apply.8 +2 -2
  394. data/man/man8/puppet-catalog.8 +9 -9
  395. data/man/man8/puppet-config.8 +1 -1
  396. data/man/man8/puppet-describe.8 +1 -1
  397. data/man/man8/puppet-device.8 +2 -2
  398. data/man/man8/puppet-doc.8 +1 -1
  399. data/man/man8/puppet-epp.8 +1 -1
  400. data/man/man8/puppet-facts.8 +8 -51
  401. data/man/man8/puppet-filebucket.8 +4 -4
  402. data/man/man8/puppet-generate.8 +1 -1
  403. data/man/man8/puppet-help.8 +1 -1
  404. data/man/man8/puppet-lookup.8 +6 -9
  405. data/man/man8/puppet-module.8 +3 -60
  406. data/man/man8/puppet-node.8 +5 -5
  407. data/man/man8/puppet-parser.8 +1 -1
  408. data/man/man8/puppet-plugin.8 +1 -1
  409. data/man/man8/puppet-report.8 +5 -5
  410. data/man/man8/puppet-resource.8 +1 -1
  411. data/man/man8/puppet-script.8 +2 -2
  412. data/man/man8/puppet-ssl.8 +1 -5
  413. data/man/man8/puppet.8 +2 -2
  414. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  415. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  416. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  417. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  418. data/spec/fixtures/ssl/ca.pem +35 -57
  419. data/spec/fixtures/ssl/crl.pem +18 -28
  420. data/spec/fixtures/ssl/ec-key.pem +11 -11
  421. data/spec/fixtures/ssl/ec.pem +24 -33
  422. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  423. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  424. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  425. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  426. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  427. data/spec/fixtures/ssl/intermediate.pem +36 -57
  428. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  429. data/spec/fixtures/ssl/pluto.pem +30 -52
  430. data/spec/fixtures/ssl/request-key.pem +57 -107
  431. data/spec/fixtures/ssl/request.pem +26 -47
  432. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  433. data/spec/fixtures/ssl/revoked.pem +30 -52
  434. data/spec/fixtures/ssl/signed-key.pem +57 -107
  435. data/spec/fixtures/ssl/signed.pem +30 -52
  436. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  437. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  438. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  439. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  440. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  441. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  442. data/spec/fixtures/unit/forge/bacula.json +1 -1
  443. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  444. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  445. data/spec/integration/application/agent_spec.rb +50 -406
  446. data/spec/integration/application/apply_spec.rb +1 -20
  447. data/spec/integration/application/filebucket_spec.rb +16 -32
  448. data/spec/integration/application/help_spec.rb +2 -0
  449. data/spec/integration/application/lookup_spec.rb +50 -81
  450. data/spec/integration/application/module_spec.rb +0 -21
  451. data/spec/integration/application/plugin_spec.rb +24 -2
  452. data/spec/integration/configurer_spec.rb +2 -18
  453. data/spec/integration/defaults_spec.rb +14 -3
  454. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  455. data/spec/integration/http/client_spec.rb +4 -63
  456. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  457. data/spec/integration/indirector/facts/facter_spec.rb +39 -93
  458. data/spec/integration/network/http_pool_spec.rb +3 -21
  459. data/spec/integration/parser/catalog_spec.rb +0 -38
  460. data/spec/integration/parser/node_spec.rb +0 -9
  461. data/spec/integration/parser/pcore_resource_spec.rb +0 -47
  462. data/spec/integration/resource/type_collection_spec.rb +6 -2
  463. data/spec/integration/transaction/report_spec.rb +1 -1
  464. data/spec/integration/transaction_spec.rb +9 -4
  465. data/spec/integration/type/exec_spec.rb +45 -70
  466. data/spec/integration/type/file_spec.rb +7 -6
  467. data/spec/integration/type/package_spec.rb +6 -6
  468. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  469. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  470. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  471. data/spec/integration/util/windows/principal_spec.rb +0 -21
  472. data/spec/integration/util/windows/process_spec.rb +9 -1
  473. data/spec/integration/util/windows/registry_spec.rb +10 -6
  474. data/spec/integration/util/windows/security_spec.rb +1 -1
  475. data/spec/lib/matchers/include.rb +27 -0
  476. data/spec/lib/matchers/include_spec.rb +32 -0
  477. data/spec/lib/puppet/test_ca.rb +2 -7
  478. data/spec/lib/puppet_spec/https.rb +1 -1
  479. data/spec/lib/puppet_spec/modules.rb +2 -13
  480. data/spec/lib/puppet_spec/puppetserver.rb +3 -55
  481. data/spec/lib/puppet_spec/settings.rb +1 -1
  482. data/spec/shared_behaviours/documentation_on_faces.rb +2 -0
  483. data/spec/spec_helper.rb +17 -13
  484. data/spec/unit/agent_spec.rb +8 -38
  485. data/spec/unit/application/agent_spec.rb +19 -33
  486. data/spec/unit/application/apply_spec.rb +56 -76
  487. data/spec/unit/application/facts_spec.rb +12 -456
  488. data/spec/unit/application/filebucket_spec.rb +43 -39
  489. data/spec/unit/application/lookup_spec.rb +10 -131
  490. data/spec/unit/application/resource_spec.rb +0 -29
  491. data/spec/unit/application/ssl_spec.rb +2 -25
  492. data/spec/unit/application_spec.rb +9 -51
  493. data/spec/unit/certificate_factory_spec.rb +1 -1
  494. data/spec/unit/configurer/downloader_spec.rb +6 -8
  495. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  496. data/spec/unit/configurer_spec.rb +68 -327
  497. data/spec/unit/confine/feature_spec.rb +1 -1
  498. data/spec/unit/confine_spec.rb +2 -8
  499. data/spec/unit/context/trusted_information_spec.rb +2 -6
  500. data/spec/unit/daemon_spec.rb +11 -2
  501. data/spec/unit/defaults_spec.rb +68 -55
  502. data/spec/unit/environments_spec.rb +68 -408
  503. data/spec/unit/face/generate_spec.rb +0 -64
  504. data/spec/unit/face/node_spec.rb +11 -0
  505. data/spec/unit/face/plugin_spec.rb +73 -33
  506. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  507. data/spec/unit/file_bucket/file_spec.rb +1 -1
  508. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -41
  509. data/spec/unit/file_serving/configuration_spec.rb +10 -26
  510. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  511. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  512. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  513. data/spec/unit/file_system_spec.rb +4 -56
  514. data/spec/unit/forge/module_release_spec.rb +10 -5
  515. data/spec/unit/functions/assert_type_spec.rb +1 -1
  516. data/spec/unit/functions/camelcase_spec.rb +1 -1
  517. data/spec/unit/functions/capitalize_spec.rb +1 -1
  518. data/spec/unit/functions/downcase_spec.rb +1 -1
  519. data/spec/unit/functions/empty_spec.rb +0 -10
  520. data/spec/unit/functions/logging_spec.rb +0 -1
  521. data/spec/unit/functions/lookup_spec.rb +0 -64
  522. data/spec/unit/functions/unwrap_spec.rb +0 -8
  523. data/spec/unit/functions/upcase_spec.rb +1 -1
  524. data/spec/unit/functions/versioncmp_spec.rb +4 -40
  525. data/spec/unit/functions4_spec.rb +2 -2
  526. data/spec/unit/gettext/config_spec.rb +0 -12
  527. data/spec/unit/http/client_spec.rb +8 -84
  528. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  529. data/spec/unit/http/external_client_spec.rb +4 -4
  530. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  531. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  532. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  533. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  534. data/spec/unit/http/resolver_spec.rb +13 -13
  535. data/spec/unit/http/service/compiler_spec.rb +0 -193
  536. data/spec/unit/http/service/file_server_spec.rb +3 -3
  537. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  538. data/spec/unit/http/service_spec.rb +0 -1
  539. data/spec/unit/http/session_spec.rb +16 -14
  540. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  541. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -101
  542. data/spec/unit/indirector/catalog/rest_spec.rb +0 -8
  543. data/spec/unit/indirector/face_spec.rb +1 -0
  544. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  545. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  546. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  547. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  548. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  549. data/spec/unit/indirector/file_server_spec.rb +1 -15
  550. data/spec/unit/indirector/indirection_spec.rb +15 -18
  551. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  552. data/spec/unit/indirector/request_spec.rb +0 -264
  553. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  554. data/spec/unit/indirector/rest_spec.rb +98 -752
  555. data/spec/unit/indirector/store_configs_spec.rb +7 -0
  556. data/spec/unit/indirector_spec.rb +2 -2
  557. data/spec/unit/interface/action_spec.rb +9 -0
  558. data/spec/unit/module_spec.rb +1 -15
  559. data/spec/unit/module_tool/applications/installer_spec.rb +0 -105
  560. data/spec/unit/network/authconfig_spec.rb +2 -129
  561. data/spec/unit/network/authorization_spec.rb +2 -55
  562. data/spec/unit/network/formats_spec.rb +4 -51
  563. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  564. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  565. data/spec/unit/network/http/api_spec.rb +10 -0
  566. data/spec/unit/network/http/connection_spec.rb +19 -41
  567. data/spec/unit/network/http/handler_spec.rb +0 -1
  568. data/spec/unit/network/http_pool_spec.rb +0 -4
  569. data/spec/unit/node/environment_spec.rb +33 -21
  570. data/spec/unit/node_spec.rb +2 -60
  571. data/spec/unit/parser/compiler_spec.rb +19 -3
  572. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  573. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  574. data/spec/unit/parser/resource_spec.rb +8 -14
  575. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  576. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  577. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  578. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  579. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  580. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  581. data/spec/unit/pops/parser/parse_containers_spec.rb +13 -2
  582. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  583. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  584. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  585. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -5
  586. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  587. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  588. data/spec/unit/pops/types/type_calculator_spec.rb +6 -12
  589. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  590. data/spec/unit/pops/validator/validator_spec.rb +61 -51
  591. data/spec/unit/pops/visitor_spec.rb +1 -1
  592. data/spec/unit/property_spec.rb +0 -1
  593. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  594. data/spec/unit/provider/nameservice_spec.rb +64 -122
  595. data/spec/unit/provider/package/apt_spec.rb +23 -28
  596. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  597. data/spec/unit/provider/package/base_spec.rb +5 -6
  598. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  599. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  600. data/spec/unit/provider/package/gem_spec.rb +33 -1
  601. data/spec/unit/provider/package/nim_spec.rb +0 -42
  602. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  603. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  604. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  605. data/spec/unit/provider/package/pip_spec.rb +12 -44
  606. data/spec/unit/provider/package/pkg_spec.rb +4 -29
  607. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  608. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -3
  609. data/spec/unit/provider/package/puppetserver_gem_spec.rb +3 -3
  610. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -17
  611. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  612. data/spec/unit/provider/service/gentoo_spec.rb +5 -6
  613. data/spec/unit/provider/service/init_spec.rb +9 -16
  614. data/spec/unit/provider/service/launchd_spec.rb +0 -11
  615. data/spec/unit/provider/service/openwrt_spec.rb +29 -23
  616. data/spec/unit/provider/service/redhat_spec.rb +2 -3
  617. data/spec/unit/provider/service/smf_spec.rb +401 -165
  618. data/spec/unit/provider/service/systemd_spec.rb +9 -54
  619. data/spec/unit/provider/service/windows_spec.rb +0 -203
  620. data/spec/unit/provider/user/aix_spec.rb +0 -105
  621. data/spec/unit/provider/user/directoryservice_spec.rb +36 -68
  622. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  623. data/spec/unit/provider/user/pw_spec.rb +0 -2
  624. data/spec/unit/provider/user/useradd_spec.rb +5 -114
  625. data/spec/unit/provider_spec.rb +12 -22
  626. data/spec/unit/puppet_spec.rb +4 -12
  627. data/spec/unit/resource/catalog_spec.rb +2 -15
  628. data/spec/unit/resource/type_collection_spec.rb +2 -22
  629. data/spec/unit/resource/type_spec.rb +1 -1
  630. data/spec/unit/resource_spec.rb +12 -125
  631. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  632. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  633. data/spec/unit/settings/port_setting_spec.rb +31 -0
  634. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  635. data/spec/unit/settings_spec.rb +79 -110
  636. data/spec/unit/ssl/base_spec.rb +37 -3
  637. data/spec/unit/ssl/certificate_request_spec.rb +21 -45
  638. data/spec/unit/ssl/certificate_spec.rb +2 -11
  639. data/spec/unit/ssl/ssl_provider_spec.rb +3 -80
  640. data/spec/unit/ssl/state_machine_spec.rb +5 -21
  641. data/spec/unit/ssl/verifier_spec.rb +0 -21
  642. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  643. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  644. data/spec/unit/transaction/persistence_spec.rb +0 -51
  645. data/spec/unit/transaction/report_spec.rb +0 -2
  646. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  647. data/spec/unit/transaction_spec.rb +55 -96
  648. data/spec/unit/type/exec_spec.rb +29 -76
  649. data/spec/unit/type/file/checksum_spec.rb +6 -6
  650. data/spec/unit/type/file/content_spec.rb +2 -1
  651. data/spec/unit/type/file/ensure_spec.rb +1 -1
  652. data/spec/unit/type/file/mode_spec.rb +1 -1
  653. data/spec/unit/type/file/selinux_spec.rb +5 -3
  654. data/spec/unit/type/file/source_spec.rb +4 -5
  655. data/spec/unit/type/file_spec.rb +18 -6
  656. data/spec/unit/type/group_spec.rb +6 -13
  657. data/spec/unit/type/package_spec.rb +1 -1
  658. data/spec/unit/type/resources_spec.rb +7 -7
  659. data/spec/unit/type/service_spec.rb +189 -87
  660. data/spec/unit/type/tidy_spec.rb +8 -24
  661. data/spec/unit/type_spec.rb +24 -4
  662. data/spec/unit/util/at_fork_spec.rb +2 -2
  663. data/spec/unit/util/autoload_spec.rb +1 -5
  664. data/spec/unit/util/backups_spec.rb +2 -3
  665. data/spec/unit/util/execution_spec.rb +11 -44
  666. data/spec/unit/util/inifile_spec.rb +14 -6
  667. data/spec/unit/util/log_spec.rb +7 -8
  668. data/spec/unit/util/logging_spec.rb +3 -5
  669. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  670. data/spec/unit/util/posix_spec.rb +15 -363
  671. data/spec/unit/util/run_mode_spec.rb +21 -121
  672. data/spec/unit/util/selinux_spec.rb +68 -163
  673. data/spec/unit/util/storage_spec.rb +1 -3
  674. data/spec/unit/util/suidmanager_spec.rb +41 -44
  675. data/spec/unit/util/windows/sid_spec.rb +0 -41
  676. data/spec/unit/util/windows/string_spec.rb +1 -3
  677. data/spec/unit/util/yaml_spec.rb +13 -92
  678. data/spec/unit/util_spec.rb +6 -31
  679. data/tasks/generate_cert_fixtures.rake +7 -17
  680. data/tasks/parallel.rake +3 -3
  681. metadata +138 -239
  682. data/conf/auth.conf +0 -150
  683. data/ext/README.md +0 -13
  684. data/lib/puppet/application/cert.rb +0 -76
  685. data/lib/puppet/application/key.rb +0 -4
  686. data/lib/puppet/application/man.rb +0 -4
  687. data/lib/puppet/application/status.rb +0 -4
  688. data/lib/puppet/face/key.rb +0 -16
  689. data/lib/puppet/face/man.rb +0 -145
  690. data/lib/puppet/face/module/build.rb +0 -14
  691. data/lib/puppet/face/module/generate.rb +0 -14
  692. data/lib/puppet/face/module/search.rb +0 -103
  693. data/lib/puppet/face/status.rb +0 -51
  694. data/lib/puppet/facter_impl.rb +0 -96
  695. data/lib/puppet/ffi/posix/constants.rb +0 -14
  696. data/lib/puppet/ffi/posix/functions.rb +0 -24
  697. data/lib/puppet/ffi/posix.rb +0 -10
  698. data/lib/puppet/file_serving/mount/scripts.rb +0 -24
  699. data/lib/puppet/indirector/certificate/file.rb +0 -9
  700. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  701. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  702. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  703. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  704. data/lib/puppet/indirector/file_content/http.rb +0 -22
  705. data/lib/puppet/indirector/key/file.rb +0 -46
  706. data/lib/puppet/indirector/key/memory.rb +0 -7
  707. data/lib/puppet/indirector/ssl_file.rb +0 -162
  708. data/lib/puppet/indirector/status/local.rb +0 -12
  709. data/lib/puppet/indirector/status/rest.rb +0 -27
  710. data/lib/puppet/indirector/status.rb +0 -3
  711. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  712. data/lib/puppet/network/auth_config_parser.rb +0 -90
  713. data/lib/puppet/network/authstore.rb +0 -283
  714. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  715. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  716. data/lib/puppet/network/http/base_pool.rb +0 -36
  717. data/lib/puppet/network/http/compression.rb +0 -127
  718. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  719. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  720. data/lib/puppet/network/rest_controller.rb +0 -2
  721. data/lib/puppet/network/rights.rb +0 -210
  722. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  723. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  724. data/lib/puppet/parser/environment_compiler.rb +0 -202
  725. data/lib/puppet/pops/types/enumeration.rb +0 -16
  726. data/lib/puppet/resource/capability_finder.rb +0 -154
  727. data/lib/puppet/rest/errors.rb +0 -15
  728. data/lib/puppet/rest/response.rb +0 -35
  729. data/lib/puppet/rest/route.rb +0 -85
  730. data/lib/puppet/rest/routes.rb +0 -135
  731. data/lib/puppet/settings/alias_setting.rb +0 -37
  732. data/lib/puppet/ssl/host.rb +0 -505
  733. data/lib/puppet/ssl/key.rb +0 -61
  734. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  735. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  736. data/lib/puppet/ssl/validator.rb +0 -61
  737. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  738. data/lib/puppet/status.rb +0 -40
  739. data/lib/puppet/util/connection.rb +0 -88
  740. data/lib/puppet/util/fact_dif.rb +0 -81
  741. data/lib/puppet/util/ssl.rb +0 -83
  742. data/lib/puppet/util/windows/api_types.rb +0 -309
  743. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  744. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  745. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  746. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  747. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  748. data/lib/puppet/vendor/pathspec/README.md +0 -53
  749. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  750. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  751. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  752. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  753. data/man/man8/puppet-key.8 +0 -126
  754. data/man/man8/puppet-man.8 +0 -76
  755. data/man/man8/puppet-status.8 +0 -108
  756. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  757. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  758. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  759. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  760. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  761. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  762. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  763. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  764. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  765. data/spec/fixtures/ssl/oid-key.pem +0 -117
  766. data/spec/fixtures/ssl/oid.pem +0 -69
  767. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  768. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  769. data/spec/integration/application/resource_spec.rb +0 -68
  770. data/spec/integration/application/ssl_spec.rb +0 -20
  771. data/spec/integration/l10n/compiler_spec.rb +0 -37
  772. data/spec/integration/network/authconfig_spec.rb +0 -256
  773. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  774. data/spec/shared_contexts/l10n.rb +0 -32
  775. data/spec/unit/application/man_spec.rb +0 -52
  776. data/spec/unit/capability_spec.rb +0 -414
  777. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  778. data/spec/unit/face/key_spec.rb +0 -9
  779. data/spec/unit/face/module/search_spec.rb +0 -231
  780. data/spec/unit/face/status_spec.rb +0 -9
  781. data/spec/unit/facter_impl_spec.rb +0 -31
  782. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  783. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  784. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  785. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  786. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  787. data/spec/unit/indirector/key/file_spec.rb +0 -78
  788. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  789. data/spec/unit/indirector/status/local_spec.rb +0 -10
  790. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  791. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  792. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  793. data/spec/unit/network/authstore_spec.rb +0 -407
  794. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  795. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  796. data/spec/unit/network/http/compression_spec.rb +0 -240
  797. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  798. data/spec/unit/network/http_spec.rb +0 -9
  799. data/spec/unit/network/rights_spec.rb +0 -439
  800. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  801. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  802. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  803. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  804. data/spec/unit/rest/route_spec.rb +0 -132
  805. data/spec/unit/ssl/host_spec.rb +0 -645
  806. data/spec/unit/ssl/key_spec.rb +0 -173
  807. data/spec/unit/ssl/validator_spec.rb +0 -278
  808. data/spec/unit/status_spec.rb +0 -45
  809. data/spec/unit/util/json_spec.rb +0 -126
  810. data/spec/unit/util/ssl_spec.rb +0 -91
  811. data/spec/unit/util/windows_spec.rb +0 -23
@@ -1,17 +1,14 @@
1
1
  require 'spec_helper'
2
2
  require 'puppet/environments'
3
3
  require 'puppet/file_system'
4
+ require 'matchers/include'
5
+ require 'matchers/include_in_order'
4
6
 
7
+ module PuppetEnvironments
5
8
  describe Puppet::Environments do
6
- FS = Puppet::FileSystem
9
+ include Matchers::Include
7
10
 
8
- module FsRemove
9
- def remove
10
- @properties[:directory?] = false
11
- @properties[:exist?] = false
12
- @properties[:executable?] = false
13
- end
14
- end
11
+ FS = Puppet::FileSystem
15
12
 
16
13
  before(:each) do
17
14
  Puppet.settings.initialize_global_settings
@@ -52,7 +49,7 @@ describe Puppet::Environments do
52
49
  loader_from(:filesystem => [directory_tree, global_path_1, global_path_2],
53
50
  :directory => directory_tree.children.first,
54
51
  :modulepath => [global_path_1_location, global_path_2_location]) do |loader|
55
- expect(loader.list).to contain_exactly(
52
+ expect(loader.list).to include_in_any_order(
56
53
  environment(:an_environment).
57
54
  with_manifest("#{FS.path_string(directory_tree)}/envdir/an_environment/manifests").
58
55
  with_modulepath(["#{FS.path_string(directory_tree)}/envdir/an_environment/modules",
@@ -90,7 +87,7 @@ describe Puppet::Environments do
90
87
 
91
88
  loader_from(:filesystem => [envdir],
92
89
  :directory => envdir) do |loader|
93
- expect(loader.list).to contain_exactly(environment(:env1), environment(:env2))
90
+ expect(loader.list).to include_in_any_order(environment(:env1), environment(:env2))
94
91
  end
95
92
  end
96
93
 
@@ -139,14 +136,6 @@ describe Puppet::Environments do
139
136
  end
140
137
  end
141
138
 
142
- it "implements guard and unguard" do
143
- loader_from(:filesystem => [directory_tree],
144
- :directory => directory_tree.children.first) do |loader|
145
- expect(loader.guard('env1')).to be_nil
146
- expect(loader.unguard('env1')).to be_nil
147
- end
148
- end
149
-
150
139
  context "with an environment.conf" do
151
140
  let(:envdir) do
152
141
  FS::MemoryFile.a_directory(File.expand_path("envdir"), [
@@ -417,29 +406,33 @@ config_version=$vardir/random/scripts
417
406
  ]),
418
407
  ])
419
408
 
420
- cached_loader_from(:filesystem => [original_envdir], :directory => original_envdir) do |loader|
421
- original_env = loader.get("env3") # force the environment.conf to be read
422
-
423
- changed_envdir = FS::MemoryFile.a_directory(base_dir, [
424
- FS::MemoryFile.a_directory("env3", [
425
- FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
426
- manifest=/manifest_changed
427
- modulepath=/modules_changed
428
- environment_timeout=0
429
- EOF
430
- ]),
431
- ])
409
+ FS.overlay(original_envdir) do
410
+ dir_loader = Puppet::Environments::Directories.new(original_envdir, [])
411
+ loader = Puppet::Environments::Cached.new(dir_loader)
412
+ Puppet.override(:environments => loader) do
413
+ original_env = loader.get("env3") # force the environment.conf to be read
414
+
415
+ changed_envdir = FS::MemoryFile.a_directory(base_dir, [
416
+ FS::MemoryFile.a_directory("env3", [
417
+ FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
418
+ manifest=/manifest_changed
419
+ modulepath=/modules_changed
420
+ environment_timeout=0
421
+ EOF
422
+ ]),
423
+ ])
432
424
 
433
- FS.overlay(changed_envdir) do
434
- changed_env = loader.get("env3")
425
+ FS.overlay(changed_envdir) do
426
+ changed_env = loader.get("env3")
435
427
 
436
- expect(original_env).to environment(:env3).
437
- with_manifest(File.expand_path("/manifest_orig")).
438
- with_full_modulepath([File.expand_path("/modules_orig")])
428
+ expect(original_env).to environment(:env3).
429
+ with_manifest(File.expand_path("/manifest_orig")).
430
+ with_full_modulepath([File.expand_path("/modules_orig")])
439
431
 
440
- expect(changed_env).to environment(:env3).
441
- with_manifest(File.expand_path("/manifest_changed")).
442
- with_full_modulepath([File.expand_path("/modules_changed")])
432
+ expect(changed_env).to environment(:env3).
433
+ with_manifest(File.expand_path("/manifest_changed")).
434
+ with_full_modulepath([File.expand_path("/modules_changed")])
435
+ end
443
436
  end
444
437
  end
445
438
  end
@@ -565,49 +558,24 @@ config_version=$vardir/random/scripts
565
558
 
566
559
  describe "cached loaders" do
567
560
  it "lists environments" do
568
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
569
- expect(loader.list).to contain_exactly(
561
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
562
+ expect(Puppet::Environments::Cached.new(loader).list).to include_in_any_order(
570
563
  environment(:an_environment),
571
564
  environment(:another_environment),
572
565
  environment(:symlinked_environment))
573
566
  end
574
567
  end
575
568
 
576
- it "returns the same cached environment object for list and get methods" do
577
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
578
- env = loader.list.find { |e| e.name == :an_environment }
579
-
580
- expect(env).to equal(loader.get(:an_environment)) # same object
581
- end
582
- end
583
-
584
- it "returns the same cached environment object for multiple list calls" do
585
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
586
- expect(loader.list.first).to equal(loader.list.first) # same object
587
- end
588
- end
589
-
590
- it "expires environments and returns a new environment object with the same value" do
591
- Puppet[:environment_timeout] = "0"
592
-
593
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
594
- a = loader.list.first
595
- b = loader.list.first
596
- expect(a).to eq(b) # same value
597
- expect(a).to_not equal(b) # not same object
598
- end
599
- end
600
-
601
569
  it "has search_paths" do
602
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
603
- expect(loader.search_paths).to eq(["file://#{directory_tree.children.first}"])
570
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
571
+ expect(Puppet::Environments::Cached.new(loader).search_paths).to eq(["file://#{directory_tree.children.first}"])
604
572
  end
605
573
  end
606
574
 
607
575
  context "#get" do
608
576
  it "gets an environment" do
609
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
610
- expect(loader.get(:an_environment)).to environment(:an_environment)
577
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
578
+ expect(Puppet::Environments::Cached.new(loader).get(:an_environment)).to environment(:an_environment)
611
579
  end
612
580
  end
613
581
 
@@ -623,89 +591,17 @@ config_version=$vardir/random/scripts
623
591
  cached.get(:cached)
624
592
  end
625
593
 
626
- it "does not list deleted environments" do
627
- env3 = FS::MemoryFile.a_directory("env3", [
628
- FS::MemoryFile.a_regular_file_containing("environment.conf", '')
629
- ])
630
-
631
- envdir = FS::MemoryFile.a_directory(File.expand_path("envdir"), [
632
- FS::MemoryFile.a_directory("env1", [
633
- FS::MemoryFile.a_regular_file_containing("environment.conf", '')
634
- ]),
635
- FS::MemoryFile.a_directory("env2", [
636
- FS::MemoryFile.a_regular_file_containing("environment.conf", '')
637
- ]),
638
- env3
639
- ])
640
-
641
- loader_from(:filesystem => [envdir], :directory => envdir) do |loader|
642
- cached = Puppet::Environments::Cached.new(loader)
643
- cached.get(:env1)
644
- cached.get(:env2)
645
- cached.get(:env3)
646
- env3.extend(FsRemove).remove
647
-
648
- expect(cached.list).to contain_exactly(environment(:env1),environment(:env2))
649
- expect(cached.get(:env3)).to be_nil
650
- end
651
- end
652
-
653
- it "normalizes environment name to symbol" do
654
- env = Puppet::Node::Environment.create(:cached, [])
655
- mocked_loader = double('loader')
656
-
657
- expect(mocked_loader).not_to receive(:get).with('cached')
658
- expect(mocked_loader).to receive(:get).with(:cached).and_return(env).once
659
- expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).once
660
-
661
- cached = Puppet::Environments::Cached.new(mocked_loader)
662
- cached.get('cached')
663
- cached.get(:cached)
664
- end
665
-
666
- it "caches environment name as symbol and only once" do
667
- mocked_loader = double('loader')
668
-
669
- env = Puppet::Node::Environment.create(:cached, [])
670
- allow(mocked_loader).to receive(:get).with(:cached).and_return(env)
671
- allow(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20))
672
-
673
- cached = Puppet::Environments::Cached.new(mocked_loader)
674
- cached.get(:cached)
675
- cached.get('cached')
676
-
677
- expect(cached.instance_variable_get(:@cache).keys).to eq([:cached])
678
- end
679
-
680
- it "is able to cache multiple environments" do
681
- mocked_loader = double('loader')
682
-
683
- env1 = Puppet::Node::Environment.create(:env1, [])
684
- allow(mocked_loader).to receive(:get).with(:env1).and_return(env1)
685
- allow(mocked_loader).to receive(:get_conf).with(:env1).and_return(Puppet::Settings::EnvironmentConf.static_for(env1, 20))
686
-
687
- env2 = Puppet::Node::Environment.create(:env2, [])
688
- allow(mocked_loader).to receive(:get).with(:env2).and_return(env2)
689
- allow(mocked_loader).to receive(:get_conf).with(:env2).and_return(Puppet::Settings::EnvironmentConf.static_for(env2, 20))
690
-
691
- cached = Puppet::Environments::Cached.new(mocked_loader)
692
- cached.get('env1')
693
- cached.get('env2')
694
-
695
- expect(cached.instance_variable_get(:@cache).keys).to eq([:env1, :env2])
696
- end
697
-
698
594
  it "returns nil if env not found" do
699
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
700
- expect(loader.get(:doesnotexist)).to be_nil
595
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
596
+ expect(Puppet::Environments::Cached.new(loader).get(:doesnotexist)).to be_nil
701
597
  end
702
598
  end
703
599
  end
704
600
 
705
601
  context "#get!" do
706
602
  it "gets an environment" do
707
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
708
- expect(loader.get!(:an_environment)).to environment(:an_environment)
603
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
604
+ expect(Puppet::Environments::Cached.new(loader).get!(:an_environment)).to environment(:an_environment)
709
605
  end
710
606
  end
711
607
 
@@ -722,54 +618,29 @@ config_version=$vardir/random/scripts
722
618
  end
723
619
 
724
620
  it "raises error if environment is not found" do
725
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
621
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
726
622
  expect do
727
- loader.get!(:doesnotexist)
623
+ Puppet::Environments::Cached.new(loader).get!(:doesnotexist)
728
624
  end.to raise_error(Puppet::Environments::EnvironmentNotFound)
729
625
  end
730
626
  end
731
627
  end
732
628
 
733
- context "#get_conf" do
734
- it "loads environment.conf" do
735
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
736
- expect(loader.get_conf(:an_environment)).to match_environment_conf(:an_environment).
737
- with_env_path(directory_tree.children.first).
738
- with_global_module_path([])
739
- end
740
- end
741
-
742
- it "always reloads environment.conf" do
743
- env = Puppet::Node::Environment.create(:cached, [])
744
- mocked_loader = double('loader')
745
- expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).twice
746
-
747
- cached = Puppet::Environments::Cached.new(mocked_loader)
748
-
749
- cached.get_conf(:cached)
750
- cached.get_conf(:cached)
751
- end
752
-
753
- it "normalizes environment name to symbol" do
754
- env = Puppet::Node::Environment.create(:cached, [])
755
- mocked_loader = double('loader')
756
- expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).twice
757
-
758
- cached = Puppet::Environments::Cached.new(mocked_loader)
629
+ context "expiration policies" do
630
+ let(:service) { ReplayExpirationService.new }
759
631
 
760
- cached.get_conf('cached')
761
- cached.get_conf(:cached)
762
- end
632
+ # The environment named `:an_environment` will already be loaded when the
633
+ # block is yielded to
634
+ def with_environment_loaded(service, &block)
635
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
636
+ using_expiration_service(service) do
637
+ cached = Puppet::Environments::Cached.new(loader)
638
+ cached.get!(:an_environment)
763
639
 
764
- it "returns nil if environment is not found" do
765
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
766
- expect(loader.get_conf(:doesnotexist)).to be_nil
640
+ yield cached if block_given?
641
+ end
767
642
  end
768
643
  end
769
- end
770
-
771
- context "expiration policies" do
772
- let(:service) { ReplayExpirationService.new }
773
644
 
774
645
  it "notifies when the environment is first created" do
775
646
  with_environment_loaded(service)
@@ -789,7 +660,12 @@ config_version=$vardir/random/scripts
789
660
  end
790
661
 
791
662
  it "evicts an expired environment" do
792
- expect(service).to receive(:expired?).and_return(true)
663
+ service = ReplayExpirationService.new
664
+
665
+ # The `Cached#clear_all_expired` method tries to optimize the case where
666
+ # no entries are expired. But if `Time.now < @next_expiration` and there is
667
+ # an expired entry, then the `service#expired?` method is called twice.
668
+ expect(service).to receive(:expired?).twice.and_return(true)
793
669
 
794
670
  with_environment_loaded(service) do |cached|
795
671
  cached.get!(:an_environment)
@@ -801,7 +677,6 @@ config_version=$vardir/random/scripts
801
677
 
802
678
  it "evicts an environment that hasn't been recently touched" do
803
679
  Puppet[:environment_timeout] = 1
804
- Puppet[:environment_timeout_mode] = :from_last_used
805
680
 
806
681
  with_environment_loaded(service) do |cached|
807
682
  future = Time.now + 60
@@ -818,7 +693,6 @@ config_version=$vardir/random/scripts
818
693
 
819
694
  it "reuses an environment that was recently touched" do
820
695
  Puppet[:environment_timeout] = 60
821
- Puppet[:environment_timeout_mode] = :from_last_used
822
696
 
823
697
  with_environment_loaded(service) do |cached|
824
698
  # reuse the already cached environment
@@ -831,9 +705,9 @@ config_version=$vardir/random/scripts
831
705
 
832
706
  it "evicts a recently touched environment" do
833
707
  Puppet[:environment_timeout] = 60
834
- Puppet[:environment_timeout_mode] = :from_last_used
835
708
 
836
- expect(service).to receive(:expired?).and_return(true)
709
+ # see note above about "twice"
710
+ expect(service).to receive(:expired?).twice.and_return(true)
837
711
 
838
712
  with_environment_loaded(service) do |cached|
839
713
  # even though the environment was recently touched, it's been expired
@@ -843,201 +717,13 @@ config_version=$vardir/random/scripts
843
717
  expect(service.created_envs).to eq([:an_environment, :an_environment])
844
718
  expect(service.evicted_envs).to eq([:an_environment])
845
719
  end
846
-
847
- it "evicts expired environments when listing" do
848
- expect(service).to receive(:expired?).with(:an_environment).and_return(true)
849
-
850
- with_environment_loaded(service) do |cached|
851
- cached.list
852
- end
853
-
854
- expect(service.evicted_envs).to eq([:an_environment])
855
- end
856
-
857
- context "when guarding an environment" do
858
- before :each do
859
- Puppet[:environment_timeout] = 0
860
- end
861
-
862
- let(:name) { :an_environment }
863
-
864
- def with_guard(cached, name, &block)
865
- cached.guard(name)
866
- begin
867
- yield
868
- ensure
869
- cached.unguard(name)
870
- end
871
- end
872
-
873
- it "evicts an expired and unguarded environment" do
874
- with_environment_loaded(service) do |cached|
875
- cached.get!(name)
876
- end
877
-
878
- expect(service.created_envs).to eq([name, name])
879
- expect(service.evicted_envs).to eq([name])
880
- end
881
-
882
- it "does not evict an expired, but guarded environment" do
883
- with_environment_loaded(service) do |cached|
884
- with_guard(cached, name) do
885
- cached.get!(name) # these shouldn't reload
886
- cached.get!(name)
887
- end
888
- end
889
-
890
- expect(service.created_envs).to eq([name])
891
- expect(service.evicted_envs).to eq([])
892
- end
893
-
894
- it "does not evict an environment marked for expiration, but is guarded" do
895
- Puppet[:environment_timeout] = 'unlimited'
896
-
897
- expect(service).to receive(:expired?).never
898
-
899
- with_environment_loaded(service) do |cached|
900
- with_guard(cached, name) do
901
- cached.get!(name)
902
- end
903
- end
904
-
905
- expect(service.created_envs).to eq([name])
906
- expect(service.evicted_envs).to eq([])
907
- end
908
-
909
- it "evicts an environment that is no longer guarded" do
910
- with_environment_loaded(service) do |cached|
911
- with_guard(cached, name) {}
912
-
913
- cached.get!(name) # this reloads
914
- end
915
-
916
- expect(service.created_envs).to eq([name, name])
917
- expect(service.evicted_envs).to eq([name])
918
- end
919
-
920
- it "can nest guards" do
921
- with_environment_loaded(service) do |cached|
922
- with_guard(cached, name) do
923
- with_guard(cached, name) do
924
- cached.get!(name) # doesn't reload
925
- end
926
- end
927
- end
928
-
929
- expect(service.created_envs).to eq([name])
930
- expect(service.evicted_envs).to eq([])
931
- end
932
- end
933
- end
934
-
935
- context '#clear' do
936
- let(:service) { ReplayExpirationService.new }
937
-
938
- it "evicts an environment" do
939
- with_environment_loaded(service) do |cached|
940
- cached.clear(:an_environment)
941
- end
942
-
943
- expect(service.evicted_envs).to eq([:an_environment])
944
- end
945
-
946
- it "normalizes environment name to symbol" do
947
- with_environment_loaded(service) do |cached|
948
- cached.clear('an_environment')
949
- end
950
-
951
- expect(service.evicted_envs).to eq([:an_environment])
952
- end
953
720
  end
954
721
 
955
- context '#clear_all' do
956
- let(:service) { ReplayExpirationService.new }
957
- let(:envdir) { File.expand_path("envdir") }
958
- let(:default_dir) { File.join(envdir, "cached_env", "modules") }
959
- let(:expected_dir) { File.join(envdir, "cached_env", "site") }
960
-
961
- let(:base_dir) do
962
- FS::MemoryFile.a_directory(envdir, [
963
- FS::MemoryFile.a_directory("cached_env", [
964
- FS::MemoryFile.a_missing_file("environment.conf")
965
- ])
966
- ])
967
- end
968
-
969
- let(:updated_dir) do
970
- FS::MemoryFile.a_directory(envdir, [
971
- FS::MemoryFile.a_directory("cached_env", [
972
- FS::MemoryFile.a_directory("site"),
973
- FS::MemoryFile.a_missing_directory("modules"),
974
- FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
975
- modulepath=site
976
- environment_timeout=unlimited
977
- EOF
978
- ])
979
- ])
980
- end
981
-
982
- it 'evicts all environments' do
983
- with_environment_loaded(service) do |cached|
984
- cached.get(:an_environment)
985
- cached.get(:another_environment)
986
- cached.clear_all
987
-
988
- expect(service.evicted_envs).to match([:an_environment, :another_environment])
989
- end
990
- end
991
-
992
- it "recomputes modulepath if 'get' is called before 'clear_all'" do
993
- cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
994
- loader.get(:cached_env)
995
-
996
- expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
997
-
998
- FS.overlay(updated_dir) do
999
- loader.clear_all
1000
-
1001
- expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
1002
- end
1003
- end
1004
- end
1005
-
1006
- it "recomputes modulepath if 'list' is called before 'clear_all'" do
1007
- cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
1008
- loader.list
1009
-
1010
- expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
1011
-
1012
- FS.overlay(updated_dir) do
1013
- loader.clear_all
1014
-
1015
- expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
1016
- end
1017
- end
1018
- end
1019
-
1020
- it "recomputes modulepath if 'get_conf' is called before 'clear_all'" do
1021
- cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
1022
- loader.get_conf(:cached_env)
1023
-
1024
- expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
1025
-
1026
- FS.overlay(updated_dir) do
1027
- loader.clear_all
1028
-
1029
- expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
1030
- end
1031
- end
1032
- end
1033
-
1034
- it 'deletes environment text domains' do
1035
- with_environment_loaded(service) do |cached|
1036
- cached.get(:an_environment)
1037
- cached.clear_all
1038
-
1039
- expect(FastGettext.text_domain).to eq(Puppet::GettextConfig::DEFAULT_TEXT_DOMAIN)
1040
- end
722
+ it "gets an environment.conf" do
723
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
724
+ expect(Puppet::Environments::Cached.new(loader).get_conf(:an_environment)).to match_environment_conf(:an_environment).
725
+ with_env_path(directory_tree.children.first).
726
+ with_global_module_path([])
1041
727
  end
1042
728
  end
1043
729
  end
@@ -1112,20 +798,6 @@ config_version=$vardir/random/scripts
1112
798
  end
1113
799
  end
1114
800
 
1115
- def cached_loader_from(options, &block)
1116
- FS.overlay(*options[:filesystem]) do
1117
- environments = Puppet::Environments::Cached.new(
1118
- Puppet::Environments::Directories.new(
1119
- options[:directory],
1120
- options[:modulepath] || []
1121
- )
1122
- )
1123
- Puppet.override(:environments => environments) do
1124
- yield environments
1125
- end
1126
- end
1127
- end
1128
-
1129
801
  def loader_from(options, &block)
1130
802
  FS.overlay(*options[:filesystem]) do
1131
803
  environments = Puppet::Environments::Directories.new(
@@ -1148,19 +820,6 @@ config_version=$vardir/random/scripts
1148
820
  end
1149
821
  end
1150
822
 
1151
- # The environment named `:an_environment` will already be loaded when the
1152
- # block is yielded to
1153
- def with_environment_loaded(service, &block)
1154
- loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
1155
- using_expiration_service(service) do
1156
- cached = Puppet::Environments::Cached.new(loader)
1157
- cached.get!(:an_environment)
1158
-
1159
- yield cached if block_given?
1160
- end
1161
- end
1162
- end
1163
-
1164
823
  class ReplayExpirationService < Puppet::Environments::Cached::DefaultCacheExpirationService
1165
824
  attr_reader :created_envs, :evicted_envs
1166
825
 
@@ -1178,3 +837,4 @@ config_version=$vardir/random/scripts
1178
837
  end
1179
838
  end
1180
839
  end
840
+ end
@@ -221,70 +221,6 @@ describe Puppet::Face[:generate, :current] do
221
221
  end
222
222
 
223
223
  end
224
-
225
- context "in an environment with a faulty type" do
226
- let(:dir) do
227
- dir_containing('environments', { 'testing_generate2' => {
228
- 'environment.conf' => "modulepath = modules",
229
- 'manifests' => { 'site.pp' => "" },
230
- 'modules' => {
231
- 'm3' => {
232
- 'lib' => { 'puppet' => { 'type' => {
233
- 'test3.rb' => <<-EOF
234
- module Puppet
235
- Type.newtype(:test3) do
236
- @doc = "Docs for resource"
237
- def self.title_patterns
238
- identity = lambda {|x| x}
239
- [
240
- [
241
- /^(.*)_(.*)$/,
242
- [
243
- [:name, identity ]
244
- ]
245
- ]
246
- ]
247
- end
248
- newproperty(:message) do
249
- desc "Docs for 'message' property"
250
- end
251
- newparam(:name) do
252
- desc "Docs for 'name' parameter"
253
- isnamevar
254
- end
255
- end; end
256
- EOF
257
- } }
258
- }
259
- }
260
- }}})
261
- end
262
-
263
- let(:modulepath) do
264
- File.join(dir, 'testing_generate2', 'modules')
265
- end
266
-
267
- let(:m3) do
268
- File.join(modulepath, 'm3')
269
- end
270
-
271
- around(:each) do |example|
272
- Puppet.settings.initialize_global_settings
273
- Puppet[:manifest] = ''
274
- loader = Puppet::Environments::Directories.new(dir, [])
275
- Puppet.override(:environments => loader) do
276
- Puppet.override(:current_environment => loader.get('testing_generate2')) do
277
- example.run
278
- end
279
- end
280
- end
281
-
282
- it 'fails when using procs for title patterns' do
283
- expect {
284
- genface.types(:format => 'pcore')
285
- }.to exit_with(1)
286
- end
287
- end
288
224
  end
289
225
 
290
226
  def from_an_interactive_terminal