]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/lib/puppet/type/keystone_user.rb
2186169482e8ec2b2fbb500efe415ab03597d4cb
[dsa-puppet.git] / 3rdparty / modules / keystone / lib / puppet / type / keystone_user.rb
1 # LP#1408531
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
5
6   desc 'Type for managing keystone users.'
7
8   ensurable
9
10   newparam(:name, :namevar => true) do
11     newvalues(/\S+/)
12   end
13
14   newparam(:ignore_default_tenant) do
15     newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
16     defaultto(false)
17     munge do |value|
18       value.to_s.downcase.to_sym
19     end
20   end
21
22   newproperty(:enabled) do
23     newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
24     defaultto(true)
25     munge do |value|
26       value.to_s.downcase.to_sym
27     end
28   end
29
30   newproperty(:password) do
31     newvalues(/\S+/)
32     def change_to_s(currentvalue, newvalue)
33       if currentvalue == :absent
34         return "created password"
35       else
36         return "changed password"
37       end
38     end
39
40     def is_to_s( currentvalue )
41       return '[old password redacted]'
42     end
43
44     def should_to_s( newvalue )
45       return '[new password redacted]'
46     end
47   end
48
49   newproperty(:tenant) do
50     newvalues(/\S+/)
51   end
52
53   newproperty(:email) do
54     newvalues(/^(\S+@\S+)|$/)
55   end
56
57   newproperty(:id) do
58     validate do |v|
59       raise(Puppet::Error, 'This is a read only property')
60     end
61   end
62
63   newparam(:replace_password) do
64     newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
65     defaultto(true)
66     munge do |value|
67       value.to_s.downcase.to_sym
68     end
69   end
70
71   autorequire(:keystone_tenant) do
72     self[:tenant]
73   end
74
75   # we should not do anything until the keystone service is started
76   autorequire(:service) do
77     ['keystone']
78   end
79
80   auth_param_doc=<<EOT
81 If no other credentials are present, the provider will search in
82 /etc/keystone/keystone.conf for an admin token and auth url.
83 EOT
84   Puppet::Util::Openstack.add_openstack_type_methods(self, auth_param_doc)
85 end