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 list = request('project', 'list', nil, nil, '--long')
62 list.collect do |project|
64 :name => project[:name],
66 :enabled => project[:enabled].downcase.chomp == 'true' ? true : false,
67 :description => project[:description],
74 instances = request('project', 'list', nil, resource[:auth], '--long')
75 instances.collect do |project|
77 :name => project[:name],
78 :enabled => project[:enabled].downcase.chomp == 'true' ? true : false,
79 :description => project[:description],
86 @instance ||= instances.select { |instance| instance[:name] == name }.first || {}
92 (options << '--enable') if @property_flush[:enabled] == :true
93 (options << '--disable') if @property_flush[:enabled] == :false
94 # There is a --description flag for the set command, but it does not work if the value is empty
95 (options << '--property' << "description=#{resource[:description]}") if @property_flush[:description]
96 request('project', 'set', resource[:name], resource[:auth], options) unless options.empty?