Module: Nvoi::External::Cloud::Factory

Defined in:
lib/nvoi/external/cloud/factory.rb

Overview

Factory creates cloud providers from config

Class Method Summary collapse

Class Method Details

.for(config) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/nvoi/external/cloud/factory.rb', line 9

def for(config)
  case config.provider_name
  when "hetzner"
    h = config.hetzner
    Hetzner.new(h.api_token)
  when "aws"
    a = config.aws
    Aws.new(a.access_key_id, a.secret_access_key, a.region)
  when "scaleway"
    s = config.scaleway
    Scaleway.new(s.secret_key, s.project_id, zone: s.zone)
  else
    raise Errors::ProviderError, "unknown provider: #{config.provider_name}"
  end
end

.validate(config, provider) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/nvoi/external/cloud/factory.rb', line 25

def validate(config, provider)
  case config.provider_name
  when "hetzner"
    h = config.hetzner
    provider.validate_credentials
    provider.validate_instance_type(h.server_type)
    provider.validate_region(h.server_location)
  when "aws"
    a = config.aws
    provider.validate_credentials
    provider.validate_instance_type(a.instance_type)
    provider.validate_region(a.region)
  when "scaleway"
    s = config.scaleway
    provider.validate_credentials
    provider.validate_instance_type(s.server_type)
    provider.validate_region(s.zone)
  end
end