Class: Indocker::ContainerDirectivesRunner

Inherits:
Object
  • Object
show all
Includes:
SmartIoC::Iocify
Defined in:
lib/indocker/directives/container_directives_runner.rb

Instance Method Summary collapse

Instance Method Details

#run(directive) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/indocker/directives/container_directives_runner.rb', line 15

def run(directive)
  case directive
  when Indocker::ContainerDirectives::Network
    run_network(directive)
  when Indocker::ContainerDirectives::Ready
    run_ready(directive)
  else
    # do nothing
  end
end

#run_all(directives) ⇒ Object



11
12
13
# File 'lib/indocker/directives/container_directives_runner.rb', line 11

def run_all(directives)
  directives.each {|c| run(c)}
end

#run_network(directive) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/indocker/directives/container_directives_runner.rb', line 26

def run_network(directive)
  if !docker_api.network_exists?(directive.network_name)
    docker_api.create_network(directive.network_name)
  end

  docker_api.add_container_to_network(
    container_name: directive.container_name,
    network_name:   directive.network_name
  )
end

#run_ready(directive) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/indocker/directives/container_directives_runner.rb', line 37

def run_ready(directive)
  Timeout::timeout(directive.timeout) do
    while (!directive.ready_block.call)
      sleep directive.sleep
    end
  end
rescue Timeout::Error
  raise Indocker::Errors::ContainerTimeoutError
end