fog-ecloud 0.0.1

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 (286) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.rubocop.yml +20 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +17 -0
  7. data/CONTRIBUTING.md +18 -0
  8. data/CONTRIBUTORS.md +16 -0
  9. data/Gemfile +4 -0
  10. data/LICENSE.md +20 -0
  11. data/README.md +38 -0
  12. data/Rakefile +18 -0
  13. data/fog-ecloud.gemspec +35 -0
  14. data/gemfiles/Gemfile.1.9.2- +8 -0
  15. data/gemfiles/Gemfile.1.9.3+ +7 -0
  16. data/lib/fog/ecloud/collection.rb +24 -0
  17. data/lib/fog/ecloud/compute.rb +824 -0
  18. data/lib/fog/ecloud/core.rb +32 -0
  19. data/lib/fog/ecloud/generate_collection.rb +127 -0
  20. data/lib/fog/ecloud/ipaddr.rb +5 -0
  21. data/lib/fog/ecloud/mock_data_classes.rb +766 -0
  22. data/lib/fog/ecloud/model.rb +20 -0
  23. data/lib/fog/ecloud/models/compute/admin_organization.rb +43 -0
  24. data/lib/fog/ecloud/models/compute/admin_organizations.rb +21 -0
  25. data/lib/fog/ecloud/models/compute/api_key.rb +20 -0
  26. data/lib/fog/ecloud/models/compute/api_keys.rb +26 -0
  27. data/lib/fog/ecloud/models/compute/association.rb +23 -0
  28. data/lib/fog/ecloud/models/compute/associations.rb +34 -0
  29. data/lib/fog/ecloud/models/compute/authentication_level.rb +21 -0
  30. data/lib/fog/ecloud/models/compute/authentication_levels.rb +26 -0
  31. data/lib/fog/ecloud/models/compute/backup_internet_service.rb +45 -0
  32. data/lib/fog/ecloud/models/compute/backup_internet_services.rb +41 -0
  33. data/lib/fog/ecloud/models/compute/catalog.rb +39 -0
  34. data/lib/fog/ecloud/models/compute/catalog_configuration.rb +22 -0
  35. data/lib/fog/ecloud/models/compute/catalog_configurations.rb +26 -0
  36. data/lib/fog/ecloud/models/compute/catalog_item.rb +24 -0
  37. data/lib/fog/ecloud/models/compute/compute_pool.rb +70 -0
  38. data/lib/fog/ecloud/models/compute/compute_pools.rb +33 -0
  39. data/lib/fog/ecloud/models/compute/cpu_usage_detail.rb +16 -0
  40. data/lib/fog/ecloud/models/compute/cpu_usage_detail_summary.rb +26 -0
  41. data/lib/fog/ecloud/models/compute/detached_disk.rb +27 -0
  42. data/lib/fog/ecloud/models/compute/detached_disks.rb +26 -0
  43. data/lib/fog/ecloud/models/compute/environment.rb +111 -0
  44. data/lib/fog/ecloud/models/compute/environments.rb +39 -0
  45. data/lib/fog/ecloud/models/compute/firewall_acl.rb +27 -0
  46. data/lib/fog/ecloud/models/compute/firewall_acls.rb +27 -0
  47. data/lib/fog/ecloud/models/compute/group.rb +41 -0
  48. data/lib/fog/ecloud/models/compute/groups.rb +38 -0
  49. data/lib/fog/ecloud/models/compute/guest_process.rb +15 -0
  50. data/lib/fog/ecloud/models/compute/guest_processes.rb +26 -0
  51. data/lib/fog/ecloud/models/compute/hardware_configuration.rb +18 -0
  52. data/lib/fog/ecloud/models/compute/hardware_configurations.rb +26 -0
  53. data/lib/fog/ecloud/models/compute/internet_service.rb +97 -0
  54. data/lib/fog/ecloud/models/compute/internet_services.rb +44 -0
  55. data/lib/fog/ecloud/models/compute/ip_address.rb +39 -0
  56. data/lib/fog/ecloud/models/compute/ip_addresses.rb +32 -0
  57. data/lib/fog/ecloud/models/compute/layout.rb +20 -0
  58. data/lib/fog/ecloud/models/compute/layouts.rb +26 -0
  59. data/lib/fog/ecloud/models/compute/location.rb +22 -0
  60. data/lib/fog/ecloud/models/compute/locations.rb +28 -0
  61. data/lib/fog/ecloud/models/compute/login_banner.rb +16 -0
  62. data/lib/fog/ecloud/models/compute/login_banners.rb +26 -0
  63. data/lib/fog/ecloud/models/compute/memory_usage_detail.rb +16 -0
  64. data/lib/fog/ecloud/models/compute/memory_usage_detail_summary.rb +26 -0
  65. data/lib/fog/ecloud/models/compute/monitor.rb +46 -0
  66. data/lib/fog/ecloud/models/compute/monitors.rb +30 -0
  67. data/lib/fog/ecloud/models/compute/network.rb +46 -0
  68. data/lib/fog/ecloud/models/compute/networks.rb +32 -0
  69. data/lib/fog/ecloud/models/compute/node.rb +45 -0
  70. data/lib/fog/ecloud/models/compute/nodes.rb +42 -0
  71. data/lib/fog/ecloud/models/compute/operating_system.rb +16 -0
  72. data/lib/fog/ecloud/models/compute/operating_system_families.rb +26 -0
  73. data/lib/fog/ecloud/models/compute/operating_system_family.rb +21 -0
  74. data/lib/fog/ecloud/models/compute/operating_systems.rb +25 -0
  75. data/lib/fog/ecloud/models/compute/organization.rb +78 -0
  76. data/lib/fog/ecloud/models/compute/organizations.rb +38 -0
  77. data/lib/fog/ecloud/models/compute/password_complexity_rule.rb +49 -0
  78. data/lib/fog/ecloud/models/compute/password_complexity_rules.rb +26 -0
  79. data/lib/fog/ecloud/models/compute/physical_device.rb +21 -0
  80. data/lib/fog/ecloud/models/compute/physical_devices.rb +26 -0
  81. data/lib/fog/ecloud/models/compute/public_ip.rb +26 -0
  82. data/lib/fog/ecloud/models/compute/public_ips.rb +31 -0
  83. data/lib/fog/ecloud/models/compute/rnat.rb +27 -0
  84. data/lib/fog/ecloud/models/compute/rnats.rb +26 -0
  85. data/lib/fog/ecloud/models/compute/role.rb +23 -0
  86. data/lib/fog/ecloud/models/compute/roles.rb +36 -0
  87. data/lib/fog/ecloud/models/compute/row.rb +56 -0
  88. data/lib/fog/ecloud/models/compute/rows.rb +39 -0
  89. data/lib/fog/ecloud/models/compute/server.rb +323 -0
  90. data/lib/fog/ecloud/models/compute/server_configuration_option.rb +16 -0
  91. data/lib/fog/ecloud/models/compute/server_configuration_options.rb +26 -0
  92. data/lib/fog/ecloud/models/compute/servers.rb +65 -0
  93. data/lib/fog/ecloud/models/compute/ssh_key.rb +19 -0
  94. data/lib/fog/ecloud/models/compute/ssh_keys.rb +26 -0
  95. data/lib/fog/ecloud/models/compute/storage_usage_detail.rb +16 -0
  96. data/lib/fog/ecloud/models/compute/storage_usage_detail_summary.rb +26 -0
  97. data/lib/fog/ecloud/models/compute/support_ticket.rb +28 -0
  98. data/lib/fog/ecloud/models/compute/support_tickets.rb +26 -0
  99. data/lib/fog/ecloud/models/compute/tag.rb +13 -0
  100. data/lib/fog/ecloud/models/compute/tags.rb +26 -0
  101. data/lib/fog/ecloud/models/compute/task.rb +23 -0
  102. data/lib/fog/ecloud/models/compute/tasks.rb +29 -0
  103. data/lib/fog/ecloud/models/compute/template.rb +23 -0
  104. data/lib/fog/ecloud/models/compute/templates.rb +41 -0
  105. data/lib/fog/ecloud/models/compute/trusted_network_group.rb +33 -0
  106. data/lib/fog/ecloud/models/compute/trusted_network_groups.rb +27 -0
  107. data/lib/fog/ecloud/models/compute/user.rb +35 -0
  108. data/lib/fog/ecloud/models/compute/users.rb +26 -0
  109. data/lib/fog/ecloud/models/compute/virtual_machine_assigned_ip.rb +32 -0
  110. data/lib/fog/ecloud/models/compute/virtual_machine_assigned_ips.rb +26 -0
  111. data/lib/fog/ecloud/requests/compute/admin_disable_support_access.rb +9 -0
  112. data/lib/fog/ecloud/requests/compute/admin_edit_authentication_levels.rb +32 -0
  113. data/lib/fog/ecloud/requests/compute/admin_edit_login_banner.rb +30 -0
  114. data/lib/fog/ecloud/requests/compute/admin_edit_password_complexity_rules.rb +72 -0
  115. data/lib/fog/ecloud/requests/compute/admin_enable_support_access.rb +9 -0
  116. data/lib/fog/ecloud/requests/compute/backup_internet_service_create.rb +47 -0
  117. data/lib/fog/ecloud/requests/compute/backup_internet_service_delete.rb +9 -0
  118. data/lib/fog/ecloud/requests/compute/backup_internet_service_edit.rb +47 -0
  119. data/lib/fog/ecloud/requests/compute/compute_pool_edit.rb +35 -0
  120. data/lib/fog/ecloud/requests/compute/firewall_acls_create.rb +78 -0
  121. data/lib/fog/ecloud/requests/compute/firewall_acls_delete.rb +9 -0
  122. data/lib/fog/ecloud/requests/compute/get_admin_organization.rb +23 -0
  123. data/lib/fog/ecloud/requests/compute/get_api_key.rb +9 -0
  124. data/lib/fog/ecloud/requests/compute/get_api_keys.rb +9 -0
  125. data/lib/fog/ecloud/requests/compute/get_association.rb +9 -0
  126. data/lib/fog/ecloud/requests/compute/get_associations.rb +9 -0
  127. data/lib/fog/ecloud/requests/compute/get_authentication_level.rb +9 -0
  128. data/lib/fog/ecloud/requests/compute/get_authentication_levels.rb +9 -0
  129. data/lib/fog/ecloud/requests/compute/get_backup_internet_service.rb +9 -0
  130. data/lib/fog/ecloud/requests/compute/get_backup_internet_services.rb +9 -0
  131. data/lib/fog/ecloud/requests/compute/get_catalog.rb +9 -0
  132. data/lib/fog/ecloud/requests/compute/get_catalog_configuration.rb +9 -0
  133. data/lib/fog/ecloud/requests/compute/get_catalog_configurations.rb +9 -0
  134. data/lib/fog/ecloud/requests/compute/get_catalog_item.rb +9 -0
  135. data/lib/fog/ecloud/requests/compute/get_compute_pool.rb +21 -0
  136. data/lib/fog/ecloud/requests/compute/get_compute_pools.rb +31 -0
  137. data/lib/fog/ecloud/requests/compute/get_cpu_usage_detail.rb +9 -0
  138. data/lib/fog/ecloud/requests/compute/get_cpu_usage_detail_summary.rb +9 -0
  139. data/lib/fog/ecloud/requests/compute/get_detached_disk.rb +21 -0
  140. data/lib/fog/ecloud/requests/compute/get_detached_disks.rb +31 -0
  141. data/lib/fog/ecloud/requests/compute/get_environment.rb +31 -0
  142. data/lib/fog/ecloud/requests/compute/get_environments.rb +0 -0
  143. data/lib/fog/ecloud/requests/compute/get_firewall_acl.rb +9 -0
  144. data/lib/fog/ecloud/requests/compute/get_firewall_acls.rb +9 -0
  145. data/lib/fog/ecloud/requests/compute/get_group.rb +18 -0
  146. data/lib/fog/ecloud/requests/compute/get_groups.rb +18 -0
  147. data/lib/fog/ecloud/requests/compute/get_guest_process.rb +9 -0
  148. data/lib/fog/ecloud/requests/compute/get_guest_processes.rb +9 -0
  149. data/lib/fog/ecloud/requests/compute/get_hardware_configuration.rb +29 -0
  150. data/lib/fog/ecloud/requests/compute/get_hardware_configurations.rb +14 -0
  151. data/lib/fog/ecloud/requests/compute/get_internet_service.rb +21 -0
  152. data/lib/fog/ecloud/requests/compute/get_internet_services.rb +18 -0
  153. data/lib/fog/ecloud/requests/compute/get_ip_address.rb +20 -0
  154. data/lib/fog/ecloud/requests/compute/get_layout.rb +18 -0
  155. data/lib/fog/ecloud/requests/compute/get_layouts.rb +18 -0
  156. data/lib/fog/ecloud/requests/compute/get_location.rb +9 -0
  157. data/lib/fog/ecloud/requests/compute/get_locations.rb +9 -0
  158. data/lib/fog/ecloud/requests/compute/get_login_banner.rb +9 -0
  159. data/lib/fog/ecloud/requests/compute/get_login_banners.rb +9 -0
  160. data/lib/fog/ecloud/requests/compute/get_memory_usage_detail.rb +9 -0
  161. data/lib/fog/ecloud/requests/compute/get_memory_usage_detail_summary.rb +9 -0
  162. data/lib/fog/ecloud/requests/compute/get_monitor.rb +9 -0
  163. data/lib/fog/ecloud/requests/compute/get_monitors.rb +9 -0
  164. data/lib/fog/ecloud/requests/compute/get_network.rb +21 -0
  165. data/lib/fog/ecloud/requests/compute/get_network_summary.rb +9 -0
  166. data/lib/fog/ecloud/requests/compute/get_networks.rb +30 -0
  167. data/lib/fog/ecloud/requests/compute/get_node.rb +21 -0
  168. data/lib/fog/ecloud/requests/compute/get_nodes.rb +18 -0
  169. data/lib/fog/ecloud/requests/compute/get_operating_system.rb +24 -0
  170. data/lib/fog/ecloud/requests/compute/get_operating_system_families.rb +30 -0
  171. data/lib/fog/ecloud/requests/compute/get_organization.rb +24 -0
  172. data/lib/fog/ecloud/requests/compute/get_organizations.rb +23 -0
  173. data/lib/fog/ecloud/requests/compute/get_password_complexity_rule.rb +9 -0
  174. data/lib/fog/ecloud/requests/compute/get_password_complexity_rules.rb +9 -0
  175. data/lib/fog/ecloud/requests/compute/get_physical_device.rb +9 -0
  176. data/lib/fog/ecloud/requests/compute/get_physical_devices.rb +9 -0
  177. data/lib/fog/ecloud/requests/compute/get_process.rb +9 -0
  178. data/lib/fog/ecloud/requests/compute/get_processes.rb +9 -0
  179. data/lib/fog/ecloud/requests/compute/get_public_ip.rb +21 -0
  180. data/lib/fog/ecloud/requests/compute/get_public_ips.rb +31 -0
  181. data/lib/fog/ecloud/requests/compute/get_rnat.rb +9 -0
  182. data/lib/fog/ecloud/requests/compute/get_rnats.rb +9 -0
  183. data/lib/fog/ecloud/requests/compute/get_role.rb +9 -0
  184. data/lib/fog/ecloud/requests/compute/get_roles.rb +9 -0
  185. data/lib/fog/ecloud/requests/compute/get_row.rb +18 -0
  186. data/lib/fog/ecloud/requests/compute/get_rows.rb +12 -0
  187. data/lib/fog/ecloud/requests/compute/get_server.rb +21 -0
  188. data/lib/fog/ecloud/requests/compute/get_server_configuration_option.rb +9 -0
  189. data/lib/fog/ecloud/requests/compute/get_server_configuration_options.rb +9 -0
  190. data/lib/fog/ecloud/requests/compute/get_servers.rb +42 -0
  191. data/lib/fog/ecloud/requests/compute/get_ssh_key.rb +21 -0
  192. data/lib/fog/ecloud/requests/compute/get_ssh_keys.rb +30 -0
  193. data/lib/fog/ecloud/requests/compute/get_storage_usage_detail.rb +9 -0
  194. data/lib/fog/ecloud/requests/compute/get_storage_usage_detail_summary.rb +9 -0
  195. data/lib/fog/ecloud/requests/compute/get_support_ticket.rb +9 -0
  196. data/lib/fog/ecloud/requests/compute/get_support_tickets.rb +9 -0
  197. data/lib/fog/ecloud/requests/compute/get_tag.rb +9 -0
  198. data/lib/fog/ecloud/requests/compute/get_tags.rb +9 -0
  199. data/lib/fog/ecloud/requests/compute/get_task.rb +13 -0
  200. data/lib/fog/ecloud/requests/compute/get_tasks.rb +9 -0
  201. data/lib/fog/ecloud/requests/compute/get_template.rb +21 -0
  202. data/lib/fog/ecloud/requests/compute/get_templates.rb +48 -0
  203. data/lib/fog/ecloud/requests/compute/get_trusted_network_group.rb +9 -0
  204. data/lib/fog/ecloud/requests/compute/get_trusted_network_groups.rb +9 -0
  205. data/lib/fog/ecloud/requests/compute/get_user.rb +9 -0
  206. data/lib/fog/ecloud/requests/compute/get_users.rb +9 -0
  207. data/lib/fog/ecloud/requests/compute/get_virtual_machine_assigned_ips.rb +42 -0
  208. data/lib/fog/ecloud/requests/compute/groups_create.rb +31 -0
  209. data/lib/fog/ecloud/requests/compute/groups_delete.rb +26 -0
  210. data/lib/fog/ecloud/requests/compute/groups_edit.rb +29 -0
  211. data/lib/fog/ecloud/requests/compute/groups_movedown.rb +9 -0
  212. data/lib/fog/ecloud/requests/compute/groups_moveup.rb +9 -0
  213. data/lib/fog/ecloud/requests/compute/internet_service_create.rb +102 -0
  214. data/lib/fog/ecloud/requests/compute/internet_service_delete.rb +33 -0
  215. data/lib/fog/ecloud/requests/compute/internet_service_edit.rb +58 -0
  216. data/lib/fog/ecloud/requests/compute/monitors_create_default.rb +9 -0
  217. data/lib/fog/ecloud/requests/compute/monitors_create_ecv.rb +40 -0
  218. data/lib/fog/ecloud/requests/compute/monitors_create_http.rb +44 -0
  219. data/lib/fog/ecloud/requests/compute/monitors_create_loopback.rb +9 -0
  220. data/lib/fog/ecloud/requests/compute/monitors_create_ping.rb +35 -0
  221. data/lib/fog/ecloud/requests/compute/monitors_disable.rb +9 -0
  222. data/lib/fog/ecloud/requests/compute/monitors_edit_ecv.rb +40 -0
  223. data/lib/fog/ecloud/requests/compute/monitors_edit_http.rb +44 -0
  224. data/lib/fog/ecloud/requests/compute/monitors_edit_ping.rb +35 -0
  225. data/lib/fog/ecloud/requests/compute/monitors_enable.rb +9 -0
  226. data/lib/fog/ecloud/requests/compute/node_service_create.rb +93 -0
  227. data/lib/fog/ecloud/requests/compute/node_service_delete.rb +33 -0
  228. data/lib/fog/ecloud/requests/compute/node_service_edit.rb +39 -0
  229. data/lib/fog/ecloud/requests/compute/power_off.rb +9 -0
  230. data/lib/fog/ecloud/requests/compute/power_on.rb +9 -0
  231. data/lib/fog/ecloud/requests/compute/power_reset.rb +9 -0
  232. data/lib/fog/ecloud/requests/compute/power_shutdown.rb +9 -0
  233. data/lib/fog/ecloud/requests/compute/public_ip_activate.rb +9 -0
  234. data/lib/fog/ecloud/requests/compute/rnat_associations_create_device.rb +32 -0
  235. data/lib/fog/ecloud/requests/compute/rnat_associations_delete.rb +9 -0
  236. data/lib/fog/ecloud/requests/compute/rnat_associations_edit_network.rb +31 -0
  237. data/lib/fog/ecloud/requests/compute/rows_create.rb +29 -0
  238. data/lib/fog/ecloud/requests/compute/rows_delete.rb +21 -0
  239. data/lib/fog/ecloud/requests/compute/rows_edit.rb +29 -0
  240. data/lib/fog/ecloud/requests/compute/rows_movedown.rb +9 -0
  241. data/lib/fog/ecloud/requests/compute/rows_moveup.rb +9 -0
  242. data/lib/fog/ecloud/requests/compute/trusted_network_groups_create.rb +51 -0
  243. data/lib/fog/ecloud/requests/compute/trusted_network_groups_delete.rb +9 -0
  244. data/lib/fog/ecloud/requests/compute/trusted_network_groups_edit.rb +51 -0
  245. data/lib/fog/ecloud/requests/compute/virtual_machine_attach_disk.rb +61 -0
  246. data/lib/fog/ecloud/requests/compute/virtual_machine_copy.rb +116 -0
  247. data/lib/fog/ecloud/requests/compute/virtual_machine_copy_identical.rb +43 -0
  248. data/lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb +244 -0
  249. data/lib/fog/ecloud/requests/compute/virtual_machine_delete.rb +46 -0
  250. data/lib/fog/ecloud/requests/compute/virtual_machine_detach_disk.rb +70 -0
  251. data/lib/fog/ecloud/requests/compute/virtual_machine_edit.rb +45 -0
  252. data/lib/fog/ecloud/requests/compute/virtual_machine_edit_assigned_ips.rb +80 -0
  253. data/lib/fog/ecloud/requests/compute/virtual_machine_edit_hardware_configuration.rb +75 -0
  254. data/lib/fog/ecloud/requests/compute/virtual_machine_import.rb +179 -0
  255. data/lib/fog/ecloud/requests/compute/virtual_machine_upload_file.rb +28 -0
  256. data/lib/fog/ecloud/version.rb +5 -0
  257. data/lib/fog/ecloud.rb +8 -0
  258. data/spec/minitest_helper.rb +31 -0
  259. data/tests/compute/helper.rb +27 -0
  260. data/tests/compute/models/admin_organization_tests.rb +16 -0
  261. data/tests/compute/models/compute_pool_tests.rb +17 -0
  262. data/tests/compute/models/detached_disk_tests.rb +26 -0
  263. data/tests/compute/models/environment_tests.rb +23 -0
  264. data/tests/compute/models/internet_service_tests.rb +28 -0
  265. data/tests/compute/models/ip_address_tests.rb +19 -0
  266. data/tests/compute/models/network_tests.rb +17 -0
  267. data/tests/compute/models/operating_system_families_tests.rb +13 -0
  268. data/tests/compute/models/operating_system_tests.rb +22 -0
  269. data/tests/compute/models/organization_tests.rb +21 -0
  270. data/tests/compute/models/public_ip_tests.rb +19 -0
  271. data/tests/compute/models/server_tests.rb +25 -0
  272. data/tests/compute/models/ssh_key_tests.rb +19 -0
  273. data/tests/compute/models/template_tests.rb +20 -0
  274. data/tests/helper.rb +24 -0
  275. data/tests/helpers/collection_helper.rb +97 -0
  276. data/tests/helpers/compute/flavors_helper.rb +32 -0
  277. data/tests/helpers/compute/server_helper.rb +25 -0
  278. data/tests/helpers/compute/servers_helper.rb +10 -0
  279. data/tests/helpers/formats_helper.rb +98 -0
  280. data/tests/helpers/formats_helper_tests.rb +110 -0
  281. data/tests/helpers/mock_helper.rb +115 -0
  282. data/tests/helpers/model_helper.rb +31 -0
  283. data/tests/helpers/responds_to_helper.rb +11 -0
  284. data/tests/helpers/schema_validator_tests.rb +107 -0
  285. data/tests/helpers/succeeds_helper.rb +9 -0
  286. metadata +457 -0
@@ -0,0 +1,58 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ module Shared
5
+ def validate_edit_internet_service_options(options)
6
+ required_opts = [:name, :enabled, :persistence]
7
+ unless required_opts.all? { |opt| options.key?(opt) }
8
+ raise ArgumentError.new("Required data missing: #{(required_opts - options.keys).map(&:inspect).join(", ")}")
9
+ end
10
+ raise ArgumentError.new("Required data missing: #{:persistence[:type]}") unless options[:persistence][:type]
11
+ end
12
+
13
+ def build_node_service_body_edit(options)
14
+ xml = Builder::XmlMarkup.new
15
+ xml.InternetService(:name => options[:name]) do
16
+ xml.Enabled options[:enabled]
17
+ if options[:description]
18
+ xml.Description options[:description]
19
+ end
20
+ xml.Persistence do
21
+ xml.Type options[:persistence][:type]
22
+ if options[:persistence][:timeout]
23
+ xml.Timeout options[:persistence][:timeout]
24
+ end
25
+ end
26
+ if options[:redirect_url]
27
+ xml.RedirectUrl options[:redirect_url]
28
+ end
29
+ if options[:trusted_network_group]
30
+ xml.TrustedNetworkGroup(:href => options[:trusted_network_group][:href], :name => service_data[:trusted_network_group][:name], :type => 'application/vnd.tmrk.cloud.trustedNetworkGroup')
31
+ end
32
+ if options[:backup_internet_service]
33
+ xml.BackupInternetService(:href => options[:backup_internet_service][:href], :name => service_data[:backup_internet_service][:name], :type => 'application/vnd.tmrk.cloud.backupInternetService')
34
+ end
35
+ if options[:load_balancing_method]
36
+ xml.LoadBalancingMethod options[:load_balancing_method]
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ class Real
43
+ def node_service_edit(options)
44
+ validate_edit_node_service_options(options)
45
+ body = build_node_service_body_edit(options)
46
+ request(
47
+ :expects => 202,
48
+ :method => 'PUT',
49
+ :headers => {},
50
+ :body => body,
51
+ :uri => options[:uri],
52
+ :parse => true
53
+ )
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :monitors_create_default, 201, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,40 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def monitors_create_ecv(data)
8
+ validate_data([:interval, :response_timeout, :retries, :downtime, :enabled, :send_string, :receive_string], data)
9
+
10
+ request(
11
+ :body => generate_ecv_monitor_request(data),
12
+ :expects => 201,
13
+ :method => "POST",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_ecv_monitor_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.CreateEcvMonitor do
25
+ xml.Interval data[:interval]
26
+ xml.ResponseTimeout data[:response_timeout]
27
+ xml.Retries data[:retries]
28
+ xml.Downtime data[:downtime]
29
+ xml.Enabled data[:enabled]
30
+ xml.SendString data[:send_string]
31
+ if data[:http_headers]
32
+ xml.HttpHeaders data[:http_headers]
33
+ end
34
+ xml.ReceiveString data[:receive_string]
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,44 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def monitors_create_http(data)
8
+ validate_data([:interval, :response_timeout, :retries, :downtime, :enabled, :request_uri, :response_codes], data)
9
+
10
+ request(
11
+ :body => generate_http_monitor_request(data),
12
+ :expects => 201,
13
+ :method => "POST",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_http_monitor_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.CreateHttpMonitor do
25
+ xml.Interval data[:interval]
26
+ xml.ResponseTimeout data[:response_timeout]
27
+ xml.Retries data[:retries]
28
+ xml.Downtime data[:downtime]
29
+ xml.Enabled data[:enabled]
30
+ xml.RequestUri data[:request_uri]
31
+ if data[:http_headers]
32
+ xml.HttpHeaders data[:http_headers]
33
+ end
34
+ xml.ResponseCodes do
35
+ data[:response_codes].each do |c|
36
+ xml.ResponseCode c
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :monitors_create_loopback, 201, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def monitors_create_ping(data)
8
+ validate_data([:interval, :response_timeout, :retries, :downtime, :enabled], data)
9
+
10
+ request(
11
+ :body => generate_ping_monitor_request(data),
12
+ :expects => 201,
13
+ :method => "POST",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_ping_monitor_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.CreatePingMonitor do
25
+ xml.Interval data[:interval]
26
+ xml.ResponseTimeout data[:response_timeout]
27
+ xml.Retries data[:retries]
28
+ xml.Downtime data[:downtime]
29
+ xml.Enabled data[:enabled]
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :monitors_disable, 202, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,40 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def monitors_edit_ecv(data)
8
+ validate_data([:interval, :response_timeout, :retries, :downtime, :enabled, :send_string, :receive_string], data)
9
+
10
+ request(
11
+ :body => generate_edit_ecv_request(data),
12
+ :expects => 200,
13
+ :method => "PUT",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_edit_ecv_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.EcvMonitor do
25
+ xml.Interval data[:interval]
26
+ xml.ResponseTimeout data[:response_timeout]
27
+ xml.Retries data[:retries]
28
+ xml.Downtime data[:downtime]
29
+ xml.Enabled data[:enabled]
30
+ xml.SendString data[:send_string]
31
+ if data[:http_headers]
32
+ xml.HttpHeaders data[:http_headers]
33
+ end
34
+ xml.ReceiveString data[:receive_string]
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,44 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def monitors_edit_http(data)
8
+ validate_data([:interval, :response_timeout, :retries, :downtime, :enabled, :request_uri, :response_codes], data)
9
+
10
+ request(
11
+ :body => generate_edit_http_request(data),
12
+ :expects => 200,
13
+ :method => "PUT",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_edit_http_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.HttpMonitor do
25
+ xml.Interval data[:interval]
26
+ xml.ResponseTimeout data[:response_timeout]
27
+ xml.Retries data[:retries]
28
+ xml.Downtime data[:downtime]
29
+ xml.Enabled data[:enabled]
30
+ xml.RequestUri data[:request_uri]
31
+ if xml[:httpheaders]
32
+ xml.HttpHeaders xml[:http_headers]
33
+ end
34
+ xml.ResponseCodes do
35
+ xml[:response_codes].each do |c|
36
+ xml.ResponseCode c
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def monitors_edit_ping(data)
8
+ validate_data([:interval, :response_timeout, :retries, :downtime, :enabled], data)
9
+
10
+ request(
11
+ :body => generate_edit_ping_request(data),
12
+ :expects => 200,
13
+ :method => "PUT",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_edit_ping_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.PingMonitor do
25
+ xml.Interval data[:interval]
26
+ xml.ResponseTimeout data[:response_timeout]
27
+ xml.Retries data[:retries]
28
+ xml.Downtime data[:downtime]
29
+ xml.Enabled data[:enabled]
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :monitors_enable, 202, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,93 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ module Shared
5
+ def validate_node_service_data(service_data)
6
+ required_opts = [:name, :port, :enabled, :ip_address]
7
+ unless required_opts.all? { |opt| service_data.key?(opt) }
8
+ raise ArgumentError.new("Required Internet Service data missing: #{(required_opts - service_data.keys).map(&:inspect).join(", ")}")
9
+ end
10
+ end
11
+ end
12
+
13
+ class Real
14
+ include Shared
15
+
16
+ def node_service_create(service_data)
17
+ validate_node_service_data(service_data)
18
+
19
+ request(
20
+ :body => generate_node_service_request(service_data),
21
+ :expects => 201,
22
+ :method => "POST",
23
+ :headers => {},
24
+ :uri => service_data[:uri],
25
+ :parse => true
26
+ )
27
+ end
28
+
29
+ private
30
+
31
+ def generate_node_service_request(service_data)
32
+ xml = Builder::XmlMarkup.new
33
+ xml.CreateNodeService(:name => service_data[:name]) do
34
+ xml.IpAddress(:href => service_data[:ip_address], :name => service_data[:ip_address].scan(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)[0])
35
+ xml.Port service_data[:port]
36
+ xml.Enabled service_data[:enabled]
37
+ if service_data[:description]
38
+ xml.Description service_data[:description]
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ class Mock
45
+ def node_service_create(service_data)
46
+ validate_node_service_data(service_data)
47
+
48
+ internet_service_id = service_data[:uri].match(/(\d+)/)[1]
49
+ internet_service = self.data[:internet_services][internet_service_id.to_i].dup
50
+ network_id, ip_address_name = service_data[:ip_address].match(/\/(\d+)\/(.*)$/).captures
51
+ network = self.data[:networks][network_id.to_i]
52
+ ip_addresses = network[:IpAddresses][:IpAddress]
53
+ ip_addresses = ip_addresses.is_a?(Array) ? ip_addresses : [ip_addresses]
54
+ ip_address = ip_addresses.find { |ip| ip[:name] == ip_address_name }
55
+
56
+ service_id = Fog::Mock.random_numbers(6).to_i
57
+ service = {
58
+ :href => "/cloudapi/ecloud/nodeservices/#{service_id}",
59
+ :name => service_data[:name],
60
+ :type => "application/vnd.tmrk.cloud.nodeService",
61
+ :Links => {
62
+ :Link => [
63
+ Fog::Ecloud.keep(internet_service, :href, :name, :type),
64
+ ],
65
+ },
66
+ :Protocol => service_data[:protocol],
67
+ :Port => service_data[:port],
68
+ :Enabled => service_data[:enabled],
69
+ :Description => service_data[:description],
70
+ :IpAddress => {
71
+ :href => ip_address[:href],
72
+ :name => ip_address[:name],
73
+ :type => ip_address[:type],
74
+ :Network => {
75
+ :href => network[:href],
76
+ :name => network[:name],
77
+ :type => network[:type],
78
+ },
79
+ },
80
+ }
81
+
82
+ node_service_response = response(:body => service)
83
+
84
+ service.merge!(:internet_service => internet_service)
85
+
86
+ self.data[:node_services][service_id] = service
87
+
88
+ node_service_response
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,33 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :node_service_delete, 202, 'DELETE'
6
+ end
7
+
8
+ class Mock
9
+ def node_service_delete(uri)
10
+ service_id = id_from_uri(uri)
11
+
12
+ service = self.data[:node_services][service_id].dup
13
+ self.data[:node_services].delete(service_id)
14
+
15
+ task_id = Fog::Mock.random_numbers(10).to_i
16
+ task = {
17
+ :id => task_id,
18
+ :href => "/cloudapi/ecloud/tasks/#{task_id}",
19
+ :type => "application/vnd.tmrk.cloud.task",
20
+ :Operation => "Delete Node Service",
21
+ :Status => "Complete",
22
+ :ImpactedItem => Fog::Ecloud.keep(service, :name, :href, :type),
23
+ :StartTime => Time.now.iso8601,
24
+ :CompletedTime => Time.now.iso8601,
25
+ :InitiatedBy => {},
26
+ }
27
+ self.data[:tasks][task_id] = task
28
+ response(:body => task)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ module Shared
5
+ def validate_edit_node_service_options(options)
6
+ required_opts = [:name, :enabled]
7
+ unless required_opts.all? { |opt| options.key?(opt) }
8
+ raise ArgumentError.new("Required data missing: #{(required_opts - options.keys).map(&:inspect).join(", ")}")
9
+ end
10
+ end
11
+
12
+ def build_node_service_body_edit(options)
13
+ xml = Builder::XmlMarkup.new
14
+ xml.NodeService(:name => options[:name]) do
15
+ xml.Enabled options[:enabled]
16
+ if options[:description]
17
+ xml.Description options[:description]
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ class Real
24
+ def node_service_edit(options)
25
+ validate_edit_node_service_options(options)
26
+ body = build_node_service_body_edit(options)
27
+ request(
28
+ :expects => 202,
29
+ :method => 'PUT',
30
+ :headers => {},
31
+ :body => body,
32
+ :uri => options[:uri],
33
+ :parse => true
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :power_off, 202, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :power_on, 202, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :power_reset, 202, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :power_shutdown, 202, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :public_ip_activate, 201, 'POST'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def rnat_associations_create_device(data)
8
+ validate_data([:host_ip_href, :public_ip_href], data)
9
+
10
+ request(
11
+ :body => generate_rnat_associations_create_device_request(data),
12
+ :expects => 201,
13
+ :method => "POST",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_rnat_associations_create_device_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.CreateRnatAssociation do
25
+ xml.PublicIp(:href => data[:public_ip_href])
26
+ xml.IpAddress(:href => data[:host_ip_href])
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,9 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ basic_request :rnat_associations_delete, 202, 'DELETE'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def rnat_associations_edit_network(data)
8
+ validate_data([:href], data)
9
+
10
+ request(
11
+ :body => generate_rnat_associations_edit_network_request(data),
12
+ :expects => 202,
13
+ :method => "PUT",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_rnat_associations_edit_network_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.NetworkRnat do
25
+ xml.Rnat(:href => data[:href])
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ module Fog
2
+ module Compute
3
+ class Ecloud
4
+ class Real
5
+ include Shared
6
+
7
+ def rows_create(data)
8
+ validate_data([:name], data)
9
+
10
+ request(
11
+ :body => generate_rows_create_request(data),
12
+ :expects => 201,
13
+ :method => "POST",
14
+ :headers => {},
15
+ :uri => data[:uri],
16
+ :parse => true
17
+ )
18
+ end
19
+
20
+ private
21
+
22
+ def generate_rows_create_request(data)
23
+ xml = Builder::XmlMarkup.new
24
+ xml.CreateLayoutRow(:name => data[:name])
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end