fog-ecloud 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,766 @@
1
+ module Fog
2
+ module Ecloud
3
+ module MockDataClasses
4
+ class Base < Hash
5
+ def self.base_url=(url)
6
+ @base_url = url
7
+ end
8
+
9
+ self.base_url = "http://vcloud.example.com"
10
+
11
+ def self.base_url
12
+ @base_url
13
+ end
14
+
15
+ def first
16
+ raise "Don't do this"
17
+ end
18
+
19
+ def last
20
+ raise "Don't do this"
21
+ end
22
+
23
+ def initialize(data = {}, parent = nil)
24
+ @parent = parent
25
+
26
+ replace(data)
27
+ end
28
+
29
+ def _parent
30
+ @parent
31
+ end
32
+
33
+ def base_url
34
+ Base.base_url
35
+ end
36
+
37
+ def href
38
+ [base_url, self.class.name.split("::").last, object_id].join("/")
39
+ end
40
+
41
+ def inspect
42
+ "<#{self.class.name} #{object_id} data=#{super}>"
43
+ end
44
+ end
45
+
46
+ class MockData < Base
47
+ def versions
48
+ @versions ||= []
49
+ end
50
+
51
+ def organizations
52
+ @organizations ||= []
53
+ end
54
+
55
+ def organization_collection_from_href(href)
56
+ find_href_in(href, all_organizations)
57
+ end
58
+
59
+ def all_organizations
60
+ organizations.map(&:environments).flatten
61
+ end
62
+
63
+ def organization_from_href(href)
64
+ find_href_in(href, all_organizations)
65
+ end
66
+
67
+ def all_vdcs
68
+ organizations.map(&:environments).flatten
69
+ end
70
+
71
+ def vdc_from_href(href)
72
+ find_href_in(href, all_vdcs)
73
+ end
74
+
75
+ def all_catalogs
76
+ all_vdcs.map(&:catalog).flatten
77
+ end
78
+
79
+ def catalog_from_href(href)
80
+ find_href_in(href, all_catalogs)
81
+ end
82
+
83
+ def all_catalog_items
84
+ all_catalogs.map(&:items).flatten
85
+ end
86
+
87
+ def catalog_item_from_href(href)
88
+ find_href_in(href, all_catalog_items)
89
+ end
90
+
91
+ def all_virtual_machines
92
+ all_vdcs.map(&:virtual_machines).flatten
93
+ end
94
+
95
+ def virtual_machine_from_href(href)
96
+ find_href_prefixed_in(href, all_virtual_machines)
97
+ end
98
+
99
+ def all_networks
100
+ all_vdcs.map(&:networks).flatten
101
+ end
102
+
103
+ def network_from_href(href)
104
+ find_href_in(href, all_networks)
105
+ end
106
+
107
+ def all_network_extensions
108
+ all_networks.map(&:extensions).flatten
109
+ end
110
+
111
+ def network_extension_from_href(href)
112
+ find_href_in(href, all_network_extensions)
113
+ end
114
+
115
+ def all_vdc_internet_service_collections
116
+ all_vdcs.map(&:internet_service_collection).flatten
117
+ end
118
+
119
+ def vdc_internet_service_collection_from_href(href)
120
+ find_href_in(href, all_vdc_internet_service_collections)
121
+ end
122
+
123
+ def all_backup_internet_services
124
+ all_vdc_internet_service_collections.map(&:backup_internet_services).flatten
125
+ end
126
+
127
+ def backup_internet_service_from_href(href)
128
+ find_href_in(href, all_backup_internet_services)
129
+ end
130
+
131
+ def all_public_ip_collections
132
+ all_vdcs.map {|v| v.public_ip_collection }.flatten
133
+ end
134
+
135
+ def public_ip_collection_from_href(href)
136
+ find_href_in(href, all_public_ip_collections)
137
+ end
138
+
139
+ def all_public_ips
140
+ all_public_ip_collections.map(&:items).flatten
141
+ end
142
+
143
+ def public_ip_from_href(href)
144
+ find_href_in(href, all_public_ips)
145
+ end
146
+
147
+ def all_public_ip_internet_service_collections
148
+ all_public_ips.map(&:internet_service_collection).flatten
149
+ end
150
+
151
+ def public_ip_internet_service_collection_from_href(href)
152
+ find_href_in(href, all_public_ip_internet_service_collections)
153
+ end
154
+
155
+ def all_public_ip_internet_services
156
+ all_public_ip_internet_service_collections.map(&:items).flatten
157
+ end
158
+
159
+ def public_ip_internet_service_from_href(href)
160
+ find_href_in(href, all_public_ip_internet_services)
161
+ end
162
+
163
+ def all_public_ip_internet_service_node_collections
164
+ all_public_ip_internet_services.map(&:node_collection).flatten
165
+ end
166
+
167
+ def public_ip_internet_service_node_collection_from_href(href)
168
+ find_href_in(href, all_public_ip_internet_service_node_collections)
169
+ end
170
+
171
+ def all_public_ip_internet_service_nodes
172
+ all_public_ip_internet_service_node_collections.map(&:items).flatten
173
+ end
174
+
175
+ def public_ip_internet_service_node_from_href(href)
176
+ find_href_in(href, all_public_ip_internet_service_nodes)
177
+ end
178
+
179
+ def all_network_ip_collections
180
+ all_networks.map(&:ip_collection)
181
+ end
182
+
183
+ def network_ip_collection_from_href(href)
184
+ find_href_in(href, all_network_ip_collections)
185
+ end
186
+
187
+ def all_network_ips
188
+ all_network_ip_collections.map {|c| c.items.values }.flatten
189
+ end
190
+
191
+ def network_ip_from_href(href)
192
+ find_href_in(href, all_network_ips)
193
+ end
194
+
195
+ private
196
+
197
+ def find_href_in(href, objects)
198
+ objects.find {|o| o.href == href }
199
+ end
200
+
201
+ def find_href_prefixed_in(href, objects)
202
+ objects.find {|o| href =~ %r{^#{o.href}($|/)} }
203
+ end
204
+ end
205
+
206
+ class MockVersion < Base
207
+ def version
208
+ self[:version]
209
+ end
210
+
211
+ def supported
212
+ !!self[:supported]
213
+ end
214
+
215
+ def login_url
216
+ href
217
+ end
218
+ end
219
+
220
+ class MockOrganization < Base
221
+ def name
222
+ self[:name]
223
+ end
224
+
225
+ def environments
226
+ @vdcs ||= []
227
+ end
228
+ end
229
+
230
+ class MockVdc < Base
231
+ def name
232
+ self[:name]
233
+ end
234
+
235
+ def storage_allocated
236
+ self[:storage_allocated] || 200
237
+ end
238
+
239
+ def storage_used
240
+ self[:storage_used] || 105
241
+ end
242
+
243
+ def cpu_allocated
244
+ self[:cpu_allocated] || 10000
245
+ end
246
+
247
+ def memory_allocated
248
+ self[:memory_allocated] || 20480
249
+ end
250
+
251
+ def catalog
252
+ @catalog ||= MockCatalog.new({}, self)
253
+ end
254
+
255
+ def networks
256
+ @networks ||= []
257
+ end
258
+
259
+ def virtual_machines
260
+ @virtual_machines ||= []
261
+ end
262
+
263
+ def task_list
264
+ @task_list ||= MockTaskList.new({}, self)
265
+ end
266
+
267
+ # for TM eCloud, should probably be subclassed
268
+ def public_ip_collection
269
+ @public_ip_collection ||= MockPublicIps.new({}, self)
270
+ end
271
+
272
+ def internet_service_collection
273
+ @internet_service_collection ||= MockVdcInternetServices.new({}, self)
274
+ end
275
+
276
+ def firewall_acls
277
+ @firewall_acls ||= MockFirewallAcls.new({}, self)
278
+ end
279
+ end
280
+
281
+ class MockTaskList < Base
282
+ def name
283
+ self[:name] || "Tasks List"
284
+ end
285
+ end
286
+
287
+ class MockCatalog < Base
288
+ def name
289
+ self[:name] || "Catalog"
290
+ end
291
+
292
+ def items
293
+ @items ||= []
294
+ end
295
+ end
296
+
297
+ class MockCatalogItem < Base
298
+ def name
299
+ self[:name]
300
+ end
301
+
302
+ def disks
303
+ @disks ||= MockVirtualMachineDisks.new(self)
304
+ end
305
+
306
+ def customization
307
+ @customization ||= MockCatalogItemCustomization.new({}, self)
308
+ end
309
+
310
+ def vapp_template
311
+ @vapp_template ||= MockCatalogItemVappTemplate.new({ :name => name }, self)
312
+ end
313
+ end
314
+
315
+ class MockCatalogItemCustomization < Base
316
+ def name
317
+ self[:name] || "Customization Options"
318
+ end
319
+ end
320
+
321
+ class MockCatalogItemVappTemplate < Base
322
+ def name
323
+ self[:name]
324
+ end
325
+ end
326
+
327
+ class MockNetwork < Base
328
+ def name
329
+ self[:name] || subnet
330
+ end
331
+
332
+ def subnet
333
+ self[:subnet]
334
+ end
335
+
336
+ def gateway
337
+ self[:gateway] || subnet_ips[1]
338
+ end
339
+
340
+ def netmask
341
+ self[:netmask] || subnet_ipaddr.mask
342
+ end
343
+
344
+ def dns
345
+ "8.8.8.8"
346
+ end
347
+
348
+ def features
349
+ [
350
+ { :type => :FenceMode, :value => "isolated" }
351
+ ]
352
+ end
353
+
354
+ def ip_collection
355
+ @ip_collection ||= MockNetworkIps.new({}, self)
356
+ end
357
+
358
+ def extensions
359
+ @extensions ||= MockNetworkExtensions.new({}, self)
360
+ end
361
+
362
+ def random_ip
363
+ usable_subnet_ips[rand(usable_subnet_ips.length)]
364
+ end
365
+
366
+ # for TM eCloud. should probably be a subclass
367
+ def rnat
368
+ self[:rnat]
369
+ end
370
+
371
+ def usable_subnet_ips
372
+ subnet_ips[3..-2]
373
+ end
374
+
375
+ def address
376
+ subnet_ips.first
377
+ end
378
+
379
+ def broadcast
380
+ subnet_ips.last
381
+ end
382
+
383
+ private
384
+
385
+ def subnet_ipaddr
386
+ @ipaddr ||= IPAddr.new(subnet)
387
+ end
388
+
389
+ def subnet_ips
390
+ subnet_ipaddr.to_range.to_a.map(&:to_s)
391
+ end
392
+ end
393
+
394
+ class MockNetworkIps < Base
395
+ def items
396
+ @items ||= _parent.usable_subnet_ips.reduce({}) do |out, subnet_ip|
397
+ out.update(subnet_ip => MockNetworkIp.new({ :ip => subnet_ip }, self))
398
+ end
399
+ end
400
+
401
+ def ordered_ips
402
+ items.values.sort_by {|i| i.ip.split(".").map(&:to_i) }
403
+ end
404
+
405
+ def name
406
+ "IP Addresses"
407
+ end
408
+ end
409
+
410
+ class MockNetworkIp < Base
411
+ def name
412
+ self[:name] || ip
413
+ end
414
+
415
+ def ip
416
+ self[:ip]
417
+ end
418
+
419
+ def used_by
420
+ self[:used_by] || _parent._parent._parent.virtual_machines.find {|v| v.ip == ip }
421
+ end
422
+
423
+ def status
424
+ if used_by
425
+ "Assigned"
426
+ else
427
+ "Available"
428
+ end
429
+ end
430
+
431
+ def rnat
432
+ self[:rnat] || _parent._parent.rnat
433
+ end
434
+
435
+ def rnat_set?
436
+ !!self[:rnat]
437
+ end
438
+ end
439
+
440
+ class MockNetworkExtensions < Base
441
+ def name
442
+ _parent.name
443
+ end
444
+
445
+ def gateway
446
+ _parent.gateway
447
+ end
448
+
449
+ def broadcast
450
+ _parent.broadcast
451
+ end
452
+
453
+ def address
454
+ _parent.address
455
+ end
456
+
457
+ def rnat
458
+ _parent.rnat
459
+ end
460
+
461
+ def type
462
+ self[:type] || "DMZ"
463
+ end
464
+
465
+ def vlan
466
+ object_id.to_s
467
+ end
468
+
469
+ def friendly_name
470
+ "#{name} (#{type}_#{object_id})"
471
+ end
472
+ end
473
+
474
+ class MockVirtualMachine < Base
475
+ def name
476
+ self[:name]
477
+ end
478
+
479
+ def ip
480
+ self[:ip]
481
+ end
482
+
483
+ def cpus
484
+ self[:cpus] || 1
485
+ end
486
+
487
+ def memory
488
+ self[:memory] || 1024
489
+ end
490
+
491
+ def disks
492
+ @disks ||= MockVirtualMachineDisks.new(self)
493
+ end
494
+
495
+ def status
496
+ self[:status] || 2
497
+ end
498
+
499
+ def power_off!
500
+ self[:status] = 2
501
+ end
502
+
503
+ def power_on!
504
+ self[:status] = 4
505
+ end
506
+
507
+ def size
508
+ disks.reduce(0) {|s, d| s + d.vcloud_size }
509
+ end
510
+
511
+ def network_ip
512
+ if network = _parent.networks.find {|n| n.ip_collection.items[ip] }
513
+ network.ip_collection.items[ip]
514
+ end
515
+ end
516
+
517
+ # from fog ecloud server's _compose_vapp_data
518
+ def to_configure_vapp_hash
519
+ {
520
+ :name => name,
521
+ :cpus => cpus,
522
+ :memory => memory,
523
+ :disks => disks.map {|d| { :number => d.address.to_s, :size => d.vcloud_size, :resource => d.vcloud_size.to_s } }
524
+ }
525
+ end
526
+
527
+ def href(purpose = :base)
528
+ case purpose
529
+ when :base
530
+ super()
531
+ when :power_on
532
+ super() + "/power/action/powerOn"
533
+ when :power_off
534
+ super() + "/power/action/powerOff"
535
+ end
536
+ end
537
+ end
538
+
539
+ class MockVirtualMachineDisks < Array
540
+ def initialize(parent = nil)
541
+ @parent = parent
542
+ end
543
+
544
+ def _parent
545
+ @parent
546
+ end
547
+
548
+ def <<(disk)
549
+ next_address = 0
550
+ disk_with_max_address = max {|a, b| a[:address] <=> b[:address] }
551
+ disk_with_max_address && next_address = disk_with_max_address.address + 1
552
+ disk[:address] ||= next_address
553
+
554
+ super(disk)
555
+
556
+ if (addresses = map {|d| d.address }).uniq.size != size
557
+ raise "Duplicate disk address in: #{addresses.inspect} (#{size})"
558
+ end
559
+
560
+ sort! {|a, b| a.address <=> b.address }
561
+ self
562
+ end
563
+
564
+ def at_address(address)
565
+ find {|d| d.address == address }
566
+ end
567
+ end
568
+
569
+ class MockVirtualMachineDisk < Base
570
+ def size
571
+ self[:size].to_i
572
+ end
573
+
574
+ def vcloud_size
575
+ # kilobytes
576
+ size * 1024
577
+ end
578
+
579
+ def address
580
+ self[:address].to_i
581
+ end
582
+ end
583
+
584
+ # for Terremark eCloud
585
+
586
+ class MockVdcInternetServices < Base
587
+ def href
588
+ _parent.href + "/internetServices"
589
+ end
590
+
591
+ def name
592
+ "Internet Services"
593
+ end
594
+
595
+ def items
596
+ public_ip_internet_services + backup_internet_services
597
+ end
598
+
599
+ def public_ip_internet_services
600
+ _parent.public_ip_collection.items.reduce([]) do |services, public_ip|
601
+ services + public_ip.internet_service_collection.items
602
+ end
603
+ end
604
+
605
+ def backup_internet_services
606
+ @backup_internet_services ||= []
607
+ end
608
+ end
609
+
610
+ class MockBackupInternetService < Base
611
+ def name
612
+ self[:name] || "Backup Internet Service #{object_id}"
613
+ end
614
+
615
+ def protocol
616
+ self[:protocol]
617
+ end
618
+
619
+ def port
620
+ 0
621
+ end
622
+
623
+ def enabled
624
+ self[:enabled].to_s.downcase != "false"
625
+ end
626
+
627
+ def timeout
628
+ self[:timeout] || 2
629
+ end
630
+
631
+ def description
632
+ self[:description] || "Description for Backup Service #{name}"
633
+ end
634
+
635
+ def redirect_url
636
+ nil
637
+ end
638
+
639
+ def node_collection
640
+ @node_collection ||= MockPublicIpInternetServiceNodes.new({}, self)
641
+ end
642
+ end
643
+
644
+ class MockFirewallAcls < Base
645
+ def name
646
+ "Firewall Access List"
647
+ end
648
+ end
649
+
650
+ class MockPublicIps < Base
651
+ def name
652
+ self[:name] || "Public IPs"
653
+ end
654
+
655
+ def items
656
+ @items ||= []
657
+ end
658
+ end
659
+
660
+ class MockPublicIp < Base
661
+ def name
662
+ self[:name]
663
+ end
664
+
665
+ def internet_service_collection
666
+ @internet_service_collection ||= MockPublicIpInternetServices.new({}, self)
667
+ end
668
+ end
669
+
670
+ class MockPublicIpInternetServices < Base
671
+ def href
672
+ _parent.href + "/internetServices"
673
+ end
674
+
675
+ def items
676
+ @items ||= []
677
+ end
678
+ end
679
+
680
+ class MockPublicIpInternetService < Base
681
+ def name
682
+ self[:name] || "Public IP Service #{object_id}"
683
+ end
684
+
685
+ def description
686
+ self[:description] || "Description for Public IP Service #{name}"
687
+ end
688
+
689
+ def protocol
690
+ self[:protocol]
691
+ end
692
+
693
+ def port
694
+ self[:port]
695
+ end
696
+
697
+ def enabled
698
+ !!self[:enabled]
699
+ end
700
+
701
+ def redirect_url
702
+ self[:redirect_url]
703
+ end
704
+
705
+ def timeout
706
+ self[:timeout] || 2
707
+ end
708
+
709
+ def node_collection
710
+ @node_collection ||= MockPublicIpInternetServiceNodes.new({}, self)
711
+ end
712
+
713
+ def monitor
714
+ nil
715
+ end
716
+
717
+ def backup_service
718
+ self[:backup_service]
719
+ end
720
+ end
721
+
722
+ class MockPublicIpInternetServiceNodes < Base
723
+ def href
724
+ _parent.href + "/nodeServices"
725
+ end
726
+
727
+ def items
728
+ @items ||= [].tap do |node_array|
729
+ node_array.instance_variable_set("@default_port", _parent.port)
730
+
731
+ def node_array.<<(node)
732
+ node[:port] ||= @default_port
733
+ super
734
+ end
735
+ end
736
+ end
737
+ end
738
+
739
+ class MockPublicIpInternetServiceNode < Base
740
+ def ip_address
741
+ self[:ip_address]
742
+ end
743
+
744
+ def name
745
+ self[:name] || "Public IP Service Node #{object_id}"
746
+ end
747
+
748
+ def description
749
+ self[:description] || "Description for Public IP Service Node #{name}"
750
+ end
751
+
752
+ def port
753
+ self[:port]
754
+ end
755
+
756
+ def enabled
757
+ self[:enabled].to_s.downcase != "false"
758
+ end
759
+
760
+ def enabled=(new_value)
761
+ self[:enabled] = new_value
762
+ end
763
+ end
764
+ end
765
+ end
766
+ end