Class: KuberKit::Core::ImageStore

Inherits:
Object
  • Object
show all
Defined in:
lib/kuber_kit/core/image_store.rb

Constant Summary collapse

NotFoundError =
Class.new(KuberKit::Error)
AlreadyAddedError =
Class.new(KuberKit::Error)

Instance Method Summary collapse

Instance Method Details

#add_definition(image_definition) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/kuber_kit/core/image_store.rb', line 18

def add_definition(image_definition)
  @@image_definitions ||= {}

  unless @@image_definitions[image_definition.image_name].nil?
    raise AlreadyAddedError, "image #{image_definition.image_name} was already added"
  end

  @@image_definitions[image_definition.image_name] = image_definition
end

#define(image_name, image_dir = nil) ⇒ Object



12
13
14
15
16
# File 'lib/kuber_kit/core/image_store.rb', line 12

def define(image_name, image_dir = nil)
  definition = image_definition_factory.create(image_name, image_dir)
  add_definition(definition)
  definition
end

#get_definition(image_name) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/kuber_kit/core/image_store.rb', line 28

def get_definition(image_name)
  @@image_definitions ||= {}

  if @@image_definitions[image_name].nil?
    raise NotFoundError, "image #{image_name} not found"
  end

  @@image_definitions[image_name]
end

#get_image(image_name) ⇒ Object



38
39
40
41
42
# File 'lib/kuber_kit/core/image_store.rb', line 38

def get_image(image_name)
  definition = get_definition(image_name)

  image_factory.create(definition)
end

#load_definition(file_path) ⇒ Object



53
54
55
# File 'lib/kuber_kit/core/image_store.rb', line 53

def load_definition(file_path)
  require(file_path)
end

#load_definitions(dir_path) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/kuber_kit/core/image_store.rb', line 44

def load_definitions(dir_path)
  files = local_shell.recursive_list_files(dir_path, name: "image.rb").each do |path|
    load_definition(path)
  end
rescue KuberKit::Shell::AbstractShell::DirNotFoundError
  logger.warn("Directory with images not found: #{dir_path}")
  []
end

#reset!Object



57
58
59
# File 'lib/kuber_kit/core/image_store.rb', line 57

def reset!
  @@image_definitions = {}
end