fog-gridscale 0.1.2

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