Module: Deltacloud::Helpers::Drivers

Included in:
Database::Provider, EC2::API, Database, Library
Defined in:
lib/deltacloud/helpers/driver_helper.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object

This will make the Driver helpers, like ‘driver’ accessible on class level



23
24
25
# File 'lib/deltacloud/helpers/driver_helper.rb', line 23

def Drivers.included(klass)
  klass.extend Deltacloud::Helpers::Drivers
end

Instance Method Details

#driverObject



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/deltacloud/helpers/driver_helper.rb', line 52

def driver
  $:.unshift File.join(File.dirname(__FILE__), '..', '..')
  begin
    driver_class
  rescue NameError => e
    require_relative(driver_source_name) ? retry : raise(LoadError.new(e.message))
  rescue LoadError => e
    raise "[ERROR] The driver '#{driver_name}' is unknown or not installed (#{driver_source_name})\n" +
      "\n#{e.message}\n"
  end
end

#driver_classObject



47
48
49
50
# File 'lib/deltacloud/helpers/driver_helper.rb', line 47

def driver_class
  m = Deltacloud::Drivers.const_get(driver_class_name)
  m.const_get(driver_class_name + "Driver").new
end

#driver_class_nameObject



39
40
41
# File 'lib/deltacloud/helpers/driver_helper.rb', line 39

def driver_class_name
  driver_name.camelize
end

#driver_nameObject



31
32
33
# File 'lib/deltacloud/helpers/driver_helper.rb', line 31

def driver_name
  Thread.current[:driver] ||= Deltacloud.default_frontend.default_driver.to_s
end

#driver_source_nameObject



43
44
45
# File 'lib/deltacloud/helpers/driver_helper.rb', line 43

def driver_source_name
  File.join('..', 'drivers', driver_name, driver_name + '_driver.rb')
end

#driver_symbolObject



27
28
29
# File 'lib/deltacloud/helpers/driver_helper.rb', line 27

def driver_symbol
  driver_name.to_sym
end

#provider_nameObject



35
36
37
# File 'lib/deltacloud/helpers/driver_helper.rb', line 35

def provider_name
  Thread.current[:provider] || ENV['API_PROVIDER']
end