puppet 6.24.0-x64-mingw32 → 7.0.0-x64-mingw32

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

Potentially problematic release.


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

Files changed (613) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/CONTRIBUTING.md +5 -5
  4. data/Gemfile +1 -3
  5. data/Gemfile.lock +35 -47
  6. data/README.md +5 -5
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/build_defaults.yaml +1 -1
  9. data/ext/osx/file_mapping.yaml +0 -5
  10. data/ext/osx/puppet.plist +0 -2
  11. data/ext/project_data.yaml +1 -15
  12. data/ext/redhat/puppet.spec.erb +0 -1
  13. data/ext/windows/service/daemon.rb +6 -5
  14. data/install.rb +21 -17
  15. data/lib/puppet.rb +14 -23
  16. data/lib/puppet/application.rb +178 -108
  17. data/lib/puppet/application/agent.rb +4 -12
  18. data/lib/puppet/application/apply.rb +2 -4
  19. data/lib/puppet/application/device.rb +100 -106
  20. data/lib/puppet/application/filebucket.rb +13 -10
  21. data/lib/puppet/application/resource.rb +3 -17
  22. data/lib/puppet/application/script.rb +0 -2
  23. data/lib/puppet/application/ssl.rb +1 -13
  24. data/lib/puppet/application_support.rb +0 -7
  25. data/lib/puppet/configurer.rb +30 -45
  26. data/lib/puppet/configurer/downloader.rb +1 -2
  27. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  28. data/lib/puppet/defaults.rb +100 -192
  29. data/lib/puppet/environments.rb +60 -84
  30. data/lib/puppet/face/facts.rb +5 -103
  31. data/lib/puppet/face/help.rb +1 -1
  32. data/lib/puppet/face/help/action.erb +0 -1
  33. data/lib/puppet/face/help/face.erb +0 -1
  34. data/lib/puppet/face/node/clean.rb +0 -11
  35. data/lib/puppet/face/plugin.rb +5 -8
  36. data/lib/puppet/ffi/windows.rb +12 -0
  37. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  38. data/lib/puppet/ffi/windows/constants.rb +404 -0
  39. data/lib/puppet/ffi/windows/functions.rb +628 -0
  40. data/lib/puppet/ffi/windows/structs.rb +338 -0
  41. data/lib/puppet/file_serving/configuration.rb +0 -5
  42. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  43. data/lib/puppet/file_serving/fileset.rb +2 -14
  44. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  45. data/lib/puppet/file_serving/mount.rb +1 -2
  46. data/lib/puppet/file_system/file_impl.rb +1 -1
  47. data/lib/puppet/file_system/memory_file.rb +1 -8
  48. data/lib/puppet/file_system/windows.rb +2 -4
  49. data/lib/puppet/forge.rb +3 -3
  50. data/lib/puppet/forge/repository.rb +0 -1
  51. data/lib/puppet/functions/all.rb +1 -1
  52. data/lib/puppet/functions/camelcase.rb +1 -1
  53. data/lib/puppet/functions/capitalize.rb +2 -2
  54. data/lib/puppet/functions/downcase.rb +2 -2
  55. data/lib/puppet/functions/empty.rb +0 -8
  56. data/lib/puppet/functions/get.rb +5 -5
  57. data/lib/puppet/functions/group_by.rb +5 -13
  58. data/lib/puppet/functions/lest.rb +1 -1
  59. data/lib/puppet/functions/new.rb +100 -100
  60. data/lib/puppet/functions/partition.rb +4 -12
  61. data/lib/puppet/functions/require.rb +5 -5
  62. data/lib/puppet/functions/sort.rb +3 -3
  63. data/lib/puppet/functions/strftime.rb +0 -1
  64. data/lib/puppet/functions/tree_each.rb +9 -7
  65. data/lib/puppet/functions/type.rb +4 -4
  66. data/lib/puppet/functions/unwrap.rb +2 -17
  67. data/lib/puppet/functions/upcase.rb +2 -2
  68. data/lib/puppet/generate/models/type/type.rb +4 -1
  69. data/lib/puppet/http.rb +22 -13
  70. data/lib/puppet/http/client.rb +164 -114
  71. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  72. data/lib/puppet/http/errors.rb +16 -0
  73. data/lib/puppet/http/external_client.rb +5 -7
  74. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  75. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  76. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  77. data/lib/puppet/http/proxy.rb +137 -0
  78. data/lib/puppet/http/redirector.rb +4 -12
  79. data/lib/puppet/http/resolver.rb +5 -15
  80. data/lib/puppet/http/resolver/server_list.rb +10 -25
  81. data/lib/puppet/http/resolver/settings.rb +4 -7
  82. data/lib/puppet/http/resolver/srv.rb +7 -11
  83. data/lib/puppet/http/response.rb +36 -54
  84. data/lib/puppet/http/response_converter.rb +24 -0
  85. data/lib/puppet/http/response_net_http.rb +42 -0
  86. data/lib/puppet/http/retry_after_handler.rb +4 -13
  87. data/lib/puppet/http/service.rb +12 -26
  88. data/lib/puppet/http/service/ca.rb +11 -22
  89. data/lib/puppet/http/service/compiler.rb +22 -138
  90. data/lib/puppet/http/service/file_server.rb +19 -29
  91. data/lib/puppet/http/service/puppetserver.rb +26 -12
  92. data/lib/puppet/http/service/report.rb +8 -10
  93. data/lib/puppet/http/session.rb +11 -20
  94. data/lib/puppet/{network/http → http}/site.rb +1 -2
  95. data/lib/puppet/indirector/catalog/compiler.rb +0 -1
  96. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  97. data/lib/puppet/indirector/facts/rest.rb +3 -22
  98. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  99. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  100. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  101. data/lib/puppet/indirector/file_server.rb +1 -8
  102. data/lib/puppet/indirector/generic_http.rb +0 -11
  103. data/lib/puppet/indirector/node/rest.rb +2 -4
  104. data/lib/puppet/indirector/report/rest.rb +3 -8
  105. data/lib/puppet/indirector/request.rb +0 -101
  106. data/lib/puppet/indirector/resource/ral.rb +1 -6
  107. data/lib/puppet/indirector/rest.rb +12 -263
  108. data/lib/puppet/interface/documentation.rb +0 -1
  109. data/lib/puppet/module_tool/applications.rb +0 -1
  110. data/lib/puppet/module_tool/applications/installer.rb +2 -52
  111. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  112. data/lib/puppet/network/authconfig.rb +2 -96
  113. data/lib/puppet/network/authorization.rb +13 -35
  114. data/lib/puppet/network/formats.rb +0 -67
  115. data/lib/puppet/network/http.rb +3 -3
  116. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  117. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  118. data/lib/puppet/network/http/connection.rb +247 -316
  119. data/lib/puppet/network/http/handler.rb +0 -1
  120. data/lib/puppet/network/http_pool.rb +16 -34
  121. data/lib/puppet/node.rb +1 -30
  122. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  123. data/lib/puppet/pal/pal_impl.rb +3 -1
  124. data/lib/puppet/parser/ast/leaf.rb +2 -3
  125. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  126. data/lib/puppet/parser/compiler.rb +0 -198
  127. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  128. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  129. data/lib/puppet/parser/resource.rb +0 -69
  130. data/lib/puppet/parser/templatewrapper.rb +1 -1
  131. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  132. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  133. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  134. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  135. data/lib/puppet/pops/issues.rb +0 -5
  136. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  137. data/lib/puppet/pops/model/ast.pp +0 -42
  138. data/lib/puppet/pops/model/ast.rb +0 -290
  139. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  140. data/lib/puppet/pops/model/factory.rb +0 -45
  141. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  142. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  143. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  144. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  145. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  146. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  147. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  148. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  149. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  150. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  151. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  152. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  153. data/lib/puppet/pops/types/type_parser.rb +0 -4
  154. data/lib/puppet/pops/types/types.rb +0 -1
  155. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  156. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  157. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  158. data/lib/puppet/property/list.rb +1 -1
  159. data/lib/puppet/provider.rb +0 -13
  160. data/lib/puppet/provider/exec/posix.rb +4 -16
  161. data/lib/puppet/provider/group/groupadd.rb +8 -13
  162. data/lib/puppet/provider/nameservice.rb +0 -18
  163. data/lib/puppet/provider/package/apt.rb +2 -34
  164. data/lib/puppet/provider/package/aptitude.rb +0 -6
  165. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  166. data/lib/puppet/provider/package/dpkg.rb +0 -10
  167. data/lib/puppet/provider/package/gem.rb +23 -3
  168. data/lib/puppet/provider/package/nim.rb +6 -11
  169. data/lib/puppet/provider/package/pip.rb +3 -16
  170. data/lib/puppet/provider/package/pkg.rb +0 -4
  171. data/lib/puppet/provider/package/portage.rb +1 -1
  172. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  173. data/lib/puppet/provider/parsedfile.rb +0 -3
  174. data/lib/puppet/provider/service/debian.rb +0 -2
  175. data/lib/puppet/provider/service/smf.rb +191 -73
  176. data/lib/puppet/provider/service/systemd.rb +4 -14
  177. data/lib/puppet/provider/service/windows.rb +0 -38
  178. data/lib/puppet/provider/user/aix.rb +2 -2
  179. data/lib/puppet/provider/user/directoryservice.rb +10 -33
  180. data/lib/puppet/provider/user/useradd.rb +8 -62
  181. data/lib/puppet/reference/configuration.rb +8 -7
  182. data/lib/puppet/reference/indirection.rb +1 -1
  183. data/lib/puppet/resource.rb +1 -89
  184. data/lib/puppet/resource/catalog.rb +1 -14
  185. data/lib/puppet/resource/type.rb +3 -119
  186. data/lib/puppet/resource/type_collection.rb +3 -48
  187. data/lib/puppet/runtime.rb +1 -2
  188. data/lib/puppet/settings.rb +80 -96
  189. data/lib/puppet/settings/environment_conf.rb +0 -1
  190. data/lib/puppet/settings/integer_setting.rb +17 -0
  191. data/lib/puppet/settings/port_setting.rb +15 -0
  192. data/lib/puppet/settings/priority_setting.rb +5 -4
  193. data/lib/puppet/ssl.rb +10 -6
  194. data/lib/puppet/ssl/base.rb +3 -5
  195. data/lib/puppet/ssl/certificate.rb +0 -6
  196. data/lib/puppet/ssl/certificate_request.rb +1 -12
  197. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  198. data/lib/puppet/ssl/oids.rb +3 -1
  199. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  200. data/lib/puppet/ssl/state_machine.rb +3 -1
  201. data/lib/puppet/ssl/verifier.rb +2 -0
  202. data/lib/puppet/test/test_helper.rb +1 -3
  203. data/lib/puppet/transaction.rb +1 -7
  204. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  205. data/lib/puppet/transaction/report.rb +2 -4
  206. data/lib/puppet/type.rb +0 -76
  207. data/lib/puppet/type/exec.rb +3 -16
  208. data/lib/puppet/type/file.rb +6 -26
  209. data/lib/puppet/type/file/checksum.rb +1 -1
  210. data/lib/puppet/type/file/mode.rb +0 -6
  211. data/lib/puppet/type/file/selcontext.rb +1 -1
  212. data/lib/puppet/type/file/source.rb +1 -1
  213. data/lib/puppet/type/filebucket.rb +3 -3
  214. data/lib/puppet/type/package.rb +8 -16
  215. data/lib/puppet/type/service.rb +38 -18
  216. data/lib/puppet/type/tidy.rb +3 -22
  217. data/lib/puppet/type/user.rb +20 -38
  218. data/lib/puppet/util/autoload.rb +8 -1
  219. data/lib/puppet/util/execution.rb +0 -11
  220. data/lib/puppet/util/http_proxy.rb +2 -215
  221. data/lib/puppet/util/monkey_patches.rb +0 -53
  222. data/lib/puppet/util/posix.rb +5 -54
  223. data/lib/puppet/util/rdoc.rb +0 -7
  224. data/lib/puppet/util/retry_action.rb +1 -1
  225. data/lib/puppet/util/run_mode.rb +9 -1
  226. data/lib/puppet/util/selinux.rb +4 -30
  227. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  228. data/lib/puppet/util/windows.rb +3 -8
  229. data/lib/puppet/util/windows/adsi.rb +0 -46
  230. data/lib/puppet/util/windows/daemon.rb +360 -0
  231. data/lib/puppet/util/windows/error.rb +1 -0
  232. data/lib/puppet/util/windows/eventlog.rb +4 -9
  233. data/lib/puppet/util/windows/file.rb +8 -242
  234. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  235. data/lib/puppet/util/windows/principal.rb +2 -9
  236. data/lib/puppet/util/windows/process.rb +4 -226
  237. data/lib/puppet/util/windows/service.rb +9 -460
  238. data/lib/puppet/util/windows/sid.rb +2 -6
  239. data/lib/puppet/util/windows/string.rb +12 -13
  240. data/lib/puppet/util/yaml.rb +0 -22
  241. data/lib/puppet/vendor/require_vendored.rb +0 -1
  242. data/lib/puppet/version.rb +1 -1
  243. data/lib/puppet/x509.rb +5 -1
  244. data/lib/puppet/x509/cert_provider.rb +29 -1
  245. data/locales/puppet.pot +722 -1527
  246. data/man/man5/puppet.conf.5 +266 -354
  247. data/man/man8/puppet-agent.8 +2 -2
  248. data/man/man8/puppet-apply.8 +2 -2
  249. data/man/man8/puppet-catalog.8 +9 -9
  250. data/man/man8/puppet-config.8 +1 -1
  251. data/man/man8/puppet-describe.8 +1 -1
  252. data/man/man8/puppet-device.8 +2 -2
  253. data/man/man8/puppet-doc.8 +1 -1
  254. data/man/man8/puppet-epp.8 +1 -1
  255. data/man/man8/puppet-facts.8 +8 -51
  256. data/man/man8/puppet-filebucket.8 +4 -4
  257. data/man/man8/puppet-generate.8 +1 -1
  258. data/man/man8/puppet-help.8 +1 -1
  259. data/man/man8/puppet-lookup.8 +1 -1
  260. data/man/man8/puppet-module.8 +1 -58
  261. data/man/man8/puppet-node.8 +5 -5
  262. data/man/man8/puppet-parser.8 +1 -1
  263. data/man/man8/puppet-plugin.8 +1 -1
  264. data/man/man8/puppet-report.8 +5 -5
  265. data/man/man8/puppet-resource.8 +1 -1
  266. data/man/man8/puppet-script.8 +2 -2
  267. data/man/man8/puppet-ssl.8 +1 -5
  268. data/man/man8/puppet.8 +2 -2
  269. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  270. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  271. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  272. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  273. data/spec/fixtures/ssl/ca.pem +35 -57
  274. data/spec/fixtures/ssl/crl.pem +18 -28
  275. data/spec/fixtures/ssl/ec-key.pem +11 -11
  276. data/spec/fixtures/ssl/ec.pem +24 -33
  277. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  278. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  279. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  280. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  281. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  282. data/spec/fixtures/ssl/intermediate.pem +36 -57
  283. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  284. data/spec/fixtures/ssl/pluto.pem +30 -52
  285. data/spec/fixtures/ssl/request-key.pem +57 -107
  286. data/spec/fixtures/ssl/request.pem +26 -47
  287. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  288. data/spec/fixtures/ssl/revoked.pem +30 -52
  289. data/spec/fixtures/ssl/signed-key.pem +57 -107
  290. data/spec/fixtures/ssl/signed.pem +30 -52
  291. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  292. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  293. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  294. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  295. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  296. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  297. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  298. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  299. data/spec/integration/application/agent_spec.rb +27 -171
  300. data/spec/integration/application/apply_spec.rb +1 -20
  301. data/spec/integration/application/filebucket_spec.rb +16 -27
  302. data/spec/integration/application/help_spec.rb +2 -0
  303. data/spec/integration/application/module_spec.rb +0 -21
  304. data/spec/integration/application/plugin_spec.rb +24 -2
  305. data/spec/integration/defaults_spec.rb +14 -3
  306. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  307. data/spec/integration/http/client_spec.rb +0 -12
  308. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  309. data/spec/integration/indirector/facts/facter_spec.rb +36 -90
  310. data/spec/integration/network/http_pool_spec.rb +3 -21
  311. data/spec/integration/parser/catalog_spec.rb +0 -38
  312. data/spec/integration/parser/node_spec.rb +0 -9
  313. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  314. data/spec/integration/resource/type_collection_spec.rb +6 -2
  315. data/spec/integration/transaction_spec.rb +9 -4
  316. data/spec/integration/type/exec_spec.rb +45 -70
  317. data/spec/integration/type/file_spec.rb +5 -4
  318. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  319. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  320. data/spec/integration/util/windows/principal_spec.rb +0 -21
  321. data/spec/integration/util/windows/registry_spec.rb +10 -6
  322. data/spec/integration/util/windows/security_spec.rb +1 -1
  323. data/spec/lib/matchers/include.rb +27 -0
  324. data/spec/lib/matchers/include_spec.rb +32 -0
  325. data/spec/lib/puppet/test_ca.rb +2 -7
  326. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  327. data/spec/lib/puppet_spec/settings.rb +1 -1
  328. data/spec/spec_helper.rb +7 -12
  329. data/spec/unit/agent_spec.rb +6 -10
  330. data/spec/unit/application/agent_spec.rb +3 -7
  331. data/spec/unit/application/facts_spec.rb +12 -456
  332. data/spec/unit/application/filebucket_spec.rb +43 -39
  333. data/spec/unit/application/ssl_spec.rb +2 -25
  334. data/spec/unit/application_spec.rb +9 -51
  335. data/spec/unit/certificate_factory_spec.rb +1 -1
  336. data/spec/unit/configurer/downloader_spec.rb +6 -8
  337. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  338. data/spec/unit/configurer_spec.rb +12 -32
  339. data/spec/unit/confine/feature_spec.rb +1 -1
  340. data/spec/unit/confine_spec.rb +2 -8
  341. data/spec/unit/context/trusted_information_spec.rb +2 -6
  342. data/spec/unit/defaults_spec.rb +68 -54
  343. data/spec/unit/environments_spec.rb +68 -259
  344. data/spec/unit/face/node_spec.rb +11 -0
  345. data/spec/unit/face/plugin_spec.rb +73 -33
  346. data/spec/unit/file_bucket/file_spec.rb +1 -1
  347. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
  348. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  349. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  350. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  351. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  352. data/spec/unit/file_system_spec.rb +0 -15
  353. data/spec/unit/forge/module_release_spec.rb +7 -2
  354. data/spec/unit/functions/assert_type_spec.rb +1 -1
  355. data/spec/unit/functions/camelcase_spec.rb +1 -1
  356. data/spec/unit/functions/capitalize_spec.rb +1 -1
  357. data/spec/unit/functions/downcase_spec.rb +1 -1
  358. data/spec/unit/functions/empty_spec.rb +0 -10
  359. data/spec/unit/functions/unwrap_spec.rb +0 -8
  360. data/spec/unit/functions/upcase_spec.rb +1 -1
  361. data/spec/unit/functions4_spec.rb +2 -2
  362. data/spec/unit/gettext/config_spec.rb +0 -12
  363. data/spec/unit/http/client_spec.rb +7 -8
  364. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  365. data/spec/unit/http/external_client_spec.rb +4 -4
  366. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  367. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  368. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  369. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  370. data/spec/unit/http/resolver_spec.rb +13 -13
  371. data/spec/unit/http/service/compiler_spec.rb +0 -185
  372. data/spec/unit/http/service/file_server_spec.rb +3 -3
  373. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  374. data/spec/unit/http/service_spec.rb +0 -1
  375. data/spec/unit/http/session_spec.rb +16 -14
  376. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  377. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -14
  378. data/spec/unit/indirector/face_spec.rb +1 -0
  379. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  380. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  381. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  382. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  383. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  384. data/spec/unit/indirector/file_server_spec.rb +1 -15
  385. data/spec/unit/indirector/indirection_spec.rb +12 -8
  386. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  387. data/spec/unit/indirector/request_spec.rb +0 -264
  388. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  389. data/spec/unit/indirector/rest_spec.rb +98 -752
  390. data/spec/unit/indirector_spec.rb +2 -2
  391. data/spec/unit/module_tool/applications/installer_spec.rb +0 -78
  392. data/spec/unit/network/authconfig_spec.rb +2 -129
  393. data/spec/unit/network/authorization_spec.rb +2 -55
  394. data/spec/unit/network/formats_spec.rb +4 -45
  395. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  396. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  397. data/spec/unit/network/http/api_spec.rb +10 -0
  398. data/spec/unit/network/http/connection_spec.rb +19 -41
  399. data/spec/unit/network/http/handler_spec.rb +0 -1
  400. data/spec/unit/network/http_pool_spec.rb +0 -4
  401. data/spec/unit/node/environment_spec.rb +33 -21
  402. data/spec/unit/node_spec.rb +2 -54
  403. data/spec/unit/parser/compiler_spec.rb +19 -3
  404. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  405. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  406. data/spec/unit/parser/resource_spec.rb +8 -14
  407. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  408. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  409. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  410. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  411. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  412. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  413. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  414. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  415. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  416. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  417. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  418. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  419. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  420. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  421. data/spec/unit/pops/visitor_spec.rb +1 -1
  422. data/spec/unit/property_spec.rb +0 -1
  423. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  424. data/spec/unit/provider/nameservice_spec.rb +64 -122
  425. data/spec/unit/provider/package/apt_spec.rb +23 -28
  426. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  427. data/spec/unit/provider/package/base_spec.rb +5 -6
  428. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  429. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  430. data/spec/unit/provider/package/gem_spec.rb +32 -0
  431. data/spec/unit/provider/package/nim_spec.rb +0 -42
  432. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  433. data/spec/unit/provider/package/pip_spec.rb +11 -43
  434. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  435. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  436. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  437. data/spec/unit/provider/service/init_spec.rb +0 -1
  438. data/spec/unit/provider/service/openwrt_spec.rb +1 -3
  439. data/spec/unit/provider/service/smf_spec.rb +401 -165
  440. data/spec/unit/provider/service/systemd_spec.rb +8 -53
  441. data/spec/unit/provider/service/windows_spec.rb +0 -203
  442. data/spec/unit/provider/user/aix_spec.rb +0 -5
  443. data/spec/unit/provider/user/directoryservice_spec.rb +35 -67
  444. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  445. data/spec/unit/provider/user/pw_spec.rb +0 -2
  446. data/spec/unit/provider/user/useradd_spec.rb +3 -71
  447. data/spec/unit/provider_spec.rb +8 -18
  448. data/spec/unit/resource/catalog_spec.rb +1 -1
  449. data/spec/unit/resource/type_collection_spec.rb +2 -22
  450. data/spec/unit/resource/type_spec.rb +1 -1
  451. data/spec/unit/resource_spec.rb +10 -67
  452. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  453. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  454. data/spec/unit/settings/port_setting_spec.rb +31 -0
  455. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  456. data/spec/unit/settings_spec.rb +79 -110
  457. data/spec/unit/ssl/base_spec.rb +37 -3
  458. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  459. data/spec/unit/ssl/certificate_spec.rb +2 -11
  460. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  461. data/spec/unit/ssl/state_machine_spec.rb +5 -20
  462. data/spec/unit/ssl/verifier_spec.rb +0 -21
  463. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  464. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  465. data/spec/unit/transaction/report_spec.rb +0 -2
  466. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  467. data/spec/unit/transaction_spec.rb +55 -96
  468. data/spec/unit/type/exec_spec.rb +29 -76
  469. data/spec/unit/type/file/checksum_spec.rb +6 -6
  470. data/spec/unit/type/file/content_spec.rb +2 -1
  471. data/spec/unit/type/file/ensure_spec.rb +1 -1
  472. data/spec/unit/type/file/mode_spec.rb +1 -1
  473. data/spec/unit/type/file/selinux_spec.rb +5 -3
  474. data/spec/unit/type/file/source_spec.rb +4 -5
  475. data/spec/unit/type/file_spec.rb +18 -6
  476. data/spec/unit/type/group_spec.rb +6 -13
  477. data/spec/unit/type/package_spec.rb +1 -1
  478. data/spec/unit/type/resources_spec.rb +7 -7
  479. data/spec/unit/type/service_spec.rb +189 -60
  480. data/spec/unit/type/tidy_spec.rb +8 -24
  481. data/spec/unit/type/user_spec.rb +0 -45
  482. data/spec/unit/type_spec.rb +22 -2
  483. data/spec/unit/util/at_fork_spec.rb +2 -2
  484. data/spec/unit/util/autoload_spec.rb +1 -5
  485. data/spec/unit/util/backups_spec.rb +2 -3
  486. data/spec/unit/util/execution_spec.rb +11 -44
  487. data/spec/unit/util/inifile_spec.rb +14 -6
  488. data/spec/unit/util/log_spec.rb +7 -8
  489. data/spec/unit/util/logging_spec.rb +3 -3
  490. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  491. data/spec/unit/util/posix_spec.rb +15 -363
  492. data/spec/unit/util/run_mode_spec.rb +21 -121
  493. data/spec/unit/util/selinux_spec.rb +68 -163
  494. data/spec/unit/util/storage_spec.rb +1 -3
  495. data/spec/unit/util/suidmanager_spec.rb +41 -44
  496. data/spec/unit/util/windows/sid_spec.rb +0 -41
  497. data/spec/unit/util/windows/string_spec.rb +1 -3
  498. data/spec/unit/util/yaml_spec.rb +0 -54
  499. data/spec/unit/util_spec.rb +6 -31
  500. data/tasks/generate_cert_fixtures.rake +3 -12
  501. metadata +45 -253
  502. data/conf/auth.conf +0 -150
  503. data/lib/puppet/application/cert.rb +0 -76
  504. data/lib/puppet/application/key.rb +0 -4
  505. data/lib/puppet/application/man.rb +0 -4
  506. data/lib/puppet/application/status.rb +0 -4
  507. data/lib/puppet/face/key.rb +0 -16
  508. data/lib/puppet/face/man.rb +0 -145
  509. data/lib/puppet/face/module/build.rb +0 -14
  510. data/lib/puppet/face/module/generate.rb +0 -14
  511. data/lib/puppet/face/module/search.rb +0 -103
  512. data/lib/puppet/face/status.rb +0 -51
  513. data/lib/puppet/ffi/posix.rb +0 -10
  514. data/lib/puppet/ffi/posix/constants.rb +0 -14
  515. data/lib/puppet/ffi/posix/functions.rb +0 -24
  516. data/lib/puppet/indirector/certificate/file.rb +0 -9
  517. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  518. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  519. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  520. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  521. data/lib/puppet/indirector/file_content/http.rb +0 -22
  522. data/lib/puppet/indirector/key/file.rb +0 -46
  523. data/lib/puppet/indirector/key/memory.rb +0 -7
  524. data/lib/puppet/indirector/ssl_file.rb +0 -162
  525. data/lib/puppet/indirector/status.rb +0 -3
  526. data/lib/puppet/indirector/status/local.rb +0 -12
  527. data/lib/puppet/indirector/status/rest.rb +0 -27
  528. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  529. data/lib/puppet/network/auth_config_parser.rb +0 -90
  530. data/lib/puppet/network/authstore.rb +0 -283
  531. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  532. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  533. data/lib/puppet/network/http/base_pool.rb +0 -36
  534. data/lib/puppet/network/http/compression.rb +0 -127
  535. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  536. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  537. data/lib/puppet/network/rest_controller.rb +0 -2
  538. data/lib/puppet/network/rights.rb +0 -210
  539. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  540. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  541. data/lib/puppet/parser/environment_compiler.rb +0 -202
  542. data/lib/puppet/pops/types/enumeration.rb +0 -16
  543. data/lib/puppet/resource/capability_finder.rb +0 -154
  544. data/lib/puppet/rest/errors.rb +0 -15
  545. data/lib/puppet/rest/response.rb +0 -35
  546. data/lib/puppet/rest/route.rb +0 -85
  547. data/lib/puppet/rest/routes.rb +0 -135
  548. data/lib/puppet/settings/alias_setting.rb +0 -37
  549. data/lib/puppet/ssl/host.rb +0 -505
  550. data/lib/puppet/ssl/key.rb +0 -61
  551. data/lib/puppet/ssl/validator.rb +0 -61
  552. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  553. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  554. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  555. data/lib/puppet/status.rb +0 -40
  556. data/lib/puppet/util/connection.rb +0 -88
  557. data/lib/puppet/util/fact_dif.rb +0 -81
  558. data/lib/puppet/util/ssl.rb +0 -83
  559. data/lib/puppet/util/windows/api_types.rb +0 -309
  560. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  561. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  562. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  563. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  564. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  565. data/lib/puppet/vendor/pathspec/README.md +0 -53
  566. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  567. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  568. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  569. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  570. data/man/man8/puppet-key.8 +0 -126
  571. data/man/man8/puppet-man.8 +0 -76
  572. data/man/man8/puppet-status.8 +0 -108
  573. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
  574. data/spec/fixtures/ssl/oid-key.pem +0 -117
  575. data/spec/fixtures/ssl/oid.pem +0 -69
  576. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  577. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  578. data/spec/integration/application/resource_spec.rb +0 -64
  579. data/spec/integration/application/ssl_spec.rb +0 -20
  580. data/spec/integration/network/authconfig_spec.rb +0 -256
  581. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  582. data/spec/unit/application/man_spec.rb +0 -52
  583. data/spec/unit/capability_spec.rb +0 -414
  584. data/spec/unit/face/key_spec.rb +0 -9
  585. data/spec/unit/face/module/search_spec.rb +0 -231
  586. data/spec/unit/face/status_spec.rb +0 -9
  587. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  588. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  589. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  590. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  591. data/spec/unit/indirector/key/file_spec.rb +0 -78
  592. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  593. data/spec/unit/indirector/status/local_spec.rb +0 -10
  594. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  595. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  596. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  597. data/spec/unit/network/authstore_spec.rb +0 -422
  598. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  599. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  600. data/spec/unit/network/http/compression_spec.rb +0 -240
  601. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  602. data/spec/unit/network/http_spec.rb +0 -9
  603. data/spec/unit/network/rights_spec.rb +0 -439
  604. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  605. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  606. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  607. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  608. data/spec/unit/rest/route_spec.rb +0 -132
  609. data/spec/unit/ssl/host_spec.rb +0 -645
  610. data/spec/unit/ssl/key_spec.rb +0 -173
  611. data/spec/unit/ssl/validator_spec.rb +0 -278
  612. data/spec/unit/status_spec.rb +0 -45
  613. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -26,10 +26,4 @@ Puppet::Type.type(:package).provide :aptitude, :parent => :apt, :source => :dpkg
26
26
  def purge
27
27
  aptitude '-y', 'purge', @resource[:name]
28
28
  end
29
-
30
- private
31
-
32
- def source
33
- nil
34
- end
35
29
  end
@@ -93,7 +93,7 @@ Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do
93
93
  # module has no default profile and no profile was requested, so just enable the stream
94
94
  # DNF versions prior to 4.2.8 do not need this workaround
95
95
  # see https://bugzilla.redhat.com/show_bug.cgi?id=1669527
96
- if @resource[:flavor] == nil && e.message =~ /^(?:missing|broken) groups or modules: #{Regexp.quote(@resource[:name])}$/
96
+ if @resource[:flavor] == nil && e.message =~ /^missing groups or modules: #{Regexp.quote(@resource[:name])}$/
97
97
  enable(args)
98
98
  else
99
99
  raise
@@ -173,13 +173,6 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
173
173
  dpkg "--purge", @resource[:name]
174
174
  end
175
175
 
176
- def deprecated_hold
177
- if package_not_installed?
178
- self.install
179
- end
180
- hold
181
- end
182
-
183
176
  def hold
184
177
  Tempfile.open('puppet_dpkg_set_selection') do |tmpfile|
185
178
  tmpfile.write("#{@resource[:name]} hold\n")
@@ -196,7 +189,4 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
196
189
  end
197
190
  end
198
191
 
199
- def package_not_installed?
200
- query[:status] != "installed"
201
- end
202
192
  end
@@ -14,7 +14,7 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
14
14
 
15
15
  This provider supports the `install_options` and `uninstall_options` attributes,
16
16
  which allow command-line flags to be passed to the gem command.
17
- These options should be specified as an array where each element is either a
17
+ These options should be specified as an array where each element is either a
18
18
  string or a hash."
19
19
 
20
20
  has_feature :versionable, :install_options, :uninstall_options, :targetable, :version_ranges
@@ -36,7 +36,11 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
36
36
  # Required by Puppet::Provider::Package::Targetable::resource_or_provider_command
37
37
 
38
38
  def self.provider_command
39
- command(:gemcmd)
39
+ if Puppet::Util::Platform.windows?
40
+ Puppet::Util.withenv(PATH: windows_path_without_puppet_bin) { command(:gemcmd) }
41
+ else
42
+ command(:gemcmd)
43
+ end
40
44
  end
41
45
 
42
46
  # Define the default provider package command as optional when the provider is targetable.
@@ -46,6 +50,18 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
46
50
  is_optional
47
51
  end
48
52
 
53
+ # Having puppet/bin in PATH makes gem provider to use puppet/bin/gem
54
+ # This is an utility methods that reads the PATH and returns a string
55
+ # that contains the content of PATH but without puppet/bin dir.
56
+ # This is used to pass a custom PATH and execute commands in a controlled environment
57
+ def self.windows_path_without_puppet_bin
58
+ @path ||= Puppet::Util.get_env('PATH').split(File::PATH_SEPARATOR)
59
+ .reject { |dir| dir =~ /puppet\\bin$/ }
60
+ .join(File::PATH_SEPARATOR)
61
+ end
62
+
63
+ private_class_method :windows_path_without_puppet_bin
64
+
49
65
  # CommandDefiner in provider.rb creates convenience execution methods that set failonfail, combine, and optionally, environment.
50
66
  # And when a child provider defines its own command via commands() or has_command(), the provider-specific path is always returned by command().
51
67
  # But when the convenience execution method is invoked, the last convenience method to be defined is executed.
@@ -59,6 +75,10 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
59
75
 
60
76
  custom_environment = {'HOME'=>Puppet::Util.get_env('HOME')}.merge(custom_environment)
61
77
 
78
+ if Puppet::Util::Platform.windows?
79
+ custom_environment[:PATH] = windows_path_without_puppet_bin
80
+ end
81
+
62
82
  execute(cmd, {:failonfail => true, :combine => true, :custom_environment => custom_environment})
63
83
  end
64
84
 
@@ -152,7 +172,7 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
152
172
  end
153
173
  end
154
174
  end
155
-
175
+
156
176
  begin
157
177
  # Range intersections are not supported by Gem::Requirement, so just split by comma.
158
178
  dependency = Gem::Dependency.new('', should.split(','))
@@ -154,25 +154,20 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
154
154
  # I spent a lot of time trying to figure out a solution that didn't
155
155
  # require parsing the `nimclient -o showres` output and was unable to
156
156
  # do so.
157
- self::HEADER_LINE_REGEX = /^([^\s]+)\s+[^@]+@@(I|R|S):(\1)\s+[^\s]+$/
158
- self::PACKAGE_LINE_REGEX = /^.*@@(I|R|S):(.*)$/
159
- self::RPM_PACKAGE_REGEX = /^(.*)-(.*-\d+\w*) \2$/
157
+ self::HEADER_LINE_REGEX = /^([^\s]+)\s+[^@]+@@(I|R):(\1)\s+[^\s]+$/
158
+ self::PACKAGE_LINE_REGEX = /^.*@@(I|R):(.*)$/
159
+ self::RPM_PACKAGE_REGEX = /^(.*)-(.*-\d+) \2$/
160
160
  self::INSTALLP_PACKAGE_REGEX = /^(.*) (.*)$/
161
161
 
162
162
  # Here is some sample output that shows what the above regexes will be up
163
163
  # against:
164
- # FOR AN INSTALLP(bff) PACKAGE:
164
+ # FOR AN INSTALLP PACKAGE:
165
165
  #
166
166
  # mypackage.foo ALL @@I:mypackage.foo _all_filesets
167
+ # @ 1.2.3.1 MyPackage Runtime Environment @@I:mypackage.foo 1.2.3.1
167
168
  # + 1.2.3.4 MyPackage Runtime Environment @@I:mypackage.foo 1.2.3.4
168
169
  # + 1.2.3.8 MyPackage Runtime Environment @@I:mypackage.foo 1.2.3.8
169
170
  #
170
- # FOR AN INSTALLP(bff) PACKAGE with security update:
171
- #
172
- # bos.net ALL @@S:bos.net _all_filesets
173
- # + 7.2.0.1 TCP/IP ntp Applications @@S:bos.net.tcp.ntp 7.2.0.1
174
- # + 7.2.0.2 TCP/IP ntp Applications @@S:bos.net.tcp.ntp 7.2.0.2
175
- #
176
171
  # FOR AN RPM PACKAGE:
177
172
  #
178
173
  # mypackage.foo ALL @@R:mypackage.foo _all_filesets
@@ -248,7 +243,7 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
248
243
  package_string = match.captures[1]
249
244
 
250
245
  case package_type_flag
251
- when "I","S"
246
+ when "I"
252
247
  parse_installp_package_string(package_string)
253
248
  when "R"
254
249
  parse_rpm_package_string(package_string)
@@ -4,7 +4,6 @@
4
4
  require 'puppet/util/package/version/pip'
5
5
  require 'puppet/util/package/version/range'
6
6
  require 'puppet/provider/package_targetable'
7
- require 'puppet/util/http_proxy'
8
7
 
9
8
  Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package::Targetable do
10
9
 
@@ -127,7 +126,7 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
127
126
  if self.class.compare_pip_versions(command_version, '1.5.4') == -1
128
127
  available_versions_with_old_pip.last
129
128
  else
130
- available_versions_with_new_pip(command_version).last
129
+ available_versions_with_new_pip.last
131
130
  end
132
131
  end
133
132
 
@@ -150,17 +149,15 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
150
149
  if self.class.compare_pip_versions(command_version, '1.5.4') == -1
151
150
  available_versions_with_old_pip
152
151
  else
153
- available_versions_with_new_pip(command_version)
152
+ available_versions_with_new_pip
154
153
  end
155
154
  end
156
155
 
157
- def available_versions_with_new_pip(command_version)
156
+ def available_versions_with_new_pip
158
157
  command = resource_or_provider_command
159
158
  self.class.validate_command(command)
160
159
 
161
160
  command_and_options = [self.class.quote(command), 'install', "#{@resource[:name]}==versionplease"]
162
- extra_arg = list_extra_flags(command_version)
163
- command_and_options << extra_arg if extra_arg
164
161
  command_and_options << install_options if @resource[:install_options]
165
162
  execpipe command_and_options do |process|
166
163
  process.collect do |line|
@@ -331,14 +328,4 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
331
328
  path
332
329
  end
333
330
  end
334
-
335
- private
336
-
337
- def list_extra_flags(command_version)
338
- klass = self.class
339
- if klass.compare_pip_versions(command_version, '20.2.4') == 1 &&
340
- klass.compare_pip_versions(command_version, '21.1') == -1
341
- '--use-deprecated=legacy-resolver'
342
- end
343
- end
344
331
  end
@@ -114,10 +114,6 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
114
114
  end).merge({:provider => self.name})
115
115
  end
116
116
 
117
- def deprecated_hold
118
- hold
119
- end
120
-
121
117
  def hold
122
118
  pkg(:freeze, @resource[:name])
123
119
  end
@@ -112,7 +112,7 @@ Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Packa
112
112
  # do the search
113
113
  should = @resource[:ensure]
114
114
  case should
115
- # The terms present, absent, purged, held, installed, latest in :ensure
115
+ # The terms present, absent, purged, installed, latest in :ensure
116
116
  # resolve as Symbols, and we do not need specific package version in this case
117
117
  when true, false, Symbol
118
118
  search = @resource[:name]
@@ -5,10 +5,7 @@ Puppet::Type.type(:package).provide :puppet_gem, :parent => :gem do
5
5
  has_feature :versionable, :install_options, :uninstall_options
6
6
 
7
7
  if Puppet::Util::Platform.windows?
8
- # On windows, we put our ruby ahead of anything that already
9
- # existed on the system PATH. This means that we do not need to
10
- # sort out the absolute path.
11
- commands :gemcmd => "gem"
8
+ commands :gemcmd => File.join(Puppet::Util.get_env('PUPPET_DIR').to_s, 'bin', 'gem.bat')
12
9
  else
13
10
  commands :gemcmd => "/opt/puppetlabs/puppet/bin/gem"
14
11
  end
@@ -280,9 +280,6 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
280
280
  def self.prefetch_target(target)
281
281
  begin
282
282
  target_records = retrieve(target)
283
- unless target_records
284
- raise Puppet::DevError, _("Prefetching %{target} for provider %{name} returned nil") % { target: target, name: self.name }
285
- end
286
283
  rescue Puppet::Util::FileType::FileReadError => detail
287
284
  if @raise_prefetch_errors
288
285
  # We will raise an error later in flush_target. This way,
@@ -17,8 +17,6 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
17
17
  commands :invoke_rc => "/usr/sbin/invoke-rc.d"
18
18
  commands :service => "/usr/sbin/service"
19
19
 
20
- confine :false => Puppet::FileSystem.exist?('/proc/1/comm') && Puppet::FileSystem.read('/proc/1/comm').include?('systemd')
21
-
22
20
  defaultfor :operatingsystem => :cumuluslinux, :operatingsystemmajrelease => ['1','2']
23
21
  defaultfor :operatingsystem => :debian, :operatingsystemmajrelease => ['5','6','7']
24
22
  defaultfor :operatingsystem => :devuan
@@ -5,48 +5,100 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
5
5
  desc <<-EOT
6
6
  Support for Sun's new Service Management Framework.
7
7
 
8
- Starting a service is effectively equivalent to enabling it, so there is
9
- only support for starting and stopping services, which also enables and
10
- disables them, respectively.
8
+ When managing the enable property, this provider will try to preserve
9
+ the previous ensure state per the enableable semantics. On Solaris,
10
+ enabling a service starts it up while disabling a service stops it. Thus,
11
+ there's a chance for this provider to execute two operations when managing
12
+ the enable property. For example, if enable is set to true and the ensure
13
+ state is stopped, this provider will manage the service using two operations:
14
+ one to enable the service which will start it up, and another to stop the
15
+ service (without affecting its enabled status).
11
16
 
12
17
  By specifying `manifest => "/path/to/service.xml"`, the SMF manifest will
13
18
  be imported if it does not exist.
14
-
15
19
  EOT
16
20
 
17
21
  defaultfor :osfamily => :solaris
18
22
 
19
23
  confine :osfamily => :solaris
20
24
 
21
- commands :adm => "/usr/sbin/svcadm", :svcs => "/usr/bin/svcs"
22
- commands :svccfg => "/usr/sbin/svccfg"
25
+ commands :adm => "/usr/sbin/svcadm",
26
+ :svcs => "/usr/bin/svcs",
27
+ :svccfg => "/usr/sbin/svccfg"
23
28
 
24
29
  has_feature :refreshable
25
30
 
26
- def setupservice
27
- if resource[:manifest]
28
- begin
29
- svcs("-l", @resource[:name])
30
- rescue Puppet::ExecutionFailure
31
- Puppet.notice "Importing #{@resource[:manifest]} for #{@resource[:name]}"
32
- svccfg :import, resource[:manifest]
33
- end
34
- end
31
+ def self.instances
32
+ service_instances = svcs("-H", "-o", "state,fmri" ).split("\n")
33
+
34
+ # Puppet does not manage services in the legacy_run state, so filter those out.
35
+ service_instances.reject! { |line| line =~ /^legacy_run/ }
36
+
37
+ service_instances.collect! do |line|
38
+ state, fmri = line.split(/\s+/)
39
+
40
+ status = case state
41
+ when /online/; :running
42
+ when /maintenance/; :maintenance
43
+ when /degraded/; :degraded
44
+ else :stopped
45
+ end
46
+ new({:name => fmri, :ensure => status})
47
+ end
48
+
49
+ service_instances
50
+ end
51
+
52
+ def initialize(*args)
53
+ super(*args)
54
+
55
+ # This hash contains the properties we need to sync. in our flush method.
56
+ #
57
+ # TODO (PUP-9051): Should we use @property_hash here? It seems like
58
+ # @property_hash should be empty by default and is something we can
59
+ # control so I think so?
60
+ @properties_to_sync = {}
61
+ end
62
+
63
+ def service_exists?
64
+ self.service_fmri
65
+ true
66
+ rescue Puppet::ExecutionFailure
67
+ false
68
+ end
69
+
70
+ def setup_service
71
+ return unless @resource[:manifest]
72
+ return if self.service_exists?
73
+
74
+ Puppet.notice("Importing #{@resource[:manifest]} for #{@resource[:name]}")
75
+ svccfg(:import, @resource[:manifest])
35
76
  rescue Puppet::ExecutionFailure => detail
36
- raise Puppet::Error.new( "Cannot config #{self.name} to enable it: #{detail}", detail )
77
+ raise Puppet::Error.new( "Cannot config #{@resource[:name]} to enable it: #{detail}", detail )
37
78
  end
38
79
 
39
- def self.instances
40
- svcs("-H", "-o", "state,fmri" ).split("\n").select{|l| l !~ /^legacy_run/ }.collect do |line|
41
- state,fmri = line.split(/\s+/)
42
- status = case state
43
- when /online/; :running
44
- when /maintenance/; :maintenance
45
- when /degraded/; :degraded
46
- else :stopped
47
- end
48
- new({:name => fmri, :ensure => status})
49
- end
80
+ # Returns the service's FMRI. We fail if multiple FMRIs correspond to
81
+ # @resource[:name].
82
+ #
83
+ # If the service does not exist or we fail to get any FMRIs from svcs,
84
+ # this method will raise a Puppet::ExecutionFailure
85
+ def service_fmri
86
+ return @fmri if @fmri
87
+
88
+ # `svcs -l` is better to use because we can detect service instances
89
+ # that have not yet been activated or enabled (i.e. it lets us detect
90
+ # services that svcadm has not yet touched). `svcs -H -o fmri` is a bit
91
+ # more limited.
92
+ lines = svcs("-l", @resource[:name]).chomp.lines.to_a
93
+ lines.select! { |line| line =~ /^fmri/ }
94
+ fmris = lines.map! { |line| line.split(' ')[-1].chomp }
95
+ unless fmris.length == 1
96
+ raise Puppet::Error.new(
97
+ "Failed to get #{@resource[:name]}'s FMRI: The pattern '#{@resource[:name]}' matches multiple FMRIs! These are the FMRIs it matches: #{fmris.join(', ')}"
98
+ )
99
+ end
100
+
101
+ @fmri = fmris.first
50
102
  end
51
103
 
52
104
  # Returns the service's FMRI. We fail if multiple FMRIs correspond to
@@ -96,51 +148,50 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
96
148
  end
97
149
 
98
150
  def enable
99
- self.start
151
+ @properties_to_sync[:enable] = true
100
152
  end
101
153
 
102
154
  def enabled?
103
- case self.status
104
- when :running
105
- return :true
106
- else
107
- return :false
108
- end
155
+ return :false unless service_exists?
156
+ _property, _type, value = svccfg("-s", self.service_fmri, "listprop", "general/enabled").split(' ')
157
+ value == 'true' ? :true : :false
109
158
  end
110
159
 
111
160
  def disable
112
- self.stop
161
+ @properties_to_sync[:enable] = false
113
162
  end
114
163
 
115
164
  def restartcmd
116
165
  if Puppet::Util::Package.versioncmp(Facter.value(:operatingsystemrelease), '11.2') >= 0
117
- [command(:adm), :restart, "-s", @resource[:name]]
166
+ [command(:adm), :restart, "-s", self.service_fmri]
118
167
  else
119
168
  # Synchronous restart only supported in Solaris 11.2 and above
120
- [command(:adm), :restart, @resource[:name]]
169
+ [command(:adm), :restart, self.service_fmri]
121
170
  end
122
171
  end
123
172
 
124
- def startcmd
125
- self.setupservice
126
- case self.status
127
- when :maintenance, :degraded
128
- [command(:adm), :clear, @resource[:name]]
129
- else
130
- [command(:adm), :enable, "-rs", @resource[:name]]
131
- end
173
+ def service_states
174
+ # Gets the current and next state of the service. We have a next state because SMF
175
+ # manages services asynchronously. If there is no 'next' state, svcs will put a '-'
176
+ # to indicate as such.
177
+ current_state, next_state = svcs("-H", "-o", "state,nstate", self.service_fmri).chomp.split(' ')
178
+
179
+ {
180
+ :current => current_state,
181
+ :next => next_state == "-" ? nil : next_state
182
+ }
132
183
  end
133
184
 
134
185
  # Wait for the service to transition into the specified state before returning.
135
186
  # This is necessary due to the asynchronous nature of SMF services.
136
- # desired_state should be online, offline, disabled, or uninitialized.
187
+ # desired_states should include only online, offline, disabled, or uninitialized.
137
188
  # See PUP-5474 for long-term solution to this issue.
138
- def wait(*desired_state)
189
+ def wait(*desired_states)
139
190
  Timeout.timeout(60) do
140
191
  loop do
141
192
  states = self.service_states
142
- break if desired_state.include?(states[0]) && states[1] == '-'
143
- sleep(1)
193
+ break if desired_states.include?(states[:current]) && states[:next].nil?
194
+ Kernel.sleep(1)
144
195
  end
145
196
  end
146
197
  rescue Timeout::Error
@@ -148,15 +199,11 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
148
199
  end
149
200
 
150
201
  def start
151
- # Wait for the service to actually start before returning.
152
- super
153
- self.wait('online')
202
+ @properties_to_sync[:ensure] = :running
154
203
  end
155
204
 
156
205
  def stop
157
- # Wait for the service to actually stop before returning.
158
- super
159
- self.wait('offline', 'disabled', 'uninitialized')
206
+ @properties_to_sync[:ensure] = :stopped
160
207
  end
161
208
 
162
209
  def restart
@@ -165,16 +212,8 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
165
212
  self.wait('online')
166
213
  end
167
214
 
168
- # Determine the current and next states of a service.
169
- def service_states
170
- svcs("-H", "-o", "state,nstate", @resource[:name]).chomp.split
171
- end
172
-
173
215
  def status
174
- if @resource[:status]
175
- super
176
- return
177
- end
216
+ return super if @resource[:status]
178
217
 
179
218
  begin
180
219
  if supports_incomplete_services?
@@ -185,10 +224,10 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
185
224
  end
186
225
  end
187
226
 
188
- # get the current state and the next state, and if the next
189
- # state is set (i.e. not "-") use it for state comparison
190
- states = service_states
191
- state = states[1] == "-" ? states[0] : states[1]
227
+ # Get the current state and the next state. If there is a next state,
228
+ # use that for the state comparison.
229
+ states = self.service_states
230
+ state = states[:next] || states[:current]
192
231
  rescue Puppet::ExecutionFailure
193
232
  # TODO (PUP-8957): Should this be set back to INFO ?
194
233
  debug "Could not get status on service #{self.name} #{$!}"
@@ -197,10 +236,8 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
197
236
 
198
237
  case state
199
238
  when "online"
200
- #self.warning "matched running #{line.inspect}"
201
239
  return :running
202
240
  when "offline", "disabled", "uninitialized"
203
- #self.warning "matched stopped #{line.inspect}"
204
241
  return :stopped
205
242
  when "maintenance"
206
243
  return :maintenance
@@ -213,11 +250,92 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
213
250
  raise Puppet::Error,
214
251
  "Unmanageable state '#{state}' on service #{self.name}"
215
252
  end
253
+ end
216
254
 
255
+ # Helper that encapsulates the clear + svcadm [enable|disable]
256
+ # logic in one place. Makes it easy to test things out and also
257
+ # cleans up flush's code.
258
+ def maybe_clear_service_then_svcadm(cur_state, subcmd, flags)
259
+ # If the cur_state is maint or degraded, then we need to clear the service
260
+ # before we enable or disable it.
261
+ adm('clear', self.service_fmri) if [:maintenance, :degraded].include?(cur_state)
262
+ adm(subcmd, flags, self.service_fmri)
217
263
  end
218
264
 
219
- def stopcmd
220
- [command(:adm), :disable, "-s", @resource[:name]]
265
+ # The flush method is necessary for the SMF provider because syncing the enable and ensure
266
+ # properties are not independent operations like they are in most of our other service
267
+ # providers.
268
+ def flush
269
+ # We append the "_" because ensure is a Ruby keyword, and it is good to keep property
270
+ # variable names consistent with each other.
271
+ enable_, ensure_ = @properties_to_sync[:enable], @properties_to_sync[:ensure]
272
+
273
+ # All of the relevant properties are in sync., so we do not need to do
274
+ # anything here.
275
+ return if enable_.nil? and ensure_.nil?
276
+
277
+ # Set-up our service so that we know it will exist and so we can collect its fmri. Also
278
+ # simplifies the code. For a nonexistent service, one of enable or ensure will be true
279
+ # here (since we're syncing them), so we can fail early if setup_service fails.
280
+ setup_service
281
+ fmri = self.service_fmri
282
+
283
+ # Useful constants for operations involving multiple states
284
+ stopped = ['offline', 'disabled', 'uninitialized']
285
+
286
+ # Get the current state of the service.
287
+ cur_state = self.status
288
+
289
+ if enable_.nil?
290
+ # Only ensure needs to be syncd. The -t flag tells svcadm to temporarily
291
+ # enable/disable the service, where the temporary status is gone upon
292
+ # reboot. This is exactly what we want, because we do not want to touch
293
+ # the enable property.
294
+ if ensure_ == :stopped
295
+ self.maybe_clear_service_then_svcadm(cur_state, 'disable', '-st')
296
+ wait(*stopped)
297
+ else # ensure == :running
298
+ self.maybe_clear_service_then_svcadm(cur_state, 'enable', '-rst')
299
+ wait('online')
300
+ end
301
+
302
+ return
303
+ end
304
+
305
+ # Here, enable is being syncd. svcadm starts the service if we enable it, or shuts it down if we
306
+ # disable it. However, we want our service to be in a final state, which is either whatever the
307
+ # new ensured value is, or what our original state was prior to enabling it.
308
+ #
309
+ # NOTE: Even if you try to set the general/enabled property with svccfg, SMF will still
310
+ # try to start or shut down the service. Plus, setting general/enabled with svccfg does not
311
+ # enable the service's dependencies, while svcadm handles this correctly.
312
+ #
313
+ # NOTE: We're treating :running and :degraded the same. The reason is b/c an SMF managed service
314
+ # can only enter the :degraded state if it is online. Since disabling the service also shuts it
315
+ # off, we cannot set it back to the :degraded state. Thus, it is best to lump :running and :degraded
316
+ # into the same category to maintain a consistent postcondition on the service's final state when
317
+ # enabling and disabling it.
318
+ final_state = ensure_ || cur_state
319
+ final_state = :running if final_state == :degraded
320
+
321
+ if enable_
322
+ self.maybe_clear_service_then_svcadm(cur_state, 'enable', '-rs')
323
+ else
324
+ self.maybe_clear_service_then_svcadm(cur_state, 'disable', '-s')
325
+ end
326
+
327
+ # We're safe with 'whens' here since self.status already errors on any
328
+ # unmanageable states.
329
+ case final_state
330
+ when :running
331
+ adm('enable', '-rst', fmri) unless enable_
332
+ wait('online')
333
+ when :stopped
334
+ adm('disable', '-st', fmri) if enable_
335
+ wait(*stopped)
336
+ when :maintenance
337
+ adm('mark', '-I', 'maintenance', fmri)
338
+ wait('maintenance')
339
+ end
221
340
  end
222
341
  end
223
-