-
Notifications
You must be signed in to change notification settings - Fork 794
/
Copy pathmysql_password.rb
44 lines (42 loc) · 1.52 KB
/
mysql_password.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# This is an autogenerated function, ported from the original legacy version.
# It /should work/ as is, but will not have all the benefits of the modern
# function API. You should see the function docs to learn how to add function
# signatures for type safety and to document this function using puppet-strings.
#
# https://puppet.com/docs/puppet/latest/custom_functions_ruby.html
#
# ---- original file header ----
require 'digest/sha1'
# ---- original file header ----
#
# @summary
# @summary
# Hash a string as mysql's "PASSWORD()" function would do it
#
# @param [String] password Plain text password.
#
# @return [String] the mysql password hash from the clear text password.
#
#
Puppet::Functions.create_function(:'mysql::mysql_password') do
# @param args
# The original array of arguments. Port this to individually managed params
# to get the full benefit of the modern function API.
#
# @return [Data type]
# Describe what the function returns here
#
dispatch :default_impl do
# Call the method named 'default_impl' when this is matched
# Port this to match individual params for better type safety
repeated_param 'Any', :args
end
def default_impl(*args)
if args.size != 1
raise Puppet::ParseError, _('mysql_password(): Wrong number of arguments given (%{args_length} for 1)') % { args_length: args.length }
end
return '' if args[0].empty?
return args[0] if args[0] =~ %r{\*[A-F0-9]{40}$}
'*' + Digest::SHA1.hexdigest(Digest::SHA1.digest(args[0])).upcase
end
end