chef 15.4.45-universal-mingw32 → 15.5.9-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -3
  3. data/Rakefile +5 -3
  4. data/chef.gemspec +2 -1
  5. data/ext/win32-eventlog/Rakefile +9 -1
  6. data/ext/win32-eventlog/{chef-log.man → chef-log.man.erb} +4 -4
  7. data/lib/chef/application.rb +2 -2
  8. data/lib/chef/application/client.rb +1 -1
  9. data/lib/chef/application/knife.rb +1 -0
  10. data/lib/chef/application/solo.rb +1 -1
  11. data/lib/chef/chef_class.rb +1 -6
  12. data/lib/chef/chef_fs.rb +1 -1
  13. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  14. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +2 -2
  15. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +2 -2
  16. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +7 -1
  18. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +4 -3
  19. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
  20. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +1 -1
  21. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -3
  22. data/lib/chef/chef_fs/knife.rb +1 -1
  23. data/lib/chef/chef_fs/path_utils.rb +2 -2
  24. data/lib/chef/client.rb +4 -5
  25. data/lib/chef/config.rb +3 -2
  26. data/lib/chef/cookbook/chefignore.rb +16 -11
  27. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  28. data/lib/chef/cookbook/syntax_check.rb +5 -3
  29. data/lib/chef/cookbook_loader.rb +3 -3
  30. data/lib/chef/cookbook_uploader.rb +1 -1
  31. data/lib/chef/data_collector.rb +2 -2
  32. data/lib/chef/data_collector/run_end_message.rb +1 -0
  33. data/lib/chef/deprecated.rb +4 -0
  34. data/lib/chef/dsl/core.rb +1 -1
  35. data/lib/chef/dsl/platform_introspection.rb +9 -18
  36. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  37. data/lib/chef/file_content_management/deploy.rb +3 -3
  38. data/lib/chef/file_content_management/deploy/mv_windows.rb +2 -2
  39. data/lib/chef/file_content_management/tempfile.rb +1 -1
  40. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  41. data/lib/chef/http.rb +1 -1
  42. data/lib/chef/http/socketless_chef_zero_client.rb +1 -1
  43. data/lib/chef/knife.rb +4 -3
  44. data/lib/chef/knife/config_get.rb +2 -1
  45. data/lib/chef/knife/configure.rb +1 -1
  46. data/lib/chef/knife/cookbook_metadata_from_file.rb +6 -0
  47. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  48. data/lib/chef/knife/core/status_presenter.rb +1 -1
  49. data/lib/chef/knife/ssh.rb +6 -0
  50. data/lib/chef/local_mode.rb +1 -1
  51. data/lib/chef/mash.rb +21 -232
  52. data/lib/chef/mixin/file_class.rb +2 -2
  53. data/lib/chef/mixin/lazy_module_include.rb +1 -1
  54. data/lib/chef/mixin/path_sanity.rb +3 -39
  55. data/lib/chef/mixin/securable.rb +1 -1
  56. data/lib/chef/mixin/shell_out.rb +4 -5
  57. data/lib/chef/mixin/template.rb +1 -1
  58. data/lib/chef/mixin/user_context.rb +3 -3
  59. data/lib/chef/mixin/which.rb +10 -38
  60. data/lib/chef/mixin/windows_architecture_helper.rb +6 -6
  61. data/lib/chef/mixin/windows_env_helper.rb +5 -5
  62. data/lib/chef/node/attribute.rb +2 -2
  63. data/lib/chef/node_map.rb +17 -4
  64. data/lib/chef/platform/query_helpers.rb +4 -2
  65. data/lib/chef/platform/rebooter.rb +1 -1
  66. data/lib/chef/platform/service_helpers.rb +14 -85
  67. data/lib/chef/provider.rb +2 -0
  68. data/lib/chef/provider/file.rb +2 -2
  69. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  70. data/lib/chef/provider/link.rb +3 -3
  71. data/lib/chef/provider/mount/solaris.rb +1 -1
  72. data/lib/chef/provider/package/yum.rb +1 -1
  73. data/lib/chef/provider/registry_key.rb +1 -1
  74. data/lib/chef/provider/remote_directory.rb +3 -3
  75. data/lib/chef/provider/remote_file/fetcher.rb +2 -2
  76. data/lib/chef/provider/remote_file/local_file.rb +1 -1
  77. data/lib/chef/provider/script.rb +3 -3
  78. data/lib/chef/provider/service.rb +5 -2
  79. data/lib/chef/provider/service/arch.rb +1 -1
  80. data/lib/chef/provider/service/debian.rb +4 -4
  81. data/lib/chef/provider/service/init.rb +1 -1
  82. data/lib/chef/provider/service/insserv.rb +4 -4
  83. data/lib/chef/provider/service/invokercd.rb +4 -4
  84. data/lib/chef/provider/service/redhat.rb +4 -4
  85. data/lib/chef/provider/service/systemd.rb +19 -3
  86. data/lib/chef/provider/service/upstart.rb +3 -3
  87. data/lib/chef/provider/subversion.rb +1 -1
  88. data/lib/chef/provider/systemd_unit.rb +26 -2
  89. data/lib/chef/provider/windows_path.rb +3 -3
  90. data/lib/chef/provider/windows_task.rb +4 -4
  91. data/lib/chef/resource.rb +1 -0
  92. data/lib/chef/resource/bash.rb +2 -0
  93. data/lib/chef/resource/batch.rb +2 -0
  94. data/lib/chef/resource/breakpoint.rb +3 -1
  95. data/lib/chef/resource/build_essential.rb +3 -3
  96. data/lib/chef/resource/chef_sleep.rb +70 -0
  97. data/lib/chef/resource/cookbook_file.rb +2 -1
  98. data/lib/chef/resource/csh.rb +2 -0
  99. data/lib/chef/resource/directory.rb +2 -0
  100. data/lib/chef/resource/dmg_package.rb +1 -1
  101. data/lib/chef/resource/dnf_package.rb +1 -1
  102. data/lib/chef/resource/execute.rb +2 -0
  103. data/lib/chef/resource/file.rb +2 -1
  104. data/lib/chef/resource/git.rb +2 -0
  105. data/lib/chef/resource/group.rb +1 -1
  106. data/lib/chef/resource/homebrew_package.rb +1 -1
  107. data/lib/chef/resource/http_request.rb +2 -0
  108. data/lib/chef/resource/ifconfig.rb +3 -1
  109. data/lib/chef/resource/ksh.rb +2 -0
  110. data/lib/chef/resource/link.rb +4 -2
  111. data/lib/chef/resource/locale.rb +1 -1
  112. data/lib/chef/resource/log.rb +2 -0
  113. data/lib/chef/resource/ohai.rb +2 -0
  114. data/lib/chef/resource/perl.rb +2 -0
  115. data/lib/chef/resource/python.rb +2 -0
  116. data/lib/chef/resource/reboot.rb +2 -0
  117. data/lib/chef/resource/registry_key.rb +2 -0
  118. data/lib/chef/resource/remote_directory.rb +3 -2
  119. data/lib/chef/resource/remote_file.rb +1 -0
  120. data/lib/chef/resource/ruby.rb +2 -0
  121. data/lib/chef/resource/ruby_block.rb +2 -0
  122. data/lib/chef/resource/scm.rb +2 -0
  123. data/lib/chef/resource/script.rb +2 -0
  124. data/lib/chef/resource/service.rb +9 -1
  125. data/lib/chef/resource/solaris_package.rb +1 -1
  126. data/lib/chef/resource/subversion.rb +2 -0
  127. data/lib/chef/resource/sudo.rb +1 -1
  128. data/lib/chef/resource/systemd_unit.rb +1 -0
  129. data/lib/chef/resource/template.rb +2 -0
  130. data/lib/chef/resource/user.rb +2 -0
  131. data/lib/chef/resource/user/aix_user.rb +2 -0
  132. data/lib/chef/resource/user/linux_user.rb +2 -0
  133. data/lib/chef/resource/user/pw_user.rb +2 -0
  134. data/lib/chef/resource/user/solaris_user.rb +2 -0
  135. data/lib/chef/resource/user/windows_user.rb +2 -0
  136. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  137. data/lib/chef/resource/windows_ad_join.rb +1 -1
  138. data/lib/chef/resource/windows_env.rb +1 -1
  139. data/lib/chef/resource/windows_feature.rb +2 -2
  140. data/lib/chef/resource/windows_feature_powershell.rb +1 -1
  141. data/lib/chef/resource/windows_firewall_rule.rb +11 -6
  142. data/lib/chef/resource/windows_script.rb +3 -1
  143. data/lib/chef/resource/yum_package.rb +1 -1
  144. data/lib/chef/resource_reporter.rb +1 -1
  145. data/lib/chef/resources.rb +1 -0
  146. data/lib/chef/run_context.rb +1 -1
  147. data/lib/chef/run_lock.rb +5 -5
  148. data/lib/chef/search/query.rb +0 -3
  149. data/lib/chef/train_transport.rb +3 -1
  150. data/lib/chef/util/powershell/ps_credential.rb +2 -2
  151. data/lib/chef/util/selinux.rb +1 -1
  152. data/lib/chef/util/windows/logon_session.rb +2 -2
  153. data/lib/chef/version.rb +1 -1
  154. data/lib/chef/win32/eventlog.rb +2 -2
  155. data/spec/data/cookbooks/starter/chefignore +8 -0
  156. data/spec/data/cookbooks/starter/files/sample.txt +1 -0
  157. data/spec/data/cookbooks/starter/metadata.rb +2 -0
  158. data/spec/data/cookbooks/starter/recipes/default.rb +4 -0
  159. data/spec/functional/event_loggers/windows_eventlog_spec.rb +1 -1
  160. data/spec/functional/mixin/user_context_spec.rb +2 -2
  161. data/spec/functional/rebooter_spec.rb +1 -1
  162. data/spec/functional/resource/cookbook_file_spec.rb +2 -2
  163. data/spec/functional/resource/template_spec.rb +1 -1
  164. data/spec/functional/version_spec.rb +1 -1
  165. data/spec/functional/win32/crypto_spec.rb +1 -1
  166. data/spec/functional/win32/security_spec.rb +1 -1
  167. data/spec/functional/win32/service_manager_spec.rb +1 -1
  168. data/spec/functional/win32/sid_spec.rb +2 -2
  169. data/spec/functional/win32/version_info_spec.rb +1 -1
  170. data/spec/functional/win32/versions_spec.rb +1 -1
  171. data/spec/integration/knife/config_get_profile_spec.rb +2 -2
  172. data/spec/integration/knife/config_get_spec.rb +9 -2
  173. data/spec/integration/knife/config_list_profiles_spec.rb +2 -2
  174. data/spec/integration/knife/config_use_profile_spec.rb +2 -2
  175. data/spec/integration/knife/list_spec.rb +2 -2
  176. data/spec/integration/solo/solo_spec.rb +1 -1
  177. data/spec/support/matchers/leak.rb +1 -1
  178. data/spec/support/mock/platform.rb +1 -1
  179. data/spec/support/platform_helpers.rb +2 -0
  180. data/spec/support/shared/integration/integration_helper.rb +1 -1
  181. data/spec/support/shared/integration/knife_support.rb +1 -1
  182. data/spec/support/shared/unit/provider/file.rb +4 -4
  183. data/spec/unit/application/client_spec.rb +2 -2
  184. data/spec/unit/application/knife_spec.rb +17 -0
  185. data/spec/unit/application_spec.rb +1 -1
  186. data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
  187. data/spec/unit/chef_fs/path_util_spec.rb +3 -3
  188. data/spec/unit/client_spec.rb +2 -2
  189. data/spec/unit/cookbook/chefignore_spec.rb +31 -11
  190. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +1 -1
  191. data/spec/unit/cookbook/syntax_check_spec.rb +2 -2
  192. data/spec/unit/cookbook_loader_spec.rb +2 -2
  193. data/spec/unit/cookbook_uploader_spec.rb +6 -1
  194. data/spec/unit/data_bag_spec.rb +2 -2
  195. data/spec/unit/data_collector_spec.rb +7 -0
  196. data/spec/unit/dsl/platform_introspection_spec.rb +31 -1
  197. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +1 -1
  198. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +1 -1
  199. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +7 -0
  200. data/spec/unit/knife/cookbook_show_spec.rb +1 -1
  201. data/spec/unit/knife/core/gem_glob_loader_spec.rb +1 -1
  202. data/spec/unit/knife/core/hashed_command_loader_spec.rb +1 -1
  203. data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
  204. data/spec/unit/knife/core/ui_spec.rb +2 -2
  205. data/spec/unit/knife/data_bag_from_file_spec.rb +2 -2
  206. data/spec/unit/knife/environment_from_file_spec.rb +2 -2
  207. data/spec/unit/knife/ssh_spec.rb +27 -17
  208. data/spec/unit/knife/status_spec.rb +1 -1
  209. data/spec/unit/knife/supermarket_install_spec.rb +1 -1
  210. data/spec/unit/mixin/path_sanity_spec.rb +3 -3
  211. data/spec/unit/mixin/shell_out_spec.rb +2 -3
  212. data/spec/unit/mixin/template_spec.rb +4 -4
  213. data/spec/unit/mixin/user_context_spec.rb +3 -3
  214. data/spec/unit/node_map_spec.rb +12 -12
  215. data/spec/unit/platform/query_helpers_spec.rb +9 -9
  216. data/spec/unit/provider/execute_spec.rb +1 -1
  217. data/spec/unit/provider/link_spec.rb +5 -5
  218. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  219. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  220. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  221. data/spec/unit/provider/package/windows_spec.rb +2 -2
  222. data/spec/unit/provider/remote_file/fetcher_spec.rb +2 -2
  223. data/spec/unit/provider/remote_file/local_file_spec.rb +1 -1
  224. data/spec/unit/provider/remote_file/network_file_spec.rb +1 -1
  225. data/spec/unit/provider/script_spec.rb +2 -2
  226. data/spec/unit/provider/service/systemd_service_spec.rb +26 -2
  227. data/spec/unit/provider/subversion_spec.rb +3 -3
  228. data/spec/unit/provider/systemd_unit_spec.rb +53 -4
  229. data/spec/unit/provider/user/dscl_spec.rb +1 -1
  230. data/spec/unit/provider_resolver_spec.rb +41 -61
  231. data/spec/unit/resource/chef_sleep_spec.rb +30 -0
  232. data/spec/unit/resource/cookbook_file_spec.rb +3 -3
  233. data/spec/unit/resource/remote_file_spec.rb +3 -3
  234. data/spec/unit/resource/windows_firewall_rule_spec.rb +69 -12
  235. data/spec/unit/role_spec.rb +2 -2
  236. data/spec/unit/shell_spec.rb +1 -1
  237. data/spec/unit/util/selinux_spec.rb +2 -2
  238. data/spec/unit/win32/error_spec.rb +1 -1
  239. data/spec/unit/win32/link_spec.rb +1 -1
  240. data/spec/unit/win32/security_spec.rb +1 -1
  241. data/spec/unit/windows_service_spec.rb +1 -1
  242. data/tasks/docs.rb +10 -2
  243. data/tasks/rspec.rb +8 -6
  244. metadata +33 -9
  245. data/lib/chef/mixin/train_helpers.rb +0 -60
  246. data/spec/unit/mash_spec.rb +0 -51
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@hjksolutions.com>)
3
3
  # Author:: Davide Cavalca (<dcavalca@fb.com>)
4
- # Copyright:: Copyright 2008-2017, Chef Software Inc.
4
+ # Copyright:: Copyright 2008-2019, Chef Software Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,10 +18,13 @@
18
18
  #
19
19
 
20
20
  require_relative "../provider"
21
+ require "chef-utils" unless defined?(ChefUtils::CANARY)
21
22
 
22
23
  class Chef
23
24
  class Provider
24
25
  class Service < Chef::Provider
26
+ include ChefUtils::DSL::Service
27
+ extend ChefUtils::DSL::Service
25
28
 
26
29
  def supports
27
30
  @supports ||= new_resource.supports.dup
@@ -245,7 +248,7 @@ class Chef
245
248
  Chef.set_provider_priority_array :service, [ Systemd, Arch ], platform_family: "arch"
246
249
  Chef.set_provider_priority_array :service, [ Systemd, Gentoo ], platform_family: "gentoo"
247
250
  Chef.set_provider_priority_array :service, [ Systemd, Upstart, Insserv, Debian, Invokercd ], platform_family: "debian"
248
- Chef.set_provider_priority_array :service, [ Systemd, Insserv, Redhat ], platform_family: %w{rhel fedora suse amazon}
251
+ Chef.set_provider_priority_array :service, [ Systemd, Insserv, Redhat ], platform_family: "rpm_based"
249
252
  end
250
253
  end
251
254
  end
@@ -23,7 +23,7 @@ class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
23
23
  provides :service, platform_family: "arch"
24
24
 
25
25
  def self.supports?(resource, action)
26
- Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:etc_rcd)
26
+ service_script_exist?(:etc_rcd, resource.service_name)
27
27
  end
28
28
 
29
29
  def initialize(new_resource, run_context)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@hjksolutions.com>)
3
- # Copyright:: Copyright 2008-2017, Chef Software Inc.
3
+ # Copyright:: Copyright 2008-2018, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,15 +22,15 @@ class Chef
22
22
  class Provider
23
23
  class Service
24
24
  class Debian < Chef::Provider::Service::Init
25
- provides :service, platform_family: "debian" do |node|
26
- Chef::Platform::ServiceHelpers.service_resource_providers.include?(:debian)
25
+ provides :service, platform_family: "debian" do
26
+ debianrcd?
27
27
  end
28
28
 
29
29
  UPDATE_RC_D_ENABLED_MATCHES = %r{/rc[\dS].d/S|not installed}i.freeze
30
30
  UPDATE_RC_D_PRIORITIES = %r{/rc([\dS]).d/([SK])(\d\d)}i.freeze
31
31
 
32
32
  def self.supports?(resource, action)
33
- Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:initd)
33
+ service_script_exist?(:initd, resource.service_name)
34
34
  end
35
35
 
36
36
  def load_current_resource
@@ -29,7 +29,7 @@ class Chef
29
29
  provides :service, os: "!windows"
30
30
 
31
31
  def self.supports?(resource, action)
32
- Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:initd)
32
+ service_script_exist?(:initd, resource.service_name)
33
33
  end
34
34
 
35
35
  def initialize(new_resource, run_context)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Bryan McLellan <btm@loftninjas.org>
3
- # Copyright:: Copyright 2011-2017, Chef Software Inc.
3
+ # Copyright:: Copyright 2011-2018, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,12 +24,12 @@ class Chef
24
24
  class Service
25
25
  class Insserv < Chef::Provider::Service::Init
26
26
 
27
- provides :service, platform_family: %w{debian rhel fedora suse amazon} do |node|
28
- Chef::Platform::ServiceHelpers.service_resource_providers.include?(:insserv)
27
+ provides :service, platform_family: %w{debian rhel fedora suse amazon} do
28
+ insserv?
29
29
  end
30
30
 
31
31
  def self.supports?(resource, action)
32
- Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:initd)
32
+ service_script_exist?(:initd, resource.service_name)
33
33
  end
34
34
 
35
35
  def load_current_resource
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@hjksolutions.com>)
3
- # Copyright:: Copyright 2008-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2008-2018, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,12 +23,12 @@ class Chef
23
23
  class Service
24
24
  class Invokercd < Chef::Provider::Service::Init
25
25
 
26
- provides :service, platform_family: "debian", override: true do |node|
27
- Chef::Platform::ServiceHelpers.service_resource_providers.include?(:invokercd)
26
+ provides :service, platform_family: "debian", override: true do
27
+ invokercd?
28
28
  end
29
29
 
30
30
  def self.supports?(resource, action)
31
- Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:initd)
31
+ service_script_exist?(:initd, resource.service_name)
32
32
  end
33
33
 
34
34
  def initialize(new_resource, run_context)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@hjksolutions.com>)
3
- # Copyright:: Copyright 2008-2017, Chef Software Inc.
3
+ # Copyright:: Copyright 2008-2018, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,15 +28,15 @@ class Chef
28
28
  # @api private
29
29
  attr_accessor :current_run_levels
30
30
 
31
- provides :service, platform_family: %w{rhel fedora suse amazon} do |node|
32
- Chef::Platform::ServiceHelpers.service_resource_providers.include?(:redhat)
31
+ provides :service, platform_family: "rpm_based" do
32
+ redhatrcd?
33
33
  end
34
34
 
35
35
  CHKCONFIG_ON = /\d:on/.freeze
36
36
  CHKCONFIG_MISSING = /No such/.freeze
37
37
 
38
38
  def self.supports?(resource, action)
39
- Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:initd)
39
+ service_script_exist?(:initd, resource.service_name)
40
40
  end
41
41
 
42
42
  def initialize(new_resource, run_context)
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Stephen Haynes (<sh@nomitor.com>)
3
3
  # Author:: Davide Cavalca (<dcavalca@fb.com>)
4
- # Copyright:: Copyright 2011-2018, Chef Software Inc.
4
+ # Copyright:: Copyright 2011-2019, Chef Software Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,13 +27,13 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple
27
27
  include Chef::Mixin::Which
28
28
 
29
29
  provides :service, os: "linux", target_mode: true do |node|
30
- Chef::Platform::ServiceHelpers.service_resource_providers.include?(:systemd)
30
+ systemd?
31
31
  end
32
32
 
33
33
  attr_accessor :status_check_success
34
34
 
35
35
  def self.supports?(resource, action)
36
- Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:systemd)
36
+ service_script_exist?(:systemd, resource.service_name)
37
37
  end
38
38
 
39
39
  def load_current_resource
@@ -51,6 +51,7 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple
51
51
  current_resource.running(false)
52
52
  current_resource.enabled(false)
53
53
  current_resource.masked(false)
54
+ current_resource.indirect(false)
54
55
  end
55
56
  else
56
57
  current_resource.running(is_active?)
@@ -58,6 +59,7 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple
58
59
 
59
60
  current_resource.enabled(is_enabled?)
60
61
  current_resource.masked(is_masked?)
62
+ current_resource.indirect(is_indirect?)
61
63
  current_resource
62
64
  end
63
65
 
@@ -143,11 +145,19 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple
143
145
  end
144
146
 
145
147
  def enable_service
148
+ if current_resource.masked || current_resource.indirect
149
+ logger.trace("#{new_resource} cannot be enabled: it is masked or indirect")
150
+ return
151
+ end
146
152
  options, args = get_systemctl_options_args
147
153
  shell_out!("#{systemctl_path} #{args} enable #{Shellwords.escape(new_resource.service_name)}", **options)
148
154
  end
149
155
 
150
156
  def disable_service
157
+ if current_resource.masked || current_resource.indirect
158
+ logger.trace("#{new_resource} cannot be disabled: it is masked or indirect")
159
+ return
160
+ end
151
161
  options, args = get_systemctl_options_args
152
162
  shell_out!("#{systemctl_path} #{args} disable #{Shellwords.escape(new_resource.service_name)}", **options)
153
163
  end
@@ -172,6 +182,12 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple
172
182
  shell_out("#{systemctl_path} #{args} is-enabled #{Shellwords.escape(new_resource.service_name)} --quiet", **options).exitstatus == 0
173
183
  end
174
184
 
185
+ def is_indirect?
186
+ options, args = get_systemctl_options_args
187
+ s = shell_out("#{systemctl_path} #{args} is-enabled #{Shellwords.escape(new_resource.service_name)}", **options)
188
+ s.stdout.include?("indirect")
189
+ end
190
+
175
191
  def is_masked?
176
192
  options, args = get_systemctl_options_args
177
193
  s = shell_out("#{systemctl_path} #{args} is-enabled #{Shellwords.escape(new_resource.service_name)}", **options)
@@ -28,15 +28,15 @@ class Chef
28
28
  # to maintain a local state of service across restart's internal calls
29
29
  attr_accessor :upstart_service_running
30
30
 
31
- provides :service, platform_family: "debian", override: true do |node|
32
- Chef::Platform::ServiceHelpers.service_resource_providers.include?(:upstart)
31
+ provides :service, platform_family: "debian", override: true do
32
+ upstart?
33
33
  end
34
34
 
35
35
  UPSTART_STATE_FORMAT = %r{\S+ \(?(start|stop)?\)? ?[/ ](\w+)}.freeze
36
36
 
37
37
  # Returns true if the configs for the service name has upstart variable
38
38
  def self.supports?(resource, action)
39
- Chef::Platform::ServiceHelpers.config_for_service(resource.service_name).include?(:upstart)
39
+ service_script_exist?(:upstart, resource.service_name)
40
40
  end
41
41
 
42
42
  # Upstart does more than start or stop a service, creating multiple 'states' [1] that a service can be in.
@@ -215,7 +215,7 @@ class Chef
215
215
 
216
216
  def svn_binary
217
217
  new_resource.svn_binary ||
218
- (Chef::Platform.windows? ? "svn.exe" : "svn")
218
+ (ChefUtils.windows? ? "svn.exe" : "svn")
219
219
  end
220
220
 
221
221
  def assert_target_directory_valid!
@@ -42,6 +42,7 @@ class Chef
42
42
  current_resource.active(active?)
43
43
  current_resource.masked(masked?)
44
44
  current_resource.static(static?)
45
+ current_resource.indirect(indirect?)
45
46
  current_resource.triggers_reload(new_resource.triggers_reload)
46
47
 
47
48
  current_resource
@@ -90,10 +91,14 @@ class Chef
90
91
  if current_resource.static
91
92
  logger.trace("#{new_resource.unit_name} is a static unit, enabling is a NOP.")
92
93
  end
94
+ if current_resource.indirect
95
+ logger.trace("#{new_resource.unit_name} is an indirect unit, enabling is a NOP.")
96
+ end
93
97
 
94
- unless current_resource.enabled || current_resource.static
98
+ unless current_resource.enabled || current_resource.static || current_resource.indirect
95
99
  converge_by("enabling unit: #{new_resource.unit_name}") do
96
100
  systemctl_execute!(:enable, new_resource.unit_name)
101
+ logger.info("#{new_resource} enabled")
97
102
  end
98
103
  end
99
104
  end
@@ -103,9 +108,14 @@ class Chef
103
108
  logger.trace("#{new_resource.unit_name} is a static unit, disabling is a NOP.")
104
109
  end
105
110
 
106
- if current_resource.enabled && !current_resource.static
111
+ if current_resource.indirect
112
+ logger.trace("#{new_resource.unit_name} is an indirect unit, enabling is a NOP.")
113
+ end
114
+
115
+ if current_resource.enabled && !current_resource.static && !current_resource.indirect
107
116
  converge_by("disabling unit: #{new_resource.unit_name}") do
108
117
  systemctl_execute!(:disable, new_resource.unit_name)
118
+ logger.info("#{new_resource} disabled")
109
119
  end
110
120
  end
111
121
  end
@@ -113,6 +123,7 @@ class Chef
113
123
  def action_reenable
114
124
  converge_by("reenabling unit: #{new_resource.unit_name}") do
115
125
  systemctl_execute!(:reenable, new_resource.unit_name)
126
+ logger.info("#{new_resource} reenabled")
116
127
  end
117
128
  end
118
129
 
@@ -120,6 +131,7 @@ class Chef
120
131
  unless current_resource.masked
121
132
  converge_by("masking unit: #{new_resource.unit_name}") do
122
133
  systemctl_execute!(:mask, new_resource.unit_name)
134
+ logger.info("#{new_resource} masked")
123
135
  end
124
136
  end
125
137
  end
@@ -128,6 +140,7 @@ class Chef
128
140
  if current_resource.masked
129
141
  converge_by("unmasking unit: #{new_resource.unit_name}") do
130
142
  systemctl_execute!(:unmask, new_resource.unit_name)
143
+ logger.info("#{new_resource} unmasked")
131
144
  end
132
145
  end
133
146
  end
@@ -136,6 +149,7 @@ class Chef
136
149
  unless current_resource.active
137
150
  converge_by("starting unit: #{new_resource.unit_name}") do
138
151
  systemctl_execute!(:start, new_resource.unit_name, default_env: false)
152
+ logger.info("#{new_resource} started")
139
153
  end
140
154
  end
141
155
  end
@@ -144,6 +158,7 @@ class Chef
144
158
  if current_resource.active
145
159
  converge_by("stopping unit: #{new_resource.unit_name}") do
146
160
  systemctl_execute!(:stop, new_resource.unit_name, default_env: false)
161
+ logger.info("#{new_resource} stopped")
147
162
  end
148
163
  end
149
164
  end
@@ -151,6 +166,7 @@ class Chef
151
166
  def action_restart
152
167
  converge_by("restarting unit: #{new_resource.unit_name}") do
153
168
  systemctl_execute!(:restart, new_resource.unit_name, default_env: false)
169
+ logger.info("#{new_resource} restarted")
154
170
  end
155
171
  end
156
172
 
@@ -158,6 +174,7 @@ class Chef
158
174
  if current_resource.active
159
175
  converge_by("reloading unit: #{new_resource.unit_name}") do
160
176
  systemctl_execute!(:reload, new_resource.unit_name, default_env: false)
177
+ logger.info("#{new_resource} reloaded")
161
178
  end
162
179
  else
163
180
  logger.trace("#{new_resource.unit_name} is not active, skipping reload.")
@@ -167,18 +184,21 @@ class Chef
167
184
  def action_try_restart
168
185
  converge_by("try-restarting unit: #{new_resource.unit_name}") do
169
186
  systemctl_execute!("try-restart", new_resource.unit_name, default_env: false)
187
+ logger.info("#{new_resource} try-restarted")
170
188
  end
171
189
  end
172
190
 
173
191
  def action_reload_or_restart
174
192
  converge_by("reload-or-restarting unit: #{new_resource.unit_name}") do
175
193
  systemctl_execute!("reload-or-restart", new_resource.unit_name, default_env: false)
194
+ logger.info("#{new_resource} reload-or-restarted")
176
195
  end
177
196
  end
178
197
 
179
198
  def action_reload_or_try_restart
180
199
  converge_by("reload-or-try-restarting unit: #{new_resource.unit_name}") do
181
200
  systemctl_execute!("reload-or-try-restart", new_resource.unit_name, default_env: false)
201
+ logger.info("#{new_resource} reload-or-try-restarted")
182
202
  end
183
203
  end
184
204
 
@@ -198,6 +218,10 @@ class Chef
198
218
  systemctl_execute("is-enabled", new_resource.unit_name).stdout.include?("static")
199
219
  end
200
220
 
221
+ def indirect?
222
+ systemctl_execute("is-enabled", new_resource.unit_name).stdout.include?("indirect")
223
+ end
224
+
201
225
  private
202
226
 
203
227
  def unit_path
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Nimisha Sharad (<nimisha.sharad@msystechnologies.com>)
3
- # Copyright:: Copyright 2008-2017, Chef Software Inc.
3
+ # Copyright:: Copyright 2008-2019, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,14 +16,14 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require_relative "../mixin/windows_env_helper" if Chef::Platform.windows?
19
+ require_relative "../mixin/windows_env_helper" if ChefUtils.windows?
20
20
  require_relative "../mixin/wide_string"
21
21
  require_relative "../exceptions"
22
22
 
23
23
  class Chef
24
24
  class Provider
25
25
  class WindowsPath < Chef::Provider
26
- include Chef::Mixin::WindowsEnvHelper if Chef::Platform.windows?
26
+ include Chef::Mixin::WindowsEnvHelper if ChefUtils.windows?
27
27
 
28
28
  provides :windows_path
29
29
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Nimisha Sharad (<nimisha.sharad@msystechnologies.com>)
3
- # Copyright:: Copyright 2008-2018, Chef Software Inc.
3
+ # Copyright:: Copyright 2008-2019, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,11 +18,11 @@
18
18
 
19
19
  require_relative "../mixin/shell_out"
20
20
  require "rexml/document" unless defined?(REXML::Document)
21
- require "iso8601" if Chef::Platform.windows?
21
+ require "iso8601" if ChefUtils.windows?
22
22
  require_relative "../mixin/powershell_out"
23
23
  require_relative "../provider"
24
24
  require_relative "../util/path_helper"
25
- require "win32/taskscheduler" if Chef::Platform.windows?
25
+ require "win32/taskscheduler" if ChefUtils.windows?
26
26
 
27
27
  class Chef
28
28
  class Provider
@@ -30,7 +30,7 @@ class Chef
30
30
  include Chef::Mixin::ShellOut
31
31
  include Chef::Mixin::PowershellOut
32
32
 
33
- if Chef::Platform.windows?
33
+ if ChefUtils.windows?
34
34
  include Win32
35
35
 
36
36
  provides :windows_task
@@ -59,6 +59,7 @@ class Chef
59
59
  extend Chef::Mixin::Provides
60
60
 
61
61
  include Chef::DSL::Universal
62
+ extend Chef::DSL::Universal
62
63
 
63
64
  # Bring in `property` and `property_type`
64
65
  include Chef::Mixin::Properties
@@ -22,6 +22,8 @@ require_relative "../provider/script"
22
22
  class Chef
23
23
  class Resource
24
24
  class Bash < Chef::Resource::Script
25
+ unified_mode true
26
+
25
27
  description "Use the bash resource to execute scripts using the Bash interpreter. This resource may also use any of the actions and properties that are available to the execute resource. Commands that are executed with this resource are (by their nature) not idempotent, as they are typically unique to the environment in which they are run. Use not_if and only_if to guard this resource for idempotence."
26
28
 
27
29
  def initialize(name, run_context = nil)