Browse Source

COOK-1673: catch up with Chef::Platform API changes in Chef 10.16.

provider_for_resource grew an extra argument, which was mandatory in 10.14.[02] and then optional again from 10.14.4 (see CHEF-3405).
An explicit version check seems the cleanest option.
Andrea Campi 11 years ago
parent
commit
6b7aba3db2
2 changed files with 12 additions and 2 deletions
  1. 6 1
      libraries/default.rb
  2. 6 1
      providers/default.rb

+ 6 - 1
libraries/default.rb

@@ -135,7 +135,12 @@ class Chef
 
       def deploy_provider
         @deploy_provider ||= begin
-          deploy_provider = Chef::Platform.provider_for_resource(@deploy_resource)
+          version = Chef::Version.new(Chef::VERSION)
+          deploy_provider = if version.major > 10 || version.minor >= 14
+            Chef::Platform.provider_for_resource(@deploy_resource, :nothing)
+          else
+            Chef::Platform.provider_for_resource(@deploy_resource)
+          end
           deploy_provider.load_current_resource
           deploy_provider
         end

+ 6 - 1
providers/default.rb

@@ -140,7 +140,12 @@ def run_deploy(force = false)
       ([new_resource]+new_resource.sub_resources).each do |res|
         cmd = res.restart_command
         if cmd.is_a? Proc
-          provider = Chef::Platform.provider_for_resource(res)
+          version = Chef::Version.new(Chef::VERSION)
+          provider = if version.major > 10 || version.minor >= 14
+            Chef::Platform.provider_for_resource(res, :nothing)
+          else
+            Chef::Platform.provider_for_resource(res)
+          end
           provider.load_current_resource
           provider.instance_eval(&cmd)
         elsif cmd && !cmd.empty?