chef 17.0.242 → 17.4.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -14
  3. data/Rakefile +2 -2
  4. data/chef.gemspec +10 -20
  5. data/lib/chef/action_collection.rb +6 -26
  6. data/lib/chef/application/base.rb +15 -0
  7. data/lib/chef/application.rb +4 -2
  8. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  9. data/lib/chef/client.rb +7 -1
  10. data/lib/chef/compliance/default_attributes.rb +5 -3
  11. data/lib/chef/compliance/reporter/automate.rb +1 -1
  12. data/lib/chef/compliance/runner.rb +17 -3
  13. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  14. data/lib/chef/cookbook/gem_installer.rb +5 -1
  15. data/lib/chef/cookbook_version.rb +26 -4
  16. data/lib/chef/data_collector/run_end_message.rb +1 -1
  17. data/lib/chef/data_collector.rb +0 -1
  18. data/lib/chef/deprecated.rb +14 -4
  19. data/lib/chef/dsl/declare_resource.rb +5 -10
  20. data/lib/chef/dsl/render_helpers.rb +44 -0
  21. data/lib/chef/dsl/secret.rb +64 -0
  22. data/lib/chef/dsl/toml.rb +116 -0
  23. data/lib/chef/dsl/universal.rb +5 -0
  24. data/lib/chef/dsl.rb +1 -0
  25. data/lib/chef/event_dispatch/base.rb +2 -1
  26. data/lib/chef/exceptions.rb +23 -0
  27. data/lib/chef/formatters/doc.rb +2 -1
  28. data/lib/chef/formatters/error_mapper.rb +2 -2
  29. data/lib/chef/handler/slow_report.rb +66 -0
  30. data/lib/chef/handler.rb +46 -8
  31. data/lib/chef/json_compat.rb +1 -1
  32. data/lib/chef/node.rb +21 -20
  33. data/lib/chef/policy_builder/policyfile.rb +88 -45
  34. data/lib/chef/provider/directory.rb +6 -6
  35. data/lib/chef/provider/execute.rb +1 -1
  36. data/lib/chef/provider/file.rb +2 -2
  37. data/lib/chef/provider/group/dscl.rb +1 -1
  38. data/lib/chef/provider/launchd.rb +6 -6
  39. data/lib/chef/provider/link.rb +1 -1
  40. data/lib/chef/provider/lwrp_base.rb +1 -1
  41. data/lib/chef/provider/package/dnf/dnf_helper.py +11 -10
  42. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  43. data/lib/chef/provider/package/habitat.rb +168 -0
  44. data/lib/chef/provider/package/powershell.rb +5 -0
  45. data/lib/chef/provider/package/yum/python_helper.rb +15 -10
  46. data/lib/chef/provider/package/yum/yum_helper.py +46 -62
  47. data/lib/chef/provider/package/yum.rb +1 -4
  48. data/lib/chef/provider/registry_key.rb +1 -1
  49. data/lib/chef/provider/service/systemd.rb +1 -1
  50. data/lib/chef/provider/subversion.rb +4 -4
  51. data/lib/chef/provider/support/yum_repo.erb +1 -1
  52. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  53. data/lib/chef/provider/systemd_unit.rb +18 -17
  54. data/lib/chef/provider/template/content.rb +1 -1
  55. data/lib/chef/provider/user/mac.rb +3 -3
  56. data/lib/chef/provider/windows_script.rb +1 -1
  57. data/lib/chef/provider/yum_repository.rb +27 -43
  58. data/lib/chef/provider/zypper_repository.rb +30 -34
  59. data/lib/chef/provider.rb +26 -1
  60. data/lib/chef/provider_resolver.rb +8 -2
  61. data/lib/chef/providers.rb +1 -0
  62. data/lib/chef/resource/alternatives.rb +5 -5
  63. data/lib/chef/resource/apt_preference.rb +2 -2
  64. data/lib/chef/resource/apt_repository.rb +2 -2
  65. data/lib/chef/resource/apt_update.rb +4 -4
  66. data/lib/chef/resource/build_essential.rb +1 -1
  67. data/lib/chef/resource/chef_client_config.rb +10 -5
  68. data/lib/chef/resource/chef_client_cron.rb +3 -3
  69. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  70. data/lib/chef/resource/chef_client_scheduled_task.rb +15 -15
  71. data/lib/chef/resource/chef_client_systemd_timer.rb +3 -3
  72. data/lib/chef/resource/chef_client_trusted_certificate.rb +2 -2
  73. data/lib/chef/resource/chef_handler.rb +2 -2
  74. data/lib/chef/resource/chef_sleep.rb +1 -1
  75. data/lib/chef/resource/chef_vault_secret.rb +2 -2
  76. data/lib/chef/resource/chocolatey_feature.rb +2 -2
  77. data/lib/chef/resource/chocolatey_source.rb +1 -1
  78. data/lib/chef/resource/cron/cron_d.rb +4 -6
  79. data/lib/chef/resource/cron_access.rb +1 -1
  80. data/lib/chef/resource/dmg_package.rb +1 -1
  81. data/lib/chef/resource/dsc_resource.rb +1 -1
  82. data/lib/chef/resource/execute.rb +5 -5
  83. data/lib/chef/resource/gem_package.rb +2 -1
  84. data/lib/chef/resource/group.rb +4 -4
  85. data/lib/chef/resource/habitat/_habitat_shared.rb +28 -0
  86. data/lib/chef/resource/habitat/habitat_package.rb +129 -0
  87. data/lib/chef/resource/habitat/habitat_sup.rb +329 -0
  88. data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
  89. data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
  90. data/lib/chef/resource/habitat_config.rb +107 -0
  91. data/lib/chef/resource/habitat_install.rb +247 -0
  92. data/lib/chef/resource/habitat_service.rb +451 -0
  93. data/lib/chef/resource/habitat_user_toml.rb +92 -0
  94. data/lib/chef/resource/homebrew_cask.rb +18 -7
  95. data/lib/chef/resource/homebrew_package.rb +1 -1
  96. data/lib/chef/resource/homebrew_tap.rb +4 -3
  97. data/lib/chef/resource/homebrew_update.rb +2 -2
  98. data/lib/chef/resource/hostname.rb +49 -7
  99. data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
  100. data/lib/chef/resource/kernel_module.rb +6 -6
  101. data/lib/chef/resource/launchd.rb +3 -3
  102. data/lib/chef/resource/locale.rb +1 -1
  103. data/lib/chef/resource/lwrp_base.rb +18 -3
  104. data/lib/chef/resource/macos_userdefaults.rb +2 -2
  105. data/lib/chef/resource/ohai_hint.rb +2 -6
  106. data/lib/chef/resource/openbsd_package.rb +17 -0
  107. data/lib/chef/resource/openssl_dhparam.rb +1 -2
  108. data/lib/chef/resource/openssl_ec_private_key.rb +1 -3
  109. data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
  110. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -3
  111. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
  112. data/lib/chef/resource/openssl_x509_certificate.rb +1 -4
  113. data/lib/chef/resource/openssl_x509_crl.rb +1 -3
  114. data/lib/chef/resource/openssl_x509_request.rb +1 -3
  115. data/lib/chef/resource/osx_profile.rb +3 -3
  116. data/lib/chef/resource/plist.rb +1 -1
  117. data/lib/chef/resource/powershell_package_source.rb +2 -4
  118. data/lib/chef/resource/reboot.rb +38 -9
  119. data/lib/chef/resource/remote_directory.rb +2 -2
  120. data/lib/chef/resource/remote_file.rb +3 -3
  121. data/lib/chef/resource/rhsm_errata.rb +0 -2
  122. data/lib/chef/resource/rhsm_errata_level.rb +1 -5
  123. data/lib/chef/resource/rhsm_repo.rb +15 -0
  124. data/lib/chef/resource/rhsm_subscription.rb +5 -5
  125. data/lib/chef/resource/ruby_block.rb +100 -0
  126. data/lib/chef/resource/scm/subversion.rb +1 -1
  127. data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
  128. data/lib/chef/resource/sudo.rb +2 -6
  129. data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
  130. data/lib/chef/resource/support/client.erb +8 -1
  131. data/lib/chef/resource/support/sup.toml.erb +179 -0
  132. data/lib/chef/resource/swap_file.rb +2 -6
  133. data/lib/chef/resource/sysctl.rb +2 -2
  134. data/lib/chef/resource/systemd_unit.rb +3 -3
  135. data/lib/chef/resource/timezone.rb +1 -1
  136. data/lib/chef/resource/user_ulimit.rb +2 -2
  137. data/lib/chef/resource/windows_ad_join.rb +2 -2
  138. data/lib/chef/resource/windows_audit_policy.rb +2 -2
  139. data/lib/chef/resource/windows_auto_run.rb +2 -2
  140. data/lib/chef/resource/windows_certificate.rb +1 -1
  141. data/lib/chef/resource/windows_defender.rb +163 -0
  142. data/lib/chef/resource/windows_defender_exclusion.rb +125 -0
  143. data/lib/chef/resource/windows_dfs_folder.rb +2 -2
  144. data/lib/chef/resource/windows_dfs_namespace.rb +2 -2
  145. data/lib/chef/resource/windows_dns_record.rb +2 -2
  146. data/lib/chef/resource/windows_dns_zone.rb +2 -2
  147. data/lib/chef/resource/windows_env.rb +1 -1
  148. data/lib/chef/resource/windows_feature.rb +3 -3
  149. data/lib/chef/resource/windows_feature_dism.rb +3 -5
  150. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  151. data/lib/chef/resource/windows_firewall_profile.rb +2 -2
  152. data/lib/chef/resource/windows_firewall_rule.rb +20 -6
  153. data/lib/chef/resource/windows_font.rb +2 -2
  154. data/lib/chef/resource/windows_pagefile.rb +104 -65
  155. data/lib/chef/resource/windows_path.rb +4 -4
  156. data/lib/chef/resource/windows_printer.rb +80 -61
  157. data/lib/chef/resource/windows_printer_port.rb +48 -65
  158. data/lib/chef/resource/windows_security_policy.rb +7 -4
  159. data/lib/chef/resource/windows_share.rb +2 -2
  160. data/lib/chef/resource/windows_shortcut.rb +1 -1
  161. data/lib/chef/resource/windows_task.rb +2 -2
  162. data/lib/chef/resource/windows_uac.rb +3 -5
  163. data/lib/chef/resource/windows_update_settings.rb +259 -0
  164. data/lib/chef/resource/windows_user_privilege.rb +2 -2
  165. data/lib/chef/resource/windows_workgroup.rb +2 -2
  166. data/lib/chef/resource/yum_package.rb +11 -15
  167. data/lib/chef/resource/zypper_package.rb +4 -4
  168. data/lib/chef/resource/zypper_repository.rb +28 -8
  169. data/lib/chef/resource.rb +20 -25
  170. data/lib/chef/resource_builder.rb +8 -2
  171. data/lib/chef/resource_inspector.rb +6 -2
  172. data/lib/chef/resource_reporter.rb +0 -1
  173. data/lib/chef/resources.rb +13 -1
  174. data/lib/chef/run_lock.rb +1 -1
  175. data/lib/chef/runner.rb +1 -1
  176. data/lib/chef/secret_fetcher/aws_secrets_manager.rb +65 -0
  177. data/lib/chef/secret_fetcher/azure_key_vault.rb +78 -0
  178. data/lib/chef/secret_fetcher/base.rb +76 -0
  179. data/lib/chef/secret_fetcher/example.rb +46 -0
  180. data/lib/chef/secret_fetcher.rb +55 -0
  181. data/lib/chef/shell/ext.rb +3 -3
  182. data/lib/chef/version.rb +1 -1
  183. data/lib/chef/win32/api.rb +9 -2
  184. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  185. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  186. data/spec/data/knife_subcommand/test_explicit_category.rb +7 -0
  187. data/spec/data/knife_subcommand/test_name_mapping.rb +4 -0
  188. data/spec/data/knife_subcommand/test_yourself.rb +21 -0
  189. data/spec/functional/mixin/from_file_spec.rb +1 -1
  190. data/spec/functional/resource/dnf_package_spec.rb +857 -537
  191. data/spec/functional/resource/group_spec.rb +1 -1
  192. data/spec/functional/resource/link_spec.rb +1 -1
  193. data/spec/functional/resource/remote_file_spec.rb +1 -1
  194. data/spec/functional/resource/windows_env_spec.rb +2 -2
  195. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  196. data/spec/functional/resource/windows_pagefile_spec.rb +98 -0
  197. data/spec/functional/resource/yum_package_spec.rb +495 -428
  198. data/spec/integration/client/client_spec.rb +0 -20
  199. data/spec/integration/compliance/compliance_spec.rb +1 -0
  200. data/spec/integration/recipes/recipe_dsl_spec.rb +1 -1
  201. data/spec/integration/recipes/resource_action_spec.rb +6 -6
  202. data/spec/integration/recipes/unified_mode_spec.rb +70 -0
  203. data/spec/spec_helper.rb +3 -0
  204. data/spec/support/chef_helpers.rb +1 -1
  205. data/spec/support/shared/functional/execute_resource.rb +1 -1
  206. data/spec/support/shared/functional/knife.rb +37 -0
  207. data/spec/support/shared/integration/knife_support.rb +192 -0
  208. data/spec/support/shared/unit/knife_shared.rb +39 -0
  209. data/spec/support/shared/unit/provider/file.rb +3 -9
  210. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  211. data/spec/unit/compliance/runner_spec.rb +46 -2
  212. data/spec/unit/cookbook_version_spec.rb +52 -0
  213. data/spec/unit/data_collector_spec.rb +47 -1
  214. data/spec/unit/dsl/render_helpers_spec.rb +102 -0
  215. data/spec/unit/dsl/secret_spec.rb +71 -0
  216. data/spec/unit/handler_spec.rb +8 -2
  217. data/spec/unit/policy_builder/dynamic_spec.rb +0 -5
  218. data/spec/unit/policy_builder/policyfile_spec.rb +144 -56
  219. data/spec/unit/provider/apt_update_spec.rb +3 -1
  220. data/spec/unit/provider/link_spec.rb +1 -1
  221. data/spec/unit/provider/mount/aix_spec.rb +1 -1
  222. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  223. data/spec/unit/provider/package/powershell_spec.rb +74 -12
  224. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  225. data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
  226. data/spec/unit/provider/systemd_unit_spec.rb +2 -2
  227. data/spec/unit/provider/zypper_repository_spec.rb +3 -10
  228. data/spec/unit/provider_spec.rb +23 -0
  229. data/spec/unit/resource/homebrew_cask_spec.rb +29 -11
  230. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  231. data/spec/unit/resource/rhsm_subscription_spec.rb +50 -3
  232. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  233. data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
  234. data/spec/unit/resource/windows_defender_spec.rb +71 -0
  235. data/spec/unit/resource/windows_firewall_rule_spec.rb +12 -7
  236. data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
  237. data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
  238. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  239. data/spec/unit/resource_spec.rb +19 -8
  240. data/spec/unit/secret_fetcher/aws_secrets_manager_spec.rb +70 -0
  241. data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +70 -0
  242. data/spec/unit/secret_fetcher_spec.rb +82 -0
  243. data/tasks/rspec.rb +4 -9
  244. metadata +65 -161
  245. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  246. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  247. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  248. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  249. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  250. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  251. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  252. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  253. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  254. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
@@ -147,7 +147,7 @@ class Chef
147
147
  end
148
148
  end
149
149
 
150
- action :add, description: "Add a user privilege" do
150
+ action :add, description: "Add a user privilege." do
151
151
  ([*new_resource.privilege] - [*current_resource.privilege]).each do |user_right|
152
152
  converge_by("adding user '#{new_resource.principal}' privilege #{user_right}") do
153
153
  Chef::ReservedNames::Win32::Security.add_account_right(new_resource.principal, user_right)
@@ -155,7 +155,7 @@ class Chef
155
155
  end
156
156
  end
157
157
 
158
- action :set, description: "Set the privileges that are listed in the `privilege` property for only the users listed in the `users` property" do
158
+ action :set, description: "Set the privileges that are listed in the `privilege` property for only the users listed in the `users` property." do
159
159
  if new_resource.users.nil? || new_resource.users.empty?
160
160
  raise Chef::Exceptions::ValidationFailed, "Users are required property with set action."
161
161
  end
@@ -30,13 +30,13 @@ class Chef
30
30
  examples <<~DOC
31
31
  **Join a workgroup**:
32
32
 
33
- ``` ruby
33
+ ```ruby
34
34
  windows_workgroup 'myworkgroup'
35
35
  ```
36
36
 
37
37
  **Join a workgroup using a specific user**:
38
38
 
39
- ``` ruby
39
+ ```ruby
40
40
  windows_workgroup 'myworkgroup' do
41
41
  user 'Administrator'
42
42
  password 'passw0rd'
@@ -27,40 +27,36 @@ class Chef
27
27
  provides :yum_package
28
28
  provides :package, platform_family: "fedora_derived"
29
29
 
30
- description "Use the **yum_package** resource to install, upgrade, and remove packages with Yum"\
31
- " for the Red Hat and CentOS platforms. The yum_package resource is able to resolve"\
32
- " `provides` data for packages much like Yum can do when it is run from the command line."\
33
- " This allows a variety of options for installing packages, like minimum versions,"\
34
- " virtual provides, and library names."
30
+ description "Use the **yum_package** resource to install, upgrade, and remove packages with Yum for the Red Hat and CentOS platforms. The yum_package resource is able to resolve `provides` data for packages much like Yum can do when it is run from the command line. This allows a variety of options for installing packages, like minimum versions, virtual provides, and library names. Note: Support for using file names to install packages (as in `yum_package '/bin/sh'`) is not available because the volume of data required to parse for this is excessive."
35
31
  examples <<~DOC
36
32
  **Install an exact version**:
37
33
 
38
- ``` ruby
34
+ ```ruby
39
35
  yum_package 'netpbm = 10.35.58-8.el8'
40
36
  ```
41
37
 
42
38
  **Install a minimum version**:
43
39
 
44
- ``` ruby
40
+ ```ruby
45
41
  yum_package 'netpbm >= 10.35.58-8.el8'
46
42
  ```
47
43
 
48
44
  **Install a minimum version using the default action**:
49
45
 
50
- ``` ruby
46
+ ```ruby
51
47
  yum_package 'netpbm'
52
48
  ```
53
49
 
54
50
  **Install a version without worrying about the exact release**:
55
51
 
56
- ``` ruby
52
+ ```ruby
57
53
  yum_package 'netpbm-10.35*'
58
54
  ```
59
55
 
60
56
 
61
57
  **To install a package**:
62
58
 
63
- ``` ruby
59
+ ```ruby
64
60
  yum_package 'netpbm' do
65
61
  action :install
66
62
  end
@@ -68,13 +64,13 @@ class Chef
68
64
 
69
65
  **To install a partial minimum version**:
70
66
 
71
- ``` ruby
67
+ ```ruby
72
68
  yum_package 'netpbm >= 10'
73
69
  ```
74
70
 
75
71
  **To install a specific architecture**:
76
72
 
77
- ``` ruby
73
+ ```ruby
78
74
  yum_package 'netpbm' do
79
75
  arch 'i386'
80
76
  end
@@ -82,13 +78,13 @@ class Chef
82
78
 
83
79
  or:
84
80
 
85
- ``` ruby
81
+ ```ruby
86
82
  yum_package 'netpbm.x86_64'
87
83
  ```
88
84
 
89
85
  **To install a specific version-release**
90
86
 
91
- ``` ruby
87
+ ```ruby
92
88
  yum_package 'netpbm' do
93
89
  version '10.35.58-8.el8'
94
90
  end
@@ -101,7 +97,7 @@ class Chef
101
97
  to dump the in-memory Yum cache, and then use the repository immediately
102
98
  to ensure that the correct package is installed:
103
99
 
104
- ``` ruby
100
+ ```ruby
105
101
  cookbook_file '/etc/yum.repos.d/custom.repo' do
106
102
  source 'custom'
107
103
  mode '0755'
@@ -30,7 +30,7 @@ class Chef
30
30
  examples <<~DOC
31
31
  **Install a package using package manager:**
32
32
 
33
- ``` ruby
33
+ ```ruby
34
34
  zypper_package 'name of package' do
35
35
  action :install
36
36
  end
@@ -38,7 +38,7 @@ class Chef
38
38
 
39
39
  **Install a package using local file:**
40
40
 
41
- ``` ruby
41
+ ```ruby
42
42
  zypper_package 'jwhois' do
43
43
  action :install
44
44
  source '/path/to/jwhois.rpm'
@@ -47,10 +47,10 @@ class Chef
47
47
 
48
48
  **Install without using recommend packages as a dependency:**
49
49
 
50
- ``` ruby
50
+ ```ruby
51
51
  package 'apache2' do
52
52
  options '--no-recommends'
53
- end
53
+ end
54
54
  ```
55
55
  DOC
56
56
 
@@ -24,21 +24,37 @@ class Chef
24
24
  unified_mode true
25
25
 
26
26
  provides(:zypper_repository) { true }
27
- provides(:zypper_repo) { true }
27
+ provides(:zypper_repo) { true } # legacy cookbook compatibility
28
28
 
29
29
  description "Use the **zypper_repository** resource to create Zypper package repositories on SUSE Enterprise Linux and openSUSE systems. This resource maintains full compatibility with the **zypper_repository** resource in the existing **zypper** cookbook."
30
30
  introduced "13.3"
31
31
  examples <<~DOC
32
32
  **Add the Apache repo on openSUSE Leap 15**:
33
33
 
34
- ``` ruby
34
+ ```ruby
35
35
  zypper_repository 'apache' do
36
36
  baseurl 'http://download.opensuse.org/repositories/Apache'
37
- path '/openSUSE_Leap_15.0'
38
- type 'rpm-md'
37
+ path '/openSUSE_Leap_15.2'
38
+ type 'rpm-md'
39
39
  priority '100'
40
40
  end
41
41
  ```
42
+
43
+ **Remove the repo named 'apache'**:
44
+
45
+ ```ruby
46
+ zypper_repository 'apache' do
47
+ action :delete
48
+ end
49
+ ```
50
+
51
+ **Refresh the repo named 'apache'**:
52
+
53
+ ```ruby
54
+ zypper_repository 'apache' do
55
+ action :refresh
56
+ end
57
+ ```
42
58
  DOC
43
59
 
44
60
  property :repo_name, String,
@@ -66,8 +82,10 @@ class Chef
66
82
  description: "Determines whether or not to perform a GPG signature check on the repository.",
67
83
  default: true
68
84
 
69
- property :gpgkey, String,
70
- description: "The location of the repository key to be imported."
85
+ property :gpgkey, [String, Array],
86
+ description: "The location of the repository key(s) to be imported.",
87
+ coerce: proc { |v| Array(v) },
88
+ default: []
71
89
 
72
90
  property :baseurl, String,
73
91
  description: "The base URL for the Zypper repository, such as `http://download.opensuse.org`."
@@ -95,10 +113,12 @@ class Chef
95
113
  default: true
96
114
 
97
115
  property :source, String,
98
- description: "The name of the template for the repository file. Only necessary if you're not using the built in template."
116
+ description: "The name of the template for the repository file. Only necessary if you're using a custom template for the repository file."
99
117
 
100
118
  property :cookbook, String,
101
- description: "The cookbook to source the repository template file from. Only necessary if you're not using the built in template.",
119
+ description: "The cookbook to source the repository template file from. Only necessary if you're using a custom template for the repository file.",
120
+ default: lazy { cookbook_name },
121
+ default_description: "The cookbook containing the resource",
102
122
  desired_state: false
103
123
 
104
124
  property :gpgautoimportkeys, [TrueClass, FalseClass],
data/lib/chef/resource.rb CHANGED
@@ -42,6 +42,7 @@ require_relative "mixin/deprecation"
42
42
  require_relative "mixin/properties"
43
43
  require_relative "mixin/provides"
44
44
  require_relative "dsl/universal"
45
+ require_relative "constants"
45
46
 
46
47
  class Chef
47
48
  class Resource
@@ -1062,7 +1063,8 @@ class Chef
1062
1063
  # action for the resource.
1063
1064
  #
1064
1065
  # @param name [Symbol] The action name to define.
1065
- # @param description [String] optional description for the action
1066
+ # @param description [String] optional description for the action. Used for
1067
+ # documentation generation.
1066
1068
  # @param recipe_block The recipe to run when the action is taken. This block
1067
1069
  # takes no parameters, and will be evaluated in a new context containing:
1068
1070
  #
@@ -1075,11 +1077,8 @@ class Chef
1075
1077
  def self.action(action, description: nil, &recipe_block)
1076
1078
  action = action.to_sym
1077
1079
  declare_action_class
1078
- action_class.action(action, &recipe_block)
1080
+ action_class.action(action, description: description, &recipe_block)
1079
1081
  self.allowed_actions += [ action ]
1080
- # Accept any non-nil description, which will correctly override
1081
- # any specific inherited description.
1082
- action_descriptions[action] = description unless description.nil?
1083
1082
  default_action action if Array(default_action) == [:nothing]
1084
1083
  end
1085
1084
 
@@ -1089,18 +1088,15 @@ class Chef
1089
1088
  # @param action [Symbol,String] the action name
1090
1089
  # @return the description of the action provided, or nil if no description
1091
1090
  # was defined
1092
- def self.action_description(action)
1093
- action_descriptions[action.to_sym]
1094
- end
1095
-
1096
- # @api private
1097
- #
1098
- # @return existing action description hash, or newly-initialized
1099
- # hash containing action descriptions inherited from parent Resource,
1100
- # if any.
1101
- def self.action_descriptions
1102
- @action_descriptions ||=
1103
- superclass.respond_to?(:action_descriptions) ? superclass.action_descriptions.dup : { nothing: nil }
1091
+ def action_description(action)
1092
+ provider_for_action(action).class.action_description(action)
1093
+ rescue Chef::Exceptions::ProviderNotFound
1094
+ # If a provider can't be found, there can be no description defined on the provider.
1095
+ nil
1096
+ rescue NameError => e
1097
+ # This can happen when attempting to load a provider in a platform-specific
1098
+ # environment where we have not required the necessary files yet
1099
+ raise unless e.message =~ /uninitialized constant/
1104
1100
  end
1105
1101
 
1106
1102
  # Define a method to load up this resource's properties with the current
@@ -1187,9 +1183,10 @@ class Chef
1187
1183
  begin
1188
1184
  is_custom_resource!
1189
1185
  base_provider =
1190
- if superclass.custom_resource?
1186
+ if superclass.custom_resource? || superclass != Chef::Resource
1191
1187
  superclass.action_class
1192
1188
  else
1189
+
1193
1190
  ActionClass
1194
1191
  end
1195
1192
 
@@ -1362,8 +1359,9 @@ class Chef
1362
1359
  #
1363
1360
  # @param arg [String] version constraint to match against (e.g. "> 14")
1364
1361
  #
1365
- def self.chef_version_for_provides(constraint)
1366
- @chef_version_for_provides = constraint
1362
+ def self.chef_version_for_provides(constraint = NOT_PASSED)
1363
+ @chef_version_for_provides = constraint unless constraint == NOT_PASSED
1364
+ @chef_version_for_provides ||= nil
1367
1365
  end
1368
1366
 
1369
1367
  # Mark this resource as providing particular DSL.
@@ -1376,14 +1374,11 @@ class Chef
1376
1374
  def self.provides(name, **options, &block)
1377
1375
  name = name.to_sym
1378
1376
 
1379
- # quell warnings
1380
- @chef_version_for_provides = nil unless defined?(@chef_version_for_provides)
1381
-
1382
1377
  # deliberately do not go through the accessor here
1383
1378
  @resource_name = name if resource_name.nil?
1384
1379
 
1385
- if @chef_version_for_provides && !options.include?(:chef_version)
1386
- options[:chef_version] = @chef_version_for_provides
1380
+ if chef_version_for_provides && !options.include?(:chef_version)
1381
+ options[:chef_version] = chef_version_for_provides
1387
1382
  end
1388
1383
 
1389
1384
  result = Chef.resource_handler_map.set(name, self, **options, &block)
@@ -29,9 +29,10 @@ class Chef
29
29
  attr_reader :recipe_name
30
30
  attr_reader :enclosing_provider
31
31
  attr_reader :resource
32
+ attr_reader :new_resource
32
33
 
33
34
  # FIXME (ruby-2.1 syntax): most of these are mandatory
34
- def initialize(type: nil, name: nil, created_at: nil, params: nil, run_context: nil, cookbook_name: nil, recipe_name: nil, enclosing_provider: nil)
35
+ def initialize(type: nil, name: nil, created_at: nil, params: nil, run_context: nil, cookbook_name: nil, recipe_name: nil, enclosing_provider: nil, new_resource: nil)
35
36
  @type = type
36
37
  @name = name
37
38
  @created_at = created_at
@@ -40,6 +41,7 @@ class Chef
40
41
  @cookbook_name = cookbook_name
41
42
  @recipe_name = recipe_name
42
43
  @enclosing_provider = enclosing_provider
44
+ @new_resource = new_resource
43
45
  end
44
46
 
45
47
  def build(&block)
@@ -64,7 +66,11 @@ class Chef
64
66
  if block_given?
65
67
  resource.resource_initializing = true
66
68
  begin
67
- resource.instance_eval(&block)
69
+ if new_resource.nil?
70
+ resource.instance_exec(&block)
71
+ else
72
+ resource.instance_exec(new_resource, &block)
73
+ end
68
74
  ensure
69
75
  resource.resource_initializing = false
70
76
  end
@@ -23,6 +23,11 @@ require_relative "node"
23
23
  require_relative "resources"
24
24
  require_relative "json_compat"
25
25
 
26
+ # We need to require providers so that we can resolve
27
+ # action documentation that may have been defined on the providers
28
+ # instead of the resources.
29
+ require_relative "providers"
30
+
26
31
  class Chef
27
32
  module ResourceInspector
28
33
  def self.get_default(default)
@@ -39,11 +44,10 @@ class Chef
39
44
  def self.extract_resource(resource, complete = false)
40
45
  data = {}
41
46
  data[:description] = resource.description
42
- # data[:deprecated] = resource.deprecated || false
43
47
  data[:default_action] = resource.default_action
44
48
  data[:actions] = {}
45
49
  resource.allowed_actions.each do |action|
46
- data[:actions][action] = resource.action_description(action)
50
+ data[:actions][action] = resource.new(resource.to_s, nil).action_description(action)
47
51
  end
48
52
 
49
53
  data[:examples] = resource.examples
@@ -135,7 +135,6 @@ class Chef
135
135
 
136
136
  def action_collection_registration(action_collection)
137
137
  @action_collection = action_collection
138
- action_collection.register(self) if reporting_enabled?
139
138
  end
140
139
 
141
140
  def post_reporting_data
@@ -58,6 +58,14 @@ require_relative "resource/ips_package"
58
58
  require_relative "resource/gem_package"
59
59
  require_relative "resource/scm/git"
60
60
  require_relative "resource/group"
61
+ require_relative "resource/habitat/habitat_package"
62
+ require_relative "resource/habitat/habitat_sup"
63
+ require_relative "resource/habitat/habitat_sup_systemd"
64
+ require_relative "resource/habitat/habitat_sup_windows"
65
+ require_relative "resource/habitat_config"
66
+ require_relative "resource/habitat_install"
67
+ require_relative "resource/habitat_service"
68
+ require_relative "resource/habitat_user_toml"
61
69
  require_relative "resource/http_request"
62
70
  require_relative "resource/hostname"
63
71
  require_relative "resource/homebrew_cask"
@@ -65,6 +73,7 @@ require_relative "resource/homebrew_package"
65
73
  require_relative "resource/homebrew_tap"
66
74
  require_relative "resource/homebrew_update"
67
75
  require_relative "resource/ifconfig"
76
+ require_relative "resource/inspec_waiver_file_entry"
68
77
  require_relative "resource/kernel_module"
69
78
  require_relative "resource/ksh"
70
79
  require_relative "resource/launchd"
@@ -147,6 +156,8 @@ require_relative "resource/windows_ad_join"
147
156
  require_relative "resource/windows_audit_policy"
148
157
  require_relative "resource/windows_auto_run"
149
158
  require_relative "resource/windows_certificate"
159
+ require_relative "resource/windows_defender"
160
+ require_relative "resource/windows_defender_exclusion"
150
161
  require_relative "resource/windows_dfs_folder"
151
162
  require_relative "resource/windows_dfs_namespace"
152
163
  require_relative "resource/windows_dfs_server"
@@ -166,7 +177,8 @@ require_relative "resource/windows_share"
166
177
  require_relative "resource/windows_shortcut"
167
178
  require_relative "resource/windows_task"
168
179
  require_relative "resource/windows_uac"
180
+ require_relative "resource/windows_update_settings"
169
181
  require_relative "resource/windows_workgroup"
170
182
  require_relative "resource/timezone"
171
183
  require_relative "resource/windows_user_privilege"
172
- require_relative "resource/windows_security_policy"
184
+ require_relative "resource/windows_security_policy"
data/lib/chef/run_lock.rb CHANGED
@@ -173,7 +173,7 @@ class Chef
173
173
  # Mutex name is case-sensitive contrary to other things in
174
174
  # windows. "\" is the only invalid character.
175
175
  def acquire_win32_mutex
176
- @mutex = Chef::ReservedNames::Win32::Mutex.new("Global\\#{runlock_file.tr('\\', "/").downcase}")
176
+ @mutex = Chef::ReservedNames::Win32::Mutex.new("Global\\#{runlock_file.tr("\\", "/").downcase}")
177
177
  mutex.test
178
178
  end
179
179
 
data/lib/chef/runner.rb CHANGED
@@ -70,7 +70,7 @@ class Chef
70
70
  end
71
71
  end
72
72
 
73
- # Actually run the action for releases
73
+ # Run the action on the resource.
74
74
  resource.run_action(action, notification_type, notifying_resource)
75
75
 
76
76
  # Execute any immediate and queue up any delayed notifications