class Stemcell::MetadataSource::Configuration
Attributes
all_options[R]
availability_zones[R]
backing_store_options[R]
config_path[R]
default_options[R]
Public Class Methods
new(config_path)
click to toggle source
# File lib/stemcell/metadata_source/configuration.rb, line 14 def initialize(config_path) @config_path = config_path if config_path.nil? raise ArgumentError, "You must specify a configuration file" end read_configuration validate_configutation end
Public Instance Methods
options_for_backing_store(backing_store, region)
click to toggle source
# File lib/stemcell/metadata_source/configuration.rb, line 24 def options_for_backing_store(backing_store, region) options = backing_store_options[backing_store] raise UnknownBackingStoreError.new(backing_store) if options.nil? options.fetch(region, options) end
random_az_for_region(region)
click to toggle source
# File lib/stemcell/metadata_source/configuration.rb, line 30 def random_az_for_region(region) (availability_zones[region] || []).sample end
Private Instance Methods
read_configuration()
click to toggle source
# File lib/stemcell/metadata_source/configuration.rb, line 36 def read_configuration begin @all_options = JSON.parse(File.read(config_path)) rescue Errno::ENOENT raise Stemcell::MissingMetadataConfigError rescue => e raise Stemcell::MetadataConfigParseError, e.message end @default_options = @all_options['defaults'] @backing_store_options = @all_options['backing_store'] @availability_zones = @all_options['availability_zones'] end
validate_configutation()
click to toggle source
# File lib/stemcell/metadata_source/configuration.rb, line 50 def validate_configutation errors = [] if default_options.nil? errors << "missing required section 'defaults'; " \ "should be a hash containing default launch options" end if backing_store_options.nil? || backing_store_options.empty? errors << "missing or empty section 'backing_store'" errors << "'backing_store' should be a hash from " \ "store type (like 'ebs') => hash of options for that store" end if availability_zones.nil? errors << "missing or empty section 'availability_zones'" errors << "'availability_zones' should be a hash from " \ "region name => list of allowed zones in that region" end unless errors.empty? raise Stemcell::MetadataConfigParseError, errors.join("; ") end end