class Chef::Provider::AwsLaunchConfiguration
Protected Instance Methods
create_aws_object()
click to toggle source
# File lib/chef/provider/aws_launch_configuration.rb, line 10 def create_aws_object image_id = Chef::Resource::AwsImage.get_aws_object_id(new_resource.image, resource: new_resource) instance_type = new_resource.instance_type || new_resource.driver.default_instance_type options = AWSResource.lookup_options(new_resource.options || options, resource: new_resource) options[:launch_configuration_name] = new_resource.name if new_resource.name options[:image_id] = image_id options[:instance_type] = instance_type if options[:user_data] options[:user_data] = ensure_base64_encoded(options[:user_data]) end converge_by "create launch configuration #{new_resource.name} in #{region}" do new_resource.driver.auto_scaling_client.create_launch_configuration(options) end end
destroy_aws_object(launch_configuration)
click to toggle source
# File lib/chef/provider/aws_launch_configuration.rb, line 41 def destroy_aws_object(launch_configuration) converge_by "delete launch configuration #{new_resource.name} in #{region}" do # TODO: add a timeout here. # TODO is InUse really a status guaranteed to go away?? begin new_resource.driver.auto_scaling_client.delete_launch_configuration(launch_configuration_name: launch_configuration.launch_configuration_name) rescue ::Aws::AutoScaling::Errors::ResourceInUse sleep 5 retry end end end
update_aws_object(launch_configuration)
click to toggle source
# File lib/chef/provider/aws_launch_configuration.rb, line 26 def update_aws_object(launch_configuration) if new_resource.image image_id = Chef::Resource::AwsImage.get_aws_object_id(new_resource.image, resource: new_resource) if image_id != launch_configuration.image_id raise "#{new_resource}.image = #{new_resource.image}, but actual launch configuration has image set to #{launch_configuration.image_id}. Cannot be modified!" end end if new_resource.instance_type if new_resource.instance_type != launch_configuration.instance_type raise "#{new_resource}.instance_type = #{new_resource.instance_type}, but actual launch configuration has instance_type set to #{launch_configuration.instance_type}. Cannot be modified!" end end # TODO: compare options end
Private Instance Methods
ensure_base64_encoded(data)
click to toggle source
# File lib/chef/provider/aws_launch_configuration.rb, line 56 def ensure_base64_encoded(data) Base64.strict_decode64(data) data rescue ArgumentError Base64.encode64(data) end