puppet 7.4.0-x64-mingw32 → 7.8.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 (685) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +2 -2
  3. data/Gemfile +2 -1
  4. data/Gemfile.lock +30 -24
  5. data/ext/osx/puppet.plist +2 -0
  6. data/install.rb +11 -11
  7. data/lib/hiera_puppet.rb +1 -1
  8. data/lib/puppet.rb +37 -37
  9. data/lib/puppet/agent.rb +6 -6
  10. data/lib/puppet/agent/disabler.rb +1 -1
  11. data/lib/puppet/agent/locker.rb +2 -2
  12. data/lib/puppet/application.rb +6 -6
  13. data/lib/puppet/application/agent.rb +18 -11
  14. data/lib/puppet/application/apply.rb +6 -5
  15. data/lib/puppet/application/catalog.rb +1 -1
  16. data/lib/puppet/application/config.rb +1 -1
  17. data/lib/puppet/application/describe.rb +1 -1
  18. data/lib/puppet/application/device.rb +8 -7
  19. data/lib/puppet/application/doc.rb +7 -7
  20. data/lib/puppet/application/epp.rb +2 -2
  21. data/lib/puppet/application/face_base.rb +2 -2
  22. data/lib/puppet/application/facts.rb +1 -1
  23. data/lib/puppet/application/filebucket.rb +2 -2
  24. data/lib/puppet/application/generate.rb +1 -1
  25. data/lib/puppet/application/help.rb +1 -1
  26. data/lib/puppet/application/indirection_base.rb +1 -1
  27. data/lib/puppet/application/lookup.rb +6 -6
  28. data/lib/puppet/application/module.rb +1 -1
  29. data/lib/puppet/application/node.rb +1 -1
  30. data/lib/puppet/application/parser.rb +2 -2
  31. data/lib/puppet/application/plugin.rb +1 -1
  32. data/lib/puppet/application/report.rb +1 -1
  33. data/lib/puppet/application/resource.rb +3 -2
  34. data/lib/puppet/application/script.rb +6 -5
  35. data/lib/puppet/application/ssl.rb +13 -2
  36. data/lib/puppet/application_support.rb +4 -4
  37. data/lib/puppet/compilable_resource_type.rb +1 -1
  38. data/lib/puppet/concurrent/lock.rb +1 -1
  39. data/lib/puppet/configurer.rb +4 -4
  40. data/lib/puppet/configurer/downloader.rb +4 -3
  41. data/lib/puppet/configurer/fact_handler.rb +3 -3
  42. data/lib/puppet/configurer/plugin_handler.rb +1 -1
  43. data/lib/puppet/confine.rb +1 -1
  44. data/lib/puppet/confine/boolean.rb +1 -1
  45. data/lib/puppet/confine/exists.rb +1 -1
  46. data/lib/puppet/confine/false.rb +1 -1
  47. data/lib/puppet/confine/feature.rb +1 -1
  48. data/lib/puppet/confine/true.rb +1 -1
  49. data/lib/puppet/confine/variable.rb +1 -1
  50. data/lib/puppet/confine_collection.rb +1 -1
  51. data/lib/puppet/confiner.rb +1 -1
  52. data/lib/puppet/context.rb +2 -2
  53. data/lib/puppet/context/trusted_information.rb +1 -1
  54. data/lib/puppet/daemon.rb +2 -2
  55. data/lib/puppet/data_binding.rb +1 -1
  56. data/lib/puppet/datatypes/error.rb +1 -1
  57. data/lib/puppet/defaults.rb +18 -12
  58. data/lib/puppet/environments.rb +17 -2
  59. data/lib/puppet/etc.rb +1 -1
  60. data/lib/puppet/external/pson/common.rb +1 -1
  61. data/lib/puppet/external/pson/pure.rb +3 -3
  62. data/lib/puppet/face.rb +1 -1
  63. data/lib/puppet/face/catalog.rb +1 -1
  64. data/lib/puppet/face/config.rb +2 -2
  65. data/lib/puppet/face/epp.rb +6 -6
  66. data/lib/puppet/face/facts.rb +2 -2
  67. data/lib/puppet/face/generate.rb +2 -2
  68. data/lib/puppet/face/help.rb +3 -3
  69. data/lib/puppet/face/module.rb +3 -3
  70. data/lib/puppet/face/module/install.rb +2 -2
  71. data/lib/puppet/face/node.rb +1 -1
  72. data/lib/puppet/face/parser.rb +4 -4
  73. data/lib/puppet/face/plugin.rb +2 -2
  74. data/lib/puppet/face/report.rb +1 -1
  75. data/lib/puppet/face/resource.rb +1 -1
  76. data/lib/puppet/feature/base.rb +2 -2
  77. data/lib/puppet/feature/bolt.rb +1 -1
  78. data/lib/puppet/feature/cfpropertylist.rb +1 -1
  79. data/lib/puppet/feature/eventlog.rb +1 -1
  80. data/lib/puppet/feature/hiera_eyaml.rb +1 -1
  81. data/lib/puppet/feature/hocon.rb +1 -1
  82. data/lib/puppet/feature/libuser.rb +2 -2
  83. data/lib/puppet/feature/msgpack.rb +1 -1
  84. data/lib/puppet/feature/pe_license.rb +1 -1
  85. data/lib/puppet/feature/selinux.rb +1 -1
  86. data/lib/puppet/feature/ssh.rb +1 -1
  87. data/lib/puppet/feature/telnet.rb +1 -1
  88. data/lib/puppet/feature/zlib.rb +1 -1
  89. data/lib/puppet/ffi/posix.rb +2 -2
  90. data/lib/puppet/ffi/posix/constants.rb +1 -1
  91. data/lib/puppet/ffi/posix/functions.rb +1 -1
  92. data/lib/puppet/ffi/windows.rb +4 -4
  93. data/lib/puppet/ffi/windows/api_types.rb +3 -3
  94. data/lib/puppet/ffi/windows/constants.rb +1 -1
  95. data/lib/puppet/ffi/windows/functions.rb +1 -1
  96. data/lib/puppet/ffi/windows/structs.rb +1 -1
  97. data/lib/puppet/file_bucket/dipper.rb +4 -4
  98. data/lib/puppet/file_bucket/file.rb +3 -3
  99. data/lib/puppet/file_serving/base.rb +2 -2
  100. data/lib/puppet/file_serving/configuration.rb +10 -10
  101. data/lib/puppet/file_serving/configuration/parser.rb +2 -2
  102. data/lib/puppet/file_serving/content.rb +3 -3
  103. data/lib/puppet/file_serving/fileset.rb +16 -4
  104. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  105. data/lib/puppet/file_serving/metadata.rb +6 -6
  106. data/lib/puppet/file_serving/mount.rb +4 -4
  107. data/lib/puppet/file_serving/mount/file.rb +1 -1
  108. data/lib/puppet/file_serving/mount/locales.rb +1 -1
  109. data/lib/puppet/file_serving/mount/modules.rb +1 -1
  110. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -1
  111. data/lib/puppet/file_serving/mount/plugins.rb +1 -1
  112. data/lib/puppet/file_serving/mount/tasks.rb +1 -1
  113. data/lib/puppet/file_serving/terminus_helper.rb +2 -2
  114. data/lib/puppet/file_serving/terminus_selector.rb +1 -1
  115. data/lib/puppet/file_system.rb +9 -9
  116. data/lib/puppet/file_system/jruby.rb +1 -1
  117. data/lib/puppet/file_system/memory_file.rb +8 -1
  118. data/lib/puppet/file_system/path_pattern.rb +1 -1
  119. data/lib/puppet/file_system/uniquefile.rb +1 -1
  120. data/lib/puppet/file_system/windows.rb +4 -2
  121. data/lib/puppet/forge.rb +5 -5
  122. data/lib/puppet/forge/cache.rb +1 -1
  123. data/lib/puppet/forge/errors.rb +3 -3
  124. data/lib/puppet/forge/repository.rb +4 -4
  125. data/lib/puppet/functions.rb +1 -1
  126. data/lib/puppet/functions/all.rb +1 -1
  127. data/lib/puppet/functions/camelcase.rb +1 -1
  128. data/lib/puppet/functions/capitalize.rb +2 -2
  129. data/lib/puppet/functions/downcase.rb +2 -2
  130. data/lib/puppet/functions/get.rb +5 -5
  131. data/lib/puppet/functions/group_by.rb +13 -5
  132. data/lib/puppet/functions/lest.rb +1 -1
  133. data/lib/puppet/functions/new.rb +100 -100
  134. data/lib/puppet/functions/partition.rb +12 -4
  135. data/lib/puppet/functions/require.rb +5 -5
  136. data/lib/puppet/functions/sort.rb +3 -3
  137. data/lib/puppet/functions/tree_each.rb +7 -9
  138. data/lib/puppet/functions/type.rb +4 -4
  139. data/lib/puppet/functions/upcase.rb +2 -2
  140. data/lib/puppet/functions/versioncmp.rb +1 -1
  141. data/lib/puppet/generate/models/type/type.rb +1 -1
  142. data/lib/puppet/generate/type.rb +2 -2
  143. data/lib/puppet/gettext/config.rb +3 -3
  144. data/lib/puppet/gettext/module_translations.rb +1 -1
  145. data/lib/puppet/graph.rb +6 -6
  146. data/lib/puppet/graph/simple_graph.rb +2 -2
  147. data/lib/puppet/http.rb +26 -26
  148. data/lib/puppet/http/factory.rb +6 -2
  149. data/lib/puppet/http/proxy.rb +1 -1
  150. data/lib/puppet/http/resolver/server_list.rb +15 -4
  151. data/lib/puppet/http/service/compiler.rb +73 -1
  152. data/lib/puppet/http/service/file_server.rb +3 -2
  153. data/lib/puppet/indirector.rb +5 -5
  154. data/lib/puppet/indirector/catalog/compiler.rb +7 -6
  155. data/lib/puppet/indirector/catalog/json.rb +2 -2
  156. data/lib/puppet/indirector/catalog/msgpack.rb +2 -2
  157. data/lib/puppet/indirector/catalog/rest.rb +2 -2
  158. data/lib/puppet/indirector/catalog/store_configs.rb +2 -2
  159. data/lib/puppet/indirector/catalog/yaml.rb +2 -2
  160. data/lib/puppet/indirector/code.rb +1 -1
  161. data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
  162. data/lib/puppet/indirector/data_binding/none.rb +1 -1
  163. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  164. data/lib/puppet/indirector/envelope.rb +1 -1
  165. data/lib/puppet/indirector/errors.rb +1 -1
  166. data/lib/puppet/indirector/exec.rb +2 -2
  167. data/lib/puppet/indirector/face.rb +1 -1
  168. data/lib/puppet/indirector/facts/facter.rb +2 -2
  169. data/lib/puppet/indirector/facts/json.rb +3 -3
  170. data/lib/puppet/indirector/facts/memory.rb +2 -2
  171. data/lib/puppet/indirector/facts/network_device.rb +2 -2
  172. data/lib/puppet/indirector/facts/rest.rb +2 -2
  173. data/lib/puppet/indirector/facts/store_configs.rb +2 -2
  174. data/lib/puppet/indirector/facts/yaml.rb +3 -3
  175. data/lib/puppet/indirector/file_bucket_file/file.rb +4 -4
  176. data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -2
  177. data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -1
  178. data/lib/puppet/indirector/file_content.rb +1 -1
  179. data/lib/puppet/indirector/file_content/file.rb +3 -3
  180. data/lib/puppet/indirector/file_content/file_server.rb +3 -3
  181. data/lib/puppet/indirector/file_content/rest.rb +3 -3
  182. data/lib/puppet/indirector/file_content/selector.rb +4 -4
  183. data/lib/puppet/indirector/file_metadata.rb +1 -1
  184. data/lib/puppet/indirector/file_metadata/file.rb +3 -3
  185. data/lib/puppet/indirector/file_metadata/file_server.rb +3 -3
  186. data/lib/puppet/indirector/file_metadata/http.rb +3 -3
  187. data/lib/puppet/indirector/file_metadata/rest.rb +4 -3
  188. data/lib/puppet/indirector/file_metadata/selector.rb +4 -4
  189. data/lib/puppet/indirector/file_server.rb +4 -4
  190. data/lib/puppet/indirector/generic_http.rb +1 -1
  191. data/lib/puppet/indirector/hiera.rb +1 -1
  192. data/lib/puppet/indirector/indirection.rb +5 -5
  193. data/lib/puppet/indirector/json.rb +2 -2
  194. data/lib/puppet/indirector/memory.rb +1 -1
  195. data/lib/puppet/indirector/msgpack.rb +2 -2
  196. data/lib/puppet/indirector/node/exec.rb +2 -2
  197. data/lib/puppet/indirector/node/json.rb +2 -2
  198. data/lib/puppet/indirector/node/memory.rb +2 -2
  199. data/lib/puppet/indirector/node/msgpack.rb +2 -2
  200. data/lib/puppet/indirector/node/plain.rb +2 -2
  201. data/lib/puppet/indirector/node/rest.rb +2 -2
  202. data/lib/puppet/indirector/node/store_configs.rb +2 -2
  203. data/lib/puppet/indirector/node/yaml.rb +2 -2
  204. data/lib/puppet/indirector/none.rb +1 -1
  205. data/lib/puppet/indirector/plain.rb +1 -1
  206. data/lib/puppet/indirector/report/json.rb +2 -2
  207. data/lib/puppet/indirector/report/msgpack.rb +2 -2
  208. data/lib/puppet/indirector/report/processor.rb +3 -3
  209. data/lib/puppet/indirector/report/rest.rb +1 -1
  210. data/lib/puppet/indirector/report/yaml.rb +2 -2
  211. data/lib/puppet/indirector/request.rb +3 -3
  212. data/lib/puppet/indirector/resource/ral.rb +1 -1
  213. data/lib/puppet/indirector/resource/store_configs.rb +2 -2
  214. data/lib/puppet/indirector/terminus.rb +5 -5
  215. data/lib/puppet/indirector/yaml.rb +2 -2
  216. data/lib/puppet/info_service.rb +3 -3
  217. data/lib/puppet/info_service/class_information_service.rb +3 -3
  218. data/lib/puppet/info_service/plan_information_service.rb +1 -1
  219. data/lib/puppet/info_service/task_information_service.rb +1 -1
  220. data/lib/puppet/interface.rb +10 -10
  221. data/lib/puppet/interface/documentation.rb +1 -1
  222. data/lib/puppet/loaders.rb +21 -25
  223. data/lib/puppet/metatype/manager.rb +3 -3
  224. data/lib/puppet/module.rb +5 -4
  225. data/lib/puppet/module/plan.rb +1 -1
  226. data/lib/puppet/module/task.rb +1 -1
  227. data/lib/puppet/module_tool.rb +10 -10
  228. data/lib/puppet/module_tool/applications.rb +7 -7
  229. data/lib/puppet/module_tool/applications/application.rb +2 -2
  230. data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
  231. data/lib/puppet/module_tool/applications/installer.rb +7 -7
  232. data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
  233. data/lib/puppet/module_tool/applications/upgrader.rb +5 -5
  234. data/lib/puppet/module_tool/checksums.rb +1 -1
  235. data/lib/puppet/module_tool/contents_description.rb +1 -1
  236. data/lib/puppet/module_tool/dependency.rb +2 -2
  237. data/lib/puppet/module_tool/errors.rb +6 -6
  238. data/lib/puppet/module_tool/install_directory.rb +2 -2
  239. data/lib/puppet/module_tool/installed_modules.rb +2 -2
  240. data/lib/puppet/module_tool/local_tarball.rb +2 -2
  241. data/lib/puppet/module_tool/metadata.rb +3 -3
  242. data/lib/puppet/module_tool/tar.rb +4 -4
  243. data/lib/puppet/network/format.rb +1 -1
  244. data/lib/puppet/network/format_handler.rb +3 -3
  245. data/lib/puppet/network/format_support.rb +1 -1
  246. data/lib/puppet/network/formats.rb +2 -2
  247. data/lib/puppet/network/http.rb +17 -14
  248. data/lib/puppet/network/http/api.rb +11 -7
  249. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  250. data/lib/puppet/network/http/api/master.rb +3 -2
  251. data/lib/puppet/network/http/api/master/v3.rb +2 -25
  252. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -33
  253. data/lib/puppet/network/http/api/server.rb +10 -0
  254. data/lib/puppet/network/http/api/server/v3.rb +39 -0
  255. data/lib/puppet/network/http/api/server/v3/environments.rb +48 -0
  256. data/lib/puppet/network/http/connection.rb +1 -1
  257. data/lib/puppet/network/http/error.rb +1 -1
  258. data/lib/puppet/network/http/handler.rb +3 -3
  259. data/lib/puppet/network/http_pool.rb +1 -1
  260. data/lib/puppet/node.rb +3 -3
  261. data/lib/puppet/node/environment.rb +15 -8
  262. data/lib/puppet/node/facts.rb +3 -3
  263. data/lib/puppet/pal/pal_api.rb +10 -10
  264. data/lib/puppet/pal/pal_impl.rb +3 -3
  265. data/lib/puppet/parameter.rb +4 -4
  266. data/lib/puppet/parameter/boolean.rb +1 -1
  267. data/lib/puppet/parameter/package_options.rb +1 -1
  268. data/lib/puppet/parameter/path.rb +1 -1
  269. data/lib/puppet/parameter/value.rb +1 -1
  270. data/lib/puppet/parameter/value_collection.rb +1 -1
  271. data/lib/puppet/parser.rb +10 -10
  272. data/lib/puppet/parser/ast.rb +8 -8
  273. data/lib/puppet/parser/ast/hostclass.rb +1 -1
  274. data/lib/puppet/parser/ast/pops_bridge.rb +2 -2
  275. data/lib/puppet/parser/catalog_compiler.rb +2 -2
  276. data/lib/puppet/parser/compiler.rb +5 -5
  277. data/lib/puppet/parser/e4_parser_adapter.rb +1 -1
  278. data/lib/puppet/parser/functions.rb +4 -4
  279. data/lib/puppet/parser/functions/digest.rb +1 -1
  280. data/lib/puppet/parser/functions/file.rb +1 -1
  281. data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
  282. data/lib/puppet/parser/functions/versioncmp.rb +1 -1
  283. data/lib/puppet/parser/parser_factory.rb +2 -2
  284. data/lib/puppet/parser/resource.rb +3 -3
  285. data/lib/puppet/parser/scope.rb +3 -3
  286. data/lib/puppet/parser/script_compiler.rb +2 -2
  287. data/lib/puppet/parser/templatewrapper.rb +2 -2
  288. data/lib/puppet/parser/type_loader.rb +1 -1
  289. data/lib/puppet/plugins/configuration.rb +5 -5
  290. data/lib/puppet/pops.rb +57 -57
  291. data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
  292. data/lib/puppet/pops/evaluator/evaluator_impl.rb +7 -7
  293. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  294. data/lib/puppet/pops/loader/base_loader.rb +42 -32
  295. data/lib/puppet/pops/loader/dependency_loader.rb +2 -2
  296. data/lib/puppet/pops/loader/loader.rb +15 -5
  297. data/lib/puppet/pops/loader/module_loaders.rb +8 -8
  298. data/lib/puppet/pops/loader/predefined_loader.rb +4 -0
  299. data/lib/puppet/pops/loader/runtime3_type_loader.rb +1 -1
  300. data/lib/puppet/pops/loader/static_loader.rb +4 -0
  301. data/lib/puppet/pops/loader/task_instantiator.rb +1 -1
  302. data/lib/puppet/pops/loaders.rb +4 -4
  303. data/lib/puppet/pops/lookup/invocation.rb +1 -1
  304. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  305. data/lib/puppet/pops/model/pn_transformer.rb +1 -1
  306. data/lib/puppet/pops/parser/eparser.rb +2 -2
  307. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  308. data/lib/puppet/pops/parser/lexer2.rb +5 -9
  309. data/lib/puppet/pops/parser/lexer_support.rb +1 -1
  310. data/lib/puppet/pops/parser/parser_support.rb +4 -4
  311. data/lib/puppet/pops/puppet_stack.rb +1 -1
  312. data/lib/puppet/pops/serialization/json.rb +1 -1
  313. data/lib/puppet/pops/serialization/json_path.rb +1 -1
  314. data/lib/puppet/pops/time/timespan.rb +1 -1
  315. data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
  316. data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
  317. data/lib/puppet/pops/types/p_type_set_type.rb +1 -1
  318. data/lib/puppet/pops/types/string_converter.rb +1 -1
  319. data/lib/puppet/pops/types/type_calculator.rb +1 -1
  320. data/lib/puppet/pops/types/type_formatter.rb +1 -1
  321. data/lib/puppet/pops/types/type_parser.rb +1 -1
  322. data/lib/puppet/pops/types/types.rb +1 -1
  323. data/lib/puppet/pops/validation/checker4_0.rb +1 -2
  324. data/lib/puppet/property.rb +3 -3
  325. data/lib/puppet/property/boolean.rb +1 -1
  326. data/lib/puppet/property/ensure.rb +1 -1
  327. data/lib/puppet/property/keyvalue.rb +1 -1
  328. data/lib/puppet/property/list.rb +1 -1
  329. data/lib/puppet/property/ordered_list.rb +1 -1
  330. data/lib/puppet/provider.rb +2 -2
  331. data/lib/puppet/provider/confine.rb +2 -2
  332. data/lib/puppet/provider/exec.rb +2 -2
  333. data/lib/puppet/provider/exec/posix.rb +1 -1
  334. data/lib/puppet/provider/exec/windows.rb +1 -1
  335. data/lib/puppet/provider/file/posix.rb +1 -1
  336. data/lib/puppet/provider/file/windows.rb +1 -1
  337. data/lib/puppet/provider/group/aix.rb +1 -1
  338. data/lib/puppet/provider/group/directoryservice.rb +1 -1
  339. data/lib/puppet/provider/group/groupadd.rb +2 -2
  340. data/lib/puppet/provider/group/ldap.rb +1 -1
  341. data/lib/puppet/provider/group/pw.rb +1 -1
  342. data/lib/puppet/provider/group/windows_adsi.rb +1 -1
  343. data/lib/puppet/provider/ldap.rb +2 -2
  344. data/lib/puppet/provider/nameservice.rb +1 -1
  345. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  346. data/lib/puppet/provider/nameservice/objectadd.rb +1 -1
  347. data/lib/puppet/provider/nameservice/pw.rb +1 -1
  348. data/lib/puppet/provider/package.rb +1 -1
  349. data/lib/puppet/provider/package/aix.rb +2 -2
  350. data/lib/puppet/provider/package/appdmg.rb +2 -2
  351. data/lib/puppet/provider/package/apple.rb +1 -1
  352. data/lib/puppet/provider/package/apt.rb +5 -5
  353. data/lib/puppet/provider/package/dnfmodule.rb +2 -2
  354. data/lib/puppet/provider/package/dpkg.rb +1 -1
  355. data/lib/puppet/provider/package/gem.rb +3 -3
  356. data/lib/puppet/provider/package/hpux.rb +1 -1
  357. data/lib/puppet/provider/package/macports.rb +2 -2
  358. data/lib/puppet/provider/package/nim.rb +13 -8
  359. data/lib/puppet/provider/package/openbsd.rb +1 -1
  360. data/lib/puppet/provider/package/opkg.rb +1 -1
  361. data/lib/puppet/provider/package/pacman.rb +1 -1
  362. data/lib/puppet/provider/package/pip.rb +3 -3
  363. data/lib/puppet/provider/package/pkg.rb +2 -2
  364. data/lib/puppet/provider/package/pkgdmg.rb +3 -3
  365. data/lib/puppet/provider/package/pkgin.rb +1 -1
  366. data/lib/puppet/provider/package/pkgng.rb +1 -1
  367. data/lib/puppet/provider/package/portage.rb +1 -1
  368. data/lib/puppet/provider/package/portupgrade.rb +1 -1
  369. data/lib/puppet/provider/package/puppet_gem.rb +12 -1
  370. data/lib/puppet/provider/package/puppetserver_gem.rb +0 -0
  371. data/lib/puppet/provider/package/rpm.rb +2 -2
  372. data/lib/puppet/provider/package/sun.rb +1 -1
  373. data/lib/puppet/provider/package/windows.rb +3 -3
  374. data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
  375. data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
  376. data/lib/puppet/provider/package/windows/package.rb +4 -4
  377. data/lib/puppet/provider/package/yum.rb +6 -6
  378. data/lib/puppet/provider/package/zypper.rb +3 -3
  379. data/lib/puppet/provider/package_targetable.rb +1 -1
  380. data/lib/puppet/provider/parsedfile.rb +3 -3
  381. data/lib/puppet/provider/service/base.rb +6 -4
  382. data/lib/puppet/provider/service/daemontools.rb +0 -1
  383. data/lib/puppet/provider/service/debian.rb +3 -5
  384. data/lib/puppet/provider/service/freebsd.rb +1 -1
  385. data/lib/puppet/provider/service/init.rb +1 -1
  386. data/lib/puppet/provider/service/launchd.rb +9 -3
  387. data/lib/puppet/provider/service/service.rb +28 -3
  388. data/lib/puppet/provider/service/smf.rb +0 -24
  389. data/lib/puppet/provider/service/src.rb +2 -2
  390. data/lib/puppet/provider/service/systemd.rb +18 -8
  391. data/lib/puppet/provider/service/windows.rb +38 -0
  392. data/lib/puppet/provider/user/aix.rb +2 -2
  393. data/lib/puppet/provider/user/directoryservice.rb +26 -13
  394. data/lib/puppet/provider/user/ldap.rb +1 -1
  395. data/lib/puppet/provider/user/openbsd.rb +1 -1
  396. data/lib/puppet/provider/user/pw.rb +1 -1
  397. data/lib/puppet/provider/user/user_role_add.rb +2 -2
  398. data/lib/puppet/provider/user/useradd.rb +12 -5
  399. data/lib/puppet/provider/user/windows_adsi.rb +1 -1
  400. data/lib/puppet/reference/configuration.rb +1 -1
  401. data/lib/puppet/reference/indirection.rb +4 -4
  402. data/lib/puppet/reference/report.rb +1 -1
  403. data/lib/puppet/reports.rb +1 -1
  404. data/lib/puppet/reports/http.rb +2 -2
  405. data/lib/puppet/reports/log.rb +1 -1
  406. data/lib/puppet/reports/store.rb +2 -2
  407. data/lib/puppet/resource.rb +4 -4
  408. data/lib/puppet/resource/catalog.rb +5 -5
  409. data/lib/puppet/resource/status.rb +2 -2
  410. data/lib/puppet/resource/type.rb +4 -4
  411. data/lib/puppet/resource/type_collection.rb +4 -4
  412. data/lib/puppet/runtime.rb +1 -1
  413. data/lib/puppet/scheduler.rb +4 -4
  414. data/lib/puppet/settings.rb +31 -30
  415. data/lib/puppet/settings/autosign_setting.rb +1 -1
  416. data/lib/puppet/settings/base_setting.rb +2 -2
  417. data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
  418. data/lib/puppet/settings/config_file.rb +1 -1
  419. data/lib/puppet/settings/environment_conf.rb +1 -0
  420. data/lib/puppet/settings/errors.rb +1 -1
  421. data/lib/puppet/settings/priority_setting.rb +3 -3
  422. data/lib/puppet/ssl.rb +11 -11
  423. data/lib/puppet/ssl/base.rb +3 -3
  424. data/lib/puppet/ssl/certificate.rb +1 -1
  425. data/lib/puppet/ssl/certificate_request.rb +2 -2
  426. data/lib/puppet/ssl/certificate_request_attributes.rb +2 -2
  427. data/lib/puppet/ssl/oids.rb +1 -1
  428. data/lib/puppet/ssl/openssl_loader.rb +1 -1
  429. data/lib/puppet/ssl/ssl_context.rb +1 -1
  430. data/lib/puppet/ssl/ssl_provider.rb +1 -1
  431. data/lib/puppet/ssl/state_machine.rb +2 -2
  432. data/lib/puppet/ssl/verifier.rb +5 -1
  433. data/lib/puppet/syntax_checkers/base64.rb +1 -1
  434. data/lib/puppet/syntax_checkers/epp.rb +1 -1
  435. data/lib/puppet/syntax_checkers/json.rb +1 -1
  436. data/lib/puppet/syntax_checkers/pp.rb +1 -1
  437. data/lib/puppet/transaction.rb +11 -11
  438. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  439. data/lib/puppet/transaction/event.rb +4 -4
  440. data/lib/puppet/transaction/event_manager.rb +1 -1
  441. data/lib/puppet/transaction/persistence.rb +1 -1
  442. data/lib/puppet/transaction/report.rb +2 -2
  443. data/lib/puppet/transaction/resource_harness.rb +1 -1
  444. data/lib/puppet/type.rb +14 -14
  445. data/lib/puppet/type/component.rb +3 -3
  446. data/lib/puppet/type/file.rb +37 -19
  447. data/lib/puppet/type/file/checksum.rb +1 -1
  448. data/lib/puppet/type/file/checksum_value.rb +2 -2
  449. data/lib/puppet/type/file/content.rb +2 -2
  450. data/lib/puppet/type/file/data_sync.rb +2 -2
  451. data/lib/puppet/type/file/ensure.rb +1 -1
  452. data/lib/puppet/type/file/group.rb +1 -1
  453. data/lib/puppet/type/file/mode.rb +1 -1
  454. data/lib/puppet/type/file/selcontext.rb +2 -2
  455. data/lib/puppet/type/file/source.rb +4 -4
  456. data/lib/puppet/type/filebucket.rb +1 -1
  457. data/lib/puppet/type/group.rb +2 -2
  458. data/lib/puppet/type/package.rb +2 -2
  459. data/lib/puppet/type/resources.rb +2 -2
  460. data/lib/puppet/type/service.rb +18 -38
  461. data/lib/puppet/type/tidy.rb +24 -5
  462. data/lib/puppet/type/user.rb +42 -24
  463. data/lib/puppet/util.rb +43 -34
  464. data/lib/puppet/util/at_fork.rb +3 -3
  465. data/lib/puppet/util/at_fork/solaris.rb +1 -1
  466. data/lib/puppet/util/autoload.rb +4 -4
  467. data/lib/puppet/util/checksums.rb +3 -3
  468. data/lib/puppet/util/colors.rb +1 -1
  469. data/lib/puppet/util/command_line.rb +6 -6
  470. data/lib/puppet/util/command_line/puppet_option_parser.rb +2 -2
  471. data/lib/puppet/util/execution.rb +2 -2
  472. data/lib/puppet/util/feature.rb +2 -2
  473. data/lib/puppet/util/filetype.rb +1 -1
  474. data/lib/puppet/util/http_proxy.rb +1 -1
  475. data/lib/puppet/util/inifile.rb +2 -2
  476. data/lib/puppet/util/instance_loader.rb +3 -3
  477. data/lib/puppet/util/json_lockfile.rb +1 -1
  478. data/lib/puppet/util/ldap/connection.rb +1 -1
  479. data/lib/puppet/util/ldap/generator.rb +1 -1
  480. data/lib/puppet/util/ldap/manager.rb +3 -3
  481. data/lib/puppet/util/limits.rb +1 -1
  482. data/lib/puppet/util/log.rb +6 -6
  483. data/lib/puppet/util/log/destinations.rb +1 -1
  484. data/lib/puppet/util/logging.rb +2 -2
  485. data/lib/puppet/util/metric.rb +2 -2
  486. data/lib/puppet/util/monkey_patches.rb +14 -3
  487. data/lib/puppet/util/network_device/base.rb +3 -3
  488. data/lib/puppet/util/network_device/config.rb +2 -2
  489. data/lib/puppet/util/network_device/transport.rb +1 -1
  490. data/lib/puppet/util/network_device/transport/base.rb +2 -2
  491. data/lib/puppet/util/package/version/range.rb +6 -6
  492. data/lib/puppet/util/package/version/range/eq.rb +1 -1
  493. data/lib/puppet/util/package/version/range/gt.rb +1 -1
  494. data/lib/puppet/util/package/version/range/gt_eq.rb +1 -1
  495. data/lib/puppet/util/package/version/range/lt.rb +1 -1
  496. data/lib/puppet/util/package/version/range/lt_eq.rb +1 -1
  497. data/lib/puppet/util/package/version/range/min_max.rb +1 -1
  498. data/lib/puppet/util/package/version/range/simple.rb +1 -1
  499. data/lib/puppet/util/package/version/rpm.rb +1 -1
  500. data/lib/puppet/util/pidlock.rb +1 -1
  501. data/lib/puppet/util/plist.rb +1 -1
  502. data/lib/puppet/util/posix.rb +1 -1
  503. data/lib/puppet/util/profiler.rb +3 -3
  504. data/lib/puppet/util/profiler/aggregate.rb +2 -2
  505. data/lib/puppet/util/profiler/object_counts.rb +1 -1
  506. data/lib/puppet/util/profiler/wall_clock.rb +1 -1
  507. data/lib/puppet/util/provider_features.rb +2 -2
  508. data/lib/puppet/util/rdoc.rb +2 -2
  509. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
  510. data/lib/puppet/util/rdoc/parser.rb +6 -6
  511. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
  512. data/lib/puppet/util/reference.rb +1 -1
  513. data/lib/puppet/util/resource_template.rb +2 -2
  514. data/lib/puppet/util/rubygems.rb +1 -1
  515. data/lib/puppet/util/selinux.rb +30 -4
  516. data/lib/puppet/util/skip_tags.rb +1 -1
  517. data/lib/puppet/util/storage.rb +1 -1
  518. data/lib/puppet/util/suidmanager.rb +2 -2
  519. data/lib/puppet/util/symbolic_file_mode.rb +1 -1
  520. data/lib/puppet/util/tag_set.rb +1 -1
  521. data/lib/puppet/util/tagging.rb +1 -1
  522. data/lib/puppet/util/watched_file.rb +1 -1
  523. data/lib/puppet/util/watcher.rb +3 -3
  524. data/lib/puppet/util/windows.rb +20 -20
  525. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  526. data/lib/puppet/util/windows/adsi.rb +47 -1
  527. data/lib/puppet/util/windows/daemon.rb +1 -1
  528. data/lib/puppet/util/windows/error.rb +2 -2
  529. data/lib/puppet/util/windows/file.rb +1 -1
  530. data/lib/puppet/util/windows/monkey_patches/process.rb +2 -2
  531. data/lib/puppet/util/windows/principal.rb +10 -3
  532. data/lib/puppet/util/windows/process.rb +2 -2
  533. data/lib/puppet/util/windows/registry.rb +1 -1
  534. data/lib/puppet/util/windows/root_certs.rb +2 -2
  535. data/lib/puppet/util/windows/security.rb +1 -1
  536. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  537. data/lib/puppet/util/windows/service.rb +1 -1
  538. data/lib/puppet/util/windows/sid.rb +5 -3
  539. data/lib/puppet/util/windows/user.rb +1 -1
  540. data/lib/puppet/vendor.rb +1 -1
  541. data/lib/puppet/version.rb +1 -1
  542. data/lib/puppet/x509.rb +4 -4
  543. data/lib/puppet/x509/cert_provider.rb +1 -1
  544. data/lib/puppet/x509/pem_store.rb +1 -1
  545. data/lib/puppet_pal.rb +2 -2
  546. data/locales/puppet.pot +183 -175
  547. data/man/man5/puppet.conf.5 +266 -240
  548. data/man/man8/puppet-agent.8 +1 -1
  549. data/man/man8/puppet-apply.8 +1 -1
  550. data/man/man8/puppet-catalog.8 +1 -1
  551. data/man/man8/puppet-config.8 +1 -1
  552. data/man/man8/puppet-describe.8 +1 -1
  553. data/man/man8/puppet-device.8 +1 -1
  554. data/man/man8/puppet-doc.8 +1 -1
  555. data/man/man8/puppet-epp.8 +1 -1
  556. data/man/man8/puppet-facts.8 +1 -1
  557. data/man/man8/puppet-filebucket.8 +1 -1
  558. data/man/man8/puppet-generate.8 +1 -1
  559. data/man/man8/puppet-help.8 +1 -1
  560. data/man/man8/puppet-lookup.8 +1 -1
  561. data/man/man8/puppet-module.8 +1 -1
  562. data/man/man8/puppet-node.8 +1 -1
  563. data/man/man8/puppet-parser.8 +1 -1
  564. data/man/man8/puppet-plugin.8 +1 -1
  565. data/man/man8/puppet-report.8 +1 -1
  566. data/man/man8/puppet-resource.8 +1 -1
  567. data/man/man8/puppet-script.8 +1 -1
  568. data/man/man8/puppet-ssl.8 +5 -1
  569. data/man/man8/puppet.8 +2 -2
  570. data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
  571. data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
  572. data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
  573. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
  574. data/spec/fixtures/ssl/ca.pem +57 -35
  575. data/spec/fixtures/ssl/crl.pem +28 -18
  576. data/spec/fixtures/ssl/ec-key.pem +11 -11
  577. data/spec/fixtures/ssl/ec.pem +33 -24
  578. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  579. data/spec/fixtures/ssl/encrypted-key.pem +108 -58
  580. data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
  581. data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
  582. data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
  583. data/spec/fixtures/ssl/intermediate.pem +57 -36
  584. data/spec/fixtures/ssl/pluto-key.pem +107 -57
  585. data/spec/fixtures/ssl/pluto.pem +52 -30
  586. data/spec/fixtures/ssl/request-key.pem +107 -57
  587. data/spec/fixtures/ssl/request.pem +47 -26
  588. data/spec/fixtures/ssl/revoked-key.pem +107 -57
  589. data/spec/fixtures/ssl/revoked.pem +52 -30
  590. data/spec/fixtures/ssl/signed-key.pem +107 -57
  591. data/spec/fixtures/ssl/signed.pem +52 -30
  592. data/spec/fixtures/ssl/tampered-cert.pem +52 -30
  593. data/spec/fixtures/ssl/tampered-csr.pem +47 -26
  594. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
  595. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
  596. data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
  597. data/spec/fixtures/ssl/unknown-ca.pem +55 -33
  598. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +9 -0
  599. data/spec/integration/application/plugin_spec.rb +1 -1
  600. data/spec/integration/application/resource_spec.rb +30 -0
  601. data/spec/integration/http/client_spec.rb +12 -0
  602. data/spec/integration/indirector/direct_file_server_spec.rb +1 -3
  603. data/spec/integration/parser/collection_spec.rb +10 -0
  604. data/spec/integration/type/file_spec.rb +5 -5
  605. data/spec/integration/util/windows/adsi_spec.rb +18 -0
  606. data/spec/integration/util/windows/principal_spec.rb +21 -0
  607. data/spec/integration/util/windows/registry_spec.rb +6 -0
  608. data/spec/lib/puppet/test_ca.rb +2 -2
  609. data/spec/lib/puppet_spec/files.rb +1 -1
  610. data/spec/shared_contexts/provider.rb +16 -0
  611. data/spec/spec_helper.rb +11 -1
  612. data/spec/unit/application/agent_spec.rb +7 -2
  613. data/spec/unit/application/facts_spec.rb +5 -5
  614. data/spec/unit/application/ssl_spec.rb +23 -0
  615. data/spec/unit/configurer/downloader_spec.rb +6 -0
  616. data/spec/unit/configurer_spec.rb +23 -0
  617. data/spec/unit/environments_spec.rb +164 -88
  618. data/spec/unit/file_bucket/dipper_spec.rb +1 -1
  619. data/spec/unit/file_serving/fileset_spec.rb +60 -0
  620. data/spec/unit/file_system_spec.rb +9 -0
  621. data/spec/unit/functions4_spec.rb +17 -8
  622. data/spec/unit/gettext/config_spec.rb +12 -0
  623. data/spec/unit/http/factory_spec.rb +19 -0
  624. data/spec/unit/http/service/compiler_spec.rb +123 -0
  625. data/spec/unit/indirector/catalog/compiler_spec.rb +14 -10
  626. data/spec/unit/module_spec.rb +1 -1
  627. data/spec/unit/network/http/api/master_spec.rb +38 -0
  628. data/spec/unit/network/http/api/{master → server}/v3/environments_spec.rb +2 -2
  629. data/spec/unit/network/http/api/{master → server}/v3_spec.rb +19 -19
  630. data/spec/unit/network/http/api_spec.rb +11 -11
  631. data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
  632. data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
  633. data/spec/unit/pops/lookup/context_spec.rb +1 -1
  634. data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
  635. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
  636. data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
  637. data/spec/unit/pops/types/type_parser_spec.rb +2 -1
  638. data/spec/unit/pops/validator/validator_spec.rb +20 -43
  639. data/spec/unit/provider/package/dnfmodule_spec.rb +13 -4
  640. data/spec/unit/provider/package/gem_spec.rb +3 -1
  641. data/spec/unit/provider/package/nim_spec.rb +42 -0
  642. data/spec/unit/provider/package/pip2_spec.rb +3 -1
  643. data/spec/unit/provider/package/pip3_spec.rb +3 -1
  644. data/spec/unit/provider/package/pip_spec.rb +3 -1
  645. data/spec/unit/provider/package/pkg_spec.rb +44 -44
  646. data/spec/unit/provider/package/puppet_gem_spec.rb +31 -1
  647. data/spec/unit/provider/package/puppetserver_gem_spec.rb +2 -0
  648. data/spec/unit/provider/service/base_spec.rb +8 -8
  649. data/spec/unit/provider/service/bsd_spec.rb +0 -4
  650. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  651. data/spec/unit/provider/service/debian_spec.rb +15 -17
  652. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  653. data/spec/unit/provider/service/gentoo_spec.rb +19 -14
  654. data/spec/unit/provider/service/init_spec.rb +29 -20
  655. data/spec/unit/provider/service/launchd_spec.rb +10 -12
  656. data/spec/unit/provider/service/openbsd_spec.rb +21 -35
  657. data/spec/unit/provider/service/openrc_spec.rb +15 -14
  658. data/spec/unit/provider/service/openwrt_spec.rb +3 -1
  659. data/spec/unit/provider/service/redhat_spec.rb +20 -19
  660. data/spec/unit/provider/service/smf_spec.rb +6 -5
  661. data/spec/unit/provider/service/src_spec.rb +5 -10
  662. data/spec/unit/provider/service/systemd_spec.rb +80 -29
  663. data/spec/unit/provider/service/upstart_spec.rb +25 -20
  664. data/spec/unit/provider/service/windows_spec.rb +202 -0
  665. data/spec/unit/provider/user/directoryservice_spec.rb +67 -35
  666. data/spec/unit/provider/user/useradd_spec.rb +21 -6
  667. data/spec/unit/resource/catalog_spec.rb +1 -1
  668. data/spec/unit/ssl/state_machine_spec.rb +19 -5
  669. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
  670. data/spec/unit/transaction_spec.rb +18 -20
  671. data/spec/unit/type/file/selinux_spec.rb +3 -3
  672. data/spec/unit/type/service_spec.rb +59 -188
  673. data/spec/unit/type/tidy_spec.rb +17 -7
  674. data/spec/unit/type/user_spec.rb +45 -0
  675. data/spec/unit/util/at_fork_spec.rb +9 -9
  676. data/spec/unit/util/posix_spec.rb +1 -1
  677. data/spec/unit/util/selinux_spec.rb +87 -16
  678. data/spec/unit/util/windows/sid_spec.rb +6 -0
  679. data/tasks/generate_cert_fixtures.rake +2 -2
  680. metadata +17 -16
  681. data/spec/lib/matchers/include.rb +0 -27
  682. data/spec/lib/matchers/include_spec.rb +0 -32
  683. data/spec/unit/pops/parser/parse_application_spec.rb +0 -13
  684. data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -23
  685. data/spec/unit/pops/parser/parse_site_spec.rb +0 -43
@@ -225,7 +225,7 @@ describe Puppet::FileBucket::Dipper, :uses_checksums => true do
225
225
  # Modify mtime of the second file to be an hour ago
226
226
  onehourago = Time.now - onehour
227
227
  bucketed_paths_file = Dir.glob("#{file_bucket}/**/#{checksum}/paths")
228
- FileUtils.touch(bucketed_paths_file, :mtime => onehourago)
228
+ FileUtils.touch(bucketed_paths_file, mtime: onehourago)
229
229
  expected_list2 = /#{checksum} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} #{real_path}\n/
230
230
 
231
231
  now = Time.now
@@ -46,6 +46,13 @@ describe Puppet::FileServing::Fileset do
46
46
  expect(set.recurselimit).to eq(3)
47
47
  end
48
48
 
49
+ it "accepts a 'max_files' option" do
50
+ expect(Puppet::FileSystem).to receive(:lstat).with(somefile).and_return(double('stat'))
51
+ set = Puppet::FileServing::Fileset.new(somefile, :recurselimit => 3, :max_files => 100)
52
+ expect(set.recurselimit).to eq(3)
53
+ expect(set.max_files).to eq(100)
54
+ end
55
+
49
56
  it "accepts an 'ignore' option" do
50
57
  expect(Puppet::FileSystem).to receive(:lstat).with(somefile).and_return(double('stat'))
51
58
  set = Puppet::FileServing::Fileset.new(somefile, :ignore => ".svn")
@@ -160,6 +167,29 @@ describe Puppet::FileServing::Fileset do
160
167
  end
161
168
  end
162
169
 
170
+ def mock_big_dir_structure(path, stat_method = :lstat)
171
+ allow(Puppet::FileSystem).to receive(stat_method).with(path).and_return(@dirstat)
172
+
173
+ # Keep track of the files we're stubbing.
174
+ @files = %w{.}
175
+
176
+ top_names = (1..10).map {|i| "dir_#{i}" }
177
+ sub_names = (1..100).map {|i| "file__#{i}" }
178
+
179
+ allow(Dir).to receive(:entries).with(path, encoding: Encoding::UTF_8).and_return(top_names)
180
+ top_names.each do |subdir|
181
+ @files << subdir # relative path
182
+ subpath = File.join(path, subdir)
183
+ allow(Puppet::FileSystem).to receive(stat_method).with(subpath).and_return(@dirstat)
184
+ allow(Dir).to receive(:entries).with(subpath, encoding: Encoding::UTF_8).and_return(sub_names)
185
+ sub_names.each do |file|
186
+ @files << File.join(subdir, file) # relative path
187
+ subfile_path = File.join(subpath, file)
188
+ allow(Puppet::FileSystem).to receive(stat_method).with(subfile_path).and_return(@filestat)
189
+ end
190
+ end
191
+ end
192
+
163
193
  def setup_mocks_for_dir(mock_dir, base_path)
164
194
  path = File.join(base_path, mock_dir.name)
165
195
  allow(Puppet::FileSystem).to receive(:lstat).with(path).and_return(MockStat.new(path, true))
@@ -258,6 +288,36 @@ describe Puppet::FileServing::Fileset do
258
288
  expect(@fileset.files.find { |file| file.include?("0") }).to be_nil
259
289
  end
260
290
 
291
+ it "raises exception if number of files is greater than :max_files" do
292
+ mock_dir_structure(@path)
293
+ @fileset.recurse = true
294
+ @fileset.max_files = 22
295
+ expect { @fileset.files }.to raise_error(Puppet::Error, "The directory '#{@path}' contains 28 entries, which exceeds the limit of 22 specified by the max_files parameter for this resource. The limit may be increased, but be aware that large number of file resources can result in excessive resource consumption and degraded performance. Consider using an alternate method to manage large directory trees")
296
+ end
297
+
298
+ it "logs a warning if number of files is greater than soft max_files limit of 1000" do
299
+ mock_big_dir_structure(@path)
300
+ @fileset.recurse = true
301
+ expect(Puppet).to receive(:warning).with("The directory '#{@path}' contains 1010 entries, which exceeds the default soft limit 1000 and may cause excessive resource consumption and degraded performance. To remove this warning set a value for `max_files` parameter or consider using an alternate method to manage large directory trees")
302
+ expect { @fileset.files }.to_not raise_error
303
+ end
304
+
305
+ it "does not emit a warning if max_files is -1" do
306
+ mock_big_dir_structure(@path)
307
+ @fileset.recurse = true
308
+ @fileset.max_files = -1
309
+ expect(Puppet).to receive(:warning).never
310
+ @fileset.files
311
+ end
312
+
313
+ it "does not emit a warning if max_files is `-1`(string)" do
314
+ mock_big_dir_structure(@path)
315
+ @fileset.recurse = true
316
+ @fileset.max_files = '-1'
317
+ expect(Puppet).to receive(:warning).never
318
+ @fileset.files
319
+ end
320
+
261
321
  it "ignores files that match a pattern given as a boolean" do
262
322
  mock_dir_structure(@path)
263
323
  @fileset.recurse = true
@@ -999,6 +999,15 @@ describe "Puppet::FileSystem" do
999
999
  Puppet::FileSystem.replace_file(dest, 0755) { |_| }
1000
1000
  }.to raise_error(ArgumentError, /Only modes 0644, 0640, 0660, and 0440 are allowed/)
1001
1001
  end
1002
+
1003
+ it 'falls back to fully qualified user name when sid retrieval fails' do
1004
+ current_user_sid = Puppet::Util::Windows::SID.name_to_sid(Puppet::Util::Windows::ADSI::User.current_user_name)
1005
+ allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).with(Puppet::Util::Windows::ADSI::User.current_user_name).and_return(nil, current_user_sid)
1006
+ allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).with(Puppet::Util::Windows::ADSI::User.current_sam_compatible_user_name).and_call_original
1007
+
1008
+ Puppet::FileSystem.replace_file(dest, 0644) { |f| f.write(content) }
1009
+ expects_public_file(dest)
1010
+ end
1002
1011
  end
1003
1012
  end
1004
1013
 
@@ -39,6 +39,15 @@ describe 'the 4x function api' do
39
39
 
40
40
  let(:loader) { FunctionAPISpecModule::TestFunctionLoader.new }
41
41
 
42
+ def parse_eval(code, here)
43
+ if here.respond_to?(:source_location)
44
+ eval(code, here, here.source_location[0], here.source_location[1])
45
+ else
46
+ # this can be removed when ruby < 2.6 is dropped
47
+ eval(code, here)
48
+ end
49
+ end
50
+
42
51
  it 'allows a simple function to be created without dispatch declaration' do
43
52
  f = Puppet::Functions.create_function('min') do
44
53
  def min(x,y)
@@ -484,7 +493,7 @@ describe 'the 4x function api' do
484
493
  the_loader = loader()
485
494
  here = get_binding(the_loader)
486
495
  expect do
487
- eval(<<-CODE, here)
496
+ parse_eval(<<-CODE, here)
488
497
  Puppet::Functions.create_function('testing::test') do
489
498
  local_types do
490
499
  type 'MyType += Array[Integer]'
@@ -505,7 +514,7 @@ describe 'the 4x function api' do
505
514
  the_loader = loader()
506
515
  here = get_binding(the_loader)
507
516
  expect do
508
- eval(<<-CODE, here)
517
+ parse_eval(<<-CODE, here)
509
518
  Puppet::Functions.create_function('testing::test') do
510
519
  dispatch :test do
511
520
  param 'Array[1+=1]', :x
@@ -525,7 +534,7 @@ describe 'the 4x function api' do
525
534
  it 'uses return_type to validate returned value' do
526
535
  the_loader = loader()
527
536
  here = get_binding(the_loader)
528
- fc = eval(<<-CODE, here)
537
+ fc = parse_eval(<<-CODE, here)
529
538
  Puppet::Functions.create_function('testing::test') do
530
539
  dispatch :test do
531
540
  param 'Integer', :x
@@ -547,7 +556,7 @@ describe 'the 4x function api' do
547
556
  the_loader = loader()
548
557
  the_loader.add_type('myalias', type_alias_t('MyAlias', 'Integer'))
549
558
  here = get_binding(the_loader)
550
- fc = eval(<<-CODE, here)
559
+ fc = parse_eval(<<-CODE, here)
551
560
  Puppet::Functions.create_function('testing::test') do
552
561
  dispatch :test do
553
562
  param 'MyAlias', :x
@@ -567,7 +576,7 @@ describe 'the 4x function api' do
567
576
  it 'reports a reference to an unresolved type' do
568
577
  the_loader = loader()
569
578
  here = get_binding(the_loader)
570
- fc = eval(<<-CODE, here)
579
+ fc = parse_eval(<<-CODE, here)
571
580
  Puppet::Functions.create_function('testing::test') do
572
581
  dispatch :test do
573
582
  param 'MyAlias', :x
@@ -586,7 +595,7 @@ describe 'the 4x function api' do
586
595
  it 'create local Type aliases' do
587
596
  the_loader = loader()
588
597
  here = get_binding(the_loader)
589
- fc = eval(<<-CODE, here)
598
+ fc = parse_eval(<<-CODE, here)
590
599
  Puppet::Functions.create_function('testing::test') do
591
600
  local_types do
592
601
  type 'MyType = Array[Integer]'
@@ -608,7 +617,7 @@ describe 'the 4x function api' do
608
617
  it 'create nested local Type aliases' do
609
618
  the_loader = loader()
610
619
  here = get_binding(the_loader)
611
- fc = eval(<<-CODE, here)
620
+ fc = parse_eval(<<-CODE, here)
612
621
  Puppet::Functions.create_function('testing::test') do
613
622
  local_types do
614
623
  type 'InnerType = Array[Integer]'
@@ -631,7 +640,7 @@ describe 'the 4x function api' do
631
640
  it 'create self referencing local Type aliases' do
632
641
  the_loader = loader()
633
642
  here = get_binding(the_loader)
634
- fc = eval(<<-CODE, here)
643
+ fc = parse_eval(<<-CODE, here)
635
644
  Puppet::Functions.create_function('testing::test') do
636
645
  local_types do
637
646
  type 'Tree = Hash[String,Variant[String,Tree]]'
@@ -27,6 +27,18 @@ describe Puppet::GettextConfig do
27
27
  Puppet::GettextConfig.delete_all_text_domains
28
28
  end
29
29
 
30
+ # These tests assume gettext is enabled, but it will be disabled when the
31
+ # first time the `Puppet[:disable_i18n]` setting is resolved
32
+ around(:each) do |example|
33
+ disabled = Puppet::GettextConfig.instance_variable_get(:@gettext_disabled)
34
+ Puppet::GettextConfig.instance_variable_set(:@gettext_disabled, false)
35
+ begin
36
+ example.run
37
+ ensure
38
+ Puppet::GettextConfig.instance_variable_set(:@gettext_disabled, disabled)
39
+ end
40
+ end
41
+
30
42
  describe 'setting and getting the locale' do
31
43
  it 'should return "en" when gettext is unavailable' do
32
44
  allow(Puppet::GettextConfig).to receive(:gettext_loaded?).and_return(false)
@@ -138,4 +138,23 @@ describe Puppet::HTTP::Factory do
138
138
  expect(conn.local_host).to eq('127.0.0.1')
139
139
  end
140
140
  end
141
+
142
+ context 'tls' do
143
+ it "sets the minimum version to TLS 1.0", if: RUBY_VERSION.to_f >= 2.5 do
144
+ conn = create_connection(site)
145
+ expect(conn.min_version).to eq(OpenSSL::SSL::TLS1_VERSION)
146
+ end
147
+
148
+ it "defaults to ciphersuites providing 128 bits of security or greater" do
149
+ conn = create_connection(site)
150
+ expect(conn.ciphers).to eq("ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256")
151
+ end
152
+
153
+ it "can be restricted to TLSv1.3 ciphers" do
154
+ tls13_ciphers = "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"
155
+ Puppet[:ciphers] = tls13_ciphers
156
+ conn = create_connection(site)
157
+ expect(conn.ciphers).to eq(tls13_ciphers)
158
+ end
159
+ end
141
160
  end
@@ -1,3 +1,4 @@
1
+
1
2
  # coding: utf-8
2
3
  require 'spec_helper'
3
4
  require 'puppet/http'
@@ -257,6 +258,128 @@ describe Puppet::HTTP::Service::Compiler do
257
258
  end
258
259
  end
259
260
 
261
+ context 'when posting for a v4 catalog' do
262
+ let(:uri) {"https://compiler.example.com:8140/puppet/v4/catalog"}
263
+ let(:persistence) {{ facts: true, catalog: true }}
264
+ let(:facts) {{ 'foo' => 'bar' }}
265
+ let(:trusted_facts) {{}}
266
+ let(:uuid) { "ec3d2844-b236-4287-b0ad-632fbb4d1ff0" }
267
+ let(:job_id) { "1" }
268
+ let(:payload) {{
269
+ environment: environment,
270
+ persistence: persistence,
271
+ facts: facts,
272
+ trusted_facts: trusted_facts,
273
+ transaction_uuid: uuid,
274
+ job_id: job_id,
275
+ options: {
276
+ prefer_requested_environment: false,
277
+ capture_logs: false
278
+ }
279
+ }}
280
+ let(:serialized_catalog) {{ 'catalog' => catalog.to_data_hash }.to_json}
281
+ let(:catalog_response) {{ body: serialized_catalog, headers: {'Content-Type' => formatter.mime }}}
282
+
283
+ it 'includes default HTTP headers' do
284
+ stub_request(:post, uri).with do |request|
285
+ expect(request.headers).to include({'X-Puppet-Version' => /./, 'User-Agent' => /./})
286
+ expect(request.headers).to_not include('X-Puppet-Profiling')
287
+ end.to_return(**catalog_response)
288
+
289
+ subject.post_catalog4(certname, **payload)
290
+ end
291
+
292
+ it 'defaults the server and port based on settings' do
293
+ Puppet[:server] = 'compiler2.example.com'
294
+ Puppet[:serverport] = 8141
295
+
296
+ stub_request(:post, "https://compiler2.example.com:8141/puppet/v4/catalog")
297
+ .to_return(**catalog_response)
298
+
299
+ subject.post_catalog4(certname, **payload)
300
+ end
301
+
302
+ it 'includes puppet headers set via the :http_extra_headers and :profile settings' do
303
+ stub_request(:post, uri).with(headers: {'Example-Header' => 'real-thing', 'another' => 'thing', 'X-Puppet-Profiling' => 'true'}).
304
+ to_return(**catalog_response)
305
+
306
+ Puppet[:http_extra_headers] = 'Example-Header:real-thing,another:thing'
307
+ Puppet[:profile] = true
308
+
309
+ subject.post_catalog4(certname, **payload)
310
+ end
311
+
312
+ it 'returns a deserialized catalog' do
313
+ stub_request(:post, uri)
314
+ .to_return(**catalog_response)
315
+
316
+ _, cat, _ = subject.post_catalog4(certname, **payload)
317
+ expect(cat).to be_a(Puppet::Resource::Catalog)
318
+ expect(cat.name).to eq(certname)
319
+ end
320
+
321
+ it 'returns the request response' do
322
+ stub_request(:post, uri)
323
+ .to_return(**catalog_response)
324
+
325
+ resp, _, _ = subject.post_catalog4(certname, **payload)
326
+ expect(resp).to be_a(Puppet::HTTP::Response)
327
+ end
328
+
329
+ it 'raises a response error if unsuccessful' do
330
+ stub_request(:post, uri)
331
+ .to_return(status: [500, "Server Error"])
332
+
333
+ expect {
334
+ subject.post_catalog4(certname, **payload)
335
+ }.to raise_error do |err|
336
+ expect(err).to be_an_instance_of(Puppet::HTTP::ResponseError)
337
+ expect(err.message).to eq('Server Error')
338
+ expect(err.response.code).to eq(500)
339
+ end
340
+ end
341
+
342
+ it 'raises a response error when server response is not JSON' do
343
+ stub_request(:post, uri)
344
+ .to_return(body: "this isn't valid JSON", headers: {'Content-Type' => 'application/json'})
345
+
346
+ expect {
347
+ subject.post_catalog4(certname, **payload)
348
+ }.to raise_error do |err|
349
+ expect(err).to be_an_instance_of(Puppet::HTTP::SerializationError)
350
+ expect(err.message).to match(/Failed to deserialize catalog from puppetserver response/)
351
+ end
352
+ end
353
+
354
+ it 'raises a response error when server response a JSON serialized catalog' do
355
+ stub_request(:post, uri)
356
+ .to_return(body: {oops: 'bad response data'}.to_json, headers: {'Content-Type' => 'application/json'})
357
+
358
+ expect {
359
+ subject.post_catalog4(certname, **payload)
360
+ }.to raise_error do |err|
361
+ expect(err).to be_an_instance_of(Puppet::HTTP::SerializationError)
362
+ expect(err.message).to match(/Failed to deserialize catalog from puppetserver response/)
363
+ end
364
+ end
365
+
366
+ it 'raises ArgumentError when the `persistence` hash does not contain required keys' do
367
+ payload[:persistence].delete(:facts)
368
+ expect { subject.post_catalog4(certname, **payload) }.to raise_error do |err|
369
+ expect(err).to be_an_instance_of(ArgumentError)
370
+ expect(err.message).to match(/The 'persistence' hash is missing the keys: facts/)
371
+ end
372
+ end
373
+
374
+ it 'raises ArgumentError when `facts` are not a Hash' do
375
+ payload[:facts] = Puppet::Node::Facts.new(certname)
376
+ expect { subject.post_catalog4(certname, **payload) }.to raise_error do |err|
377
+ expect(err).to be_an_instance_of(ArgumentError)
378
+ expect(err.message).to match(/Facts must be a Hash not a Puppet::Node::Facts/)
379
+ end
380
+ end
381
+ end
382
+
260
383
  context 'when getting a node' do
261
384
  let(:uri) { %r{/puppet/v3/node/ziggy} }
262
385
  let(:node_response) { { body: formatter.render(node), headers: {'Content-Type' => formatter.mime } } }
@@ -909,9 +909,10 @@ describe Puppet::Resource::Catalog::Compiler do
909
909
  it "inlines child metadata" do
910
910
  catalog = compile_to_catalog(<<-MANIFEST, node)
911
911
  file { '#{path}':
912
- ensure => directory,
913
- recurse => true,
914
- source => '#{source_dir}'
912
+ ensure => directory,
913
+ recurse => true,
914
+ source => '#{source_dir}',
915
+ max_files => 1234,
915
916
  }
916
917
  MANIFEST
917
918
 
@@ -925,6 +926,7 @@ describe Puppet::Resource::Catalog::Compiler do
925
926
  :source_permissions => :ignore,
926
927
  :recurse => true,
927
928
  :recurselimit => nil,
929
+ :max_files => 1234,
928
930
  :ignore => nil,
929
931
  }
930
932
  expect(Puppet::FileServing::Metadata.indirection).to receive(:search).with(source_dir, options).and_return([metadata, child_metadata])
@@ -938,14 +940,15 @@ describe Puppet::Resource::Catalog::Compiler do
938
940
  it "uses resource parameters when inlining metadata" do
939
941
  catalog = compile_to_catalog(<<-MANIFEST, node)
940
942
  file { '#{path}':
941
- ensure => directory,
942
- recurse => true,
943
- source => '#{source_dir}',
944
- checksum => sha256,
943
+ ensure => directory,
944
+ recurse => true,
945
+ source => '#{source_dir}',
946
+ checksum => sha256,
945
947
  source_permissions => use_when_creating,
946
- recurselimit => 2,
947
- ignore => 'foo.+',
948
- links => follow,
948
+ recurselimit => 2,
949
+ max_files => 4321,
950
+ ignore => 'foo.+',
951
+ links => follow,
949
952
  }
950
953
  MANIFEST
951
954
 
@@ -956,6 +959,7 @@ describe Puppet::Resource::Catalog::Compiler do
956
959
  :source_permissions => :use_when_creating,
957
960
  :recurse => true,
958
961
  :recurselimit => 2,
962
+ :max_files => 4321,
959
963
  :ignore => 'foo.+',
960
964
  }
961
965
  expect(Puppet::FileServing::Metadata.indirection).to receive(:search).with(source_dir, options).and_return([metadata, child_metadata])
@@ -478,7 +478,7 @@ describe Puppet::Module do
478
478
  end
479
479
  end
480
480
 
481
- [:plugins, :pluginfacts, :templates, :files, :manifests].each do |filetype|
481
+ [:plugins, :pluginfacts, :templates, :files, :manifests, :scripts].each do |filetype|
482
482
  case filetype
483
483
  when :plugins
484
484
  dirname = "lib"
@@ -0,0 +1,38 @@
1
+ # Tests the backwards compatibility of our master -> server changes
2
+ # in the HTTP API
3
+ # This may be removed in Puppet 8
4
+ require 'spec_helper'
5
+
6
+ require 'puppet/network/http'
7
+ require 'puppet_spec/network'
8
+
9
+ describe Puppet::Network::HTTP::API::Master::V3 do
10
+ include PuppetSpec::Network
11
+
12
+ let(:response) { Puppet::Network::HTTP::MemoryResponse.new }
13
+ let(:server_url_prefix) { "#{Puppet::Network::HTTP::MASTER_URL_PREFIX}/v3" }
14
+ let(:server_routes) {
15
+ Puppet::Network::HTTP::Route.
16
+ path(Regexp.new("#{Puppet::Network::HTTP::MASTER_URL_PREFIX}/")).
17
+ any.
18
+ chain(Puppet::Network::HTTP::API::Master::V3.routes)
19
+ }
20
+
21
+ # simulate puppetserver registering its authconfigloader class
22
+ around :each do |example|
23
+ Puppet::Network::Authorization.authconfigloader_class = Object
24
+ begin
25
+ example.run
26
+ ensure
27
+ Puppet::Network::Authorization.authconfigloader_class = nil
28
+ end
29
+ end
30
+
31
+ it "mounts the environments endpoint" do
32
+ request = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_url_prefix}/environments")
33
+ server_routes.process(request, response)
34
+
35
+ expect(response.code).to eq(200)
36
+ end
37
+ end
38
+