class Skeme::CloudProviders::Aws
Public Class Methods
new(options={})
click to toggle source
TODO: Allow a preferred region/az if it's known
# File lib/cloud_providers/aws.rb, line 23 def initialize(options={}) @@logger = options[:logger] if options[:aws_access_key_id] && options[:aws_secret_access_key] @@logger.info("AWS credentials supplied. EC2 Tagging Enabled.") fog_aws_compute = Fog::Compute.new({:aws_access_key_id => options[:aws_access_key_id], :aws_secret_access_key => options[:aws_secret_access_key], :provider => 'AWS'}) fog_aws_compute.describe_regions.body['regionInfo'].each do |region| @@fog_aws_computes.store(region['regionName'], Fog::Compute.new({ :aws_access_key_id => options[:aws_access_key_id], :aws_secret_access_key => options[:aws_secret_access_key], :provider => 'AWS', :host => region['regionEndpoint'] }) ) end end end
Public Instance Methods
set_tag(params={})
click to toggle source
# File lib/cloud_providers/aws.rb, line 41 def set_tag(params={}) tag(params.merge({:action => "set"})) end
unset_tag(params={})
click to toggle source
# File lib/cloud_providers/aws.rb, line 45 def unset_tag(params={}) tag(params.merge({:action => "unset"})) end
Private Instance Methods
tag(params={})
click to toggle source
# File lib/cloud_providers/aws.rb, line 51 def tag(params={}) if @@fog_aws_computes tag = params[:ec2_tag] || params[:tag] setting = params[:action] == "set" taggable_resources = [:ec2_instance_id, :ec2_ebs_volume_id, :ec2_ebs_snapshot_id] supplied_id_type = taggable_resources & params.keys supplied_id_type.each do |resource_id_key| resource_id = params[resource_id_key] if setting @@logger.info("Tagging AWS resource id (#{resource_id}) with (#{tag})") not_found_exceptions = [] @@fog_aws_computes.each do |key,val| begin val.create_tags(resource_id, {tag => nil}) rescue Fog::Service::NotFound => e not_found_exceptions << e end end if @@fog_aws_computes.count > 0 && not_found_exceptions.count == @@fog_aws_computes.count raise not_found_exceptions.first end else @@logger.info("Removing tag (#{tag}) from AWS resource id (#{resource_id})") not_found_exceptions = [] @@fog_aws_computes.each do |key,val| begin val.delete_tags(resource_id, {tag => nil}) rescue Fog::Service::NotFound => e not_found_exceptions << e end end if @@fog_aws_computes.count > 0 && not_found_exceptions.count == @@fog_aws_computes.count raise not_found_exceptions.first end end end end end