class Rivet::LaunchConfig
Constants
- ATTRIBUTES
Attributes
config[R]
id_prefix[R]
Public Class Methods
new(config, id_prefix = 'rivet_')
click to toggle source
# File lib/rivet/as/launch_config.rb, line 16 def initialize(config, id_prefix = 'rivet_') @config = config @id_prefix = id_prefix ATTRIBUTES.each do |a| if config.respond_to?(a) Rivet::Log.debug "Setting LaunchConfig @#{a} to #{config.send(a)}" instance_variable_set("@#{a}", config.send(a)) end end end
Public Instance Methods
identity()
click to toggle source
# File lib/rivet/as/launch_config.rb, line 32 def identity @identity ||= generate_identity end
save()
click to toggle source
# File lib/rivet/as/launch_config.rb, line 36 def save AwsUtils.verify_security_groups(security_groups) lc_collection = AWS::AutoScaling.new.launch_configurations if lc_collection[identity].exists? Rivet::Log.info "Launch configuration #{identity} already exists in AWS" else options = {} options[:key_pair] = key_name unless key_name.nil? options[:security_groups] = security_groups unless security_groups.nil? options[:user_data] = user_data unless user_data.nil? options[:iam_instance_profile] = iam_instance_profile unless iam_instance_profile.nil? options[:associate_public_ip_address] = associate_public_ip_address unless associate_public_ip_address.nil? options[:detailed_instance_monitoring] = detailed_instance_monitoring unless detailed_instance_monitoring.nil? options[:block_device_mappings] = block_device_mappings unless block_device_mappings.nil? options[:kernel_id] = kernel_id unless kernel_id.nil? options[:ramdisk_id] = ramdisk_id unless ramdisk_id.nil? options[:spot_price] = spot_price unless spot_price.nil? Rivet::Log.info "Saving launch configuration #{identity} to AWS" Rivet::Log.debug "Launch Config options:\n #{options.inspect}" lc_collection.create(identity, image_id, instance_type, options) end end
user_data()
click to toggle source
# File lib/rivet/as/launch_config.rb, line 28 def user_data @user_data ||= Bootstrap.new(@config).user_data end
Protected Instance Methods
build_identity_string()
click to toggle source
# File lib/rivet/as/launch_config.rb, line 64 def build_identity_string identity = ATTRIBUTES.inject('') do |accum, attribute| if attribute != :bootstrap attr_value = if self.send(attribute).nil? "\0" else self.send(attribute) end attr_value = attr_value.join("\t") if attr_value.respond_to? :join attr_value = attr_value.to_s if !!attr_value == attr_value accum << attribute.to_s accum << Base64.encode64(attr_value) else accum << attribute.to_s accum << Base64.encode64(user_data ? user_data : "\0") end accum end identity end
generate_identity()
click to toggle source
# File lib/rivet/as/launch_config.rb, line 85 def generate_identity @id_prefix + Digest::SHA1.hexdigest(build_identity_string) end