Class: KumoDockerCloud::StackChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/kumo_dockercloud/stack_checker.rb

Instance Method Summary collapse

Constructor Details

#initialize(specific_checks = {}, default_check = nil, timeout = 300) ⇒ StackChecker



3
4
5
6
7
# File 'lib/kumo_dockercloud/stack_checker.rb', line 3

def initialize(specific_checks = {}, default_check = nil, timeout = 300)
  @checks = specific_checks
  @default_check = default_check
  @timeout = timeout
end

Instance Method Details

#verify(stack) ⇒ Object

Raises:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/kumo_dockercloud/stack_checker.rb', line 9

def verify(stack)
  raise InvalidStackError.new("The stack being verified is not a valid KumoDockerCloud::Stack.") unless stack.instance_of? KumoDockerCloud::Stack

  services = stack.services

  default_checks = services.reduce({}) { |result, service| result.merge(service.name => default_check) }
  service_checks = default_checks.merge(@checks)

  begin
    service_checker_threads = services.map do |service|
      Thread.new { ServiceChecker.new(service_checks[service.name], @timeout).verify(service) }
    end
    service_checker_threads.each(&:join)
    true
  rescue ServiceDeployError
    raise StackCheckError.new("The stack is not in the expected state.")
  end
end