class Elasticsnap::VerifyEsClusterStatus

Attributes

quorum_nodes[RW]
url[RW]
wait_timeout[RW]

Public Class Methods

new(url: nil, quorum_nodes: nil, wait_timeout: 30) click to toggle source
# File lib/elasticsnap/verify_es_cluster_status.rb, line 13
def initialize(url: nil, quorum_nodes: nil, wait_timeout: 30)
  raise ArgumentError, 'url required' if url.nil?
  raise ArgumentError, 'quorum_nodes required' if quorum_nodes.nil?

  @url = url
  @quorum_nodes = quorum_nodes
  @wait_timeout = wait_timeout
end

Public Instance Methods

verify!() click to toggle source
# File lib/elasticsnap/verify_es_cluster_status.rb, line 22
def verify!
  wait_for_green_quorum!
end
wait_for_green_quorum!() click to toggle source
# File lib/elasticsnap/verify_es_cluster_status.rb, line 26
def wait_for_green_quorum!
  Flex::Configuration.http_client.base_uri = url
  health = Flex.cluster_health(
    params: {
      wait_for_status: 'yellow',
      wait_for_nodes: "gt(#{quorum_nodes})",
      timeout: "#{wait_timeout}s"
    }
  )

  raise StatusRed if health['status'] == 'red'
  raise NoQuorum if health['number_of_nodes'] < quorum_nodes

  health
end