fog-gridscale 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.ruby-gemset +0 -0
  4. data/.ruby-version +0 -0
  5. data/.travis.yml +5 -0
  6. data/CHANGELOG.md +14 -0
  7. data/CONTRIBUTING.md +21 -0
  8. data/CONTRIBUTORS.md +2 -0
  9. data/Gemfile +6 -0
  10. data/LICENSE.md +21 -0
  11. data/README.md +87 -0
  12. data/Rakefile +10 -0
  13. data/bin/console +14 -0
  14. data/bin/setup +8 -0
  15. data/fog-gridscale.gemspec +41 -0
  16. data/lib/fog/bin/gridscale.rb +29 -0
  17. data/lib/fog/compute/gridscale.rb +325 -0
  18. data/lib/fog/compute/gridscale/models/access_key.rb +28 -0
  19. data/lib/fog/compute/gridscale/models/access_keys.rb +27 -0
  20. data/lib/fog/compute/gridscale/models/bucket.rb +15 -0
  21. data/lib/fog/compute/gridscale/models/buckets.rb +27 -0
  22. data/lib/fog/compute/gridscale/models/cas.rb +51 -0
  23. data/lib/fog/compute/gridscale/models/cass.rb +27 -0
  24. data/lib/fog/compute/gridscale/models/deleted_ip.rb +30 -0
  25. data/lib/fog/compute/gridscale/models/deleted_ips.rb +18 -0
  26. data/lib/fog/compute/gridscale/models/deleted_isoimage.rb +32 -0
  27. data/lib/fog/compute/gridscale/models/deleted_isoimages.rb +18 -0
  28. data/lib/fog/compute/gridscale/models/deleted_network.rb +29 -0
  29. data/lib/fog/compute/gridscale/models/deleted_networks.rb +18 -0
  30. data/lib/fog/compute/gridscale/models/deleted_server.rb +47 -0
  31. data/lib/fog/compute/gridscale/models/deleted_servers.rb +20 -0
  32. data/lib/fog/compute/gridscale/models/deleted_snapshot.rb +32 -0
  33. data/lib/fog/compute/gridscale/models/deleted_snapshots.rb +18 -0
  34. data/lib/fog/compute/gridscale/models/deleted_storage.rb +30 -0
  35. data/lib/fog/compute/gridscale/models/deleted_storages.rb +18 -0
  36. data/lib/fog/compute/gridscale/models/deleted_template.rb +33 -0
  37. data/lib/fog/compute/gridscale/models/deleted_templates.rb +19 -0
  38. data/lib/fog/compute/gridscale/models/firewall.rb +46 -0
  39. data/lib/fog/compute/gridscale/models/firewalls.rb +27 -0
  40. data/lib/fog/compute/gridscale/models/interface.rb +44 -0
  41. data/lib/fog/compute/gridscale/models/interfaces.rb +25 -0
  42. data/lib/fog/compute/gridscale/models/ip.rb +72 -0
  43. data/lib/fog/compute/gridscale/models/ips.rb +26 -0
  44. data/lib/fog/compute/gridscale/models/isoimage.rb +68 -0
  45. data/lib/fog/compute/gridscale/models/isoimages.rb +25 -0
  46. data/lib/fog/compute/gridscale/models/loadbalancer.rb +64 -0
  47. data/lib/fog/compute/gridscale/models/loadbalancers.rb +26 -0
  48. data/lib/fog/compute/gridscale/models/location.rb +18 -0
  49. data/lib/fog/compute/gridscale/models/locations.rb +26 -0
  50. data/lib/fog/compute/gridscale/models/marketplace_template.rb +71 -0
  51. data/lib/fog/compute/gridscale/models/marketplace_templates.rb +27 -0
  52. data/lib/fog/compute/gridscale/models/network.rb +73 -0
  53. data/lib/fog/compute/gridscale/models/networks.rb +25 -0
  54. data/lib/fog/compute/gridscale/models/paas_security_zone.rb +65 -0
  55. data/lib/fog/compute/gridscale/models/paas_security_zones.rb +26 -0
  56. data/lib/fog/compute/gridscale/models/paas_service.rb +62 -0
  57. data/lib/fog/compute/gridscale/models/paas_services.rb +25 -0
  58. data/lib/fog/compute/gridscale/models/paging_collection.rb +42 -0
  59. data/lib/fog/compute/gridscale/models/request.rb +16 -0
  60. data/lib/fog/compute/gridscale/models/requests.rb +19 -0
  61. data/lib/fog/compute/gridscale/models/server.rb +168 -0
  62. data/lib/fog/compute/gridscale/models/server_relation_ip.rb +49 -0
  63. data/lib/fog/compute/gridscale/models/server_relation_ips.rb +27 -0
  64. data/lib/fog/compute/gridscale/models/server_relation_isoimage.rb +47 -0
  65. data/lib/fog/compute/gridscale/models/server_relation_isoimages.rb +27 -0
  66. data/lib/fog/compute/gridscale/models/server_relation_network.rb +58 -0
  67. data/lib/fog/compute/gridscale/models/server_relation_networks.rb +28 -0
  68. data/lib/fog/compute/gridscale/models/server_relation_storage.rb +53 -0
  69. data/lib/fog/compute/gridscale/models/server_relation_storages.rb +27 -0
  70. data/lib/fog/compute/gridscale/models/servers.rb +27 -0
  71. data/lib/fog/compute/gridscale/models/snapshot.rb +56 -0
  72. data/lib/fog/compute/gridscale/models/snapshot_schedule.rb +50 -0
  73. data/lib/fog/compute/gridscale/models/snapshot_schedules.rb +25 -0
  74. data/lib/fog/compute/gridscale/models/snapshots.rb +25 -0
  75. data/lib/fog/compute/gridscale/models/sshkey.rb +49 -0
  76. data/lib/fog/compute/gridscale/models/sshkeys.rb +25 -0
  77. data/lib/fog/compute/gridscale/models/storage.rb +78 -0
  78. data/lib/fog/compute/gridscale/models/storages.rb +25 -0
  79. data/lib/fog/compute/gridscale/models/template.rb +67 -0
  80. data/lib/fog/compute/gridscale/models/templates.rb +25 -0
  81. data/lib/fog/compute/gridscale/requests/access_key_create.rb +19 -0
  82. data/lib/fog/compute/gridscale/requests/access_key_delete.rb +20 -0
  83. data/lib/fog/compute/gridscale/requests/access_key_get.rb +17 -0
  84. data/lib/fog/compute/gridscale/requests/access_keys_get.rb +19 -0
  85. data/lib/fog/compute/gridscale/requests/bucket_get.rb +18 -0
  86. data/lib/fog/compute/gridscale/requests/buckets_get.rb +18 -0
  87. data/lib/fog/compute/gridscale/requests/cas_actions_get.rb +17 -0
  88. data/lib/fog/compute/gridscale/requests/cas_create.rb +42 -0
  89. data/lib/fog/compute/gridscale/requests/cas_delete.rb +20 -0
  90. data/lib/fog/compute/gridscale/requests/cas_events_get.rb +17 -0
  91. data/lib/fog/compute/gridscale/requests/cas_get.rb +17 -0
  92. data/lib/fog/compute/gridscale/requests/cas_update.rb +23 -0
  93. data/lib/fog/compute/gridscale/requests/cass_get.rb +18 -0
  94. data/lib/fog/compute/gridscale/requests/deleted_ips_get.rb +18 -0
  95. data/lib/fog/compute/gridscale/requests/deleted_isoimages_get.rb +18 -0
  96. data/lib/fog/compute/gridscale/requests/deleted_networks_get.rb +18 -0
  97. data/lib/fog/compute/gridscale/requests/deleted_servers_get.rb +18 -0
  98. data/lib/fog/compute/gridscale/requests/deleted_snapshots_get.rb +18 -0
  99. data/lib/fog/compute/gridscale/requests/deleted_storages_get.rb +18 -0
  100. data/lib/fog/compute/gridscale/requests/deleted_templates_get.rb +18 -0
  101. data/lib/fog/compute/gridscale/requests/firewall_create.rb +31 -0
  102. data/lib/fog/compute/gridscale/requests/firewall_delete.rb +20 -0
  103. data/lib/fog/compute/gridscale/requests/firewall_events_get.rb +17 -0
  104. data/lib/fog/compute/gridscale/requests/firewall_get.rb +17 -0
  105. data/lib/fog/compute/gridscale/requests/firewall_update.rb +24 -0
  106. data/lib/fog/compute/gridscale/requests/firewalls_get.rb +18 -0
  107. data/lib/fog/compute/gridscale/requests/ip_create.rb +46 -0
  108. data/lib/fog/compute/gridscale/requests/ip_delete.rb +20 -0
  109. data/lib/fog/compute/gridscale/requests/ip_events_get.rb +17 -0
  110. data/lib/fog/compute/gridscale/requests/ip_get.rb +17 -0
  111. data/lib/fog/compute/gridscale/requests/ip_update.rb +24 -0
  112. data/lib/fog/compute/gridscale/requests/ips_get.rb +19 -0
  113. data/lib/fog/compute/gridscale/requests/isoimage_create.rb +37 -0
  114. data/lib/fog/compute/gridscale/requests/isoimage_delete.rb +20 -0
  115. data/lib/fog/compute/gridscale/requests/isoimage_events_get.rb +17 -0
  116. data/lib/fog/compute/gridscale/requests/isoimage_get.rb +17 -0
  117. data/lib/fog/compute/gridscale/requests/isoimage_update.rb +24 -0
  118. data/lib/fog/compute/gridscale/requests/isoimages_get.rb +18 -0
  119. data/lib/fog/compute/gridscale/requests/load_balancer_create.rb +40 -0
  120. data/lib/fog/compute/gridscale/requests/load_balancer_delete.rb +20 -0
  121. data/lib/fog/compute/gridscale/requests/load_balancer_events_get.rb +17 -0
  122. data/lib/fog/compute/gridscale/requests/load_balancer_get.rb +17 -0
  123. data/lib/fog/compute/gridscale/requests/load_balancer_update.rb +24 -0
  124. data/lib/fog/compute/gridscale/requests/load_balancers_get.rb +18 -0
  125. data/lib/fog/compute/gridscale/requests/location_get.rb +17 -0
  126. data/lib/fog/compute/gridscale/requests/locations_get.rb +18 -0
  127. data/lib/fog/compute/gridscale/requests/marketplace_template_create.rb +47 -0
  128. data/lib/fog/compute/gridscale/requests/marketplace_template_delete.rb +20 -0
  129. data/lib/fog/compute/gridscale/requests/marketplace_template_events_get.rb +17 -0
  130. data/lib/fog/compute/gridscale/requests/marketplace_template_get.rb +17 -0
  131. data/lib/fog/compute/gridscale/requests/marketplace_template_update.rb +24 -0
  132. data/lib/fog/compute/gridscale/requests/marketplace_templates_get.rb +17 -0
  133. data/lib/fog/compute/gridscale/requests/network_create.rb +41 -0
  134. data/lib/fog/compute/gridscale/requests/network_delete.rb +21 -0
  135. data/lib/fog/compute/gridscale/requests/network_events_get.rb +17 -0
  136. data/lib/fog/compute/gridscale/requests/network_get.rb +17 -0
  137. data/lib/fog/compute/gridscale/requests/network_update.rb +24 -0
  138. data/lib/fog/compute/gridscale/requests/networks_get.rb +18 -0
  139. data/lib/fog/compute/gridscale/requests/paas_security_zone_create.rb +36 -0
  140. data/lib/fog/compute/gridscale/requests/paas_security_zone_delete.rb +20 -0
  141. data/lib/fog/compute/gridscale/requests/paas_security_zone_get.rb +17 -0
  142. data/lib/fog/compute/gridscale/requests/paas_security_zone_update.rb +25 -0
  143. data/lib/fog/compute/gridscale/requests/paas_security_zones_get.rb +18 -0
  144. data/lib/fog/compute/gridscale/requests/paas_service_create.rb +30 -0
  145. data/lib/fog/compute/gridscale/requests/paas_service_delete.rb +20 -0
  146. data/lib/fog/compute/gridscale/requests/paas_service_get.rb +17 -0
  147. data/lib/fog/compute/gridscale/requests/paas_service_update.rb +25 -0
  148. data/lib/fog/compute/gridscale/requests/paas_services_get.rb +18 -0
  149. data/lib/fog/compute/gridscale/requests/request_get.rb +17 -0
  150. data/lib/fog/compute/gridscale/requests/server_create.rb +114 -0
  151. data/lib/fog/compute/gridscale/requests/server_delete.rb +20 -0
  152. data/lib/fog/compute/gridscale/requests/server_events_get.rb +17 -0
  153. data/lib/fog/compute/gridscale/requests/server_get.rb +17 -0
  154. data/lib/fog/compute/gridscale/requests/server_power_get.rb +17 -0
  155. data/lib/fog/compute/gridscale/requests/server_power_off.rb +25 -0
  156. data/lib/fog/compute/gridscale/requests/server_power_on.rb +25 -0
  157. data/lib/fog/compute/gridscale/requests/server_relation_ip_create.rb +32 -0
  158. data/lib/fog/compute/gridscale/requests/server_relation_ip_delete.rb +22 -0
  159. data/lib/fog/compute/gridscale/requests/server_relation_ip_get.rb +19 -0
  160. data/lib/fog/compute/gridscale/requests/server_relation_ips_get.rb +19 -0
  161. data/lib/fog/compute/gridscale/requests/server_relation_isoimage_create.rb +30 -0
  162. data/lib/fog/compute/gridscale/requests/server_relation_isoimage_delete.rb +22 -0
  163. data/lib/fog/compute/gridscale/requests/server_relation_isoimage_get.rb +19 -0
  164. data/lib/fog/compute/gridscale/requests/server_relation_isoimage_update.rb +23 -0
  165. data/lib/fog/compute/gridscale/requests/server_relation_isoimages_get.rb +19 -0
  166. data/lib/fog/compute/gridscale/requests/server_relation_network_create.rb +31 -0
  167. data/lib/fog/compute/gridscale/requests/server_relation_network_delete.rb +24 -0
  168. data/lib/fog/compute/gridscale/requests/server_relation_network_get.rb +19 -0
  169. data/lib/fog/compute/gridscale/requests/server_relation_network_update.rb +23 -0
  170. data/lib/fog/compute/gridscale/requests/server_relation_networks_get.rb +21 -0
  171. data/lib/fog/compute/gridscale/requests/server_relation_storage_create.rb +31 -0
  172. data/lib/fog/compute/gridscale/requests/server_relation_storage_delete.rb +24 -0
  173. data/lib/fog/compute/gridscale/requests/server_relation_storage_get.rb +22 -0
  174. data/lib/fog/compute/gridscale/requests/server_relation_storage_update.rb +23 -0
  175. data/lib/fog/compute/gridscale/requests/server_relation_storages_get.rb +21 -0
  176. data/lib/fog/compute/gridscale/requests/server_shutdown.rb +20 -0
  177. data/lib/fog/compute/gridscale/requests/server_update.rb +24 -0
  178. data/lib/fog/compute/gridscale/requests/servers_get.rb +18 -0
  179. data/lib/fog/compute/gridscale/requests/snapshot_create.rb +29 -0
  180. data/lib/fog/compute/gridscale/requests/snapshot_delete.rb +24 -0
  181. data/lib/fog/compute/gridscale/requests/snapshot_get.rb +19 -0
  182. data/lib/fog/compute/gridscale/requests/snapshot_schedule_create.rb +30 -0
  183. data/lib/fog/compute/gridscale/requests/snapshot_schedule_delete.rb +24 -0
  184. data/lib/fog/compute/gridscale/requests/snapshot_schedule_get.rb +19 -0
  185. data/lib/fog/compute/gridscale/requests/snapshot_schedule_update.rb +24 -0
  186. data/lib/fog/compute/gridscale/requests/snapshot_schedules_get.rb +19 -0
  187. data/lib/fog/compute/gridscale/requests/snapshot_update.rb +23 -0
  188. data/lib/fog/compute/gridscale/requests/snapshots_get.rb +18 -0
  189. data/lib/fog/compute/gridscale/requests/sshkey_create.rb +33 -0
  190. data/lib/fog/compute/gridscale/requests/sshkey_delete.rb +20 -0
  191. data/lib/fog/compute/gridscale/requests/sshkey_get.rb +17 -0
  192. data/lib/fog/compute/gridscale/requests/sshkey_update.rb +23 -0
  193. data/lib/fog/compute/gridscale/requests/sshkeys_get.rb +19 -0
  194. data/lib/fog/compute/gridscale/requests/storage_create.rb +44 -0
  195. data/lib/fog/compute/gridscale/requests/storage_delete.rb +20 -0
  196. data/lib/fog/compute/gridscale/requests/storage_events_get.rb +17 -0
  197. data/lib/fog/compute/gridscale/requests/storage_get.rb +17 -0
  198. data/lib/fog/compute/gridscale/requests/storage_update.rb +24 -0
  199. data/lib/fog/compute/gridscale/requests/storages_get.rb +18 -0
  200. data/lib/fog/compute/gridscale/requests/template_create.rb +31 -0
  201. data/lib/fog/compute/gridscale/requests/template_delete.rb +20 -0
  202. data/lib/fog/compute/gridscale/requests/template_events_get.rb +17 -0
  203. data/lib/fog/compute/gridscale/requests/template_get.rb +17 -0
  204. data/lib/fog/compute/gridscale/requests/template_update.rb +24 -0
  205. data/lib/fog/compute/gridscale/requests/templates_get.rb +19 -0
  206. data/lib/fog/gridscale.rb +15 -0
  207. data/lib/fog/gridscale/service.rb +51 -0
  208. data/lib/fog/gridscale/version.rb +5 -0
  209. metadata +322 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 255110f078a60e7dcad1b1e202591cb9bc9f47ec
4
+ data.tar.gz: 48d2a079388fd559d21c32f8b44d203d7f016b44
5
+ SHA512:
6
+ metadata.gz: 60faca06f642ce0f608b54a64d44efea710599caf155ce4227b7dc2b0f1e307f5aa273d1fe6d0655ac43632898d4ba545c30390326a1cd08f8fb81b24374aa55
7
+ data.tar.gz: c80298500e39fefd13c1dd6bd69bec8aea999ea59c81289aca86f173cd1cc6ff22f564e52110654b4fa3445e447cdb4417ace40d29d6d375a6b61a0d8f3e1ae1
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ /.idea/
data/.ruby-gemset ADDED
File without changes
data/.ruby-version ADDED
File without changes
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.4.4
5
+ before_install: gem install bundler -v 1.16.2
data/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ ## [v0.1.2]
4
+
5
+ - Commented out publishing protection in gemfile.
6
+
7
+ ## [v0.1.1]
8
+
9
+ - Fix the interface collection and model.
10
+
11
+ ## [v0.1.0]
12
+
13
+ - Initial release of fog-gridscale.
14
+
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,21 @@
1
+ # Contributing to fog-gridscale
2
+
3
+ As an open source project, we encourage and appreciate any kind of contributions
4
+ like comments, enhancement requests, bug reports, or code contributions!
5
+
6
+ ## Development workflow
7
+
8
+ * Development is done on the `develop` branch.
9
+ * Releases are cut from the `master` branch.
10
+ * For anything larger than single commits, please use feature/bugfix branches.
11
+
12
+ ## Reporting Bugs or Enhancement Requests
13
+
14
+ Please submit bugs or enhancement requests through the public bug tracker within the
15
+ bitbucket project.
16
+
17
+ ## Submitting Patches
18
+
19
+ The fog-gridscale source code is managed using the git distributed source control
20
+ management tool <https://www.git-scm.org/>. Please submit patches accordingly.
21
+
data/CONTRIBUTORS.md ADDED
@@ -0,0 +1,2 @@
1
+ * Aldemuro Haris <aldemuro@gridscale.io>
2
+ * Wouter Wijsman <wouter@gridscale.io>
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in fog-gridscale.gemspec
6
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 CONTRIBUTORS.MD
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,87 @@
1
+ # Fog::Gridscale
2
+
3
+ This is the plugin Gem to talk to [gridscale](https://gridscale.io/) clouds via fog.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'fog-gridscale'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install fog-gridscale
20
+
21
+ ## Usage
22
+
23
+ ### Initial Setup
24
+
25
+
26
+ # Getting started: the compute service
27
+
28
+ You'll need a gridscale account, user uuid and an API token to use this provider.
29
+
30
+ Get one from https://my.gridscale.io/APIs/
31
+
32
+ Write down the Access Token.
33
+
34
+ ## Connecting, retrieving and managing server objects
35
+
36
+ .
37
+
38
+ First, create a connection to the host:
39
+
40
+ ```ruby
41
+ require 'fog/gridscale'
42
+ require 'pp'
43
+ gridscale = Fog::Compute.new({
44
+ :provider => 'gridscale',
45
+ :api_token => 'your token',
46
+ :user_uuid => 'your user uuid',
47
+
48
+ })
49
+ ```
50
+
51
+
52
+ ## Listing servers
53
+
54
+ Listing servers and attributes:
55
+
56
+ ```ruby
57
+ gridscale.servers.each do |server|
58
+ puts server.object_uuid
59
+ puts server.name
60
+ puts server.cores
61
+ puts server.memory
62
+ end
63
+ ```
64
+
65
+ ## Server creation
66
+
67
+ Creating a new server:
68
+
69
+ ```ruby
70
+ server = gridscale.servers.create :name => 'foobar',
71
+ :cores => 2,
72
+ :memory => 4,
73
+
74
+ ```
75
+
76
+ ## Get a server
77
+ ```ruby
78
+ gridscale.servers.get(server_uuid)
79
+ ```
80
+
81
+ ## Update a server
82
+ ```ruby
83
+ gridscale.server_update(server_uuid, payload)
84
+
85
+ ```
86
+
87
+
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/*_test.rb"]
8
+ end
9
+
10
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "fog/gridscale"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,41 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "fog/gridscale/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "fog-gridscale"
8
+ spec.version = Fog::Gridscale::VERSION
9
+ spec.authors = ["aldemuro haris"]
10
+ spec.email = ["aldemuro@gridscale.io"]
11
+
12
+ spec.summary = "Module for the 'fog' gem to support gridscale cloud platform"
13
+ spec.description = "This library can be used as a module for `fog` or as standalone gridscale provider"
14
+ spec.homepage = "https://bitbucket.org/gridscale/fog-gridscale"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ #if spec.respond_to?(:metadata)
20
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
21
+ #else
22
+ # raise "RubyGems 2.0 or newer is required to protect against " \
23
+ # "public gem pushes."
24
+ #end
25
+
26
+ # Specify which files should be added to the gem when it is released.
27
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
28
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
29
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
30
+ end
31
+ spec.bindir = "exe"
32
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
+ spec.require_paths = ["lib"]
34
+
35
+ spec.add_development_dependency "bundler", "~> 1.16"
36
+ spec.add_development_dependency "rake", "~> 10.0"
37
+ spec.add_development_dependency "minitest", "~> 5.0"
38
+
39
+ spec.add_dependency 'fog-core'
40
+ spec.add_dependency 'fog-json'
41
+ end
@@ -0,0 +1,29 @@
1
+ class Gridscale < Fog::Bin
2
+ class << self
3
+ def class_for(key)
4
+ case key
5
+ when :compute
6
+ Fog::Compute::Gsstorage
7
+ else
8
+ raise ArgumentError, "Unsupported #{self} service: #{key}"
9
+ end
10
+ end
11
+
12
+ def [](service)
13
+ @@connections ||= Hash.new do |hash, key|
14
+ hash[key] = case key
15
+ when :compute
16
+ Fog::Logger.warning("Gsstorage[:compute] is not recommended, use Compute[:gsstorage] for portability")
17
+ Fog::Compute.new(:provider => 'gridscale')
18
+ else
19
+ raise ArgumentError, "Unrecognized service: #{key.inspect}"
20
+ end
21
+ end
22
+ @@connections[service]
23
+ end
24
+
25
+ def services
26
+ Fog::Gsstorage.services
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,325 @@
1
+ require "fog/core"
2
+ require "pp"
3
+ require "json"
4
+
5
+ module Fog
6
+ module Compute
7
+ class Gridscale < Fog::Service
8
+ autoload :PagingCollection, File.expand_path('../gridscale/models/paging_collection', __FILE__)
9
+
10
+ requires :api_token , :user_uuid
11
+
12
+ model_path 'fog/compute/gridscale/models'
13
+ model :storage
14
+ collection :storages
15
+ model :server
16
+ collection :servers
17
+ model :network
18
+ collection :networks
19
+ model :ip
20
+ collection :ips
21
+ model :interface
22
+ collection :interfaces
23
+ model :cas
24
+ collection :cass
25
+ model :loadbalancer
26
+ collection :loadbalancers
27
+ model :server_relation_storage
28
+ collection :server_relation_storages
29
+ model :server_relation_network
30
+ collection :server_relation_networks
31
+ model :server_relation_ip
32
+ collection :server_relation_ips
33
+ model :server_relation_isoimage
34
+ collection :server_relation_isoimages
35
+ model :sshkey
36
+ collection :sshkeys
37
+ model :snapshot
38
+ collection :snapshots
39
+ model :snapshot_schedule
40
+ collection :snapshot_schedules
41
+ model :template
42
+ collection :templates
43
+ model :location
44
+ collection :locations
45
+ model :request
46
+ collection :requests
47
+ model :access_key
48
+ collection :access_keys
49
+ model :bucket
50
+ collection :buckets
51
+ model :firewall
52
+ collection :firewalls
53
+ model :deleted_ip
54
+ collection :deleted_ips
55
+ model :deleted_network
56
+ collection :deleted_networks
57
+ model :deleted_server
58
+ collection :deleted_servers
59
+ model :deleted_storage
60
+ collection :deleted_storages
61
+ model :deleted_isoimage
62
+ collection :deleted_isoimages
63
+ model :deleted_snapshot
64
+ collection :deleted_snapshots
65
+ model :deleted_template
66
+ collection :deleted_templates
67
+ model :isoimage
68
+ collection :isoimages
69
+ model :paas_service
70
+ collection :paas_services
71
+ model :paas_security_zone
72
+ collection :paas_security_zones
73
+ model :marketplace_template
74
+ collection :marketplace_templates
75
+
76
+ request_path 'fog/compute/gridscale/requests'
77
+
78
+ #storage
79
+ request :storage_delete
80
+ request :storage_create
81
+ request :storage_get
82
+ request :storage_events_get
83
+ request :storages_get
84
+ request :storage_update
85
+
86
+ #server
87
+ request :servers_get
88
+ request :server_get
89
+ request :server_delete
90
+ request :server_create
91
+ request :server_update
92
+
93
+ request :server_shutdown
94
+ request :server_power_off
95
+ request :server_power_on
96
+ request :server_power_get
97
+
98
+ request :server_relation_ips_get
99
+ request :server_relation_ip_get
100
+ request :server_relation_ip_delete
101
+ request :server_relation_ip_create
102
+
103
+ request :server_relation_storages_get
104
+ request :server_relation_storage_get
105
+ request :server_relation_storage_delete
106
+ request :server_relation_storage_create
107
+ request :server_relation_storage_update
108
+
109
+ request :server_relation_networks_get
110
+ request :server_relation_network_get
111
+ request :server_relation_network_delete
112
+ request :server_relation_network_create
113
+ request :server_relation_network_update
114
+
115
+ request :server_relation_isoimages_get
116
+ request :server_relation_isoimage_get
117
+ request :server_relation_isoimage_delete
118
+ request :server_relation_isoimage_create
119
+ request :server_relation_isoimage_update
120
+
121
+ request :server_events_get
122
+ request :server_shutdown
123
+
124
+ #network
125
+ request :network_delete
126
+ request :network_create
127
+ request :network_get
128
+ request :network_events_get
129
+ request :networks_get
130
+ request :network_update
131
+
132
+ #ip
133
+ request :ip_delete
134
+ request :ip_create
135
+ request :ip_get
136
+ request :ip_events_get
137
+ request :ips_get
138
+ request :ip_update
139
+
140
+ #isoimage
141
+ request :isoimage_delete
142
+ request :isoimage_create
143
+ request :isoimage_get
144
+ request :isoimage_events_get
145
+ request :isoimages_get
146
+ request :isoimage_update
147
+
148
+ #cas
149
+ request :cas_create
150
+ request :cass_get
151
+ request :cas_delete
152
+ request :cas_get
153
+ request :cas_update
154
+ request :cas_events_get
155
+ request :cas_actions_get
156
+
157
+ #snapshot
158
+ request :snapshot_create
159
+ request :snapshots_get
160
+ request :snapshot_delete
161
+ request :snapshot_get
162
+ request :snapshot_update
163
+
164
+ #snapshot_schedule
165
+ request :snapshot_schedule_create
166
+ request :snapshot_schedules_get
167
+ request :snapshot_schedule_delete
168
+ request :snapshot_schedule_get
169
+ request :snapshot_schedule_update
170
+
171
+
172
+ #template
173
+ request :template_delete
174
+ request :template_create
175
+ request :template_get
176
+ request :template_events_get
177
+ request :templates_get
178
+ request :template_update
179
+
180
+ #deleted object
181
+ request :deleted_ips_get
182
+ request :deleted_isoimages_get
183
+ request :deleted_networks_get
184
+ request :deleted_servers_get
185
+ request :deleted_snapshots_get
186
+ request :deleted_storages_get
187
+ request :deleted_templates_get
188
+
189
+ #load balancer
190
+ request :load_balancer_delete
191
+ request :load_balancer_create
192
+ request :load_balancer_get
193
+ request :load_balancer_events_get
194
+ request :load_balancers_get
195
+ request :load_balancer_update
196
+
197
+ #firewall
198
+ request :firewall_delete
199
+ request :firewall_create
200
+ request :firewall_get
201
+ request :firewall_events_get
202
+ request :firewalls_get
203
+ request :firewall_update
204
+
205
+ #marketplace template
206
+ request :marketplace_template_delete
207
+ request :marketplace_template_create
208
+ request :marketplace_template_get
209
+ request :marketplace_template_events_get
210
+ request :marketplace_templates_get
211
+ request :marketplace_template_update
212
+
213
+ #request
214
+ request :request_get
215
+
216
+ #Object Storage
217
+ request :access_keys_get
218
+ request :access_key_get
219
+ request :access_key_create
220
+ request :access_key_delete
221
+ request :buckets_get
222
+ request :bucket_get
223
+
224
+ #sshkey
225
+ request :sshkey_create
226
+ request :sshkey_get
227
+ request :sshkeys_get
228
+ request :sshkey_delete
229
+ request :sshkey_update
230
+
231
+ #location
232
+ request :location_get
233
+ request :locations_get
234
+
235
+ #paas service
236
+ request :paas_service_create
237
+ request :paas_service_get
238
+ request :paas_services_get
239
+ request :paas_service_delete
240
+ request :paas_service_update
241
+
242
+ #paas security zone
243
+ request :paas_security_zone_create
244
+ request :paas_security_zone_get
245
+ request :paas_security_zones_get
246
+ request :paas_security_zone_delete
247
+ request :paas_security_zone_update
248
+
249
+ #marketplace template
250
+ request :marketplace_template_create
251
+ request :marketplace_template_get
252
+ request :marketplace_templates_get
253
+ request :marketplace_template_delete
254
+ request :marketplace_template_update
255
+
256
+ class Mock
257
+ def self.data
258
+ @data ||= Hash.new do |hash, key|
259
+ hash[key] = {
260
+ :storage => [],
261
+ # :ssh_keys => []
262
+ }
263
+ end
264
+ end
265
+
266
+ def initialize(options={})
267
+ @api_token = options[:api_token]
268
+ @user_uuid = options[:user_uuid]
269
+
270
+ end
271
+
272
+ def data
273
+ self.class.data[@api_token]
274
+ self.class.data[@user_uuid]
275
+ end
276
+
277
+ def reset_data
278
+ self.class.data.delete(@api_token)
279
+ self.class.data.delete(@user_uuid)
280
+ end
281
+ end
282
+
283
+ class Real
284
+ def initialize(options={})
285
+ api_token = options[:api_token]
286
+ user_uuid = options[:user_uuid]
287
+ host = options[:host]
288
+
289
+ persistent = false
290
+
291
+ options = {
292
+ headers: {
293
+ 'X-Auth-UserId' => "#{user_uuid}",
294
+ 'X-Auth-Token' => "#{api_token}",
295
+ }
296
+ }
297
+ if host
298
+ @connection = Fog::Core::Connection.new host, persistent, options
299
+ else
300
+ @connection = Fog::Core::Connection.new 'https://api.gridscale.io', persistent, options
301
+ end
302
+
303
+ end
304
+
305
+ def request(params)
306
+ params[:headers] ||= {}
307
+ begin
308
+ response = @connection.request(params)
309
+ rescue Excon::Errors::HTTPStatusError => error
310
+ raise case error.response.body
311
+ when Excon::Errors::NotFound
312
+ NotFound.slurp(error.response.body)
313
+ else
314
+ error.response.body
315
+ end
316
+ end
317
+ unless response.body.empty?
318
+ response.body = Fog::JSON.decode(response.body)
319
+ end
320
+ response
321
+ end
322
+ end
323
+ end
324
+ end
325
+ end