+++ /dev/null
-require 'puppet/provider/keystone'
-
-Puppet::Type.type(:keystone_tenant).provide(
- :openstack,
- :parent => Puppet::Provider::Keystone
-) do
-
- desc "Provider to manage keystone tenants/projects."
-
- def initialize(value={})
- super(value)
- @property_flush = {}
- end
-
- def create
- properties = []
- if resource[:enabled] == :true
- properties << '--enable'
- elsif resource[:enabled] == :false
- properties << '--disable'
- end
- if resource[:description]
- properties << '--description'
- properties << resource[:description]
- end
- @instance = request('project', 'create', resource[:name], resource[:auth], properties)
- end
-
- def exists?
- ! instance(resource[:name]).empty?
- end
-
- def destroy
- request('project', 'delete', resource[:name], resource[:auth])
- end
-
-
- def enabled=(value)
- @property_flush[:enabled] = value
- end
-
- def enabled
- bool_to_sym(instance(resource[:name])[:enabled])
- end
-
-
- def description=(value)
- @property_flush[:description] = value
- end
-
- def description
- instance(resource[:name])[:description]
- end
-
-
- def id
- instance(resource[:name])[:id]
- end
-
- def self.instances
- list = request('project', 'list', nil, nil, '--long')
- list.collect do |project|
- new(
- :name => project[:name],
- :ensure => :present,
- :enabled => project[:enabled].downcase.chomp == 'true' ? true : false,
- :description => project[:description],
- :id => project[:id]
- )
- end
- end
-
- def instances
- instances = request('project', 'list', nil, resource[:auth], '--long')
- instances.collect do |project|
- {
- :name => project[:name],
- :enabled => project[:enabled].downcase.chomp == 'true' ? true : false,
- :description => project[:description],
- :id => project[:id]
- }
- 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?
- end
- end
-
-end