Class: Puppet::Provider::RabbitmqCli

Inherits:
Puppet::Provider
  • Object
show all
Defined in:
lib/puppet/provider/rabbitmq_cli.rb

Class Method Summary collapse

Class Method Details

.home_tmp_command(name, path) ⇒ Object



26
27
28
29
30
# File 'lib/puppet/provider/rabbitmq_cli.rb', line 26

def self.home_tmp_command(name, path)
  has_command name, path do
    environment HOME: '/tmp'
  end
end

.rabbitmq_runningObject



56
57
58
59
60
61
# File 'lib/puppet/provider/rabbitmq_cli.rb', line 56

def self.rabbitmq_running
  rabbitmqctl('-q', 'status')
  return true
rescue Puppet::ExecutionFailure, Timeout::Error
  return false
end

.rabbitmq_versionObject



37
38
39
40
41
42
43
# File 'lib/puppet/provider/rabbitmq_cli.rb', line 37

def self.rabbitmq_version
  return @rabbitmq_version if defined? @rabbitmq_version

  output = rabbitmqctl('-q', 'status')
  version = output.match(%r{RabbitMQ.*?([\d\.]+)})
  @rabbitmq_version = version[1] if version
end

.rabbitmqctl_list(resource, *opts) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/puppet/provider/rabbitmq_cli.rb', line 45

def self.rabbitmqctl_list(resource, *opts)
  version = rabbitmq_version
  list_opts =
    if version && Puppet::Util::Package.versioncmp(version, '3.7.9') >= 0
      ['-q', '--no-table-headers']
    else
      ['-q']
    end
  rabbitmqctl("list_#{resource}", *list_opts, *opts)
end

.run_with_retries(count = 30, step = 6, timeout = 10) ⇒ Object

Retry the given code block ‘count’ retries or until the command succeeds. Use ‘step’ delay between retries. Limit each query time by ‘timeout’. For example:

users = self.class.run_with_retries { rabbitmqctl 'list_users' }

Raises:

  • (Puppet::Error)


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/puppet/provider/rabbitmq_cli.rb', line 68

def self.run_with_retries(count = 30, step = 6, timeout = 10)
  count.times do |_n|
    begin
      output = Timeout.timeout(timeout) do
        yield
      end
    rescue Puppet::ExecutionFailure, Timeout::Error
      Puppet.debug 'Command failed, retrying'
      sleep step
    else
      Puppet.debug 'Command succeeded'
      return output
    end
  end
  raise Puppet::Error, "Command is still failing after #{count * step} seconds expired!"
end