Module: GClouder::Resources::Region

Includes:
Config::CLIArgs, Config::Project, Helpers, Logging, Local
Defined in:
lib/gclouder/resources.rb

Class Method Summary collapse

Methods included from Local

#get_section, included

Methods included from Config::CLIArgs

check, #cli_args, cli_args, included, load, valid_resources

Methods included from Config::Project

load, #project, project

Methods included from Helpers

#hash_to_args, included, #module_exists?, #to_arg, #to_deep_merge_hash, #valid_json?

Methods included from Logging

#add, #bad, #change, #debug, #error, #fatal, #good, included, #info, log, loggers, #remove, report, #resource_state, setup, #warn, #warning

Class Method Details

.instances(path: []) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/gclouder/resources.rb', line 43

def self.instances(path: [])
  return {} unless project.key?("regions")

  data = project["regions"].each_with_object({}) do |(region, region_config), instances|
    instances[region] ||= []

    data = get_section(region_config, path, silent: true)

    data.each do |instance|
      if GClouder::Config::Defaults.section?(path)
        defaults = to_deep_merge_hash(GClouder::Config::Defaults.section(path))
        instance = defaults.deep_merge(instance)
      end

      instances[region] << instance
    end
  end

  data.delete_if { |_k, v| v.empty? }
end