X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fkeystone%2Flib%2Fpuppet%2Fprovider%2Fkeystone_service%2Fopenstack.rb;h=40aa8e2feaf80fab0fe75dd207b7a195ee8713d6;hb=71a236efd9f45828d875a0a5fd025108bb1dcada;hp=54e75f5963504e21af9168e99886766894cc9432;hpb=52e13a709b5b959cd8995e7fa4f1b226bbe13a87;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/keystone/lib/puppet/provider/keystone_service/openstack.rb b/3rdparty/modules/keystone/lib/puppet/provider/keystone_service/openstack.rb index 54e75f596..40aa8e2fe 100644 --- a/3rdparty/modules/keystone/lib/puppet/provider/keystone_service/openstack.rb +++ b/3rdparty/modules/keystone/lib/puppet/provider/keystone_service/openstack.rb @@ -7,6 +7,8 @@ Puppet::Type.type(:keystone_service).provide( desc "Provider to manage keystone services." + @credentials = Puppet::Provider::Openstack::CredentialsV2_0.new + def initialize(value={}) super(value) @property_flush = {} @@ -18,46 +20,45 @@ Puppet::Type.type(:keystone_service).provide( properties << '--description' properties << resource[:description] end - if resource[:type] - properties << '--type' - properties << resource[:type] - end - @instance = request('service', 'create', resource[:name], resource[:auth], properties) + raise(Puppet::Error, 'The service type is mandatory') unless resource[:type] + properties << '--type' + properties << resource[:type] + properties << resource[:name] + self.class.request('service', 'create', properties) + @property_hash[:ensure] = :present end def exists? - ! instance(resource[:name]).empty? + @property_hash[:ensure] == :present end def destroy - request('service', 'delete', resource[:name], resource[:auth]) + self.class.request('service', 'delete', @property_hash[:id]) + @property_hash.clear end - def description=(value) - raise(Puppet::Error, "Updating the service is not currently supported.") + @property_flush[:description] = value end def description - instance(resource[:name])[:description] + @property_hash[:description] end - def type=(value) - raise(Puppet::Error, "Updating the service is not currently supported.") + @property_flush[:type] = value end def type - instance(resource[:name])[:type] + @property_hash[:type] end - def id - instance(resource[:name])[:id] + @property_hash[:id] end def self.instances - list = request('service', 'list', nil, nil, '--long') + list = request('service', 'list', '--long') list.collect do |service| new( :name => service[:name], @@ -69,30 +70,20 @@ Puppet::Type.type(:keystone_service).provide( end end - def instances - instances = request('service', 'list', nil, resource[:auth], '--long') - instances.collect do |service| - { - :name => service[:name], - :type => service[:type], - :description => service[:description], - :id => service[:id] - } + def self.prefetch(resources) + services = instances + resources.keys.each do |name| + if provider = services.find{ |service| service.name == name } + resources[name].provider = provider + end end end - def instance(name) - @instance ||= instances.select { |instance| instance[:name] == name }.first || {} - end - def flush - options = [] - if @property_flush - # There is a --description flag for the set command, but it does not work if the value is empty - (options << '--property' << "type=#{resource[:type]}") if @property_flush[:type] - (options << '--property' << "description=#{resource[:description]}") if @property_flush[:description] - request('project', 'set', resource[:name], resource[:auth], options) unless options.empty? + if ! @property_flush.empty? + destroy + create + @property_flush.clear end end - end