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 def initialize(value={})
17 if resource[:enabled] == :true
18 properties << '--enable'
19 elsif resource[:enabled] == :false
20 properties << '--disable'
22 if resource[:description]
23 properties << '--description'
24 properties << resource[:description]
26 @instance = request('project', 'create', resource[:name], resource[:auth], properties)
30 ! instance(resource[:name]).empty?
34 request('project', 'delete', resource[:name], resource[:auth])
39 @property_flush[:enabled] = value
43 bool_to_sym(instance(resource[:name])[:enabled])
47 def description=(value)
48 @property_flush[:description] = value
52 instance(resource[:name])[:description]
57 instance(resource[:name])[:id]
61 if not resource[:os_cacert].nil?
62 resource_args = ['project', 'list', nil, nil, '--long', '--os-cacert', resource[:os_cacert]]
64 resource_args = ['project', 'list', nil, nil, '--long']
66 list = request(resource_args)
67 list.collect do |project|
69 :name => project[:name],
71 :enabled => project[:enabled].downcase.chomp == 'true' ? true : false,
72 :description => project[:description],
79 if not resource[:os_cacert].nil?
80 resource_args = ['project', 'list', nil, resource[:auth], '--long', '--os-cacert', resource[:os_cacert]]
82 resource_args = ['project', 'list', nil, resource[:auth], '--long']
84 instances = request(resource_args)
85 instances.collect do |project|
87 :name => project[:name],
88 :enabled => project[:enabled].downcase.chomp == 'true' ? true : false,
89 :description => project[:description],
96 @instance ||= instances.select { |instance| instance[:name] == name }.first || {}
102 (options << '--enable') if @property_flush[:enabled] == :true
103 (options << '--disable') if @property_flush[:enabled] == :false
104 # There is a --description flag for the set command, but it does not work if the value is empty
105 (options << '--property' << "description=#{resource[:description]}") if @property_flush[:description]
106 request('project', 'set', resource[:name], resource[:auth], options) unless options.empty?