fog-scaleway 0.1.0

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.
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