Class: Bcome::Driver::Ec2

Inherits:
Base
  • Object
show all
Defined in:
lib/objects/driver/ec2.rb

Constant Summary collapse

PATH_TO_FOG_CREDENTIALS =
'.aws/keys'

Instance Method Summary collapse

Methods inherited from Base

#config, create_from_config, klass_for_type, #loader_completed_title, #loader_title, #spoof_fetch_server_list

Methods included from LoadingBar::Handler

#cursor, #do_signal, #fork_process, #signal_failure, #signal_stop, #signal_success, #start_indicator, #stop_indicator, #wrap_indicator

Constructor Details

#initialize(*params) ⇒ Ec2

Returns a new instance of Ec2.



9
10
11
12
13
14
15
# 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

Instance Method Details

#credentials_keyObject



71
72
73
# File 'lib/objects/driver/ec2.rb', line 71

def credentials_key
  @params[:credentials_key]
end

#fetch_server_list(legacy_ec2_filters) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 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_clientObject



25
26
27
# File 'lib/objects/driver/ec2.rb', line 25

def fog_client
  @fog_client ||= get_fog_client
end

#has_network_credentials?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/objects/driver/ec2.rb', line 56

def has_network_credentials?
  true
end

#loadingObject



52
53
54
# File 'lib/objects/driver/ec2.rb', line 52

def loading
  fog_client.servers.all({})
end

#network_credentialsObject



60
61
62
63
64
65
# 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_nameObject



17
18
19
# File 'lib/objects/driver/ec2.rb', line 17

def pretty_provider_name
  'EC2'
end

#pretty_resource_locationObject



21
22
23
# File 'lib/objects/driver/ec2.rb', line 21

def pretty_resource_location
  @node.network_data[:provisioning_region]
end

#provisioning_regionObject



75
76
77
# File 'lib/objects/driver/ec2.rb', line 75

def provisioning_region
  @params[:provisioning_region]
end

#raw_fog_credentialsObject



67
68
69
# 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_listObject



48
49
50
# File 'lib/objects/driver/ec2.rb', line 48

def unfiltered_server_list
  @unfiltered_server_list ||= fog_client.servers.all({})
end