]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/lib/puppet/provider/keystone_tenant/openstack.rb
try with modules from master
[dsa-puppet.git] / 3rdparty / modules / keystone / lib / puppet / provider / keystone_tenant / openstack.rb
1 require 'puppet/provider/keystone'
2
3 Puppet::Type.type(:keystone_tenant).provide(
4   :openstack,
5   :parent => Puppet::Provider::Keystone
6 ) do
7
8   desc "Provider to manage keystone tenants/projects."
9
10   @credentials = Puppet::Provider::Openstack::CredentialsV2_0.new
11
12   def initialize(value={})
13     super(value)
14     @property_flush = {}
15   end
16
17   def create
18     properties = [resource[:name]]
19     if resource[:enabled] == :true
20       properties << '--enable'
21     elsif resource[:enabled] == :false
22       properties << '--disable'
23     end
24     if resource[:description]
25       properties << '--description'
26       properties << resource[:description]
27     end
28      self.class.request('project', 'create', properties)
29      @property_hash[:ensure] = :present
30   end
31
32   def exists?
33     @property_hash[:ensure] == :present
34   end
35
36   def destroy
37     self.class.request('project', 'delete', @property_hash[:id])
38     @property_hash.clear
39   end
40
41   def enabled=(value)
42     @property_flush[:enabled] = value
43   end
44
45   def enabled
46     bool_to_sym(@property_hash[:enabled])
47   end
48
49   def description=(value)
50     @property_flush[:description] = value
51   end
52
53   def description
54     @property_hash[:description]
55   end
56
57   def id
58     @property_hash[:id]
59   end
60
61   def self.instances
62     list = request('project', 'list', '--long')
63     list.collect do |project|
64       new(
65         :name        => project[:name],
66         :ensure      => :present,
67         :enabled     => project[:enabled].downcase.chomp == 'true' ? true : false,
68         :description => project[:description],
69         :id          => project[:id]
70       )
71     end
72   end
73
74   def self.prefetch(resources)
75     tenants = instances
76     resources.keys.each do |name|
77        if provider = tenants.find{ |tenant| tenant.name == name }
78         resources[name].provider = provider
79       end
80     end
81   end
82
83   def flush
84     options = []
85     if @property_flush && !@property_flush.empty?
86       case @property_flush[:enabled]
87       when :true
88         options << '--enable'
89       when :false
90         options << '--disable'
91       end
92       (options << "--description=#{resource[:description]}") if @property_flush[:description]
93       options << @property_hash[:id]
94       self.class.request('project', 'set', options) unless options.empty?
95       @property_flush.clear
96     end
97   end
98
99 end