easy_manager 0.9.3 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bfb1e50bc8e3aa5d0b6387b1464774ceab853e72e476bbfdde0235da92cb5fa5
4
- data.tar.gz: 559ec2811c9aed00b58e32e020635e8d0eb65e9843fd44168c5ecb16e66cc7b2
3
+ metadata.gz: 3c69241067a306ea8a4121569bb19963b9531cc8ba7a44ba01be9c742220a8f1
4
+ data.tar.gz: d14b0fc7bb8d684acfa7c836765ad86bcc562b69507262a2161a6312e40afbea
5
5
  SHA512:
6
- metadata.gz: ddded25e7989bf1e70dd6d13571f3e7d2ff7cbb998683d62c11c90102b8d781e3803b977f8c6b7b86342923602d10514bc8896b227506fa36820e59e054155c0
7
- data.tar.gz: bd1a66cfc21f9f3e6b541345114204fa00a335d46942d7b715df2c20101ed0e2654b0f94ba77739ac6e59a776611a13538112a2925d28fc6b6f997e0a3c1aee7
6
+ metadata.gz: 55e47bd71a06f13344ead528da9276e682739af5eb2269f72a368072113c87a394609dc47bbb0f73fd93c96fca01ae6fdd7d42a696cdd03652315174abaa3166
7
+ data.tar.gz: 811d7c1e4033c69ac3738796ed984a630cb9f31f28eee2b30c1364438a9ebed309bf8b8901c4a4c13afdc5ce6a8eec313ef562aa5c39701118db80d2226bc21f
@@ -18,11 +18,16 @@ class EasyManager
18
18
  Utilities.parse_json(response.body)
19
19
  end
20
20
 
21
- def self.delete(scw, ip_id)
22
- Typhoeus.delete(
21
+ def self.delete(scw, ip_id, tries = 0)
22
+ resp = Typhoeus.delete(
23
23
  File.join(scw.api_url, "/instance/v1/zones/#{scw.zone}/ips/#{ip_id}"),
24
24
  headers: scw.headers
25
25
  )
26
+ return resp if resp&.code == 204
27
+
28
+ sleep(rand(10..60))
29
+ tries += 1
30
+ delete(scw, ip_id, tries) unless tries >= 3
26
31
  end
27
32
  end
28
33
  end
@@ -25,9 +25,10 @@ class EasyManager
25
25
  srv_type = options[:srv_type] || 'DEV1-S'
26
26
  image = options[:image] || 'ubuntu-jammy'
27
27
  name_pattern = options[:name_pattern] || 'scw-easymanager-__RANDOM__'
28
+ tags = options[:tags] || []
28
29
  cloud_init = options[:cloud_init] || false
29
30
 
30
- Servers.create(self, srv_type, image, name_pattern, cloud_init)
31
+ Servers.create(self, srv_type, image, name_pattern, tags, cloud_init)
31
32
  end
32
33
 
33
34
  def delete(srv)
@@ -55,7 +56,7 @@ class EasyManager
55
56
  Servers.ready?(self, srv, ssh, srv_ready_cmds)
56
57
  end
57
58
 
58
- def wait_until_ready!(srv, ssh, timeout = 360)
59
+ def wait_until_ready!(srv, ssh, timeout = 600)
59
60
  ready = false
60
61
  start = Time.now
61
62
  loop do
@@ -49,8 +49,8 @@ class EasyManager
49
49
  json_body['server']['state']
50
50
  end
51
51
 
52
- def self.create(scw, srv_type, image, name_pattern, cloud_init)
53
- data = srv_data(scw, srv_type, image, name_pattern)
52
+ def self.create(scw, srv_type, image, name_pattern, tags, cloud_init)
53
+ data = srv_data(scw, srv_type, image, name_pattern, tags)
54
54
  return if data.nil?
55
55
 
56
56
  response = Typhoeus.post(File.join(scw.api_url, "/instance/v1/zones/#{scw.zone}/servers/"),
@@ -87,26 +87,34 @@ class EasyManager
87
87
  )
88
88
  end
89
89
 
90
- def self.action(scw, srv_id, action)
90
+ def self.action(scw, srv_id, action, tries = 0)
91
91
  data = { action: action }
92
- Typhoeus.post(
92
+ resp = Typhoeus.post(
93
93
  File.join(scw.api_url, "/instance/v1/zones/#{scw.zone}/servers/#{srv_id}/action"),
94
94
  headers: scw.headers,
95
95
  body: data.to_json
96
96
  )
97
+ return resp if resp&.code == 202
98
+
99
+ sleep(rand(10..60))
100
+ tries += 1
101
+ action(scw, srv_id, action, tries) unless tries >= 3
97
102
  end
98
103
 
99
- def self.srv_data(scw, srv_type, image, name_pattern)
104
+ def self.srv_data(scw, srv_type, image, name_pattern, tags)
100
105
  srv_infos = Config.srv_infos(srv_type)
101
106
  image_id = Config.image_id(image)
102
107
  new_ip = Ips.reserve(scw)
103
108
  return if image_id.nil? || srv_infos.nil? || new_ip.nil?
104
109
 
105
110
  {
106
- name: name_pattern.gsub('__RANDOM__', Utilities.random_string), commercial_type: srv_type,
107
- public_ip: new_ip['ip']['id'], project: scw.project,
111
+ name: name_pattern.gsub('__RANDOM__', Utilities.random_string),
112
+ commercial_type: srv_type,
113
+ public_ip: new_ip['ip']['id'],
114
+ project: scw.project,
108
115
  image: image_id,
109
- volumes: { '0' => { size: srv_infos[:volume], volume_type: srv_infos[:volume_type] } }
116
+ volumes: { '0' => { size: srv_infos[:volume], volume_type: srv_infos[:volume_type] } },
117
+ tags: tags
110
118
  }
111
119
  end
112
120
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua MARTINELLE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-08 00:00:00.000000000 Z
11
+ date: 2023-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt_pbkdf