X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fkeystone%2Flib%2Fpuppet%2Fprovider%2Fkeystone_tenant%2Fopenstack.rb;h=198798477d9f0422b62ff65088fc52b0c1ded287;hb=71a236efd9f45828d875a0a5fd025108bb1dcada;hp=ef15c50e6f48792bdcaf058dbf0535dab6cecc24;hpb=9323043aa25de76c23ba73489d575aecc7a8041d;p=dsa-puppet.git diff --git a/3rdparty/modules/keystone/lib/puppet/provider/keystone_tenant/openstack.rb b/3rdparty/modules/keystone/lib/puppet/provider/keystone_tenant/openstack.rb index ef15c50e..19879847 100644 --- a/3rdparty/modules/keystone/lib/puppet/provider/keystone_tenant/openstack.rb +++ b/3rdparty/modules/keystone/lib/puppet/provider/keystone_tenant/openstack.rb @@ -7,13 +7,15 @@ Puppet::Type.type(:keystone_tenant).provide( desc "Provider to manage keystone tenants/projects." + @credentials = Puppet::Provider::Openstack::CredentialsV2_0.new + def initialize(value={}) super(value) @property_flush = {} end def create - properties = [] + properties = [resource[:name]] if resource[:enabled] == :true properties << '--enable' elsif resource[:enabled] == :false @@ -23,47 +25,41 @@ Puppet::Type.type(:keystone_tenant).provide( properties << '--description' properties << resource[:description] end - @instance = request('project', 'create', resource[:name], resource[:auth], properties) + self.class.request('project', 'create', properties) + @property_hash[:ensure] = :present end def exists? - ! instance(resource[:name]).empty? + @property_hash[:ensure] == :present end def destroy - request('project', 'delete', resource[:name], resource[:auth]) + self.class.request('project', 'delete', @property_hash[:id]) + @property_hash.clear end - def enabled=(value) @property_flush[:enabled] = value end def enabled - bool_to_sym(instance(resource[:name])[:enabled]) + bool_to_sym(@property_hash[:enabled]) end - def description=(value) @property_flush[:description] = value end def description - instance(resource[:name])[:description] + @property_hash[:description] end - def id - instance(resource[:name])[:id] + @property_hash[:id] end def self.instances - if not resource[:os_cacert].nil? - resource_args = ['project', 'list', nil, nil, '--long', '--os-cacert', resource[:os_cacert]] - else - resource_args = ['project', 'list', nil, nil, '--long'] - end - list = request(resource_args) + list = request('project', 'list', '--long') list.collect do |project| new( :name => project[:name], @@ -75,35 +71,28 @@ Puppet::Type.type(:keystone_tenant).provide( end end - def instances - if not resource[:os_cacert].nil? - resource_args = ['project', 'list', nil, resource[:auth], '--long', '--os-cacert', resource[:os_cacert]] - else - resource_args = ['project', 'list', nil, resource[:auth], '--long'] - end - instances = request(resource_args) - instances.collect do |project| - { - :name => project[:name], - :enabled => project[:enabled].downcase.chomp == 'true' ? true : false, - :description => project[:description], - :id => project[:id] - } + def self.prefetch(resources) + tenants = instances + resources.keys.each do |name| + if provider = tenants.find{ |tenant| tenant.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 - (options << '--enable') if @property_flush[:enabled] == :true - (options << '--disable') if @property_flush[:enabled] == :false - # There is a --description flag for the set command, but it does not work if the value is empty - (options << '--property' << "description=#{resource[:description]}") if @property_flush[:description] - request('project', 'set', resource[:name], resource[:auth], options) unless options.empty? + if @property_flush && !@property_flush.empty? + case @property_flush[:enabled] + when :true + options << '--enable' + when :false + options << '--disable' + end + (options << "--description=#{resource[:description]}") if @property_flush[:description] + options << @property_hash[:id] + self.class.request('project', 'set', options) unless options.empty? + @property_flush.clear end end