class Cucumber::Chef::Config
Constants
- KEYS
- MODES
- PROVIDERS
- PROVIDER_AWS_KEYS
- PROVIDER_VAGRANT_KEYS
Public Class Methods
aws_image_id()
click to toggle source
# File lib/cucumber/chef/config.rb, line 152 def self.aws_image_id if self[:aws][:aws_image_id] return self[:aws][:aws_image_id] elsif (self[:aws][:ubuntu_release] && self[:aws][:region]) ami = Ubuntu.release(self[:aws][:ubuntu_release]).amis.find do |ami| ami.arch == (self[:aws][:aws_instance_arch] || "i386") && ami.root_store == (self[:aws][:aws_instance_disk_store] || "instance-store") && ami.region == self[:aws][:region] end return ami.name if ami end message = "Could not find a valid AMI image ID. Please check your configuration." Cucumber::Chef.logger.fatal { message } raise ConfigError, message end
duplicate(input)
click to toggle source
# File lib/cucumber/chef/config.rb, line 60 def self.duplicate(input) output = Hash.new input.each do |key, value| output[key] = (value.is_a?(Hash) ? self.duplicate(input[key]) : value.to_s.dup) end output end
inspect()
click to toggle source
# File lib/cucumber/chef/config.rb, line 54 def self.inspect configuration.inspect end
load()
click to toggle source
# File lib/cucumber/chef/config.rb, line 68 def self.load config_rb = Cucumber::Chef.config_rb Cucumber::Chef.logger.debug { "Attempting to load cucumber-chef configuration from '%s'." % config_rb } self.from_file(config_rb) self.verify Cucumber::Chef.logger.debug { "Successfully loaded cucumber-chef configuration from '%s'." % config_rb } log_dump = self.duplicate(self.configuration) log_dump[:aws].merge!(:aws_access_key_id => "[REDACTED]", :aws_secret_access_key => "[REDACTED]") Cucumber::Chef.logger.debug { log_dump.inspect } self rescue Errno::ENOENT, UtilityError raise ConfigError, "Could not find your cucumber-chef configuration file; did you run 'cucumber-chef init'?" end
test()
click to toggle source
# File lib/cucumber/chef/config.rb, line 84 def self.test self.load self[:mode] = :test self end
verify()
click to toggle source
# File lib/cucumber/chef/config.rb, line 92 def self.verify self.verify_keys self.verify_provider_keys eval("self.verify_provider_#{self[:provider].to_s.downcase}") Cucumber::Chef.logger.debug { "Configuration verified successfully" } end
verify_keys()
click to toggle source
# File lib/cucumber/chef/config.rb, line 101 def self.verify_keys Cucumber::Chef.logger.debug { "Checking for missing configuration keys" } missing_keys = KEYS.select{ |key| !self[key.to_sym] } if missing_keys.count > 0 message = "Configuration incomplete, missing configuration keys: #{missing_keys.join(", ")}" Cucumber::Chef.logger.fatal { message } raise ConfigError, message end Cucumber::Chef.logger.debug { "Checking for invalid configuration keys" } invalid_keys = KEYS.select{ |key| !eval("#{key.to_s.upcase}S").include?(self[key]) } if invalid_keys.count > 0 message = "Configuration incomplete, invalid configuration keys: #{invalid_keys.join(", ")}" Cucumber::Chef.logger.fatal { message } raise ConfigError, message end end
verify_provider_aws()
click to toggle source
# File lib/cucumber/chef/config.rb, line 133 def self.verify_provider_aws if self[:aws][:aws_access_key_id] && self[:aws][:aws_secret_access_key] compute = Fog::Compute.new(:provider => 'AWS', :aws_access_key_id => self[:aws][:aws_access_key_id], :aws_secret_access_key => self[:aws][:aws_secret_access_key]) compute.describe_availability_zones end rescue Fog::Service::Error => err message = "Invalid AWS credentials. Please check your configuration. #{err.inspect}" Cucumber::Chef.logger.fatal { message } raise ConfigError, message end
verify_provider_keys()
click to toggle source
# File lib/cucumber/chef/config.rb, line 121 def self.verify_provider_keys Cucumber::Chef.logger.debug { "Checking for missing provider keys" } missing_keys = eval("PROVIDER_#{self[:provider].to_s.upcase}_KEYS").select{ |key| !self[self[:provider]].key?(key) } if missing_keys.count > 0 message = "Configuration incomplete, missing provider configuration keys: #{missing_keys.join(", ")}" Cucumber::Chef.logger.fatal { message } raise ConfigError, message end end
verify_provider_vagrant()
click to toggle source
# File lib/cucumber/chef/config.rb, line 146 def self.verify_provider_vagrant # NOOP end