Class: EasyManager::Scaleway

Inherits:
Object
  • Object
show all
Defined in:
lib/easymanager/scaleway/main.rb,
lib/easymanager/scaleway/ips.rb,
lib/easymanager/scaleway/config.rb,
lib/easymanager/scaleway/servers.rb

Overview

Scaleway Class with global methods

Defined Under Namespace

Classes: Config, Ips, Servers

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Scaleway

Returns a new instance of Scaleway.



12
13
14
15
16
17
18
# File 'lib/easymanager/scaleway/main.rb', line 12

def initialize(options)
  @secret_token = options[:secret_token]
  @zone = options[:zone]
  @project = options[:project]
  @api_url = 'https://api.scaleway.com/'
  @headers = { 'X-Auth-Token' => @secret_token, 'Content-Type' => 'application/json' }
end

Instance Attribute Details

#api_urlObject (readonly)

Returns the value of attribute api_url.



10
11
12
# File 'lib/easymanager/scaleway/main.rb', line 10

def api_url
  @api_url
end

#headersObject (readonly)

Returns the value of attribute headers.



10
11
12
# File 'lib/easymanager/scaleway/main.rb', line 10

def headers
  @headers
end

#projectObject (readonly)

Returns the value of attribute project.



10
11
12
# File 'lib/easymanager/scaleway/main.rb', line 10

def project
  @project
end

#providerObject (readonly)

Returns the value of attribute provider.



10
11
12
# File 'lib/easymanager/scaleway/main.rb', line 10

def provider
  @provider
end

#secret_tokenObject (readonly)

Returns the value of attribute secret_token.



10
11
12
# File 'lib/easymanager/scaleway/main.rb', line 10

def secret_token
  @secret_token
end

#zoneObject (readonly)

Returns the value of attribute zone.



10
11
12
# File 'lib/easymanager/scaleway/main.rb', line 10

def zone
  @zone
end

Instance Method Details

#create(options) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/easymanager/scaleway/main.rb', line 24

def create(options)
  srv_type = options[:srv_type] || 'DEV1-S'
  image = options[:image] || 'ubuntu-jammy'
  name_pattern = options[:name_pattern] || 'scw-easymanager-__RANDOM__'
  tags = options[:tags] || []
  cloud_init = options[:cloud_init] || false

  Servers.create(self, srv_type, image, name_pattern, tags, cloud_init)
end

#delete(srv) ⇒ Object



34
35
36
# File 'lib/easymanager/scaleway/main.rb', line 34

def delete(srv)
  Servers.delete(self, srv['id'], srv['public_ip']['id'])
end

#delete_by_id(id) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/easymanager/scaleway/main.rb', line 38

def delete_by_id(id)
  response = nil
  servers = list

  servers.each do |server|
    next unless server['id'] == id

    response = delete(server)
  end

  response
end

#listObject



20
21
22
# File 'lib/easymanager/scaleway/main.rb', line 20

def list
  Servers.list(self)
end

#srv_ready?(srv, ssh) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/easymanager/scaleway/main.rb', line 55

def srv_ready?(srv, ssh)
  Servers.ready?(self, srv, ssh, srv_ready_cmds)
end

#status(srv) ⇒ Object



51
52
53
# File 'lib/easymanager/scaleway/main.rb', line 51

def status(srv)
  Servers.status(self, srv['id'])
end

#wait_until_ready!(srv, ssh, timeout = 600) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/easymanager/scaleway/main.rb', line 59

def wait_until_ready!(srv, ssh, timeout = 600)
  ready = false
  start = Time.now
  loop do
    ready = srv_ready?(srv, ssh)
    break if ready || Utilities.elapsed_times(Time.now.to_s, start.to_s) >= timeout

    sleep(30)
  end

  ready
end