2 File.expand_path('../..', File.dirname(__FILE__)).tap { |dir| $LOAD_PATH.unshift(dir) unless $LOAD_PATH.include?(dir) }
3 require 'puppet/util/openstack'
4 Puppet::Type.newtype(:keystone_user) do
6 desc 'Type for managing keystone users.'
10 newparam(:name, :namevar => true) do
14 newparam(:ignore_default_tenant) do
15 newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
18 value.to_s.downcase.to_sym
22 newproperty(:enabled) do
23 newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
26 value.to_s.downcase.to_sym
30 newproperty(:password) do
32 def change_to_s(currentvalue, newvalue)
33 if currentvalue == :absent
34 return "created password"
36 return "changed password"
40 def is_to_s( currentvalue )
41 return '[old password redacted]'
44 def should_to_s( newvalue )
45 return '[new password redacted]'
49 newproperty(:tenant) do
53 newproperty(:email) do
54 newvalues(/^(\S+@\S+)|$/)
59 raise(Puppet::Error, 'This is a read only property')
63 newparam(:replace_password) do
64 newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
67 value.to_s.downcase.to_sym
71 autorequire(:keystone_tenant) do
75 # we should not do anything until the keystone service is started
76 autorequire(:service) do
81 If no other credentials are present, the provider will search in
82 /etc/keystone/keystone.conf for an admin token and auth url.
84 Puppet::Util::Openstack.add_openstack_type_methods(self, auth_param_doc)