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'
6 has_command(:rabbitmqctl, 'rabbitmqctl') do
7 environment HOME: '/tmp'
12 vhost_list = run_with_retries do
13 rabbitmqctl('-q', 'list_vhosts')
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))
23 rabbitmqctl('add_vhost', resource[:name])
27 rabbitmqctl('delete_vhost', resource[:name])
31 self.class.run_with_retries { rabbitmqctl('-q', 'list_vhosts') }.split(%r{\n}).include? resource[:name]