class Bcome::Driver::Ec2

Constants

PATH_TO_FOG_CREDENTIALS

Public Class Methods

new(*params) click to toggle source
Calls superclass method Bcome::Driver::Base::new
# File lib/objects/driver/ec2.rb, line 9
def initialize(*params)
  super
  raise Bcome::Exception::Ec2DriverMissingProvisioningRegion, params.inspect unless provisioning_region
  raise ::Bcome::Exception::Ec2DriverMissingAuthorizationKeys, PATH_TO_FOG_CREDENTIALS unless File.exist?(PATH_TO_FOG_CREDENTIALS)

  ENV['FOG_RC'] = PATH_TO_FOG_CREDENTIALS
end

Public Instance Methods

credentials_key() click to toggle source
# File lib/objects/driver/ec2.rb, line 71
def credentials_key
  @params[:credentials_key]
end
fetch_server_list(legacy_ec2_filters) click to toggle source
# File lib/objects/driver/ec2.rb, line 29
def fetch_server_list(legacy_ec2_filters)
  # Filters should be defined within a namespace's :network element. Pre 2.0 the expection for AWS was
  # to define filters at the root level of the namespace. Here we move :filters into :network, yet retain
  # ec2_filters at the root level for backwards compaibility with pre 2.0 versions.
  filters = config.key?(:filters) ? config[:filters] : legacy_ec2_filters

  wrap_indicator type: :basic, title: loader_title, completed_title: loader_completed_title do
    begin
      @servers = unfiltered_server_list.all(filters)
      signal_success
    rescue Exception => e
      signal_failure
      raise e
    end
  end

  @servers
end
fog_client() click to toggle source
# File lib/objects/driver/ec2.rb, line 25
def fog_client
  @fog_client ||= get_fog_client
end
has_network_credentials?() click to toggle source
# File lib/objects/driver/ec2.rb, line 56
def has_network_credentials?
  true
end
loading() click to toggle source
# File lib/objects/driver/ec2.rb, line 52
def loading
  fog_client.servers.all({})
end
network_credentials() click to toggle source
# File lib/objects/driver/ec2.rb, line 60
def network_credentials
  {
    access_key: raw_fog_credentials['aws_access_key_id'],
    secret_key: raw_fog_credentials['aws_secret_access_key']
  }
end
pretty_provider_name() click to toggle source
# File lib/objects/driver/ec2.rb, line 17
def pretty_provider_name
  'EC2'
end
pretty_resource_location() click to toggle source
# File lib/objects/driver/ec2.rb, line 21
def pretty_resource_location
  @node.network_data[:provisioning_region]
end
provisioning_region() click to toggle source
# File lib/objects/driver/ec2.rb, line 75
def provisioning_region
  @params[:provisioning_region]
end
raw_fog_credentials() click to toggle source
# File lib/objects/driver/ec2.rb, line 67
def raw_fog_credentials
  @raw_fog_credentials ||= YAML.load_file(PATH_TO_FOG_CREDENTIALS)[credentials_key]
end
unfiltered_server_list() click to toggle source
# File lib/objects/driver/ec2.rb, line 48
def unfiltered_server_list
  @unfiltered_server_list ||= fog_client.servers.all({})
end

Protected Instance Methods

get_fog_client() click to toggle source
# File lib/objects/driver/ec2.rb, line 81
def get_fog_client
  ::Fog.credential = credentials_key

  client = ::Fog::Compute.new(
    provider: 'AWS',
    region: provisioning_region
  )
  client
end