class EC2Launcher::ApplicationProcessor
Attributes
applications[RW]
Public Class Methods
new(base_directory, applications_directories)
click to toggle source
# File lib/ec2launcher/application_processor.rb, line 17 def initialize(base_directory, applications_directories) app_dirs = process_directory_list(base_directory, applications_directories, "applications", "Applications", true) # Load applications @applications = {} app_dirs.each do |app_dir| Dir.entries(app_dir).each do |application_name| filename = File.join(app_dir, application_name) next if File.directory?(filename) apps = EC2Launcher::DSL::ApplicationDSL.execute(File.read(filename)).applications apps.each do |new_application| @applications[new_application.name] = new_application validate_application(filename, new_application) end end end # Process inheritance rules for applications @applications.values.each do |app| next if app.inherit.nil? new_app = process_application_inheritance(app) @applications[new_app.name] = new_app end end
Private Instance Methods
process_application_inheritance(app)
click to toggle source
# File lib/ec2launcher/application_processor.rb, line 46 def process_application_inheritance(app) return app if app.inherit.nil? # Find base application base_app = @applications[app.inherit] abort("Invalid inheritance '#{app.inherit}' in #{app.name}") if base_app.nil? new_app = nil if base_app.inherit.nil? # Clone base application new_app = Marshal::load(Marshal.dump(base_app)) else new_app = process_application_inheritance(base_app) end new_app.merge(app) new_app end
validate_application(filename, application)
click to toggle source
Validates all settings in an application file
@param [String] filename name of the application file @param [EC2Launcher::DSL::Application] application application object to validate
# File lib/ec2launcher/application_processor.rb, line 69 def validate_application(filename, application) unless application.availability_zone.nil? || AVAILABILITY_ZONES.include?(application.availability_zone) abort("Invalid availability zone '#{application.availability_zone}' in application '#{application.name}' (#{filename})") end unless application.instance_type.nil? || INSTANCE_TYPES.include?(application.instance_type) abort("Invalid instance type '#{application.instance_type}' in application '#{application.name}' (#{filename})") end end