]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/lib/puppet/type/keystone_user.rb
Update to Kilo
[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 File.expand_path('../../../../openstacklib/lib', File.dirname(__FILE__)).tap { |dir| $LOAD_PATH.unshift(dir) unless $LOAD_PATH.include?(dir) }
4
5 require 'puppet/provider/keystone/util'
6
7 Puppet::Type.newtype(:keystone_user) do
8
9   desc 'Type for managing keystone users.'
10
11   ensurable
12
13   newparam(:name, :namevar => true) do
14     newvalues(/\S+/)
15   end
16
17   newparam(:ignore_default_tenant) do
18     # DEPRECATED - To be removed in next release (Liberty)
19     # https://bugs.launchpad.net/puppet-keystone/+bug/1472437
20     validate do |v|
21       Puppet.warning('The ignore_default_tenant parameter is deprecated and will be removed in the future.')
22     end
23     newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
24     defaultto(false)
25     munge do |value|
26       value.to_s.downcase.to_sym
27     end
28   end
29
30   newproperty(:enabled) do
31     newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
32     defaultto(true)
33     munge do |value|
34       value.to_s.downcase.to_sym
35     end
36   end
37
38   newproperty(:password) do
39     newvalues(/\S+/)
40     def change_to_s(currentvalue, newvalue)
41       if currentvalue == :absent
42         return "created password"
43       else
44         return "changed password"
45       end
46     end
47
48     def is_to_s( currentvalue )
49       return '[old password redacted]'
50     end
51
52     def should_to_s( newvalue )
53       return '[new password redacted]'
54     end
55   end
56
57   newproperty(:tenant) do
58     # DEPRECATED - To be removed in next release (Liberty)
59     # https://bugs.launchpad.net/puppet-keystone/+bug/1472437
60     validate do |v|
61       Puppet.warning('The tenant parameter is deprecated and will be removed in the future. Please use keystone_user_role to assign a user to a project.')
62     end
63     newvalues(/\S+/)
64   end
65
66   newproperty(:email) do
67     newvalues(/^(\S+@\S+)|$/)
68   end
69
70   newproperty(:id) do
71     validate do |v|
72       raise(Puppet::Error, 'This is a read only property')
73     end
74   end
75
76   newparam(:replace_password) do
77     newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
78     defaultto(true)
79     munge do |value|
80       value.to_s.downcase.to_sym
81     end
82   end
83
84   newproperty(:domain) do
85     newvalues(nil, /\S+/)
86     def insync?(is)
87       raise(Puppet::Error, "The domain cannot be changed from #{self.should} to #{is}") unless self.should == is
88       true
89     end
90   end
91
92   autorequire(:keystone_tenant) do
93     # DEPRECATED - To be removed in next release (Liberty)
94     # https://bugs.launchpad.net/puppet-keystone/+bug/1472437
95     self[:tenant]
96   end
97
98   autorequire(:keystone_domain) do
99     # use the domain parameter if given, or the one from name if any
100     self[:domain] or Util.split_domain(self[:name])[1]
101   end
102
103   # we should not do anything until the keystone service is started
104   autorequire(:service) do
105     ['keystone']
106   end
107 end