fog-scaleway 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +9 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +58 -0
  8. data/Rakefile +21 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/fog-scaleway.gemspec +31 -0
  12. data/lib/fog/scaleway.rb +15 -0
  13. data/lib/fog/scaleway/account.rb +306 -0
  14. data/lib/fog/scaleway/client.rb +54 -0
  15. data/lib/fog/scaleway/compute.rb +350 -0
  16. data/lib/fog/scaleway/errors.rb +37 -0
  17. data/lib/fog/scaleway/models/account/organization.rb +42 -0
  18. data/lib/fog/scaleway/models/account/organizations.rb +22 -0
  19. data/lib/fog/scaleway/models/account/token.rb +60 -0
  20. data/lib/fog/scaleway/models/account/tokens.rb +22 -0
  21. data/lib/fog/scaleway/models/account/user.rb +69 -0
  22. data/lib/fog/scaleway/models/account/users.rb +23 -0
  23. data/lib/fog/scaleway/models/compute/bootscript.rb +19 -0
  24. data/lib/fog/scaleway/models/compute/bootscripts.rb +22 -0
  25. data/lib/fog/scaleway/models/compute/image.rb +83 -0
  26. data/lib/fog/scaleway/models/compute/images.rb +22 -0
  27. data/lib/fog/scaleway/models/compute/ip.rb +70 -0
  28. data/lib/fog/scaleway/models/compute/ips.rb +22 -0
  29. data/lib/fog/scaleway/models/compute/security_group.rb +77 -0
  30. data/lib/fog/scaleway/models/compute/security_group_rule.rb +59 -0
  31. data/lib/fog/scaleway/models/compute/security_group_rules.rb +34 -0
  32. data/lib/fog/scaleway/models/compute/security_groups.rb +22 -0
  33. data/lib/fog/scaleway/models/compute/server.rb +243 -0
  34. data/lib/fog/scaleway/models/compute/servers.rb +47 -0
  35. data/lib/fog/scaleway/models/compute/snapshot.rb +90 -0
  36. data/lib/fog/scaleway/models/compute/snapshots.rb +22 -0
  37. data/lib/fog/scaleway/models/compute/task.rb +31 -0
  38. data/lib/fog/scaleway/models/compute/tasks.rb +22 -0
  39. data/lib/fog/scaleway/models/compute/volume.rb +96 -0
  40. data/lib/fog/scaleway/models/compute/volumes.rb +22 -0
  41. data/lib/fog/scaleway/request_helper.rb +32 -0
  42. data/lib/fog/scaleway/requests/account/create_token.rb +62 -0
  43. data/lib/fog/scaleway/requests/account/delete_token.rb +21 -0
  44. data/lib/fog/scaleway/requests/account/get_organization.rb +19 -0
  45. data/lib/fog/scaleway/requests/account/get_organization_quotas.rb +21 -0
  46. data/lib/fog/scaleway/requests/account/get_token.rb +19 -0
  47. data/lib/fog/scaleway/requests/account/get_token_permissions.rb +21 -0
  48. data/lib/fog/scaleway/requests/account/get_user.rb +19 -0
  49. data/lib/fog/scaleway/requests/account/list_organizations.rb +19 -0
  50. data/lib/fog/scaleway/requests/account/list_tokens.rb +19 -0
  51. data/lib/fog/scaleway/requests/account/update_token.rb +27 -0
  52. data/lib/fog/scaleway/requests/account/update_user.rb +39 -0
  53. data/lib/fog/scaleway/requests/compute/create_image.rb +61 -0
  54. data/lib/fog/scaleway/requests/compute/create_ip.rb +68 -0
  55. data/lib/fog/scaleway/requests/compute/create_security_group.rb +49 -0
  56. data/lib/fog/scaleway/requests/compute/create_security_group_rule.rb +49 -0
  57. data/lib/fog/scaleway/requests/compute/create_server.rb +129 -0
  58. data/lib/fog/scaleway/requests/compute/create_snapshot.rb +54 -0
  59. data/lib/fog/scaleway/requests/compute/create_volume.rb +88 -0
  60. data/lib/fog/scaleway/requests/compute/delete_image.rb +27 -0
  61. data/lib/fog/scaleway/requests/compute/delete_ip.rb +29 -0
  62. data/lib/fog/scaleway/requests/compute/delete_security_group.rb +31 -0
  63. data/lib/fog/scaleway/requests/compute/delete_security_group_rule.rb +23 -0
  64. data/lib/fog/scaleway/requests/compute/delete_server.rb +40 -0
  65. data/lib/fog/scaleway/requests/compute/delete_snapshot.rb +29 -0
  66. data/lib/fog/scaleway/requests/compute/delete_task.rb +21 -0
  67. data/lib/fog/scaleway/requests/compute/delete_user_data.rb +21 -0
  68. data/lib/fog/scaleway/requests/compute/delete_volume.rb +31 -0
  69. data/lib/fog/scaleway/requests/compute/execute_server_action.rb +101 -0
  70. data/lib/fog/scaleway/requests/compute/get_bootscript.rb +19 -0
  71. data/lib/fog/scaleway/requests/compute/get_container.rb +19 -0
  72. data/lib/fog/scaleway/requests/compute/get_dashboard.rb +37 -0
  73. data/lib/fog/scaleway/requests/compute/get_image.rb +19 -0
  74. data/lib/fog/scaleway/requests/compute/get_ip.rb +19 -0
  75. data/lib/fog/scaleway/requests/compute/get_security_group.rb +19 -0
  76. data/lib/fog/scaleway/requests/compute/get_security_group_rule.rb +23 -0
  77. data/lib/fog/scaleway/requests/compute/get_server.rb +48 -0
  78. data/lib/fog/scaleway/requests/compute/get_snapshot.rb +19 -0
  79. data/lib/fog/scaleway/requests/compute/get_task.rb +25 -0
  80. data/lib/fog/scaleway/requests/compute/get_user_data.rb +25 -0
  81. data/lib/fog/scaleway/requests/compute/get_volume.rb +19 -0
  82. data/lib/fog/scaleway/requests/compute/list_bootscripts.rb +23 -0
  83. data/lib/fog/scaleway/requests/compute/list_containers.rb +19 -0
  84. data/lib/fog/scaleway/requests/compute/list_images.rb +27 -0
  85. data/lib/fog/scaleway/requests/compute/list_ips.rb +19 -0
  86. data/lib/fog/scaleway/requests/compute/list_security_group_rules.rb +21 -0
  87. data/lib/fog/scaleway/requests/compute/list_security_groups.rb +19 -0
  88. data/lib/fog/scaleway/requests/compute/list_server_actions.rb +21 -0
  89. data/lib/fog/scaleway/requests/compute/list_servers.rb +19 -0
  90. data/lib/fog/scaleway/requests/compute/list_snapshots.rb +19 -0
  91. data/lib/fog/scaleway/requests/compute/list_tasks.rb +19 -0
  92. data/lib/fog/scaleway/requests/compute/list_user_data.rb +21 -0
  93. data/lib/fog/scaleway/requests/compute/list_volumes.rb +19 -0
  94. data/lib/fog/scaleway/requests/compute/update_image.rb +31 -0
  95. data/lib/fog/scaleway/requests/compute/update_ip.rb +47 -0
  96. data/lib/fog/scaleway/requests/compute/update_security_group.rb +29 -0
  97. data/lib/fog/scaleway/requests/compute/update_security_group_rule.rb +31 -0
  98. data/lib/fog/scaleway/requests/compute/update_server.rb +71 -0
  99. data/lib/fog/scaleway/requests/compute/update_snapshot.rb +24 -0
  100. data/lib/fog/scaleway/requests/compute/update_user_data.rb +25 -0
  101. data/lib/fog/scaleway/requests/compute/update_volume.rb +24 -0
  102. data/lib/fog/scaleway/version.rb +5 -0
  103. 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