1 require 'puppet/provider/keystone'
3 Puppet::Type.type(:keystone_service).provide(
5 :parent => Puppet::Provider::Keystone
8 desc "Provider to manage keystone services."
10 def initialize(value={})
17 if resource[:description]
18 properties << '--description'
19 properties << resource[:description]
22 properties << '--type'
23 properties << resource[:type]
25 @instance = request('service', 'create', resource[:name], resource[:auth], properties)
29 ! instance(resource[:name]).empty?
33 request('service', 'delete', resource[:name], resource[:auth])
37 def description=(value)
38 raise(Puppet::Error, "Updating the service is not currently supported.")
42 instance(resource[:name])[:description]
47 raise(Puppet::Error, "Updating the service is not currently supported.")
51 instance(resource[:name])[:type]
56 instance(resource[:name])[:id]
60 list = request('service', 'list', nil, nil, '--long')
61 list.collect do |service|
63 :name => service[:name],
65 :type => service[:type],
66 :description => service[:description],
73 instances = request('service', 'list', nil, resource[:auth], '--long')
74 instances.collect do |service|
76 :name => service[:name],
77 :type => service[:type],
78 :description => service[:description],
85 @instance ||= instances.select { |instance| instance[:name] == name }.first || {}
91 # There is a --description flag for the set command, but it does not work if the value is empty
92 (options << '--property' << "type=#{resource[:type]}") if @property_flush[:type]
93 (options << '--property' << "description=#{resource[:description]}") if @property_flush[:description]
94 request('project', 'set', resource[:name], resource[:auth], options) unless options.empty?