lib/percheron/actions/create.rb in percheron-0.7.6 vs lib/percheron/actions/create.rb in percheron-0.7.7
- old
+ new
@@ -2,122 +2,122 @@
module Actions
class Create
include Base
- def initialize(container, start: false, cmd: false, exec_scripts: true)
- @container = container
+ def initialize(unit, start: false, cmd: false, exec_scripts: true)
+ @unit = unit
@start = start
@exec_scripts = exec_scripts
@cmd = cmd
- @container_image_existed = container.image_exists?
+ @unit_image_existed = unit.image_exists?
end
def execute!
results = []
- if container.exists?
- $logger.debug "Container '#{container.name}' already exists"
+ if unit.exists?
+ $logger.debug "Container '#{unit.name}' already exists"
else
results << create!
end
- results.compact.empty? ? nil : container
+ results.compact.empty? ? nil : unit
end
private
- attr_reader :container, :start, :exec_scripts, :container_image_existed
+ attr_reader :unit, :start, :exec_scripts, :unit_image_existed
alias_method :start?, :start
alias_method :exec_scripts?, :exec_scripts
- alias_method :container_image_existed?, :container_image_existed
+ alias_method :unit_image_existed?, :unit_image_existed
def cmd
- @cmd ||= (@cmd || container.start_args)
+ @cmd ||= (@cmd || unit.start_args)
end
def base_options
{
- 'name' => container.full_name,
- 'Image' => container.image_name,
- 'Hostname' => container.hostname,
- 'Env' => container.env,
- 'ExposedPorts' => container.exposed_ports,
+ 'name' => unit.full_name,
+ 'Image' => unit.image_name,
+ 'Hostname' => unit.hostname,
+ 'Env' => unit.env,
+ 'ExposedPorts' => unit.exposed_ports,
'Cmd' => cmd,
- 'Labels' => container.labels
+ 'Labels' => unit.labels
}
end
def host_config_options
{
'HostConfig' => {
'PortBindings' => port_bindings,
- 'Links' => container.links,
- 'Binds' => container.volumes,
- 'Dns' => container.dns
+ 'Links' => unit.links,
+ 'Binds' => unit.volumes,
+ 'Dns' => unit.dns
}
}
end
def options
@options ||= base_options.merge(host_config_options)
end
def port_bindings
- container.ports.each_with_object({}) do |p, all|
+ unit.ports.each_with_object({}) do |p, all|
destination, source = p.split(':')
all[source] = [ { 'HostPort' => destination } ]
end
end
def create!
- container.buildable? ? build_image! : pull_image!
- return unless container.startable?
+ unit.buildable? ? build_image! : pull_image!
+ return unless unit.startable?
insert_scripts!
- create_container!
+ create_unit!
update_dockerfile_md5!
start!
end
def build_image!
- Build.new(container).execute! unless container.image_exists?
+ Build.new(unit).execute! unless unit.image_exists?
end
# FIXME: move this
def pull_image!
- return nil if container.image_exists?
- $logger.info "Pulling '#{container.image_name}' image"
- Docker::Image.create(fromImage: container.image_name) do |out|
+ return nil if unit.image_exists?
+ $logger.info "Pulling '#{unit.image_name}' image"
+ Connection.perform(Docker::Image, :create, fromImage: unit.image_name) do |out|
$logger.debug JSON.parse(out)
end
end
- def create_container!
- $logger.info "Creating '#{container.name}' container"
- Docker::Container.create(options)
+ def create_unit!
+ $logger.info "Creating '#{unit.name}' unit"
+ Connection.perform(Docker::Container, :create, options)
end
def start!
- return nil if !container.startable? || !start?
- Start.new(container).execute!
+ return nil if !unit.startable? || !start?
+ Start.new(unit).execute!
end
def update_dockerfile_md5!
- container.update_dockerfile_md5!
+ unit.update_dockerfile_md5!
end
def insert_scripts!
- return nil if container_image_existed?
- insert_files!(container.post_start_scripts)
+ return nil if unit_image_existed?
+ insert_files!(unit.post_start_scripts)
end
def insert_files!(files)
files.each { |file| insert_file!(file) }
end
def insert_file!(file)
file = Pathname.new(File.expand_path(file, base_dir))
opts = { 'localPath' => file.to_s, 'outputPath' => "/tmp/#{file.basename}" }
- new_image = container.image.insert_local(opts)
- new_image.tag(repo: container.image_repo, tag: container.version.to_s, force: true)
+ new_image = unit.image.insert_local(opts)
+ new_image.tag(repo: unit.image_repo, tag: unit.version.to_s, force: true)
end
end
end
end