class Rummager::ContainerStartTask

Attributes

args_start[RW]
binds[RW]
exec_on_start[RW]
port_bindings[RW]
publishall[RW]
start_once[RW]
volumes_from[RW]

Public Class Methods

new(task_name, app) click to toggle source
Calls superclass method
# File lib/rummager/containers.rb, line 147
def initialize(task_name, app)
  super(task_name,app)
  @actions << Proc.new {
    start_args = @args_start
    if @volumes_from
      puts "using VF:#{@volumes_from}"  if Rake.verbose == true
      start_args.merge!( {'VolumesFrom' => @volumes_from} )
    end
    if @binds
      puts "using BINDS:#{@binds}"  if Rake.verbose == true
      start_args['Binds'] = @binds
    end
    if @port_bindings
        puts "using PortBindings:#{@port_bindings}"  if Rake.verbose == true
        start_args['PortBindings'] = @port_bindings
    end
    if @publishall
      start_args['PublishAllPorts'] = true
    end
    puts "Starting: #{@container_name}"
    docker_obj.start( start_args )
    if @exec_on_start
      begin
        puts "issuing exec calls" if Rake.verbose == true
        exec_on_start.each do |ae|
          if ae.delete(:hide_output)
            docker_obj.exec(ae.delete(:cmd),ae)
          else
            docker_obj.exec(ae.delete(:cmd),ae) { |stream,chunk| puts "#{chunk}" }
          end
          puts "all exec calls complete" if Rake.verbose == true
        end
      rescue => ex
        raise IOError, "exec failed:#{ex.message}"
      end
    end # @exec_on_start
  }
end

Public Instance Methods

needed?() click to toggle source
# File lib/rummager/containers.rb, line 124
def needed?
  if has_container?
    puts "checking if #{@container_name} is running" if Rake.verbose == true
    if docker_obj.json['State']['Running'] == false
      puts "#{@container_name} is NOT running"  if Rake.verbose == true
      if Time.parse(docker_obj.json['State']['StartedAt']) != Time.parse('0001-01-01T00:00:00Z')
        puts "#{@container_name} previously ran"  if Rake.verbose == true
        if @start_once == true
          puts "#{@container_name} is a start_once container, not needed" if Rake.verbose == true
          return false
        end
      else
        puts "#{@container_name} has never run" if Rake.verbose == true
      end
    else
      puts "#{@container_name} is running" if Rake.verbose == true
    end
  else
    puts "#{@container_name} doesnt exist" if Rake.verbose == true
  end
  true
end