]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/lib/puppet/provider/keystone_service/openstack.rb
try with modules from master
[dsa-puppet.git] / 3rdparty / modules / keystone / lib / puppet / provider / keystone_service / openstack.rb
1 require 'puppet/provider/keystone'
2
3 Puppet::Type.type(:keystone_service).provide(
4   :openstack,
5   :parent => Puppet::Provider::Keystone
6 ) do
7
8   desc "Provider to manage keystone services."
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 = []
19     if resource[:description]
20       properties << '--description'
21       properties << resource[:description]
22     end
23     raise(Puppet::Error, 'The service type is mandatory') unless resource[:type]
24     properties << '--type'
25     properties << resource[:type]
26     properties << resource[:name]
27     self.class.request('service', 'create', properties)
28     @property_hash[:ensure] = :present
29   end
30
31   def exists?
32     @property_hash[:ensure] == :present
33   end
34
35   def destroy
36     self.class.request('service', 'delete', @property_hash[:id])
37     @property_hash.clear
38   end
39
40   def description=(value)
41     @property_flush[:description] = value
42   end
43
44   def description
45     @property_hash[:description]
46   end
47
48   def type=(value)
49     @property_flush[:type] = value
50   end
51
52   def type
53     @property_hash[:type]
54   end
55
56   def id
57     @property_hash[:id]
58   end
59
60   def self.instances
61     list = request('service', 'list', '--long')
62     list.collect do |service|
63       new(
64         :name        => service[:name],
65         :ensure      => :present,
66         :type        => service[:type],
67         :description => service[:description],
68         :id          => service[:id]
69       )
70     end
71   end
72
73   def self.prefetch(resources)
74     services = instances
75     resources.keys.each do |name|
76        if provider = services.find{ |service| service.name == name }
77         resources[name].provider = provider
78       end
79     end
80   end
81
82   def flush
83     if ! @property_flush.empty?
84       destroy
85       create
86       @property_flush.clear
87     end
88   end
89 end