Class: Hako::DefinitionLoader
- Inherits:
-
Object
- Object
- Hako::DefinitionLoader
- Defined in:
- lib/hako/definition_loader.rb
Instance Method Summary collapse
-
#initialize(app, dry_run:) ⇒ DefinitionLoader
constructor
A new instance of DefinitionLoader.
- #load(tag: nil, with: nil) ⇒ Hash<String, Container>
- #load_containers_from_name(tag, container_names, sidecars) ⇒ Hash<String, Container> private
Constructor Details
#initialize(app, dry_run:) ⇒ DefinitionLoader
Returns a new instance of DefinitionLoader.
12 13 14 15 |
# File 'lib/hako/definition_loader.rb', line 12 def initialize(app, dry_run:) @app = app @dry_run = dry_run end |
Instance Method Details
#load(tag: nil, with: nil) ⇒ Hash<String, Container>
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/hako/definition_loader.rb', line 20 def load(tag: nil, with: nil) # XXX: Load additional_containers for compatibility sidecars = @app.definition.fetch('sidecars', @app.definition.fetch('additional_containers', {})) container_names = ['app'] if with container_names.concat(with) else container_names.concat(sidecars.keys) end load_containers_from_name(tag, container_names, sidecars) end |
#load_containers_from_name(tag, container_names, sidecars) ⇒ Hash<String, Container> (private)
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/hako/definition_loader.rb', line 39 def load_containers_from_name(tag, container_names, sidecars) names = Set.new(container_names) containers = {} while containers.size < names.size names.difference(containers.keys).each do |name| containers[name] = case name when 'app' @app.definition['app']['tag'] = tag if tag AppContainer.new(@app, @app.definition['app'], dry_run: @dry_run) else Container.new(@app, sidecars.fetch(name), dry_run: @dry_run) end containers[name].links.each do |link| m = link.match(/\A([^:]+):([^:]+)\z/) names << (m ? m[1] : link) end containers[name].volumes_from.each do |volumes_from| names << volumes_from[:source_container] end end end containers end |