]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_vhost/rabbitmqctl.rb
move to puppetlabs rabbitmq module
[dsa-puppet.git] / 3rdparty / modules / rabbitmq / lib / puppet / provider / rabbitmq_vhost / rabbitmqctl.rb
1 require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl'))
2 Puppet::Type.type(:rabbitmq_vhost).provide(:rabbitmqctl, :parent => Puppet::Provider::Rabbitmqctl) do
3
4   if Puppet::PUPPETVERSION.to_f < 3
5     commands :rabbitmqctl => 'rabbitmqctl'
6   else
7      has_command(:rabbitmqctl, 'rabbitmqctl') do
8        environment :HOME => "/tmp"
9      end
10   end
11
12   def self.instances
13     self.run_with_retries {
14       rabbitmqctl('-q', 'list_vhosts')
15     }.split(/\n/).map do |line|
16       if line =~ /^(\S+)$/
17         new(:name => $1)
18       else
19         raise Puppet::Error, "Cannot parse invalid user line: #{line}"
20       end
21     end
22   end
23
24   def create
25     rabbitmqctl('add_vhost', resource[:name])
26   end
27
28   def destroy
29     rabbitmqctl('delete_vhost', resource[:name])
30   end
31
32   def exists?
33     out = self.class.run_with_retries {
34       rabbitmqctl('-q', 'list_vhosts')
35     }.split(/\n/).detect do |line|
36       line.match(/^#{Regexp.escape(resource[:name])}$/)
37     end
38   end
39
40 end