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 @credentials = Puppet::Provider::Openstack::CredentialsV3.new
12 def initialize(value={})
19 properties = [resource[:type]]
20 properties << '--name' << resource[:name]
21 if resource[:description]
22 properties << '--description' << resource[:description]
24 self.class.request('service', 'create', properties)
25 @property_hash[:ensure] = :present
27 raise(Puppet::Error, 'The type is mandatory for creating a keystone service')
32 self.class.request('service', 'delete', @property_hash[:id])
37 @property_hash[:ensure] == :present
41 @property_hash[:description]
44 def description=(value)
45 @property_flush[:description] = value
53 @property_flush[:type] = value
61 list = request('service', 'list', '--long')
62 list.collect do |service|
64 :name => service[:name],
66 :type => service[:type],
67 :description => service[:description],
73 def self.prefetch(resources)
75 resources.keys.each do |name|
76 if provider = services.find{ |service| service.name == name }
77 resources[name].provider = provider
84 if @property_flush && !@property_flush.empty?
85 options << "--description=#{resource[:description]}" if @property_flush[:description]
86 options << "--type=#{resource[:type]}" if @property_flush[:type]
87 self.class.request('service', 'set', [@property_hash[:id]] + options) unless options.empty?