module GClouder::Resources::Compute::Instances::Local

Public Class Methods

create_from_mapping(mappings, value) click to toggle source
# File lib/gclouder/resources/compute/instances.rb, line 99
def self.create_from_mapping(mappings, value)
  mappings.reverse.inject(value) { |obj, key| key.is_a?(Integer) ? [obj] : { key => obj } }
end
instance_names() click to toggle source
# File lib/gclouder/resources/compute/instances.rb, line 83
def self.instance_names
  list.map { |region, instances| instances.each.map { |instance| instance["name"] } }.flatten
end
list() click to toggle source
# File lib/gclouder/resources/compute/instances.rb, line 79
def self.list
  Resources::Region.instances(path: section)
end
manipulated() click to toggle source

manipulate local resources so they're comparable with remote..

FIXME this could be automated:

  • iterate over compute::instaces

  • create key for each value

  • assign config to newly made key

# File lib/gclouder/resources/compute/instances.rb, line 110
def self.manipulated
  list.each do |_region, resources|
    resources.each do |resource|
      data_structure = create_from_mapping(mappings, resource["subnet"])
      resource.merge! data_structure["compute"]["instances"]
      resource.delete("subnet")
      resource
    end
  end
end
mappings() click to toggle source
# File lib/gclouder/resources/compute/instances.rb, line 95
def self.mappings
  Mappings::Property.section(["compute::instances", "subnet"])
end
section() click to toggle source
# File lib/gclouder/resources/compute/instances.rb, line 75
def self.section
  %w(compute instances)
end
validate() click to toggle source
# File lib/gclouder/resources/compute/instances.rb, line 87
def self.validate
  Resources::Validate::Region.instances(
    list,
    required_keys:  GClouder::Config::Arguments.required(section),
    permitted_keys: GClouder::Config::Arguments.permitted(section),
  )
end