aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2017-01-20 20:14:32 -0500
committerDan Prince <dprince@redhat.com>2017-01-20 20:14:32 -0500
commita3de7c09427e7ff97a85a5665ac98d43d46a4fb4 (patch)
tree671e2bb123cddddb84578e978793bc7faeeeaef3
parentd16712e040d1f2701df44ce1ae0a1ed634889f0d (diff)
Add a noop_resource function
A function to create noop providers (set as the default) for the named resource. This works alongside of 'puppet apply --tags' to disable some custom resource types that still attempt to run commands during prefetch, etc. Change-Id: Icabdb30369c8ca15e77d169dc441bee8cfd3631f
-rw-r--r--lib/puppet/parser/functions/noop_resource.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/noop_resource.rb b/lib/puppet/parser/functions/noop_resource.rb
new file mode 100644
index 0000000..921eb5d
--- /dev/null
+++ b/lib/puppet/parser/functions/noop_resource.rb
@@ -0,0 +1,53 @@
+# Copyright 2017 Red Hat, Inc.
+# All Rights Reserved.
+#
+# 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.
+#
+# Author: Dan Prince <dprince@redhat.com>
+#
+# A function to create noop providers (set as the default) for the named
+# resource. This works alongside of 'puppet apply --tags' to disable
+# some custom resource types that still attempt to run commands during
+# prefetch, etc.
+class Puppet::Provider::Noop < Puppet::Provider
+
+ def create
+ true
+ end
+
+ def destroy
+ true
+ end
+
+ def exists?
+ false
+ end
+
+ # some puppet-keystone resources require this
+ def self.resource_to_name(domain, name, check_for_default = true)
+ return name
+ end
+
+end
+
+module Puppet::Parser::Functions
+ newfunction(:noop_resource, :type => :rvalue, :doc => "Create a default noop provider for the specified resource.") do |arg|
+ if arg[0].class == String
+ Puppet::Type.type(arg[0].downcase.to_sym).provide(:noop, :parent => Puppet::Provider::Noop) do
+ defaultfor :osfamily => :redhat
+ end
+ else
+ end
+ return true
+ end
+end