summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r--lib/puppet/parser/functions/ip_to_erl_format.rb31
-rw-r--r--lib/puppet/parser/functions/noop_resource.rb53
2 files changed, 84 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/ip_to_erl_format.rb b/lib/puppet/parser/functions/ip_to_erl_format.rb
new file mode 100644
index 0000000..4c066b9
--- /dev/null
+++ b/lib/puppet/parser/functions/ip_to_erl_format.rb
@@ -0,0 +1,31 @@
+require 'ipaddr'
+
+# Custom function to convert an IP4/6 address from a string to the
+# erlang inet kernel format.
+# For example from "172.17.0.16" to {172,17,0,16}
+# See http://erlang.org/doc/man/kernel_app.html and http://erlang.org/doc/man/inet.html
+# for more information.
+module Puppet::Parser::Functions
+ newfunction(:ip_to_erl_format, :type => :rvalue, :doc => "Convert an IP address to the erlang inet format.") do |arg|
+ if arg[0].class != String
+ raise Puppet::ParseError, "Syntax error: #{arg[0]} must be a String"
+ end
+ ip = IPAddr.new arg[0]
+ output = '{'
+ if ip.ipv6?
+ split_char = ':'
+ base = 16
+ else
+ split_char = '.'
+ base = 10
+ end
+ # to_string() prints the canonicalized form
+ ip.to_string().split(split_char).each {
+ |x| output += x.to_i(base).to_s + ','
+ }
+ # Remove the last spurious comma
+ output = output.chomp(',')
+ output += '}'
+ return output
+ end
+end
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