Update 3rdparty rabbitmq module
[mirror/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   if Puppet::PUPPETVERSION.to_f < 3
4     commands rabbitmqctl: 'rabbitmqctl'
5   else
6     has_command(:rabbitmqctl, 'rabbitmqctl') do
7       environment HOME: '/tmp'
8     end
9   end
10
11   def self.instances
12     vhost_list = run_with_retries do
13       rabbitmqctl('-q', 'list_vhosts')
14     end
15
16     vhost_list.split(%r{\n}).map do |line|
17       raise Puppet::Error, "Cannot parse invalid vhost line: #{line}" unless line =~ %r{^(\S+)$}
18       new(name: Regexp.last_match(1))
19     end
20   end
21
22   def create
23     rabbitmqctl('add_vhost', resource[:name])
24   end
25
26   def destroy
27     rabbitmqctl('delete_vhost', resource[:name])
28   end
29
30   def exists?
31     self.class.run_with_retries { rabbitmqctl('-q', 'list_vhosts') }.split(%r{\n}).include? resource[:name]
32   end
33 end