Class: Souffle::Provisioner

Inherits:
Object
  • Object
show all
Defined in:
lib/souffle/provisioner.rb,
lib/souffle/provisioner.rb

Overview

Starts up the base provisioner class with system and node state machines.

Defined Under Namespace

Classes: Node, System

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeProvisioner

Creates a new provisioner.



12
13
14
15
# File 'lib/souffle/provisioner.rb', line 12

def initialize
  @provider = initialize_provider
  @provisioner = nil
end

Instance Attribute Details

#providerObject (readonly)

Returns the value of attribute provider.



9
10
11
# File 'lib/souffle/provisioner.rb', line 9

def provider
  @provider
end

#systemObject (readonly)

Returns the value of attribute system.



9
10
11
# File 'lib/souffle/provisioner.rb', line 9

def system
  @system
end

Instance Method Details

#begin_provisioningObject

Starts the provisioning process keeping a local lookup to the provisioner.



51
52
53
# File 'lib/souffle/provisioner.rb', line 51

def begin_provisioning
  @provisioner = Souffle::Provisioner::System.new(@system, @provider)
end

#cleanup_provider(provider) ⇒ String

Cleans up the provider name to match the providers we have.

Parameters:

  • provider (String)

    The name of the provider to use.

Returns:

  • (String)

    The cleaned up provider name.



31
32
33
34
35
# File 'lib/souffle/provisioner.rb', line 31

def cleanup_provider(provider)
  lookups = {}
  Souffle::Provider.constants.each { |k| lookups[k.to_s.downcase] = k.to_s }
  lookups.fetch([provider.downcase], provider)
end

#initialize_provider(provider = nil) ⇒ Object

Sets up the given provider to be used for the creation of a system.

Parameters:

  • provider (String) (defaults to: nil)

    The system provider to use for provisioning.



40
41
42
43
44
45
46
47
48
# File 'lib/souffle/provisioner.rb', line 40

def initialize_provider(provider=nil)
  prv = cleanup_provider(Souffle::Config[:provider])
  Souffle::Provider.const_get(prv).new
rescue Souffle::Exceptions::InvalidAwsKeys => e
  Souffle::Log.error "#{e.message}:\n#{e.backtrace.join("\n")}"
rescue Exception
  raise Souffle::Exceptions::InvalidProvider,
    "The provider Souffle::Provider::#{prv} does not exist."
end

#setup_system(system_hash) ⇒ Object

Creates the system object from a hash.

Parameters:

  • system_hash (Hash)

    The system represented in hash format.



20
21
22
23
24
# File 'lib/souffle/provisioner.rb', line 20

def setup_system(system_hash)
  @system = Souffle::System.from_hash(system_hash)
  @provider = initialize_provider(
    cleanup_provider(@system.try_opt[:provider]))
end