class Sle2Docker::NativeImage
This class takes care of handling the native loadable images for SUSE Linux Enterprise
Constants
- IMAGES_DIR
Public Class Methods
list()
click to toggle source
# File lib/sle2docker/native_image.rb, line 7 def self.list if File.exist?(NativeImage::IMAGES_DIR) Dir[File.join(NativeImage::IMAGES_DIR, '*.tar.xz')].map do |image| File.basename(image, '.tar.xz') end else [] end end
new(image_name, options)
click to toggle source
# File lib/sle2docker/native_image.rb, line 17 def initialize(image_name, options) @image_name = image_name @options = options compute_metadata_file end
Public Instance Methods
activate()
click to toggle source
# File lib/sle2docker/native_image.rb, line 23 def activate verify_image puts 'Loading image' Docker::Image.load(File.join(IMAGES_DIR, "#{@image_name}.tar.xz")) image = Docker::Image.get(@image_id) image.tag('repo' => @repository, 'tag' => 'latest') @options['tag_with_build'] && image.tag('repo' => @repository, 'tag' => "#{@tag}-#{@build}") end
Private Instance Methods
compute_metadata_file()
click to toggle source
# File lib/sle2docker/native_image.rb, line 36 def compute_metadata_file # example of image name and metadata file: # kiwi >= 8.30 # sles12sp3-container.x86_64-2.0.1-Build2.3.docker (image basename) # sles12sp3-container.x86_64-2.0.1.metadata regexp = /(?<metadata_file>.*\d+\.\d+\.\d+) (-Build(?<build>\d+\.\d+)\.docker)?/x match = regexp.match(@image_name) match.nil? && raise(DockerTagError, "Docker image #{@image_name} not found. \ Run sle2docker list to check which docker images are available.") @metadata = parse_metadata_file("#{match['metadata_file']}.metadata") @repository = @metadata['image']['name'] @tag = @metadata['image']['tags'][0] @build = match['build'] @image_id = "#{@repository}:#{@tag}" end
parse_metadata_file(metadata)
click to toggle source
# File lib/sle2docker/native_image.rb, line 55 def parse_metadata_file(metadata) file = File.read( File.join(NativeImage::IMAGES_DIR, metadata) ) JSON.parse(file) end