summaryrefslogtreecommitdiff
path: root/lib/chef
diff options
context:
space:
mode:
authorThom May <thom@chef.io>2016-04-04 16:35:28 -0700
committerThom May <thom@chef.io>2016-04-04 16:42:50 -0700
commitfb7ad1505d0257a10a4dcc984fbb898d02e9754d (patch)
tree77756de0187b779cbbbf4fad2a84eb5de9a86936 /lib/chef
parent90cf8d0a1c64bea5c06bf1957c8e84ebdbf66dd2 (diff)
downloadchef-tm/provider_no_op.tar.gz
Add a NoOp providertm/provider_no_op
This allows one to have a resource which is really only appropriate for one platform, but available everywhere. Then you simply allow noop to provide the resource everywhere besides where it's supposed to be.
Diffstat (limited to 'lib/chef')
-rw-r--r--lib/chef/provider/noop.rb37
-rw-r--r--lib/chef/providers.rb1
2 files changed, 38 insertions, 0 deletions
diff --git a/lib/chef/provider/noop.rb b/lib/chef/provider/noop.rb
new file mode 100644
index 0000000000..207bf7dedb
--- /dev/null
+++ b/lib/chef/provider/noop.rb
@@ -0,0 +1,37 @@
+#
+# Author:: Thom May (<thom@chef.io>)
+# Copyright:: Copyright (c) 2016 Chef Software, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+class Chef
+ class Provider
+ class Noop < Chef::Provider
+ def load_current_resource; end
+
+ def respond_to_missing?(method_sym, include_private = false)
+ method_sym.to_s.start_with?("action_") || super
+ end
+
+ def method_missing(method_sym, *arguments, &block)
+ if method_sym.to_s =~ /^action_/
+ Chef::Log.debug("NoOp-ing for #{method_sym}")
+ else
+ super
+ end
+ end
+ end
+ end
+end
diff --git a/lib/chef/providers.rb b/lib/chef/providers.rb
index 6fd67e0068..80fadfc8c2 100644
--- a/lib/chef/providers.rb
+++ b/lib/chef/providers.rb
@@ -41,6 +41,7 @@ require "chef/provider/log"
require "chef/provider/ohai"
require "chef/provider/mdadm"
require "chef/provider/mount"
+require "chef/provider/noop"
require "chef/provider/package"
require "chef/provider/powershell_script"
require "chef/provider/osx_profile"