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
@@ -0,0 +1,62 @@
1
+ require 'fog/compute/gridscale/models/paas_service'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Gridscale
6
+ class PaasService < Fog::Model
7
+ identity :object_uuid
8
+
9
+ attribute :name
10
+ attribute :object_uuid
11
+ attribute :labels
12
+ attribute :status
13
+ attribute :create_time
14
+ attribute :change_time
15
+ attribute :current_price
16
+ attribute :listen_port
17
+ attribute :security_zone_uuid
18
+ attribute :paas_service_template_uuid
19
+ attribute :usage_in_minutes
20
+ attribute :parameters
21
+ attribute :credential
22
+ attribute :resource_limit
23
+
24
+ def delete
25
+ requires :object_uuid
26
+ response = service.paas_service_delete object_uuid
27
+ response.body
28
+ end
29
+
30
+ def destroy
31
+ requires :object_uuid
32
+ response = service.paas_service_delete object_uuid
33
+ response.body
34
+ end
35
+
36
+ def save
37
+ raise Fog::Errors::Error.new('Re-saving an existing object may create a duplicate') if persisted?
38
+ requires :name, :paas_service_template_uuid
39
+
40
+ options = {}
41
+
42
+ if attributes[:labels]
43
+ options[:labels] = labels
44
+ end
45
+
46
+ data = service.paas_service_create(name, paas_service_template_uuid, options)
47
+
48
+ merge_attributes(data.body)
49
+ true
50
+ end
51
+
52
+ def update
53
+ requires :object_uuid
54
+ data = service.paas_service_update(object_uuid)
55
+ merge_attributes(data.body)
56
+ true
57
+ end
58
+
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,25 @@
1
+ require 'fog/compute/gridscale/models/paging_collection'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Gridscale
6
+ class PaasServices < Fog::Compute::Gridscale::PagingCollection
7
+ model Fog::Compute::Gridscale::PaasService
8
+
9
+ def all(filters={})
10
+ data = service.paas_services_get(filters)
11
+ droplets = data.body["paas_services"].values
12
+ load(droplets)
13
+ end
14
+
15
+ def get(object_uuid)
16
+ paas_service = service.paas_service_get(object_uuid).body['paas_service']
17
+ new(paas_service) if paas_service
18
+ rescue Fog::Errors::NotFound
19
+ nil
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module Compute
3
+ class Gridscale
4
+ class PagingCollection < Fog::Collection
5
+
6
+ attribute :next
7
+ attribute :last
8
+
9
+ def next_page
10
+ all(page: @next) if @next != @last
11
+ end
12
+
13
+ def previous_page
14
+ if @next.to_i > 2
15
+ all(page: @next.to_i - 2)
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def deep_fetch(hash, *path)
22
+ path.inject(hash) do |acc, key|
23
+ acc.respond_to?(:keys) ? acc[key] : nil
24
+ end
25
+ end
26
+
27
+ def get_page(link)
28
+ if match = link.match(/page=(?<page>\d+)/)
29
+ match.captures.last
30
+ end
31
+ end
32
+
33
+ def get_paged_links(links)
34
+ next_link = deep_fetch(links, "pages", "next").to_s
35
+ last_link = deep_fetch(links, "pages", "last").to_s
36
+ @next = get_page(next_link) || @next
37
+ @last = get_page(last_link) || @last
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,16 @@
1
+ require 'fog/compute/gridscale/models/storage'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Gridscale
6
+ class Request < Fog::Model
7
+ identity :object_uuid
8
+
9
+ attribute :create_time
10
+ attribute :message
11
+ attribute :status
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,19 @@
1
+ require 'fog/compute/gridscale/models/paging_collection'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Gridscale
6
+ class Requests < Fog::Compute::Gridscale::PagingCollection
7
+ model Fog::Compute::Gridscale::Request
8
+
9
+ def get(object_uuid)
10
+ request = service.request_get(object_uuid).body[object_uuid]
11
+ new(request) if request
12
+ rescue Fog::Errors::NotFound
13
+ nil
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,168 @@
1
+ require 'fog/compute/models/server'
2
+ require 'fog/core'
3
+ module Fog
4
+ module Compute
5
+ class Gridscale
6
+ class Server < Fog::Compute::Server
7
+ identity :object_uuid
8
+
9
+ attribute :auto_recovery
10
+ attribute :availability_zone
11
+ attribute :current_price
12
+ attribute :power
13
+ attribute :status
14
+ attribute :cores, :aliases => 'cpu'
15
+ attribute :name
16
+ attribute :storage
17
+ attribute :interfaces_attributes
18
+ attribute :location_uuid
19
+ attribute :usage_in_minutes_cores
20
+ attribute :labels
21
+ attribute :hardware_profile
22
+ attribute :location_iata
23
+ attribute :location_name
24
+ attribute :legacy
25
+ attribute :memory
26
+ attribute :object_uuid
27
+ attribute :server_uuid
28
+ attribute :create_time
29
+ attribute :relations
30
+ attribute :usage_in_minutes_memory
31
+ attribute :change_time
32
+ attribute :console_token
33
+ attribute :location_country
34
+ attribute :ipaddr_uuid
35
+ attribute :network_uuid
36
+ attribute :public_ips
37
+ attribute :networks
38
+ attribute :storages
39
+ attribute :storage_uuid
40
+ attribute :interfaces
41
+ attribute :mac
42
+ attribute :cpu
43
+ attribute :request_uuid
44
+ attribute :template_uuid
45
+ attribute :ipv4_address
46
+ attribute :ipv6_address
47
+ attribute :ip_addresses
48
+ attribute :sshkey_uuid
49
+ attribute :ip4_add_in
50
+ attribute :ip6_add_in
51
+
52
+
53
+ def cpu
54
+ cores
55
+ end
56
+
57
+ def public_ip_address
58
+ ipv4_address
59
+ end
60
+
61
+ def ipv4_address
62
+ if (net = relations['public_ips'].find {|n|n['family']==4})
63
+ net['ip']
64
+ end
65
+ end
66
+
67
+ def mac
68
+ if relations['networks'] and relations['networks'] != []
69
+ if relations['networks'].first
70
+ if relations['networks'].first['mac'] != nil
71
+ relations['networks'].first['mac'].to_s
72
+ else
73
+ nil
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ def ipv6_address
80
+ if (net = relations['public_ips'].find {|n|n['family']==6})
81
+ net['ip']
82
+ end
83
+ end
84
+
85
+ def save
86
+ raise Fog::Errors::Error.new('Re-saving an existing object may create a duplicate') if persisted?
87
+ requires :name, :cores, :memory
88
+
89
+ options = {}
90
+ if attributes[:interfaces_attributes]
91
+ options[:interfaces_attributes] = attributes[:interfaces_attributes]
92
+ end
93
+
94
+ if attributes[:storage]
95
+ options[:storage] = attributes[:storage]
96
+ end
97
+
98
+ if attributes[:labels]
99
+ options[:labels] = attributes[:labels]
100
+ end
101
+
102
+ if attributes[:auto_recovery]
103
+ options[:auto_recovery] = auto_recovery
104
+ end
105
+
106
+ if attributes[:hardware_profile]
107
+ options[:hardware_profile] = hardware_profile
108
+ end
109
+
110
+ if attributes[:availability_zone]
111
+ options[:availability_zone] = availability_zone
112
+ end
113
+
114
+ if attributes[:location_uuid]
115
+ options[:location_uuid] = location_uuid
116
+ end
117
+
118
+ if attributes[:template_uuid]
119
+ options[:template_uuid] = template_uuid
120
+ end
121
+
122
+ if attributes[:sshkey_uuid]
123
+ options[:sshkey_uuid] = sshkey_uuid
124
+ end
125
+
126
+ data = service.server_create(name, cores, memory, options)
127
+ merge_attributes(data.body['server'])
128
+ end
129
+
130
+ def delete
131
+ requires :object_uuid
132
+ response = service.server_delete(object_uuid)
133
+ response.body
134
+ end
135
+
136
+ def destroy
137
+ requires :object_uuid
138
+ response = service.server_delete(object_uuid)
139
+ response
140
+ end
141
+
142
+ def start
143
+ response = service.server_power_on(object_uuid)
144
+ response.body
145
+ end
146
+
147
+ def shutdown
148
+ requires :object_uuid
149
+ response = service.server_shutdown(object_uuid)
150
+ response
151
+ end
152
+
153
+ def stop
154
+ requires :object_uuid
155
+ response = service.server_power_off(object_uuid)
156
+ response
157
+ end
158
+
159
+ def ready?
160
+ requires :object_uuid
161
+ response = service.server_power_get(object_uuid)
162
+ response.body['power']
163
+ end
164
+
165
+ end
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,49 @@
1
+ require 'fog/compute/gridscale/models/ip'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Gridscale
6
+ class ServerRelationIp < Fog::Model
7
+ identity :object_uuid
8
+
9
+ attribute :create_time
10
+ attribute :family
11
+ attribute :ip
12
+ attribute :object_uuid
13
+ attribute :prefix
14
+ attribute :server_uuid
15
+ attribute :ip_uuid
16
+ attribute :bootdevice
17
+
18
+
19
+ def save
20
+ raise Fog::Errors::Error.new('Re-saving an existing object may create a duplicate') if persisted?
21
+ requires :server_uuid, :ip_uuid
22
+
23
+ options = {}
24
+ if attributes[:bootdevice]
25
+ options[:bootdevice] = bootdevice
26
+ end
27
+
28
+ service.server_relation_ip_create(server_uuid, ip_uuid, options)
29
+
30
+ end
31
+
32
+ def delete
33
+ object_uuid = {}
34
+ object_uuid[:server_uuid] = attributes[:server_uuid]
35
+ object_uuid[:ip_uuid] = attributes[:ip_uuid]
36
+ service.server_relation_ip_delete(server_uuid, ip_uuid)
37
+ end
38
+
39
+ def destroy
40
+
41
+ response = service.server_relation_ip_delete(object_uuid)
42
+ response.body
43
+
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,27 @@
1
+ require 'fog/compute/gridscale/models/paging_collection'
2
+ require 'fog/compute/gridscale/models/server_relation_network'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Gridscale
7
+ class ServerRelationIps < Fog::Compute::Gridscale::PagingCollection
8
+ model Fog::Compute::Gridscale::ServerRelationIp
9
+
10
+ def all(server_uuid)
11
+ data = service.server_relation_ips_get(server_uuid)
12
+ relations = data.body['ip_relations']
13
+ load(relations)
14
+ end
15
+
16
+
17
+ def get(payload)
18
+ ips_relation = service.server_relation_ip_get(payload).body['ip_relation']
19
+ new(ips_relation) if ips_relation
20
+ rescue Fog::Errors::NotFound
21
+ nil
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,47 @@
1
+ require 'fog/compute/gridscale/models/isoimage'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Gridscale
6
+ class ServerRelationIsoimage < Fog::Model
7
+ identity :object_uuid
8
+
9
+ attribute :bootdevice
10
+ attribute :create_time
11
+ attribute :object_name
12
+ attribute :object_uuid
13
+ attribute :private
14
+ attribute :server_uuid
15
+ attribute :isoimage_uuid
16
+
17
+
18
+ def save
19
+ raise Fog::Errors::Error.new('Re-saving an existing object may create a duplicate') if persisted?
20
+ requires :server_uuid, :isoimage_uuid
21
+
22
+ options = {}
23
+ if attributes[:bootdevice]
24
+ options[:bootdevice] = bootdevice
25
+ end
26
+
27
+ service.server_relation_isoimage_create(server_uuid, isoimage_uuid, options)
28
+
29
+ end
30
+
31
+ def delete
32
+ object_uuid = {}
33
+ object_uuid[:server_uuid] = attributes[:server_uuid]
34
+ object_uuid[:isoimage_uuid] = attributes[:isoimage_uuid]
35
+ service.server_relation_isoimage_delete(server_uuid, isoimage_uuid)
36
+ end
37
+
38
+ def destroy
39
+
40
+ response = service.server_relation_isoimage_delete(object_uuid)
41
+ response.body
42
+
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end