Class: Avm::Docker::Image

Inherits:
EacDocker::Images::Templatized
  • Object
show all
Defined in:
lib/avm/docker/image.rb

Direct Known Subclasses

Instances::DockerImage, Self::DockerImage

Constant Summary collapse

DEFAULT_REGISTRY_NAME =
'local'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(registry = nil) ⇒ Image

Returns a new instance of Image.



24
25
26
27
28
# File 'lib/avm/docker/image.rb', line 24

def initialize(registry = nil)
  @registry = registry || self.class.default_registry
  self.snapshot = true
  self.version = true
end

Instance Attribute Details

#registryObject (readonly)

Returns the value of attribute registry.



20
21
22
# File 'lib/avm/docker/image.rb', line 20

def registry
  @registry
end

#snapshotObject

Returns the value of attribute snapshot.



21
22
23
# File 'lib/avm/docker/image.rb', line 21

def snapshot
  @snapshot
end

#versionObject

Returns the value of attribute version.



22
23
24
# File 'lib/avm/docker/image.rb', line 22

def version
  @version
end

Class Method Details

.default_registryEacDocker::Registry

Returns:

  • (EacDocker::Registry)


15
16
17
# File 'lib/avm/docker/image.rb', line 15

def default_registry
  ::EacDocker::Registry.new(DEFAULT_REGISTRY_NAME)
end

Instance Method Details

#build(extra_args = []) ⇒ Object



30
31
32
33
34
# File 'lib/avm/docker/image.rb', line 30

def build(extra_args = [])
  nyi "Extra args: #{extra_args}" if extra_args.any?

  provide
end

#generator_versionObject



36
37
38
# File 'lib/avm/docker/image.rb', line 36

def generator_version
  ::Avm::VERSION
end

#pushObject



40
41
42
# File 'lib/avm/docker/image.rb', line 40

def push
  ::EacDocker::Executables.docker.command.append(['push', tag]).system!
end

#read_entry(path, options = {}) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/avm/docker/image.rb', line 44

def read_entry(path, options = {})
  method = path.gsub('.', '_')
  return send(method) if respond_to?(path, true)
  return instance.read_entry(path, options) if respond_to?(:instance)

  raise "Method \"#{method}\" not found for entry \"#{path}\""
end

#run(instance) ⇒ Object



52
53
54
# File 'lib/avm/docker/image.rb', line 52

def run(instance)
  run_run(instance) if container_exist?(instance)
end

#tagObject



56
57
58
59
60
# File 'lib/avm/docker/image.rb', line 56

def tag
  r = tag_name
  r += ":#{tag_version}" if tag_version.present?
  r
end

#tag_nameObject



62
63
64
65
66
# File 'lib/avm/docker/image.rb', line 62

def tag_name
  return registry.name if registry.name.present?

  raise 'Registry name is blank'
end

#tag_versionObject



68
69
70
# File 'lib/avm/docker/image.rb', line 68

def tag_version
  [tag_version_version, stereotype_tag].reject(&:blank?).join('_')
end

#tag_version_versionObject



72
73
74
75
76
77
78
# File 'lib/avm/docker/image.rb', line 72

def tag_version_version
  return nil unless version

  r = generator_version
  r += '-snapshot' if snapshot
  r
end