fog-scaleway 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.ruby-version +1 -0
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +58 -0
- data/Rakefile +21 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/fog-scaleway.gemspec +31 -0
- data/lib/fog/scaleway.rb +15 -0
- data/lib/fog/scaleway/account.rb +306 -0
- data/lib/fog/scaleway/client.rb +54 -0
- data/lib/fog/scaleway/compute.rb +350 -0
- data/lib/fog/scaleway/errors.rb +37 -0
- data/lib/fog/scaleway/models/account/organization.rb +42 -0
- data/lib/fog/scaleway/models/account/organizations.rb +22 -0
- data/lib/fog/scaleway/models/account/token.rb +60 -0
- data/lib/fog/scaleway/models/account/tokens.rb +22 -0
- data/lib/fog/scaleway/models/account/user.rb +69 -0
- data/lib/fog/scaleway/models/account/users.rb +23 -0
- data/lib/fog/scaleway/models/compute/bootscript.rb +19 -0
- data/lib/fog/scaleway/models/compute/bootscripts.rb +22 -0
- data/lib/fog/scaleway/models/compute/image.rb +83 -0
- data/lib/fog/scaleway/models/compute/images.rb +22 -0
- data/lib/fog/scaleway/models/compute/ip.rb +70 -0
- data/lib/fog/scaleway/models/compute/ips.rb +22 -0
- data/lib/fog/scaleway/models/compute/security_group.rb +77 -0
- data/lib/fog/scaleway/models/compute/security_group_rule.rb +59 -0
- data/lib/fog/scaleway/models/compute/security_group_rules.rb +34 -0
- data/lib/fog/scaleway/models/compute/security_groups.rb +22 -0
- data/lib/fog/scaleway/models/compute/server.rb +243 -0
- data/lib/fog/scaleway/models/compute/servers.rb +47 -0
- data/lib/fog/scaleway/models/compute/snapshot.rb +90 -0
- data/lib/fog/scaleway/models/compute/snapshots.rb +22 -0
- data/lib/fog/scaleway/models/compute/task.rb +31 -0
- data/lib/fog/scaleway/models/compute/tasks.rb +22 -0
- data/lib/fog/scaleway/models/compute/volume.rb +96 -0
- data/lib/fog/scaleway/models/compute/volumes.rb +22 -0
- data/lib/fog/scaleway/request_helper.rb +32 -0
- data/lib/fog/scaleway/requests/account/create_token.rb +62 -0
- data/lib/fog/scaleway/requests/account/delete_token.rb +21 -0
- data/lib/fog/scaleway/requests/account/get_organization.rb +19 -0
- data/lib/fog/scaleway/requests/account/get_organization_quotas.rb +21 -0
- data/lib/fog/scaleway/requests/account/get_token.rb +19 -0
- data/lib/fog/scaleway/requests/account/get_token_permissions.rb +21 -0
- data/lib/fog/scaleway/requests/account/get_user.rb +19 -0
- data/lib/fog/scaleway/requests/account/list_organizations.rb +19 -0
- data/lib/fog/scaleway/requests/account/list_tokens.rb +19 -0
- data/lib/fog/scaleway/requests/account/update_token.rb +27 -0
- data/lib/fog/scaleway/requests/account/update_user.rb +39 -0
- data/lib/fog/scaleway/requests/compute/create_image.rb +61 -0
- data/lib/fog/scaleway/requests/compute/create_ip.rb +68 -0
- data/lib/fog/scaleway/requests/compute/create_security_group.rb +49 -0
- data/lib/fog/scaleway/requests/compute/create_security_group_rule.rb +49 -0
- data/lib/fog/scaleway/requests/compute/create_server.rb +129 -0
- data/lib/fog/scaleway/requests/compute/create_snapshot.rb +54 -0
- data/lib/fog/scaleway/requests/compute/create_volume.rb +88 -0
- data/lib/fog/scaleway/requests/compute/delete_image.rb +27 -0
- data/lib/fog/scaleway/requests/compute/delete_ip.rb +29 -0
- data/lib/fog/scaleway/requests/compute/delete_security_group.rb +31 -0
- data/lib/fog/scaleway/requests/compute/delete_security_group_rule.rb +23 -0
- data/lib/fog/scaleway/requests/compute/delete_server.rb +40 -0
- data/lib/fog/scaleway/requests/compute/delete_snapshot.rb +29 -0
- data/lib/fog/scaleway/requests/compute/delete_task.rb +21 -0
- data/lib/fog/scaleway/requests/compute/delete_user_data.rb +21 -0
- data/lib/fog/scaleway/requests/compute/delete_volume.rb +31 -0
- data/lib/fog/scaleway/requests/compute/execute_server_action.rb +101 -0
- data/lib/fog/scaleway/requests/compute/get_bootscript.rb +19 -0
- data/lib/fog/scaleway/requests/compute/get_container.rb +19 -0
- data/lib/fog/scaleway/requests/compute/get_dashboard.rb +37 -0
- data/lib/fog/scaleway/requests/compute/get_image.rb +19 -0
- data/lib/fog/scaleway/requests/compute/get_ip.rb +19 -0
- data/lib/fog/scaleway/requests/compute/get_security_group.rb +19 -0
- data/lib/fog/scaleway/requests/compute/get_security_group_rule.rb +23 -0
- data/lib/fog/scaleway/requests/compute/get_server.rb +48 -0
- data/lib/fog/scaleway/requests/compute/get_snapshot.rb +19 -0
- data/lib/fog/scaleway/requests/compute/get_task.rb +25 -0
- data/lib/fog/scaleway/requests/compute/get_user_data.rb +25 -0
- data/lib/fog/scaleway/requests/compute/get_volume.rb +19 -0
- data/lib/fog/scaleway/requests/compute/list_bootscripts.rb +23 -0
- data/lib/fog/scaleway/requests/compute/list_containers.rb +19 -0
- data/lib/fog/scaleway/requests/compute/list_images.rb +27 -0
- data/lib/fog/scaleway/requests/compute/list_ips.rb +19 -0
- data/lib/fog/scaleway/requests/compute/list_security_group_rules.rb +21 -0
- data/lib/fog/scaleway/requests/compute/list_security_groups.rb +19 -0
- data/lib/fog/scaleway/requests/compute/list_server_actions.rb +21 -0
- data/lib/fog/scaleway/requests/compute/list_servers.rb +19 -0
- data/lib/fog/scaleway/requests/compute/list_snapshots.rb +19 -0
- data/lib/fog/scaleway/requests/compute/list_tasks.rb +19 -0
- data/lib/fog/scaleway/requests/compute/list_user_data.rb +21 -0
- data/lib/fog/scaleway/requests/compute/list_volumes.rb +19 -0
- data/lib/fog/scaleway/requests/compute/update_image.rb +31 -0
- data/lib/fog/scaleway/requests/compute/update_ip.rb +47 -0
- data/lib/fog/scaleway/requests/compute/update_security_group.rb +29 -0
- data/lib/fog/scaleway/requests/compute/update_security_group_rule.rb +31 -0
- data/lib/fog/scaleway/requests/compute/update_server.rb +71 -0
- data/lib/fog/scaleway/requests/compute/update_snapshot.rb +24 -0
- data/lib/fog/scaleway/requests/compute/update_user_data.rb +25 -0
- data/lib/fog/scaleway/requests/compute/update_volume.rb +24 -0
- data/lib/fog/scaleway/version.rb +5 -0
- metadata +285 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Account
|
4
|
+
class Organizations < Fog::Collection
|
5
|
+
model Fog::Scaleway::Account::Organization
|
6
|
+
|
7
|
+
def all
|
8
|
+
organizations = service.list_organizations.body['organizations'] || []
|
9
|
+
load(organizations)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get(identity)
|
13
|
+
if (organization = service.get_organization(identity).body['organization'])
|
14
|
+
new(organization)
|
15
|
+
end
|
16
|
+
rescue Fog::Scaleway::Account::UnknownResource
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Account
|
4
|
+
class Token < Fog::Model
|
5
|
+
identity :id
|
6
|
+
|
7
|
+
attribute :creation_date
|
8
|
+
attribute :description
|
9
|
+
attribute :expires
|
10
|
+
attribute :inherits_user_perms
|
11
|
+
attribute :roles
|
12
|
+
attribute :user_id
|
13
|
+
|
14
|
+
def save
|
15
|
+
if persisted?
|
16
|
+
update
|
17
|
+
else
|
18
|
+
create
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def destroy
|
23
|
+
requires :identity
|
24
|
+
|
25
|
+
service.delete_token(identity)
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def create
|
32
|
+
options = {}
|
33
|
+
options[:expires] = !!expires unless expires.nil?
|
34
|
+
|
35
|
+
if (token = service.create_token(options).body['token'])
|
36
|
+
merge_attributes(token)
|
37
|
+
true
|
38
|
+
else
|
39
|
+
false
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def update
|
44
|
+
requires :identity
|
45
|
+
|
46
|
+
options = {}
|
47
|
+
options[:description] = description unless description.nil?
|
48
|
+
options[:expires] = !!expires unless expires.nil?
|
49
|
+
|
50
|
+
if (token = service.update_token(identity, options).body['token'])
|
51
|
+
merge_attributes(token)
|
52
|
+
true
|
53
|
+
else
|
54
|
+
false
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Account
|
4
|
+
class Tokens < Fog::Collection
|
5
|
+
model Fog::Scaleway::Account::Token
|
6
|
+
|
7
|
+
def all
|
8
|
+
tokens = service.list_tokens.body['tokens'] || []
|
9
|
+
load(tokens)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get(identity)
|
13
|
+
if (token = service.get_token(identity).body['token'])
|
14
|
+
new(token)
|
15
|
+
end
|
16
|
+
rescue Fog::Scaleway::Account::UnknownResource
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Account
|
4
|
+
class User < Fog::Model
|
5
|
+
identity :id
|
6
|
+
|
7
|
+
attribute :creation_date
|
8
|
+
attribute :email
|
9
|
+
attribute :firstname
|
10
|
+
attribute :fullname
|
11
|
+
attribute :lastname
|
12
|
+
attribute :modification_date
|
13
|
+
attribute :organizations
|
14
|
+
attribute :phone_number
|
15
|
+
attribute :roles
|
16
|
+
attribute :ssh_public_keys
|
17
|
+
|
18
|
+
def organizations=(value)
|
19
|
+
attributes[:organizations] = value.map do |v|
|
20
|
+
case v
|
21
|
+
when Hash
|
22
|
+
service.organizations.new(v)
|
23
|
+
when String
|
24
|
+
service.organizations.new(identity: v)
|
25
|
+
else
|
26
|
+
v
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def save
|
32
|
+
if persisted?
|
33
|
+
update
|
34
|
+
else
|
35
|
+
create
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def create
|
42
|
+
raise Fog::Errors::NotImplemented
|
43
|
+
end
|
44
|
+
|
45
|
+
def update
|
46
|
+
requires :identity
|
47
|
+
|
48
|
+
options = {}
|
49
|
+
options[:firstname] = firstname unless firstname.nil?
|
50
|
+
options[:lastname] = lastname unless lastname.nil?
|
51
|
+
options[:phone_number] = phone_number unless phone_number.nil?
|
52
|
+
|
53
|
+
unless ssh_public_keys.nil?
|
54
|
+
options[:ssh_public_keys] = ssh_public_keys.map do |k|
|
55
|
+
{ 'key' => k['key'] }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
if (user = service.update_user(identity, options).body['user'])
|
60
|
+
merge_attributes(user)
|
61
|
+
true
|
62
|
+
else
|
63
|
+
false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Account
|
4
|
+
class Users < Fog::Collection
|
5
|
+
model Fog::Scaleway::Account::User
|
6
|
+
|
7
|
+
def all
|
8
|
+
organizations = service.list_organizations.body['organizations'] || []
|
9
|
+
users = organizations.flat_map { |o| o['users'] }
|
10
|
+
load(users)
|
11
|
+
end
|
12
|
+
|
13
|
+
def get(identity)
|
14
|
+
if (user = service.get_user(identity).body['user'])
|
15
|
+
new(user)
|
16
|
+
end
|
17
|
+
rescue Fog::Scaleway::Account::UnknownResource
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Compute
|
4
|
+
class Bootscript < Fog::Model
|
5
|
+
identity :id
|
6
|
+
|
7
|
+
attribute :kernel
|
8
|
+
attribute :initrd
|
9
|
+
attribute :default
|
10
|
+
attribute :bootcmdargs
|
11
|
+
attribute :architecture
|
12
|
+
attribute :title
|
13
|
+
attribute :dtb
|
14
|
+
attribute :organization
|
15
|
+
attribute :public
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Compute
|
4
|
+
class Bootscripts < Fog::Collection
|
5
|
+
model Fog::Scaleway::Compute::Bootscript
|
6
|
+
|
7
|
+
def all
|
8
|
+
bootscripts = service.list_bootscripts.body['bootscripts'] || []
|
9
|
+
load(bootscripts)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get(identity)
|
13
|
+
if (bootscript = service.get_bootscript(identity).body['bootscript'])
|
14
|
+
new(bootscript)
|
15
|
+
end
|
16
|
+
rescue Fog::Scaleway::Compute::UnknownResource
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Compute
|
4
|
+
class Image < Fog::Model
|
5
|
+
identity :id
|
6
|
+
|
7
|
+
attribute :default_bootscript
|
8
|
+
attribute :creation_date
|
9
|
+
attribute :name
|
10
|
+
attribute :modification_date
|
11
|
+
attribute :organization
|
12
|
+
# attribute :extra_volumes
|
13
|
+
attribute :arch
|
14
|
+
attribute :root_volume
|
15
|
+
attribute :public
|
16
|
+
|
17
|
+
def default_bootscript=(value)
|
18
|
+
attributes[:default_bootscript] = case value
|
19
|
+
when Hash
|
20
|
+
service.bootscripts.new(value)
|
21
|
+
when String
|
22
|
+
service.bootscripts.new(identity: value)
|
23
|
+
else
|
24
|
+
value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def root_volume=(value)
|
29
|
+
attributes[:root_volume] = case value
|
30
|
+
when Hash
|
31
|
+
service.snapshots.new(value)
|
32
|
+
when String
|
33
|
+
service.snapshots.new(identity: value)
|
34
|
+
else
|
35
|
+
value
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def save
|
40
|
+
if persisted?
|
41
|
+
update
|
42
|
+
else
|
43
|
+
create
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def destroy
|
48
|
+
requires :identity
|
49
|
+
|
50
|
+
service.delete_image(identity)
|
51
|
+
true
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def create
|
57
|
+
requires :name, :arch, :root_volume
|
58
|
+
|
59
|
+
options = {}
|
60
|
+
options[:default_bootscript] = default_bootscript.identity unless default_bootscript.nil?
|
61
|
+
|
62
|
+
if (image = service.create_image(name, arch, root_volume.identity, options).body['image'])
|
63
|
+
merge_attributes(image)
|
64
|
+
true
|
65
|
+
else
|
66
|
+
false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def update
|
71
|
+
requires :identity
|
72
|
+
|
73
|
+
if (image = service.update_image(identity, self).body['image'])
|
74
|
+
merge_attributes(image)
|
75
|
+
true
|
76
|
+
else
|
77
|
+
false
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Compute
|
4
|
+
class Images < Fog::Collection
|
5
|
+
model Fog::Scaleway::Compute::Image
|
6
|
+
|
7
|
+
def all
|
8
|
+
images = service.list_images.body['images'] || []
|
9
|
+
load(images)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get(identity)
|
13
|
+
if (image = service.get_image(identity).body['image'])
|
14
|
+
new(image)
|
15
|
+
end
|
16
|
+
rescue Fog::Scaleway::Compute::UnknownResource
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Compute
|
4
|
+
class Ip < Fog::Model
|
5
|
+
identity :id
|
6
|
+
|
7
|
+
attribute :address
|
8
|
+
attribute :organization
|
9
|
+
attribute :reverse
|
10
|
+
attribute :server
|
11
|
+
|
12
|
+
ignore_attributes :dynamic
|
13
|
+
|
14
|
+
def server=(value)
|
15
|
+
attributes[:server] = case value
|
16
|
+
when Hash
|
17
|
+
service.servers.new(value)
|
18
|
+
when String
|
19
|
+
service.servers.new(identity: value)
|
20
|
+
else
|
21
|
+
value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def save
|
26
|
+
if persisted?
|
27
|
+
update
|
28
|
+
else
|
29
|
+
create
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def destroy
|
34
|
+
requires :identity
|
35
|
+
|
36
|
+
service.delete_ip(identity)
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def create
|
43
|
+
options = {}
|
44
|
+
options[:server] = server.identity unless server.nil?
|
45
|
+
|
46
|
+
if (ip = service.create_ip(options).body['ip'])
|
47
|
+
merge_attributes(ip)
|
48
|
+
true
|
49
|
+
else
|
50
|
+
false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def update
|
55
|
+
requires :identity
|
56
|
+
|
57
|
+
body = attributes.dup
|
58
|
+
body[:server] = server.identity unless server.nil?
|
59
|
+
|
60
|
+
if (ip = service.update_ip(identity, body).body['ip'])
|
61
|
+
merge_attributes(ip)
|
62
|
+
true
|
63
|
+
else
|
64
|
+
false
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fog
|
2
|
+
module Scaleway
|
3
|
+
class Compute
|
4
|
+
class Ips < Fog::Collection
|
5
|
+
model Fog::Scaleway::Compute::Ip
|
6
|
+
|
7
|
+
def all
|
8
|
+
ips = service.list_ips.body['ips'] || []
|
9
|
+
load(ips)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get(identity)
|
13
|
+
if (ip = service.get_ip(identity).body['ip'])
|
14
|
+
new(ip)
|
15
|
+
end
|
16
|
+
rescue Fog::Scaleway::Compute::UnknownResource
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|