class Indocker::ContainerDeployer
Attributes
server_pool[R]
Public Class Methods
new(configuration:, logger:)
click to toggle source
# File lib/indocker/container_deployer.rb, line 4 def initialize(configuration:, logger:) @configuration = configuration @logger = logger @server_pool = Indocker::ServerPools::DeployServerPool.new( configuration: @configuration, logger: logger ) @deployed_containers = Hash.new(false) @deployed_servers = {} end
Public Instance Methods
close_sessions()
click to toggle source
# File lib/indocker/container_deployer.rb, line 60 def close_sessions @server_pool.close_sessions rescue => e @logger.error("error during closing sessions #{e.inspect}") end
deploy(container, force_restart, skip_force_restart, progress)
click to toggle source
# File lib/indocker/container_deployer.rb, line 17 def deploy(container, force_restart, skip_force_restart, progress) return if @deployed_containers[container] container.servers.each do |server| progress.start_deploying_container(container, server) exec_proc = if !container.is_daemonized? Proc.new do |&block| block.call end else Proc.new do |&block| Thread.new do block.call end end end exec_proc.call do deploy_server = @server_pool.create_connection!(server) @logger.info("Deploying container: #{container.name.to_s.green} to #{server.user}@#{server.host}") result = deploy_server .run_container_remotely( configuration_name: Indocker.configuration_name, container_name: container.name, force_restart: force_restart && !skip_force_restart.include?(container.name) ) if result.exit_code != 0 exit 1 end @logger.info("Container deployment to #{server.user}@#{server.host} finished: #{container.name.to_s.green}") deploy_server.close_session progress.finish_deploying_container(container, server) end end @deployed_containers[container] = true end