class Linecook::Image

Constants

IMAGE_PATH

Attributes

group[R]
id[R]
name[R]
path[R]
tag[R]

Public Class Methods

new(name, group, tag) click to toggle source
# File lib/linecook-gem/image.rb, line 19
def initialize(name, group, tag)
  @name = name
  @group = group ? "#{name}-#{group.gsub(/-|\//,'_')}" : name
  @tag = tag
  @id = if @tag == 'latest'
    id = File.basename(latest).split('.')[0]
    @tag = id.split('-').last
    id
  elsif tag
    "#{@group}-#{@tag}"
  else
    @group
  end
  @path = image_path
end

Public Instance Methods

clean(retention) click to toggle source
# File lib/linecook-gem/image.rb, line 67
def clean(retention)
  provider.clean(retention, @group)
end
fetch() click to toggle source
# File lib/linecook-gem/image.rb, line 35
def fetch
  return if File.exists?(@path)

  Dir.mktmpdir("#{@id}-download") do |tmpdir|
    tmppath = File.join(tmpdir, File.basename(@path))
    download(url, tmppath)
    FileUtils.mkdir_p(File.dirname(@path))
    decrypt(tmppath, dest: @path)
    FileUtils.rm_f(tmppath)
  end

end
latest() click to toggle source
# File lib/linecook-gem/image.rb, line 63
def latest
  provider.latest(@group)
end
list() click to toggle source
# File lib/linecook-gem/image.rb, line 59
def list
  provider.list(group: @group)
end
upload() click to toggle source
# File lib/linecook-gem/image.rb, line 48
def upload
  puts "Encrypting and uploading image #{@path}"
  encrypted = encrypt(@path)
  provider.upload(encrypted, group: @group)
  FileUtils.rm_f(encrypted)
end
url() click to toggle source
# File lib/linecook-gem/image.rb, line 55
def url
  provider.url(@id, group: @group)
end

Private Instance Methods

image_path() click to toggle source
# File lib/linecook-gem/image.rb, line 73
def image_path
  File.join([IMAGE_PATH, @group, "#{@id}.tar.xz"].compact)
end
provider() click to toggle source
# File lib/linecook-gem/image.rb, line 77
def provider
  S3Manager
end