puppet 6.25.1 → 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 (784) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/CONTRIBUTING.md +5 -5
  4. data/Gemfile +3 -5
  5. data/Gemfile.lock +39 -51
  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 +1 -15
  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/application/agent.rb +4 -16
  104. data/lib/puppet/application/apply.rb +4 -24
  105. data/lib/puppet/application/device.rb +100 -106
  106. data/lib/puppet/application/filebucket.rb +13 -10
  107. data/lib/puppet/application/resource.rb +16 -32
  108. data/lib/puppet/application/script.rb +0 -2
  109. data/lib/puppet/application/ssl.rb +1 -13
  110. data/lib/puppet/application.rb +178 -108
  111. data/lib/puppet/application_support.rb +0 -7
  112. data/lib/puppet/concurrent/thread_local_singleton.rb +0 -1
  113. data/lib/puppet/configurer/downloader.rb +1 -2
  114. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  115. data/lib/puppet/configurer.rb +86 -189
  116. data/lib/puppet/confine/variable.rb +1 -1
  117. data/lib/puppet/defaults.rb +128 -232
  118. data/lib/puppet/environments.rb +82 -146
  119. data/lib/puppet/face/facts.rb +5 -103
  120. data/lib/puppet/face/help/action.erb +0 -1
  121. data/lib/puppet/face/help/face.erb +0 -1
  122. data/lib/puppet/face/help.rb +1 -1
  123. data/lib/puppet/face/node/clean.rb +0 -11
  124. data/lib/puppet/face/plugin.rb +5 -8
  125. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  126. data/lib/puppet/ffi/windows/constants.rb +404 -0
  127. data/lib/puppet/ffi/windows/functions.rb +628 -0
  128. data/lib/puppet/ffi/windows/structs.rb +338 -0
  129. data/lib/puppet/ffi/windows.rb +12 -0
  130. data/lib/puppet/file_serving/configuration/parser.rb +3 -34
  131. data/lib/puppet/file_serving/configuration.rb +0 -8
  132. data/lib/puppet/file_serving/fileset.rb +2 -14
  133. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  134. data/lib/puppet/file_serving/mount/file.rb +4 -4
  135. data/lib/puppet/file_serving/mount.rb +1 -2
  136. data/lib/puppet/file_system/file_impl.rb +1 -3
  137. data/lib/puppet/file_system/memory_file.rb +1 -8
  138. data/lib/puppet/file_system/windows.rb +2 -4
  139. data/lib/puppet/forge/repository.rb +0 -1
  140. data/lib/puppet/forge.rb +4 -4
  141. data/lib/puppet/functions/all.rb +1 -1
  142. data/lib/puppet/functions/camelcase.rb +1 -1
  143. data/lib/puppet/functions/capitalize.rb +2 -2
  144. data/lib/puppet/functions/downcase.rb +2 -2
  145. data/lib/puppet/functions/empty.rb +0 -8
  146. data/lib/puppet/functions/find_template.rb +2 -2
  147. data/lib/puppet/functions/get.rb +5 -5
  148. data/lib/puppet/functions/group_by.rb +5 -13
  149. data/lib/puppet/functions/lest.rb +1 -1
  150. data/lib/puppet/functions/new.rb +100 -100
  151. data/lib/puppet/functions/partition.rb +4 -12
  152. data/lib/puppet/functions/require.rb +5 -5
  153. data/lib/puppet/functions/sort.rb +3 -3
  154. data/lib/puppet/functions/strftime.rb +0 -1
  155. data/lib/puppet/functions/tree_each.rb +9 -7
  156. data/lib/puppet/functions/type.rb +4 -4
  157. data/lib/puppet/functions/unwrap.rb +2 -17
  158. data/lib/puppet/functions/upcase.rb +2 -2
  159. data/lib/puppet/generate/models/type/type.rb +4 -1
  160. data/lib/puppet/http/client.rb +165 -115
  161. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  162. data/lib/puppet/http/errors.rb +16 -0
  163. data/lib/puppet/http/external_client.rb +5 -7
  164. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  165. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  166. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  167. data/lib/puppet/http/proxy.rb +137 -0
  168. data/lib/puppet/http/redirector.rb +4 -17
  169. data/lib/puppet/http/resolver/server_list.rb +10 -25
  170. data/lib/puppet/http/resolver/settings.rb +4 -7
  171. data/lib/puppet/http/resolver/srv.rb +7 -11
  172. data/lib/puppet/http/resolver.rb +5 -15
  173. data/lib/puppet/http/response.rb +36 -54
  174. data/lib/puppet/http/response_converter.rb +24 -0
  175. data/lib/puppet/http/response_net_http.rb +42 -0
  176. data/lib/puppet/http/retry_after_handler.rb +4 -13
  177. data/lib/puppet/http/service/ca.rb +11 -22
  178. data/lib/puppet/http/service/compiler.rb +23 -144
  179. data/lib/puppet/http/service/file_server.rb +19 -29
  180. data/lib/puppet/http/service/puppetserver.rb +26 -12
  181. data/lib/puppet/http/service/report.rb +8 -10
  182. data/lib/puppet/http/service.rb +12 -26
  183. data/lib/puppet/http/session.rb +11 -20
  184. data/lib/puppet/{network/http → http}/site.rb +1 -2
  185. data/lib/puppet/http.rb +22 -13
  186. data/lib/puppet/indirector/catalog/compiler.rb +6 -25
  187. data/lib/puppet/indirector/catalog/rest.rb +2 -5
  188. data/lib/puppet/indirector/facts/facter.rb +6 -6
  189. data/lib/puppet/indirector/facts/rest.rb +3 -22
  190. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  191. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  192. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  193. data/lib/puppet/indirector/file_server.rb +1 -8
  194. data/lib/puppet/indirector/generic_http.rb +0 -11
  195. data/lib/puppet/indirector/indirection.rb +1 -1
  196. data/lib/puppet/indirector/node/rest.rb +2 -4
  197. data/lib/puppet/indirector/report/rest.rb +3 -8
  198. data/lib/puppet/indirector/request.rb +0 -101
  199. data/lib/puppet/indirector/resource/ral.rb +1 -6
  200. data/lib/puppet/indirector/rest.rb +12 -263
  201. data/lib/puppet/indirector/terminus.rb +0 -4
  202. data/lib/puppet/interface/documentation.rb +0 -1
  203. data/lib/puppet/module/plan.rb +1 -0
  204. data/lib/puppet/module/task.rb +1 -1
  205. data/lib/puppet/module.rb +0 -1
  206. data/lib/puppet/module_tool/applications/installer.rb +2 -56
  207. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  208. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  209. data/lib/puppet/module_tool/applications.rb +0 -1
  210. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  211. data/lib/puppet/network/authconfig.rb +2 -96
  212. data/lib/puppet/network/authorization.rb +13 -35
  213. data/lib/puppet/network/formats.rb +0 -67
  214. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  215. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  216. data/lib/puppet/network/http/connection.rb +247 -316
  217. data/lib/puppet/network/http/handler.rb +0 -1
  218. data/lib/puppet/network/http.rb +3 -3
  219. data/lib/puppet/network/http_pool.rb +16 -34
  220. data/lib/puppet/node/environment.rb +11 -10
  221. data/lib/puppet/node.rb +1 -30
  222. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  223. data/lib/puppet/pal/pal_impl.rb +4 -2
  224. data/lib/puppet/parser/ast/leaf.rb +2 -3
  225. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  226. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  227. data/lib/puppet/parser/compiler.rb +0 -198
  228. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  229. data/lib/puppet/parser/resource.rb +1 -70
  230. data/lib/puppet/parser/scope.rb +0 -1
  231. data/lib/puppet/parser/templatewrapper.rb +1 -2
  232. data/lib/puppet/pops/evaluator/closure.rb +5 -7
  233. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  234. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  235. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -4
  236. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  237. data/lib/puppet/pops/issues.rb +0 -5
  238. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  239. data/lib/puppet/pops/lookup/lookup_adapter.rb +2 -3
  240. data/lib/puppet/pops/model/ast.pp +0 -42
  241. data/lib/puppet/pops/model/ast.rb +0 -291
  242. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  243. data/lib/puppet/pops/model/factory.rb +1 -47
  244. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  245. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  246. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  247. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  248. data/lib/puppet/pops/parser/eparser.rb +1691 -1883
  249. data/lib/puppet/pops/parser/lexer2.rb +91 -92
  250. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  251. data/lib/puppet/pops/parser/slurp_support.rb +0 -1
  252. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  253. data/lib/puppet/pops/serialization/to_data_converter.rb +6 -18
  254. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  255. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  256. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  257. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  258. data/lib/puppet/pops/types/type_formatter.rb +3 -4
  259. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  260. data/lib/puppet/pops/types/type_parser.rb +0 -4
  261. data/lib/puppet/pops/types/types.rb +1 -2
  262. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  263. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  264. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  265. data/lib/puppet/property/list.rb +1 -1
  266. data/lib/puppet/provider/aix_object.rb +1 -1
  267. data/lib/puppet/provider/exec/posix.rb +4 -16
  268. data/lib/puppet/provider/group/groupadd.rb +10 -18
  269. data/lib/puppet/provider/nameservice.rb +0 -18
  270. data/lib/puppet/provider/package/apt.rb +2 -34
  271. data/lib/puppet/provider/package/aptitude.rb +0 -6
  272. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  273. data/lib/puppet/provider/package/dpkg.rb +0 -10
  274. data/lib/puppet/provider/package/gem.rb +23 -3
  275. data/lib/puppet/provider/package/nim.rb +6 -11
  276. data/lib/puppet/provider/package/pip.rb +3 -16
  277. data/lib/puppet/provider/package/pkg.rb +2 -23
  278. data/lib/puppet/provider/package/portage.rb +1 -1
  279. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  280. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  281. data/lib/puppet/provider/package/yum.rb +1 -1
  282. data/lib/puppet/provider/parsedfile.rb +0 -3
  283. data/lib/puppet/provider/service/base.rb +1 -1
  284. data/lib/puppet/provider/service/debian.rb +0 -2
  285. data/lib/puppet/provider/service/init.rb +5 -5
  286. data/lib/puppet/provider/service/launchd.rb +2 -2
  287. data/lib/puppet/provider/service/redhat.rb +1 -1
  288. data/lib/puppet/provider/service/smf.rb +194 -76
  289. data/lib/puppet/provider/service/systemd.rb +6 -16
  290. data/lib/puppet/provider/service/upstart.rb +5 -5
  291. data/lib/puppet/provider/service/windows.rb +0 -38
  292. data/lib/puppet/provider/user/aix.rb +3 -46
  293. data/lib/puppet/provider/user/directoryservice.rb +11 -34
  294. data/lib/puppet/provider/user/useradd.rb +24 -134
  295. data/lib/puppet/provider.rb +1 -14
  296. data/lib/puppet/reference/configuration.rb +8 -7
  297. data/lib/puppet/reference/indirection.rb +1 -1
  298. data/lib/puppet/reference/providers.rb +2 -2
  299. data/lib/puppet/resource/catalog.rb +2 -15
  300. data/lib/puppet/resource/type.rb +3 -119
  301. data/lib/puppet/resource/type_collection.rb +3 -49
  302. data/lib/puppet/resource.rb +6 -127
  303. data/lib/puppet/runtime.rb +2 -13
  304. data/lib/puppet/settings/environment_conf.rb +0 -1
  305. data/lib/puppet/settings/integer_setting.rb +17 -0
  306. data/lib/puppet/settings/port_setting.rb +15 -0
  307. data/lib/puppet/settings/priority_setting.rb +5 -4
  308. data/lib/puppet/settings.rb +82 -98
  309. data/lib/puppet/ssl/base.rb +3 -5
  310. data/lib/puppet/ssl/certificate.rb +0 -6
  311. data/lib/puppet/ssl/certificate_request.rb +1 -12
  312. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  313. data/lib/puppet/ssl/oids.rb +3 -1
  314. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  315. data/lib/puppet/ssl/state_machine.rb +3 -1
  316. data/lib/puppet/ssl/verifier.rb +2 -0
  317. data/lib/puppet/ssl.rb +10 -6
  318. data/lib/puppet/test/test_helper.rb +2 -7
  319. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  320. data/lib/puppet/transaction/persistence.rb +1 -11
  321. data/lib/puppet/transaction/report.rb +3 -19
  322. data/lib/puppet/transaction.rb +1 -7
  323. data/lib/puppet/type/exec.rb +5 -35
  324. data/lib/puppet/type/file/checksum.rb +1 -1
  325. data/lib/puppet/type/file/mode.rb +0 -6
  326. data/lib/puppet/type/file/selcontext.rb +1 -1
  327. data/lib/puppet/type/file/source.rb +1 -1
  328. data/lib/puppet/type/file.rb +12 -32
  329. data/lib/puppet/type/filebucket.rb +4 -4
  330. data/lib/puppet/type/group.rb +1 -0
  331. data/lib/puppet/type/package.rb +8 -16
  332. data/lib/puppet/type/resources.rb +1 -1
  333. data/lib/puppet/type/service.rb +41 -26
  334. data/lib/puppet/type/tidy.rb +3 -22
  335. data/lib/puppet/type/user.rb +21 -38
  336. data/lib/puppet/type.rb +1 -77
  337. data/lib/puppet/util/autoload.rb +8 -1
  338. data/lib/puppet/util/command_line.rb +1 -1
  339. data/lib/puppet/util/execution.rb +0 -11
  340. data/lib/puppet/util/filetype.rb +2 -2
  341. data/lib/puppet/util/http_proxy.rb +2 -215
  342. data/lib/puppet/util/json.rb +0 -3
  343. data/lib/puppet/util/log.rb +2 -1
  344. data/lib/puppet/util/logging.rb +25 -1
  345. data/lib/puppet/util/monkey_patches.rb +0 -53
  346. data/lib/puppet/util/pidlock.rb +1 -1
  347. data/lib/puppet/util/posix.rb +5 -54
  348. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  349. data/lib/puppet/util/rdoc.rb +0 -7
  350. data/lib/puppet/util/retry_action.rb +1 -1
  351. data/lib/puppet/util/run_mode.rb +9 -1
  352. data/lib/puppet/util/selinux.rb +4 -30
  353. data/lib/puppet/util/suidmanager.rb +2 -1
  354. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  355. data/lib/puppet/util/tagging.rb +0 -1
  356. data/lib/puppet/util/windows/adsi.rb +0 -46
  357. data/lib/puppet/util/windows/daemon.rb +360 -0
  358. data/lib/puppet/util/windows/error.rb +1 -0
  359. data/lib/puppet/util/windows/eventlog.rb +4 -9
  360. data/lib/puppet/util/windows/file.rb +8 -242
  361. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  362. data/lib/puppet/util/windows/principal.rb +2 -9
  363. data/lib/puppet/util/windows/process.rb +4 -226
  364. data/lib/puppet/util/windows/service.rb +11 -457
  365. data/lib/puppet/util/windows/sid.rb +2 -6
  366. data/lib/puppet/util/windows/string.rb +12 -13
  367. data/lib/puppet/util/windows/user.rb +2 -0
  368. data/lib/puppet/util/windows.rb +3 -11
  369. data/lib/puppet/util/yaml.rb +0 -22
  370. data/lib/puppet/util.rb +3 -4
  371. data/lib/puppet/vendor/require_vendored.rb +0 -1
  372. data/lib/puppet/version.rb +1 -1
  373. data/lib/puppet/x509/cert_provider.rb +29 -1
  374. data/lib/puppet/x509.rb +5 -1
  375. data/lib/puppet.rb +20 -25
  376. data/locales/puppet.pot +816 -1637
  377. data/man/man5/puppet.conf.5 +286 -382
  378. data/man/man8/puppet-agent.8 +2 -5
  379. data/man/man8/puppet-apply.8 +2 -2
  380. data/man/man8/puppet-catalog.8 +9 -9
  381. data/man/man8/puppet-config.8 +1 -1
  382. data/man/man8/puppet-describe.8 +1 -1
  383. data/man/man8/puppet-device.8 +2 -2
  384. data/man/man8/puppet-doc.8 +1 -1
  385. data/man/man8/puppet-epp.8 +1 -1
  386. data/man/man8/puppet-facts.8 +8 -51
  387. data/man/man8/puppet-filebucket.8 +4 -4
  388. data/man/man8/puppet-generate.8 +1 -1
  389. data/man/man8/puppet-help.8 +1 -1
  390. data/man/man8/puppet-lookup.8 +1 -1
  391. data/man/man8/puppet-module.8 +3 -60
  392. data/man/man8/puppet-node.8 +5 -5
  393. data/man/man8/puppet-parser.8 +1 -1
  394. data/man/man8/puppet-plugin.8 +1 -1
  395. data/man/man8/puppet-report.8 +5 -5
  396. data/man/man8/puppet-resource.8 +1 -1
  397. data/man/man8/puppet-script.8 +2 -2
  398. data/man/man8/puppet-ssl.8 +1 -5
  399. data/man/man8/puppet.8 +2 -2
  400. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  401. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  402. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  403. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  404. data/spec/fixtures/ssl/ca.pem +35 -57
  405. data/spec/fixtures/ssl/crl.pem +18 -28
  406. data/spec/fixtures/ssl/ec-key.pem +11 -11
  407. data/spec/fixtures/ssl/ec.pem +24 -33
  408. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  409. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  410. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  411. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  412. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  413. data/spec/fixtures/ssl/intermediate.pem +36 -57
  414. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  415. data/spec/fixtures/ssl/pluto.pem +30 -52
  416. data/spec/fixtures/ssl/request-key.pem +57 -107
  417. data/spec/fixtures/ssl/request.pem +26 -47
  418. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  419. data/spec/fixtures/ssl/revoked.pem +30 -52
  420. data/spec/fixtures/ssl/signed-key.pem +57 -107
  421. data/spec/fixtures/ssl/signed.pem +30 -52
  422. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  423. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  424. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  425. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  426. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  427. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  428. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  429. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  430. data/spec/integration/application/agent_spec.rb +51 -299
  431. data/spec/integration/application/apply_spec.rb +1 -20
  432. data/spec/integration/application/filebucket_spec.rb +16 -32
  433. data/spec/integration/application/help_spec.rb +2 -0
  434. data/spec/integration/application/module_spec.rb +0 -21
  435. data/spec/integration/application/plugin_spec.rb +24 -2
  436. data/spec/integration/configurer_spec.rb +2 -18
  437. data/spec/integration/defaults_spec.rb +14 -3
  438. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  439. data/spec/integration/http/client_spec.rb +0 -12
  440. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  441. data/spec/integration/indirector/facts/facter_spec.rb +39 -93
  442. data/spec/integration/network/http_pool_spec.rb +3 -21
  443. data/spec/integration/parser/catalog_spec.rb +0 -38
  444. data/spec/integration/parser/node_spec.rb +0 -9
  445. data/spec/integration/parser/pcore_resource_spec.rb +0 -47
  446. data/spec/integration/resource/type_collection_spec.rb +6 -2
  447. data/spec/integration/transaction/report_spec.rb +1 -1
  448. data/spec/integration/transaction_spec.rb +9 -4
  449. data/spec/integration/type/exec_spec.rb +45 -70
  450. data/spec/integration/type/file_spec.rb +7 -6
  451. data/spec/integration/type/package_spec.rb +6 -6
  452. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  453. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  454. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  455. data/spec/integration/util/windows/principal_spec.rb +0 -21
  456. data/spec/integration/util/windows/process_spec.rb +9 -1
  457. data/spec/integration/util/windows/registry_spec.rb +10 -6
  458. data/spec/integration/util/windows/security_spec.rb +1 -1
  459. data/spec/lib/matchers/include.rb +27 -0
  460. data/spec/lib/matchers/include_spec.rb +32 -0
  461. data/spec/lib/puppet/test_ca.rb +2 -7
  462. data/spec/lib/puppet_spec/modules.rb +2 -13
  463. data/spec/lib/puppet_spec/puppetserver.rb +1 -16
  464. data/spec/lib/puppet_spec/settings.rb +1 -1
  465. data/spec/shared_behaviours/documentation_on_faces.rb +2 -0
  466. data/spec/spec_helper.rb +17 -13
  467. data/spec/unit/agent_spec.rb +6 -10
  468. data/spec/unit/application/agent_spec.rb +3 -7
  469. data/spec/unit/application/apply_spec.rb +56 -76
  470. data/spec/unit/application/facts_spec.rb +12 -456
  471. data/spec/unit/application/filebucket_spec.rb +43 -39
  472. data/spec/unit/application/resource_spec.rb +0 -29
  473. data/spec/unit/application/ssl_spec.rb +2 -25
  474. data/spec/unit/application_spec.rb +9 -51
  475. data/spec/unit/certificate_factory_spec.rb +1 -1
  476. data/spec/unit/configurer/downloader_spec.rb +6 -8
  477. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  478. data/spec/unit/configurer_spec.rb +68 -264
  479. data/spec/unit/confine/feature_spec.rb +1 -1
  480. data/spec/unit/confine_spec.rb +2 -8
  481. data/spec/unit/context/trusted_information_spec.rb +2 -6
  482. data/spec/unit/defaults_spec.rb +68 -55
  483. data/spec/unit/environments_spec.rb +68 -408
  484. data/spec/unit/face/node_spec.rb +11 -0
  485. data/spec/unit/face/plugin_spec.rb +73 -33
  486. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  487. data/spec/unit/file_bucket/file_spec.rb +1 -1
  488. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -41
  489. data/spec/unit/file_serving/configuration_spec.rb +10 -26
  490. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  491. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  492. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  493. data/spec/unit/file_system_spec.rb +0 -22
  494. data/spec/unit/forge/module_release_spec.rb +7 -2
  495. data/spec/unit/functions/assert_type_spec.rb +1 -1
  496. data/spec/unit/functions/camelcase_spec.rb +1 -1
  497. data/spec/unit/functions/capitalize_spec.rb +1 -1
  498. data/spec/unit/functions/downcase_spec.rb +1 -1
  499. data/spec/unit/functions/empty_spec.rb +0 -10
  500. data/spec/unit/functions/logging_spec.rb +0 -1
  501. data/spec/unit/functions/lookup_spec.rb +0 -64
  502. data/spec/unit/functions/unwrap_spec.rb +0 -8
  503. data/spec/unit/functions/upcase_spec.rb +1 -1
  504. data/spec/unit/functions4_spec.rb +2 -2
  505. data/spec/unit/gettext/config_spec.rb +0 -12
  506. data/spec/unit/http/client_spec.rb +8 -66
  507. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  508. data/spec/unit/http/external_client_spec.rb +4 -4
  509. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  510. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  511. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  512. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  513. data/spec/unit/http/resolver_spec.rb +13 -13
  514. data/spec/unit/http/service/compiler_spec.rb +0 -193
  515. data/spec/unit/http/service/file_server_spec.rb +3 -3
  516. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  517. data/spec/unit/http/service_spec.rb +0 -1
  518. data/spec/unit/http/session_spec.rb +16 -14
  519. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  520. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -101
  521. data/spec/unit/indirector/catalog/rest_spec.rb +0 -8
  522. data/spec/unit/indirector/face_spec.rb +1 -0
  523. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  524. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  525. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  526. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  527. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  528. data/spec/unit/indirector/file_server_spec.rb +1 -15
  529. data/spec/unit/indirector/indirection_spec.rb +15 -18
  530. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  531. data/spec/unit/indirector/request_spec.rb +0 -264
  532. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  533. data/spec/unit/indirector/rest_spec.rb +98 -752
  534. data/spec/unit/indirector/store_configs_spec.rb +7 -0
  535. data/spec/unit/indirector_spec.rb +2 -2
  536. data/spec/unit/interface/action_spec.rb +9 -0
  537. data/spec/unit/module_spec.rb +1 -15
  538. data/spec/unit/module_tool/applications/installer_spec.rb +0 -105
  539. data/spec/unit/network/authconfig_spec.rb +2 -129
  540. data/spec/unit/network/authorization_spec.rb +2 -55
  541. data/spec/unit/network/formats_spec.rb +4 -51
  542. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  543. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  544. data/spec/unit/network/http/api_spec.rb +10 -0
  545. data/spec/unit/network/http/connection_spec.rb +19 -41
  546. data/spec/unit/network/http/handler_spec.rb +0 -1
  547. data/spec/unit/network/http_pool_spec.rb +0 -4
  548. data/spec/unit/node/environment_spec.rb +33 -21
  549. data/spec/unit/node_spec.rb +2 -54
  550. data/spec/unit/parser/compiler_spec.rb +19 -3
  551. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  552. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  553. data/spec/unit/parser/resource_spec.rb +8 -14
  554. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  555. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  556. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  557. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  558. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  559. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  560. data/spec/unit/pops/parser/parse_containers_spec.rb +11 -0
  561. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  562. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  563. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -59
  564. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -5
  565. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  566. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  567. data/spec/unit/pops/types/type_calculator_spec.rb +6 -12
  568. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  569. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  570. data/spec/unit/pops/visitor_spec.rb +1 -1
  571. data/spec/unit/property_spec.rb +0 -1
  572. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  573. data/spec/unit/provider/nameservice_spec.rb +64 -122
  574. data/spec/unit/provider/package/apt_spec.rb +23 -28
  575. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  576. data/spec/unit/provider/package/base_spec.rb +5 -6
  577. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  578. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  579. data/spec/unit/provider/package/gem_spec.rb +33 -1
  580. data/spec/unit/provider/package/nim_spec.rb +0 -42
  581. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  582. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  583. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  584. data/spec/unit/provider/package/pip_spec.rb +12 -44
  585. data/spec/unit/provider/package/pkg_spec.rb +4 -29
  586. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  587. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -3
  588. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  589. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  590. data/spec/unit/provider/service/init_spec.rb +0 -1
  591. data/spec/unit/provider/service/launchd_spec.rb +0 -11
  592. data/spec/unit/provider/service/openwrt_spec.rb +1 -3
  593. data/spec/unit/provider/service/smf_spec.rb +401 -165
  594. data/spec/unit/provider/service/systemd_spec.rb +9 -54
  595. data/spec/unit/provider/service/windows_spec.rb +0 -203
  596. data/spec/unit/provider/user/aix_spec.rb +0 -105
  597. data/spec/unit/provider/user/directoryservice_spec.rb +36 -68
  598. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  599. data/spec/unit/provider/user/pw_spec.rb +0 -2
  600. data/spec/unit/provider/user/useradd_spec.rb +5 -114
  601. data/spec/unit/provider_spec.rb +12 -22
  602. data/spec/unit/puppet_spec.rb +4 -12
  603. data/spec/unit/resource/catalog_spec.rb +2 -15
  604. data/spec/unit/resource/type_collection_spec.rb +2 -22
  605. data/spec/unit/resource/type_spec.rb +1 -1
  606. data/spec/unit/resource_spec.rb +12 -125
  607. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  608. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  609. data/spec/unit/settings/port_setting_spec.rb +31 -0
  610. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  611. data/spec/unit/settings_spec.rb +79 -110
  612. data/spec/unit/ssl/base_spec.rb +37 -3
  613. data/spec/unit/ssl/certificate_request_spec.rb +21 -45
  614. data/spec/unit/ssl/certificate_spec.rb +2 -11
  615. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  616. data/spec/unit/ssl/state_machine_spec.rb +5 -20
  617. data/spec/unit/ssl/verifier_spec.rb +0 -21
  618. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  619. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  620. data/spec/unit/transaction/report_spec.rb +0 -2
  621. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  622. data/spec/unit/transaction_spec.rb +55 -96
  623. data/spec/unit/type/exec_spec.rb +29 -76
  624. data/spec/unit/type/file/checksum_spec.rb +6 -6
  625. data/spec/unit/type/file/content_spec.rb +2 -1
  626. data/spec/unit/type/file/ensure_spec.rb +1 -1
  627. data/spec/unit/type/file/mode_spec.rb +1 -1
  628. data/spec/unit/type/file/selinux_spec.rb +5 -3
  629. data/spec/unit/type/file/source_spec.rb +4 -5
  630. data/spec/unit/type/file_spec.rb +18 -6
  631. data/spec/unit/type/group_spec.rb +6 -13
  632. data/spec/unit/type/package_spec.rb +1 -1
  633. data/spec/unit/type/resources_spec.rb +7 -7
  634. data/spec/unit/type/service_spec.rb +189 -87
  635. data/spec/unit/type/tidy_spec.rb +8 -24
  636. data/spec/unit/type/user_spec.rb +0 -45
  637. data/spec/unit/type_spec.rb +24 -4
  638. data/spec/unit/util/at_fork_spec.rb +2 -2
  639. data/spec/unit/util/autoload_spec.rb +1 -5
  640. data/spec/unit/util/backups_spec.rb +2 -3
  641. data/spec/unit/util/execution_spec.rb +11 -44
  642. data/spec/unit/util/inifile_spec.rb +14 -6
  643. data/spec/unit/util/log_spec.rb +7 -8
  644. data/spec/unit/util/logging_spec.rb +3 -5
  645. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  646. data/spec/unit/util/posix_spec.rb +15 -363
  647. data/spec/unit/util/run_mode_spec.rb +21 -121
  648. data/spec/unit/util/selinux_spec.rb +68 -163
  649. data/spec/unit/util/storage_spec.rb +1 -3
  650. data/spec/unit/util/suidmanager_spec.rb +41 -44
  651. data/spec/unit/util/windows/sid_spec.rb +0 -41
  652. data/spec/unit/util/windows/string_spec.rb +1 -3
  653. data/spec/unit/util/yaml_spec.rb +0 -54
  654. data/spec/unit/util_spec.rb +6 -31
  655. data/tasks/generate_cert_fixtures.rake +3 -12
  656. data/tasks/parallel.rake +3 -3
  657. metadata +137 -226
  658. data/conf/auth.conf +0 -150
  659. data/ext/README.md +0 -13
  660. data/lib/puppet/application/cert.rb +0 -76
  661. data/lib/puppet/application/key.rb +0 -4
  662. data/lib/puppet/application/man.rb +0 -4
  663. data/lib/puppet/application/status.rb +0 -4
  664. data/lib/puppet/face/key.rb +0 -16
  665. data/lib/puppet/face/man.rb +0 -145
  666. data/lib/puppet/face/module/build.rb +0 -14
  667. data/lib/puppet/face/module/generate.rb +0 -14
  668. data/lib/puppet/face/module/search.rb +0 -103
  669. data/lib/puppet/face/status.rb +0 -51
  670. data/lib/puppet/facter_impl.rb +0 -96
  671. data/lib/puppet/ffi/posix/constants.rb +0 -14
  672. data/lib/puppet/ffi/posix/functions.rb +0 -24
  673. data/lib/puppet/ffi/posix.rb +0 -10
  674. data/lib/puppet/file_serving/mount/scripts.rb +0 -24
  675. data/lib/puppet/indirector/certificate/file.rb +0 -9
  676. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  677. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  678. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  679. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  680. data/lib/puppet/indirector/file_content/http.rb +0 -22
  681. data/lib/puppet/indirector/key/file.rb +0 -46
  682. data/lib/puppet/indirector/key/memory.rb +0 -7
  683. data/lib/puppet/indirector/ssl_file.rb +0 -162
  684. data/lib/puppet/indirector/status/local.rb +0 -12
  685. data/lib/puppet/indirector/status/rest.rb +0 -27
  686. data/lib/puppet/indirector/status.rb +0 -3
  687. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  688. data/lib/puppet/network/auth_config_parser.rb +0 -90
  689. data/lib/puppet/network/authstore.rb +0 -283
  690. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  691. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  692. data/lib/puppet/network/http/base_pool.rb +0 -36
  693. data/lib/puppet/network/http/compression.rb +0 -127
  694. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  695. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  696. data/lib/puppet/network/rest_controller.rb +0 -2
  697. data/lib/puppet/network/rights.rb +0 -210
  698. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  699. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  700. data/lib/puppet/parser/environment_compiler.rb +0 -202
  701. data/lib/puppet/pops/types/enumeration.rb +0 -16
  702. data/lib/puppet/resource/capability_finder.rb +0 -154
  703. data/lib/puppet/rest/errors.rb +0 -15
  704. data/lib/puppet/rest/response.rb +0 -35
  705. data/lib/puppet/rest/route.rb +0 -85
  706. data/lib/puppet/rest/routes.rb +0 -135
  707. data/lib/puppet/settings/alias_setting.rb +0 -37
  708. data/lib/puppet/ssl/host.rb +0 -505
  709. data/lib/puppet/ssl/key.rb +0 -61
  710. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  711. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  712. data/lib/puppet/ssl/validator.rb +0 -61
  713. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  714. data/lib/puppet/status.rb +0 -40
  715. data/lib/puppet/util/connection.rb +0 -88
  716. data/lib/puppet/util/fact_dif.rb +0 -81
  717. data/lib/puppet/util/ssl.rb +0 -83
  718. data/lib/puppet/util/windows/api_types.rb +0 -309
  719. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  720. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  721. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  722. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  723. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  724. data/lib/puppet/vendor/pathspec/README.md +0 -53
  725. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  726. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  727. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  728. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  729. data/man/man8/puppet-key.8 +0 -126
  730. data/man/man8/puppet-man.8 +0 -76
  731. data/man/man8/puppet-status.8 +0 -108
  732. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  733. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  734. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  735. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  736. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  737. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  738. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  739. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  740. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  741. data/spec/fixtures/ssl/oid-key.pem +0 -117
  742. data/spec/fixtures/ssl/oid.pem +0 -69
  743. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  744. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  745. data/spec/integration/application/resource_spec.rb +0 -64
  746. data/spec/integration/application/ssl_spec.rb +0 -20
  747. data/spec/integration/l10n/compiler_spec.rb +0 -37
  748. data/spec/integration/network/authconfig_spec.rb +0 -256
  749. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  750. data/spec/shared_contexts/l10n.rb +0 -27
  751. data/spec/unit/application/man_spec.rb +0 -52
  752. data/spec/unit/capability_spec.rb +0 -414
  753. data/spec/unit/face/key_spec.rb +0 -9
  754. data/spec/unit/face/module/search_spec.rb +0 -231
  755. data/spec/unit/face/status_spec.rb +0 -9
  756. data/spec/unit/facter_impl_spec.rb +0 -31
  757. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  758. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  759. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  760. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  761. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  762. data/spec/unit/indirector/key/file_spec.rb +0 -78
  763. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  764. data/spec/unit/indirector/status/local_spec.rb +0 -10
  765. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  766. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  767. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  768. data/spec/unit/network/authstore_spec.rb +0 -407
  769. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  770. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  771. data/spec/unit/network/http/compression_spec.rb +0 -240
  772. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  773. data/spec/unit/network/http_spec.rb +0 -9
  774. data/spec/unit/network/rights_spec.rb +0 -439
  775. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  776. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  777. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  778. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  779. data/spec/unit/rest/route_spec.rb +0 -132
  780. data/spec/unit/ssl/host_spec.rb +0 -645
  781. data/spec/unit/ssl/key_spec.rb +0 -173
  782. data/spec/unit/ssl/validator_spec.rb +0 -278
  783. data/spec/unit/status_spec.rb +0 -45
  784. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -4,6 +4,16 @@ describe 'Puppet::Type::Service::Provider::Smf',
4
4
  unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
5
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:smf) }
6
6
 
7
+ def set_resource_params(params = {})
8
+ params.each do |param, value|
9
+ if value.nil?
10
+ @provider.resource.delete(param) if @provider.resource[param]
11
+ else
12
+ @provider.resource[param] = value
13
+ end
14
+ end
15
+ end
16
+
7
17
  before(:each) do
8
18
  # Create a mock resource
9
19
  @resource = Puppet::Type.type(:service).new(
@@ -18,14 +28,13 @@ describe 'Puppet::Type::Service::Provider::Smf',
18
28
  allow(Facter).to receive(:value).with(:osfamily).and_return('Solaris')
19
29
  allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.2')
20
30
  end
21
-
22
31
  context ".instances" do
23
32
  it "should have an instances method" do
24
33
  expect(provider_class).to respond_to :instances
25
34
  end
26
35
 
27
36
  it "should get a list of services (excluding legacy)" do
28
- expect(provider_class).to receive(:svcs).with('-H', '-o', 'state,fmri').and_return(File.read(my_fixture('svcs.out')))
37
+ expect(provider_class).to receive(:svcs).with('-H', '-o', 'state,fmri').and_return(File.read(my_fixture('svcs_instances.out')))
29
38
  instances = provider_class.instances.map { |p| {:name => p.get(:name), :ensure => p.get(:ensure)} }
30
39
  # we dont manage legacy
31
40
  expect(instances.size).to eq(3)
@@ -35,255 +44,482 @@ describe 'Puppet::Type::Service::Provider::Smf',
35
44
  end
36
45
  end
37
46
 
38
- it "should have a restart method" do
39
- expect(@provider).to respond_to(:restart)
40
- end
47
+ describe '#service_exists?' do
48
+ it 'returns true if the service exists' do
49
+ expect(@provider).to receive(:service_fmri)
50
+ expect(@provider.service_exists?).to be(true)
51
+ end
41
52
 
42
- it "should have a restartcmd method" do
43
- expect(@provider).to respond_to(:restartcmd)
44
- end
53
+ it 'returns false if the service does not exist' do
54
+ expect(@provider).to receive(:service_fmri).and_raise(
55
+ Puppet::ExecutionFailure, 'svcs failed!'
56
+ )
45
57
 
46
- it "should have a start method" do
47
- expect(@provider).to respond_to(:start)
58
+ expect(@provider.service_exists?).to be(false)
59
+ end
48
60
  end
49
61
 
50
- it "should have a stop method" do
51
- expect(@provider).to respond_to(:stop)
52
- end
62
+ describe '#setup_service' do
63
+ it 'noops if the service resource does not have the manifest parameter passed-in' do
64
+ expect(@provider).not_to receive(:svccfg)
53
65
 
54
- it "should have an enabled? method" do
55
- expect(@provider).to respond_to(:enabled?)
56
- end
66
+ set_resource_params({ :manifest => nil })
67
+ @provider.setup_service
68
+ end
57
69
 
58
- it "should have an enable method" do
59
- expect(@provider).to respond_to(:enable)
60
- end
70
+ context 'when the service resource has a manifest parameter passed-in' do
71
+ let(:manifest) { 'foo' }
72
+ before(:each) { set_resource_params({ :manifest => manifest }) }
73
+
74
+ it 'noops if the service resource already exists' do
75
+ expect(@provider).not_to receive(:svccfg)
76
+
77
+ expect(@provider).to receive(:service_exists?).and_return(true)
78
+ @provider.setup_service
79
+ end
61
80
 
62
- it "should have a disable method" do
63
- expect(@provider).to respond_to(:disable)
81
+ it "imports the service resource's manifest" do
82
+ expect(@provider).to receive(:service_exists?).and_return(false)
83
+
84
+ expect(@provider).to receive(:svccfg).with(:import, manifest)
85
+ @provider.setup_service
86
+ end
87
+
88
+ it 'raises a Puppet::Error if SMF fails to import the manifest' do
89
+ expect(@provider).to receive(:service_exists?).and_return(false)
90
+
91
+ failure_reason = 'svccfg failed!'
92
+ expect(@provider).to receive(:svccfg).with(:import, manifest).and_raise(Puppet::ExecutionFailure, failure_reason)
93
+ expect { @provider.setup_service }.to raise_error do |error|
94
+ expect(error).to be_a(Puppet::Error)
95
+ expect(error.message).to match(failure_reason)
96
+ end
97
+ end
98
+ end
64
99
  end
65
100
 
66
- describe "when checking status" do
67
- before(:each) do
68
- allow(@provider).to receive(:complete_service?).and_return(true)
101
+ describe '#service_fmri' do
102
+ it 'returns the memoized the fmri if it exists' do
103
+ @provider.instance_variable_set(:@fmri, 'resource_fmri')
104
+ expect(@provider.service_fmri).to eql('resource_fmri')
69
105
  end
70
106
 
71
- it "should call the external command 'svcs /system/myservice' once" do
72
- expect(@provider).to receive(:svcs).with('-H', '-o', 'state,nstate', "/system/myservice").and_return("online\t-")
73
- @provider.status
107
+ it 'raises a Puppet::Error if the service resource matches multiple FMRIs' do
108
+ expect(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_return(File.read(my_fixture('svcs_multiple_fmris.out')))
109
+
110
+ expect { @provider.service_fmri }.to raise_error do |error|
111
+ expect(error).to be_a(Puppet::Error)
112
+ expect(error.message).to match(@provider.resource[:name])
113
+ expect(error.message).to match('multiple')
114
+
115
+ matched_fmris = ["svc:/application/tstapp:one", "svc:/application/tstapp:two"]
116
+ expect(error.message).to match(matched_fmris.join(', '))
117
+ end
74
118
  end
75
119
 
76
- it "should return stopped if svcs can't find the service" do
77
- allow(@provider).to receive(:svcs).and_raise(Puppet::ExecutionFailure.new("no svc found"))
78
- expect(@provider.status).to eq(:stopped)
120
+ it 'raises a Puppet:ExecutionFailure if svcs fails' do
121
+ expect(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_raise(
122
+ Puppet::ExecutionFailure, 'svcs failed!'
123
+ )
124
+
125
+ expect { @provider.service_fmri }.to raise_error do |error|
126
+ expect(error).to be_a(Puppet::ExecutionFailure)
127
+ expect(error.message).to match('svcs failed!')
128
+ end
79
129
  end
80
130
 
81
- it "should return stopped for an incomplete service on Solaris 11" do
82
- allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.3')
83
- allow(@provider).to receive(:complete_service?).and_return(false)
84
- expect(@provider.status).to eq(:stopped)
131
+ it "returns the service resource's fmri and memoizes it" do
132
+ expect(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_return(File.read(my_fixture('svcs_fmri.out')))
133
+
134
+ expected_fmri = 'svc:/application/tstapp:default'
135
+
136
+ expect(@provider.service_fmri).to eql(expected_fmri)
137
+ expect(@provider.instance_variable_get(:@fmri)).to eql(expected_fmri)
85
138
  end
139
+ end
86
140
 
87
- it "should return running if online in svcs output" do
88
- allow(@provider).to receive(:svcs).and_return("online\t-")
89
- expect(@provider.status).to eq(:running)
141
+ describe '#enabled?' do
142
+ let(:fmri) { 'resource_fmri' }
143
+ before(:each) do
144
+ allow(@provider).to receive(:service_fmri).and_return(fmri)
90
145
  end
91
146
 
92
- it "should return stopped if disabled in svcs output" do
93
- allow(@provider).to receive(:svcs).and_return("disabled\t-")
94
- expect(@provider.status).to eq(:stopped)
147
+ it 'returns :true if the service is enabled' do
148
+ expect(@provider).to receive(:svccfg).with('-s', fmri, 'listprop', 'general/enabled').and_return(
149
+ 'general/enabled boolean true'
150
+ )
151
+
152
+ expect(@provider.enabled?).to be(:true)
95
153
  end
96
154
 
97
- it "should return maintenance if in maintenance in svcs output" do
98
- allow(@provider).to receive(:svcs).and_return("maintenance\t-")
99
- expect(@provider.status).to eq(:maintenance)
155
+ it 'return :false if the service is not enabled' do
156
+ expect(@provider).to receive(:svccfg).with('-s', fmri, 'listprop', 'general/enabled').and_return(
157
+ 'general/enabled boolean false'
158
+ )
159
+
160
+ expect(@provider.enabled?).to be(:false)
100
161
  end
101
162
 
102
- it "should return degraded if in degraded in svcs output" do
103
- allow(@provider).to receive(:svcs).and_return("degraded\t-")
104
- expect(@provider.status).to eq(:degraded)
163
+ it 'returns :false if the service does not exist' do
164
+ expect(@provider).to receive(:service_exists?).and_return(false)
165
+ expect(@provider.enabled?).to be(:false)
105
166
  end
167
+ end
106
168
 
107
- it "should return target state if transitioning in svcs output" do
108
- allow(@provider).to receive(:svcs).and_return("online\tdisabled")
109
- expect(@provider.status).to eq(:stopped)
169
+ describe '#restartcmd' do
170
+ let(:fmri) { 'resource_fmri' }
171
+ before(:each) do
172
+ allow(@provider).to receive(:service_fmri).and_return(fmri)
110
173
  end
111
174
 
112
- it "should throw error if it's a legacy service in svcs output" do
113
- allow(@provider).to receive(:svcs).and_return("legacy_run\t-")
114
- expect { @provider.status }.to raise_error(Puppet::Error, "Cannot manage legacy services through SMF")
175
+ it 'returns the right command for restarting the service for Solaris versions newer than 11.2' do
176
+ expect(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.3')
177
+
178
+ expect(@provider.restartcmd).to eql([@provider.command(:adm), :restart, '-s', fmri])
115
179
  end
116
- end
117
180
 
118
- context "when starting" do
119
- it "should enable the service if it is not enabled" do
120
- expect(@provider).to receive(:status).and_return(:stopped)
121
- expect(@provider).to receive(:texecute).with(:start, ['/usr/sbin/svcadm', :enable, '-rs', '/system/myservice'], true)
122
- expect(@provider).to receive(:wait).with('online')
123
- @provider.start
181
+ it 'returns the right command for restarting the service on Solaris 11.2' do
182
+ expect(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.2')
183
+
184
+ expect(@provider.restartcmd).to eql([@provider.command(:adm), :restart, '-s', fmri])
124
185
  end
125
186
 
126
- it "should always execute external command 'svcadm enable /system/myservice'" do
127
- expect(@provider).to receive(:status).and_return(:running)
128
- expect(@provider).to receive(:texecute).with(:start, ['/usr/sbin/svcadm', :enable, '-rs', '/system/myservice'], true)
129
- expect(@provider).to receive(:wait).with('online')
130
- @provider.start
187
+ it 'returns the right command for restarting the service for Solaris versions older than Solaris 11.2' do
188
+ expect(Facter).to receive(:value).with(:operatingsystemrelease).and_return('10.3')
189
+
190
+ expect(@provider.restartcmd).to eql([@provider.command(:adm), :restart, fmri])
131
191
  end
192
+ end
132
193
 
133
- it "should execute external command 'svcadm clear /system/myservice' if in maintenance" do
134
- allow(@provider).to receive(:status).and_return(:maintenance)
135
- expect(@provider).to receive(:texecute).with(:start, ["/usr/sbin/svcadm", :clear, "/system/myservice"], true)
136
- expect(@provider).to receive(:wait).with('online')
137
- @provider.start
194
+ describe '#service_states' do
195
+ let(:fmri) { 'resource_fmri' }
196
+ before(:each) do
197
+ allow(@provider).to receive(:service_fmri).and_return(fmri)
138
198
  end
139
199
 
140
- it "should execute external command 'svcadm clear /system/myservice' if in degraded" do
141
- allow(@provider).to receive(:status).and_return(:degraded)
142
- expect(@provider).to receive(:texecute).with(:start, ["/usr/sbin/svcadm", :clear, "/system/myservice"], true)
143
- expect(@provider).to receive(:wait).with('online')
144
- @provider.start
200
+ it 'returns the current and next states of the service' do
201
+ expect(@provider).to receive(:svcs).with('-H', '-o', 'state,nstate', fmri).and_return(
202
+ 'online disabled'
203
+ )
204
+
205
+ expect(@provider.service_states).to eql({ :current => 'online', :next => 'disabled' })
145
206
  end
146
207
 
147
- it "should error if timeout occurs while starting the service" do
148
- expect(@provider).to receive(:status).and_return(:stopped)
149
- expect(@provider).to receive(:texecute).with(:start, ["/usr/sbin/svcadm", :enable, '-rs', "/system/myservice"], true)
150
- expect(Timeout).to receive(:timeout).with(60).and_raise(Timeout::Error)
151
- expect { @provider.start }.to raise_error Puppet::Error, ('Timed out waiting for /system/myservice to transition states')
208
+ it "returns nil for the next state if svcs marks it as '-'" do
209
+ expect(@provider).to receive(:svcs).with('-H', '-o', 'state,nstate', fmri).and_return(
210
+ 'online -'
211
+ )
212
+
213
+ expect(@provider.service_states).to eql({ :current => 'online', :next => nil })
152
214
  end
153
215
  end
154
216
 
155
- context "when starting a service with a manifest" do
217
+ describe '#wait' do
218
+ # TODO: Document this method!
219
+ def transition_service(from, to, tries)
220
+ intermediate_returns = [{ :current => from, :next => to }] * (tries - 1)
221
+ final_return = { :current => to, :next => nil }
222
+
223
+ allow(@provider).to receive(:service_states).and_return(*intermediate_returns.push(final_return))
224
+ end
225
+
156
226
  before(:each) do
157
- @resource = Puppet::Type.type(:service).new(:name => "/system/myservice", :ensure => :running, :enable => :true, :manifest => "/tmp/myservice.xml")
158
- @provider = provider_class.new(@resource)
159
- allow($CHILD_STATUS).to receive(:exitstatus).and_return(1)
227
+ allow(Timeout).to receive(:timeout).and_yield
228
+ allow(Kernel).to receive(:sleep)
160
229
  end
161
230
 
162
- it "should import the manifest if service is missing" do
163
- allow(@provider).to receive(:complete_service?).and_return(true)
164
- expect(@provider).to receive(:svcs).with('-l', '/system/myservice').and_raise(Puppet::ExecutionFailure, "Exited 1")
165
- expect(@provider).to receive(:svccfg).with(:import, "/tmp/myservice.xml")
166
- expect(@provider).to receive(:texecute).with(:start, ["/usr/sbin/svcadm", :enable, '-rs', "/system/myservice"], true)
167
- expect(@provider).to receive(:wait).with('online')
168
- expect(@provider).to receive(:svcs).with('-H', '-o', 'state,nstate', "/system/myservice").and_return("online\t-")
169
- @provider.start
231
+ it 'waits for the service to enter the desired state' do
232
+ transition_service('online', 'disabled', 1)
233
+ @provider.wait('offline', 'disabled', 'uninitialized')
170
234
  end
171
235
 
172
- it "should handle failures if importing a manifest" do
173
- expect(@provider).to receive(:svcs).with('-l', '/system/myservice').and_raise(Puppet::ExecutionFailure, "Exited 1")
174
- expect(@provider).to receive(:svccfg).and_raise(Puppet::ExecutionFailure.new("can't svccfg import"))
175
- expect { @provider.start }.to raise_error(Puppet::Error, "Cannot config /system/myservice to enable it: can't svccfg import")
236
+ it 'times out and raises a Puppet::Error after sixty seconds' do
237
+ expect(Timeout).to receive(:timeout).with(60).and_raise(Timeout::Error, 'method timed out!')
238
+
239
+ expect { @provider.wait('online') }.to raise_error do |error|
240
+ expect(error).to be_a(Puppet::Error)
241
+ expect(error.message).to match(@provider.resource[:name])
242
+ end
243
+ end
244
+
245
+ it 'sleeps a bit before querying the service state' do
246
+ transition_service('disabled', 'online', 10)
247
+ expect(Kernel).to receive(:sleep).with(1).exactly(9).times
248
+
249
+ @provider.wait('online')
176
250
  end
177
251
  end
178
252
 
179
- context "when stopping" do
180
- it "should execute external command 'svcadm disable /system/myservice'" do
181
- expect(@provider).to receive(:texecute).with(:stop, ["/usr/sbin/svcadm", :disable, '-s', "/system/myservice"], true)
182
- expect(@provider).to receive(:wait).with('offline', 'disabled', 'uninitialized')
183
- @provider.stop
253
+ describe '#restart' do
254
+ let(:fmri) { 'resource_fmri' }
255
+
256
+ before(:each) do
257
+ allow(@provider).to receive(:service_fmri).and_return(fmri)
258
+ allow(@provider).to receive(:texecute)
259
+ allow(@provider).to receive(:wait)
260
+ end
261
+
262
+ it 'should restart the service' do
263
+ expect(@provider).to receive(:texecute)
264
+ @provider.restart
184
265
  end
185
266
 
186
- it "should error if timeout occurs while stopping the service" do
187
- expect(@provider).to receive(:texecute).with(:stop, ["/usr/sbin/svcadm", :disable, '-s', "/system/myservice"], true)
188
- expect(Timeout).to receive(:timeout).with(60).and_raise(Timeout::Error)
189
- expect { @provider.stop }.to raise_error Puppet::Error, ('Timed out waiting for /system/myservice to transition states')
267
+ it 'should wait for the service to restart' do
268
+ expect(@provider).to receive(:wait).with('online')
269
+ @provider.restart
190
270
  end
191
271
  end
192
272
 
193
- context "when restarting" do
194
- it "should error if timeout occurs while restarting the service" do
195
- expect(@provider).to receive(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, '-s', "/system/myservice"], true)
196
- expect(Timeout).to receive(:timeout).with(60).and_raise(Timeout::Error)
197
- expect { @provider.restart }.to raise_error Puppet::Error, ('Timed out waiting for /system/myservice to transition states')
273
+ describe '#status' do
274
+ let(:states) do
275
+ {
276
+ :current => 'online',
277
+ :next => nil
278
+ }
198
279
  end
199
280
 
200
- context 'with :operatingsystemrelease == 10_u10' do
201
- it "should call 'svcadm restart /system/myservice'" do
202
- allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('10_u10')
203
- expect(@provider).to receive(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, "/system/myservice"], true)
204
- expect(@provider).to receive(:wait).with('online')
205
- @provider.restart
206
- end
281
+ before(:each) do
282
+ allow(@provider).to receive(:service_states).and_return(states)
283
+
284
+ allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('10.3')
207
285
  end
208
286
 
209
- context 'with :operatingsystemrelease == 11.2' do
210
- it "should call 'svcadm restart -s /system/myservice'" do
211
- allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.2')
212
- expect(@provider).to receive(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, '-s', "/system/myservice"], true)
213
- expect(@provider).to receive(:wait).with('online')
214
- @provider.restart
287
+ it "should run the status command if it's passed in" do
288
+ set_resource_params({ :status => 'status_cmd' })
289
+ expect(@provider).to receive(:ucommand).with(:status, false) do |_, _|
290
+ expect($CHILD_STATUS).to receive(:exitstatus).and_return(0)
215
291
  end
292
+ expect(@provider).not_to receive(:service_states)
293
+
294
+ expect(@provider.status).to eql(:running)
216
295
  end
217
296
 
218
- context 'with :operatingsystemrelease > 11.2' do
219
- it "should call 'svcadm restart -s /system/myservice'" do
220
- allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.3')
221
- expect(@provider).to receive(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, '-s', "/system/myservice"], true)
222
- expect(@provider).to receive(:wait).with('online')
223
- @provider.restart
297
+ shared_examples 'returns the right status' do |svcs_state, expected_state|
298
+ it "returns '#{expected_state}' if the svcs state is '#{svcs_state}'" do
299
+
300
+ states[:current] = svcs_state
301
+ expect(@provider.status).to eql(expected_state)
224
302
  end
225
303
  end
226
- end
227
304
 
228
- describe '#service_fmri' do
229
- it 'raises a Puppet::Error if the service resource matches multiple FMRIs' do
230
- allow(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_return(File.read(my_fixture('svcs_multiple_fmris.out')))
305
+ include_examples 'returns the right status', 'online', :running
306
+ include_examples 'returns the right status', 'offline', :stopped
307
+ include_examples 'returns the right status', 'disabled', :stopped
308
+ include_examples 'returns the right status', 'uninitialized', :stopped
309
+ include_examples 'returns the right status', 'maintenance', :maintenance
310
+ include_examples 'returns the right status', 'degraded', :degraded
231
311
 
232
- expect { @provider.service_fmri }.to raise_error do |error|
312
+ it "raises a Puppet::Error if the svcs state is 'legacy_run'" do
313
+ states[:current] = 'legacy_run'
314
+ expect { @provider.status }.to raise_error do |error|
233
315
  expect(error).to be_a(Puppet::Error)
234
- expect(error.message).to match(@provider.resource[:name])
235
- expect(error.message).to match('multiple')
236
-
237
- matched_fmris = ["svc:/application/tstapp:one", "svc:/application/tstapp:two"]
238
- expect(error.message).to match(matched_fmris.join(', '))
316
+ expect(error.message).to match('legacy')
239
317
  end
240
318
  end
241
319
 
242
- it 'raises a Puppet:ExecutionFailure if svcs fails' do
243
- allow(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_raise(
244
- Puppet::ExecutionFailure, 'svcs failed!'
245
- )
246
-
247
- expect { @provider.service_fmri }.to raise_error do |error|
248
- expect(error).to be_a(Puppet::ExecutionFailure)
249
- expect(error.message).to match('svcs failed!')
320
+ it "raises a Puppet::Error if the svcs state is unmanageable" do
321
+ states[:current] = 'unmanageable state'
322
+ expect { @provider.status }.to raise_error do |error|
323
+ expect(error).to be_a(Puppet::Error)
324
+ expect(error.message).to match(states[:current])
250
325
  end
251
326
  end
252
327
 
253
- it "returns the service resource's fmri and memoizes it" do
254
- allow(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_return(File.read(my_fixture('svcs_fmri.out')))
328
+ it "returns 'stopped' if the service does not exist" do
329
+ expect(@provider).to receive(:service_states).and_raise(Puppet::ExecutionFailure, 'service does not exist!')
330
+ expect(@provider.status).to eql(:stopped)
331
+ end
255
332
 
256
- expected_fmri = 'svc:/application/tstapp:default'
333
+ it "uses the current state for comparison if the next state is not provided" do
334
+ states[:next] = 'disabled'
335
+ expect(@provider.status).to eql(:stopped)
336
+ end
257
337
 
258
- expect(@provider.service_fmri).to eql(expected_fmri)
259
- expect(@provider.instance_variable_get(:@fmri)).to eql(expected_fmri)
338
+ it "should return stopped for an incomplete service on Solaris 11" do
339
+ allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.3')
340
+ allow(@provider).to receive(:complete_service?).and_return(false)
341
+ expect(@provider.status).to eq(:stopped)
260
342
  end
261
343
  end
262
344
 
263
- describe '#complete_service?' do
264
- let(:fmri) { 'service_fmri' }
265
-
345
+ describe '#maybe_clear_service_then_svcadm' do
346
+ let(:fmri) { 'resource_fmri' }
266
347
  before(:each) do
267
348
  allow(@provider).to receive(:service_fmri).and_return(fmri)
268
349
  end
269
350
 
270
- it 'should raise a Puppet::Error if it is called on an older Solaris machine' do
271
- allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('10.0')
351
+ it 'applies the svcadm subcommand with the given flags' do
352
+ expect(@provider).to receive(:adm).with('enable', '-rst', fmri)
353
+ @provider.maybe_clear_service_then_svcadm(:stopped, 'enable', '-rst')
354
+ end
272
355
 
273
- expect { @provider.complete_service? }.to raise_error(Puppet::Error)
356
+ [:maintenance, :degraded].each do |status|
357
+ it "clears the service before applying the svcadm subcommand if the service status is #{status}" do
358
+ expect(@provider).to receive(:adm).with('clear', fmri)
359
+ expect(@provider).to receive(:adm).with('enable', '-rst', fmri)
360
+
361
+ @provider.maybe_clear_service_then_svcadm(status, 'enable', '-rst')
362
+ end
274
363
  end
364
+ end
275
365
 
276
- it 'should return false for an incomplete service' do
277
- allow(@provider).to receive(:svccfg).with('-s', fmri, 'listprop', 'general/complete').and_return("")
278
- expect(@provider.complete_service?).to be false
366
+ describe '#flush' do
367
+ def mark_property_for_syncing(property, value)
368
+ properties_to_sync = @provider.instance_variable_get(:@properties_to_sync)
369
+ properties_to_sync[property] = value
279
370
  end
280
371
 
281
- it 'should return true for a complete service' do
282
- allow(@provider).to receive(:svccfg)
283
- .with('-s', fmri, 'listprop', 'general/complete')
284
- .and_return("general/complete astring")
372
+ it 'should noop if enable and ensure do not need to be syncd' do
373
+ expect(@provider).not_to receive(:setup_service)
374
+ @provider.flush
375
+ end
285
376
 
286
- expect(@provider.complete_service?).to be true
377
+ context 'enable or ensure need to be syncd' do
378
+ let(:stopped_states) do
379
+ ['offline', 'disabled', 'uninitialized']
380
+ end
381
+
382
+ let(:fmri) { 'resource_fmri' }
383
+ let(:mock_status) { :maintenance }
384
+ before(:each) do
385
+ allow(@provider).to receive(:setup_service)
386
+ allow(@provider).to receive(:service_fmri).and_return(fmri)
387
+
388
+ # We will update this mock on a per-test basis.
389
+ allow(@provider).to receive(:status).and_return(mock_status)
390
+ allow(@provider).to receive(:wait)
391
+ end
392
+
393
+ context 'only ensure needs to be syncd' do
394
+ it 'stops the service if ensure == stopped' do
395
+ mark_property_for_syncing(:ensure, :stopped)
396
+
397
+ expect(@provider).to receive(:maybe_clear_service_then_svcadm).with(mock_status, 'disable', '-st')
398
+ expect(@provider).to receive(:wait).with(*stopped_states)
399
+
400
+ @provider.flush
401
+ end
402
+
403
+ it 'starts the service if ensure == running' do
404
+ mark_property_for_syncing(:ensure, :running)
405
+
406
+ expect(@provider).to receive(:maybe_clear_service_then_svcadm).with(mock_status, 'enable', '-rst')
407
+ expect(@provider).to receive(:wait).with('online')
408
+
409
+ @provider.flush
410
+ end
411
+ end
412
+
413
+ context 'enable needs to be syncd' do
414
+ before(:each) do
415
+ # We will stub this value out later, this default is useful
416
+ # for the final state tests.
417
+ mark_property_for_syncing(:enable, true)
418
+ end
419
+
420
+ it 'enables the service' do
421
+ mark_property_for_syncing(:enable, true)
422
+
423
+ expect(@provider).to receive(:maybe_clear_service_then_svcadm).with(mock_status, 'enable', '-rs')
424
+
425
+ expect(@provider).to receive(:adm).with('mark', '-I', 'maintenance', fmri)
426
+
427
+ @provider.flush
428
+ end
429
+
430
+ it 'disables the service' do
431
+ mark_property_for_syncing(:enable, false)
432
+
433
+ expect(@provider).to receive(:maybe_clear_service_then_svcadm).with(mock_status, 'disable', '-s')
434
+
435
+ expect(@provider).to receive(:adm).with('mark', '-I', 'maintenance', fmri)
436
+
437
+ @provider.flush
438
+ end
439
+
440
+ context 'when the final service state is running' do
441
+ before(:each) do
442
+ allow(@provider).to receive(:status).and_return(:running)
443
+ end
444
+
445
+ it 'starts the service if enable was false' do
446
+ mark_property_for_syncing(:enable, false)
447
+
448
+ expect(@provider).to receive(:adm).with('disable', '-s', fmri)
449
+ expect(@provider).to receive(:adm).with('enable', '-rst', fmri)
450
+ expect(@provider).to receive(:wait).with('online')
451
+
452
+ @provider.flush
453
+ end
454
+
455
+ it 'waits for the service to start if enable was true' do
456
+ mark_property_for_syncing(:enable, true)
457
+
458
+ expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
459
+ expect(@provider).to receive(:wait).with('online')
460
+
461
+ @provider.flush
462
+ end
463
+ end
464
+
465
+ context 'when the final service state is stopped' do
466
+ before(:each) do
467
+ allow(@provider).to receive(:status).and_return(:stopped)
468
+ end
469
+
470
+ it 'stops the service if enable was true' do
471
+ mark_property_for_syncing(:enable, true)
472
+
473
+ expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
474
+ expect(@provider).to receive(:adm).with('disable', '-st', fmri)
475
+ expect(@provider).to receive(:wait).with(*stopped_states)
476
+
477
+ @provider.flush
478
+ end
479
+
480
+ it 'waits for the service to stop if enable was false' do
481
+ mark_property_for_syncing(:enable, false)
482
+
483
+ expect(@provider).to_not receive(:adm).with('disable', '-st', fmri)
484
+ expect(@provider).to receive(:wait).with(*stopped_states)
485
+
486
+ @provider.flush
487
+ end
488
+ end
489
+
490
+ it 'marks the service as being under maintenance if the final state is maintenance' do
491
+ expect(@provider).to receive(:status).and_return(:maintenance)
492
+
493
+ expect(@provider).to receive(:adm).with('clear', fmri)
494
+ expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
495
+
496
+ expect(@provider).to receive(:adm).with('mark', '-I', 'maintenance', fmri)
497
+ expect(@provider).to receive(:wait).with('maintenance')
498
+
499
+ @provider.flush
500
+ end
501
+
502
+ it 'uses the ensure value as the final state if ensure also needs to be syncd' do
503
+ mark_property_for_syncing(:ensure, :running)
504
+ expect(@provider).to receive(:status).and_return(:stopped)
505
+
506
+ expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
507
+ expect(@provider).to receive(:wait).with('online')
508
+
509
+ @provider.flush
510
+ end
511
+
512
+ it 'marks the final state of a degraded service as running' do
513
+ expect(@provider).to receive(:status).and_return(:degraded)
514
+
515
+ expect(@provider).to receive(:adm).with('clear', fmri)
516
+ expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
517
+
518
+ expect(@provider).to receive(:wait).with('online')
519
+
520
+ @provider.flush
521
+ end
522
+ end
287
523
  end
288
524
  end
289
525
  end