1 require 'puppet/provider/keystone'
3 Puppet::Type.type(:keystone_tenant).provide(
5 :parent => Puppet::Provider::Keystone
8 desc "Provider to manage keystone tenants/projects."
10 @credentials = Puppet::Provider::Openstack::CredentialsV2_0.new
12 def initialize(value={})
18 properties = [resource[:name]]
19 if resource[:enabled] == :true
20 properties << '--enable'
21 elsif resource[:enabled] == :false
22 properties << '--disable'
24 if resource[:description]
25 properties << '--description'
26 properties << resource[:description]
28 self.class.request('project', 'create', properties)
29 @property_hash[:ensure] = :present
33 @property_hash[:ensure] == :present
37 self.class.request('project', 'delete', @property_hash[:id])
42 @property_flush[:enabled] = value
46 bool_to_sym(@property_hash[:enabled])
49 def description=(value)
50 @property_flush[:description] = value
54 @property_hash[:description]
62 list = request('project', 'list', '--long')
63 list.collect do |project|
65 :name => project[:name],
67 :enabled => project[:enabled].downcase.chomp == 'true' ? true : false,
68 :description => project[:description],
74 def self.prefetch(resources)
76 resources.keys.each do |name|
77 if provider = tenants.find{ |tenant| tenant.name == name }
78 resources[name].provider = provider
85 if @property_flush && !@property_flush.empty?
86 case @property_flush[:enabled]
90 options << '--disable'
92 (options << "--description=#{resource[:description]}") if @property_flush[:description]
93 options << @property_hash[:id]
94 self.class.request('project', 'set', options) unless options.empty?