fog-maestrodev 1.15.0.20130829165835 → 1.15.0.20130927082724

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 (350) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +1 -0
  3. data/fog.gemspec +5 -2
  4. data/lib/fog.rb +1 -0
  5. data/lib/fog/atmos/models/storage/file.rb +2 -1
  6. data/lib/fog/aws.rb +4 -1
  7. data/lib/fog/aws/data_pipeline.rb +3 -0
  8. data/lib/fog/aws/elasticache.rb +2 -0
  9. data/lib/fog/aws/models/auto_scaling/group.rb +12 -12
  10. data/lib/fog/aws/models/compute/subnet.rb +3 -1
  11. data/lib/fog/aws/models/elasticache/cluster.rb +3 -1
  12. data/lib/fog/aws/parsers/redshift/cluster.rb +29 -0
  13. data/lib/fog/aws/parsers/redshift/cluster_parser.rb +144 -0
  14. data/lib/fog/aws/parsers/redshift/cluster_security_group_parser.rb +50 -0
  15. data/lib/fog/aws/parsers/redshift/cluster_snapshot.rb +32 -0
  16. data/lib/fog/aws/parsers/redshift/cluster_snapshot_parser.rb +66 -0
  17. data/lib/fog/aws/parsers/redshift/cluster_subnet_group_parser.rb +51 -0
  18. data/lib/fog/aws/parsers/redshift/create_cluster_parameter_group.rb +30 -0
  19. data/lib/fog/aws/parsers/redshift/create_cluster_security_group.rb +31 -0
  20. data/lib/fog/aws/parsers/redshift/describe_cluster_parameter_groups.rb +41 -0
  21. data/lib/fog/aws/parsers/redshift/describe_cluster_parameters.rb +48 -0
  22. data/lib/fog/aws/parsers/redshift/describe_cluster_security_groups.rb +38 -0
  23. data/lib/fog/aws/parsers/redshift/describe_cluster_snapshots.rb +38 -0
  24. data/lib/fog/aws/parsers/redshift/describe_cluster_subnet_groups.rb +58 -0
  25. data/lib/fog/aws/parsers/redshift/describe_cluster_versions.rb +53 -0
  26. data/lib/fog/aws/parsers/redshift/describe_clusters.rb +30 -0
  27. data/lib/fog/aws/parsers/redshift/describe_default_cluster_parameters.rb +49 -0
  28. data/lib/fog/aws/parsers/redshift/describe_events.rb +44 -0
  29. data/lib/fog/aws/parsers/redshift/describe_orderable_cluster_options.rb +54 -0
  30. data/lib/fog/aws/parsers/redshift/describe_reserved_node_offerings.rb +64 -0
  31. data/lib/fog/aws/parsers/redshift/describe_reserved_nodes.rb +71 -0
  32. data/lib/fog/aws/parsers/redshift/describe_resize.rb +60 -0
  33. data/lib/fog/aws/parsers/redshift/purchase_reserved_node_offering.rb +58 -0
  34. data/lib/fog/aws/parsers/redshift/revoke_cluster_security_group_ingress.rb +31 -0
  35. data/lib/fog/aws/parsers/redshift/update_cluster_parameter_group_parser.rb +29 -0
  36. data/lib/fog/aws/parsers/sts/get_session_token.rb +1 -3
  37. data/lib/fog/aws/redshift.rb +126 -0
  38. data/lib/fog/aws/requests/compute/run_instances.rb +2 -0
  39. data/lib/fog/aws/requests/data_pipeline/delete_pipeline.rb +2 -3
  40. data/lib/fog/aws/requests/data_pipeline/describe_objects.rb +41 -0
  41. data/lib/fog/aws/requests/data_pipeline/get_pipeline_definition.rb +37 -0
  42. data/lib/fog/aws/requests/data_pipeline/query_objects.rb +41 -0
  43. data/lib/fog/aws/requests/elasticache/authorize_cache_security_group_ingress.rb +27 -2
  44. data/lib/fog/aws/requests/elasticache/create_cache_security_group.rb +23 -2
  45. data/lib/fog/aws/requests/elasticache/delete_cache_security_group.rb +10 -1
  46. data/lib/fog/aws/requests/elasticache/describe_cache_security_groups.rb +36 -2
  47. data/lib/fog/aws/requests/redshift/authorize_cluster_security_group_ingress.rb +56 -0
  48. data/lib/fog/aws/requests/redshift/authorize_snapshot_access.rb +43 -0
  49. data/lib/fog/aws/requests/redshift/copy_cluster_snapshot.rb +48 -0
  50. data/lib/fog/aws/requests/redshift/create_cluster.rb +151 -0
  51. data/lib/fog/aws/requests/redshift/create_cluster_parameter_group.rb +54 -0
  52. data/lib/fog/aws/requests/redshift/create_cluster_security_group.rb +42 -0
  53. data/lib/fog/aws/requests/redshift/create_cluster_snapshot.rb +44 -0
  54. data/lib/fog/aws/requests/redshift/create_cluster_subnet_group.rb +50 -0
  55. data/lib/fog/aws/requests/redshift/delete_cluster.rb +51 -0
  56. data/lib/fog/aws/requests/redshift/delete_cluster_parameter_group.rb +34 -0
  57. data/lib/fog/aws/requests/redshift/delete_cluster_security_group.rb +33 -0
  58. data/lib/fog/aws/requests/redshift/delete_cluster_snapshot.rb +44 -0
  59. data/lib/fog/aws/requests/redshift/delete_cluster_subnet_group.rb +38 -0
  60. data/lib/fog/aws/requests/redshift/describe_cluster_parameter_groups.rb +48 -0
  61. data/lib/fog/aws/requests/redshift/describe_cluster_parameters.rb +55 -0
  62. data/lib/fog/aws/requests/redshift/describe_cluster_security_groups.rb +50 -0
  63. data/lib/fog/aws/requests/redshift/describe_cluster_snapshots.rb +73 -0
  64. data/lib/fog/aws/requests/redshift/describe_cluster_subnet_groups.rb +47 -0
  65. data/lib/fog/aws/requests/redshift/describe_cluster_versions.rb +54 -0
  66. data/lib/fog/aws/requests/redshift/describe_clusters.rb +49 -0
  67. data/lib/fog/aws/requests/redshift/describe_default_cluster_parameters.rb +49 -0
  68. data/lib/fog/aws/requests/redshift/describe_events.rb +80 -0
  69. data/lib/fog/aws/requests/redshift/describe_orderable_cluster_options.rb +55 -0
  70. data/lib/fog/aws/requests/redshift/describe_reserved_node_offerings.rb +48 -0
  71. data/lib/fog/aws/requests/redshift/describe_reserved_nodes.rb +48 -0
  72. data/lib/fog/aws/requests/redshift/describe_resize.rb +39 -0
  73. data/lib/fog/aws/requests/redshift/modify_cluster.rb +111 -0
  74. data/lib/fog/aws/requests/redshift/modify_cluster_parameter_group.rb +44 -0
  75. data/lib/fog/aws/requests/redshift/modify_cluster_subnet_group.rb +50 -0
  76. data/lib/fog/aws/requests/redshift/purchase_reserved_node_offering.rb +41 -0
  77. data/lib/fog/aws/requests/redshift/reboot_cluster.rb +37 -0
  78. data/lib/fog/aws/requests/redshift/reset_cluster_parameter_group.rb +57 -0
  79. data/lib/fog/aws/requests/redshift/restore_from_cluster_snapshot.rb +77 -0
  80. data/lib/fog/aws/requests/redshift/revoke_cluster_security_group_ingress.rb +56 -0
  81. data/lib/fog/aws/requests/redshift/revoke_snapshot_access.rb +44 -0
  82. data/lib/fog/aws/requests/sts/get_federation_token.rb +42 -0
  83. data/lib/fog/bin.rb +1 -0
  84. data/lib/fog/bin/aws.rb +4 -0
  85. data/lib/fog/bin/openstack.rb +5 -0
  86. data/lib/fog/bin/rackspace.rb +4 -0
  87. data/lib/fog/bin/vcloud_director.rb +30 -0
  88. data/lib/fog/brightbox/requests/compute/update_server.rb +1 -0
  89. data/lib/fog/cloudsigma/compute.rb +5 -0
  90. data/lib/fog/cloudsigma/models/fwpolicies.rb +21 -0
  91. data/lib/fog/cloudsigma/models/fwpolicy.rb +21 -0
  92. data/lib/fog/cloudsigma/models/rule.rb +21 -0
  93. data/lib/fog/cloudsigma/requests/list_fwpolicies.rb +18 -0
  94. data/lib/fog/compute.rb +7 -4
  95. data/lib/fog/core.rb +1 -0
  96. data/lib/fog/core/errors.rb +3 -0
  97. data/lib/fog/dynect/dns.rb +3 -1
  98. data/lib/fog/dynect/models/dns/records.rb +32 -20
  99. data/lib/fog/dynect/requests/dns/get_all_records.rb +56 -0
  100. data/lib/fog/dynect/requests/dns/get_node_list.rb +1 -1
  101. data/lib/fog/dynect/requests/dns/put_record.rb +76 -0
  102. data/lib/fog/google/models/compute/flavors.rb +2 -2
  103. data/lib/fog/google/requests/compute/get_machine_type.rb +7 -2
  104. data/lib/fog/joyent/compute.rb +1 -1
  105. data/lib/fog/linode/models/compute/server.rb +1 -1
  106. data/lib/fog/local/models/storage/directories.rb +1 -1
  107. data/lib/fog/openstack.rb +1 -0
  108. data/lib/fog/openstack/models/compute/images.rb +10 -2
  109. data/lib/fog/openstack/models/compute/server.rb +2 -0
  110. data/lib/fog/openstack/models/orchestration/stack.rb +52 -0
  111. data/lib/fog/openstack/models/orchestration/stacks.rb +21 -0
  112. data/lib/fog/openstack/orchestration.rb +227 -0
  113. data/lib/fog/openstack/requests/compute/create_server.rb +36 -25
  114. data/lib/fog/openstack/requests/compute/list_images_detail.rb +4 -3
  115. data/lib/fog/openstack/requests/orchestration/create_stack.rb +55 -0
  116. data/lib/fog/openstack/requests/orchestration/delete_stack.rb +36 -0
  117. data/lib/fog/openstack/requests/orchestration/list_stacks.rb +48 -0
  118. data/lib/fog/openstack/requests/orchestration/update_stack.rb +41 -0
  119. data/lib/fog/openstack/requests/storage/get_object.rb +7 -7
  120. data/lib/fog/openstack/storage.rb +2 -2
  121. data/lib/fog/orchestration.rb +25 -0
  122. data/lib/fog/rackspace.rb +1 -0
  123. data/lib/fog/rackspace/auto_scale.rb +132 -0
  124. data/lib/fog/rackspace/block_storage.rb +2 -2
  125. data/lib/fog/rackspace/cdn.rb +23 -23
  126. data/lib/fog/rackspace/compute.rb +2 -2
  127. data/lib/fog/rackspace/compute_v2.rb +2 -2
  128. data/lib/fog/rackspace/databases.rb +2 -2
  129. data/lib/fog/rackspace/dns.rb +14 -16
  130. data/lib/fog/rackspace/examples/compute_v2/create_network.rb +81 -0
  131. data/lib/fog/rackspace/examples/compute_v2/delete_network.rb +78 -0
  132. data/lib/fog/rackspace/load_balancers.rb +2 -2
  133. data/lib/fog/rackspace/mock_data.rb +69 -4
  134. data/lib/fog/rackspace/models/auto_scale/group.rb +207 -0
  135. data/lib/fog/rackspace/models/auto_scale/group_config.rb +60 -0
  136. data/lib/fog/rackspace/models/auto_scale/groups.rb +46 -0
  137. data/lib/fog/rackspace/models/auto_scale/launch_config.rb +44 -0
  138. data/lib/fog/rackspace/models/auto_scale/policies.rb +65 -0
  139. data/lib/fog/rackspace/models/auto_scale/policy.rb +206 -0
  140. data/lib/fog/rackspace/models/auto_scale/webhook.rb +105 -0
  141. data/lib/fog/rackspace/models/auto_scale/webhooks.rb +64 -0
  142. data/lib/fog/rackspace/models/block_storage/volume.rb +2 -1
  143. data/lib/fog/rackspace/models/monitoring/notification.rb +42 -0
  144. data/lib/fog/rackspace/models/monitoring/notifications.rb +30 -0
  145. data/lib/fog/rackspace/monitoring.rb +21 -14
  146. data/lib/fog/rackspace/requests/auto_scale/create_group.rb +61 -0
  147. data/lib/fog/rackspace/requests/auto_scale/create_policy.rb +45 -0
  148. data/lib/fog/rackspace/requests/auto_scale/create_webhook.rb +57 -0
  149. data/lib/fog/rackspace/requests/auto_scale/delete_group.rb +23 -0
  150. data/lib/fog/rackspace/requests/auto_scale/delete_policy.rb +31 -0
  151. data/lib/fog/rackspace/requests/auto_scale/delete_webhook.rb +34 -0
  152. data/lib/fog/rackspace/requests/auto_scale/execute_anonymous_webhook.rb +22 -0
  153. data/lib/fog/rackspace/requests/auto_scale/execute_policy.rb +22 -0
  154. data/lib/fog/rackspace/requests/auto_scale/get_group.rb +29 -0
  155. data/lib/fog/rackspace/requests/auto_scale/get_group_config.rb +30 -0
  156. data/lib/fog/rackspace/requests/auto_scale/get_group_state.rb +62 -0
  157. data/lib/fog/rackspace/requests/auto_scale/get_launch_config.rb +30 -0
  158. data/lib/fog/rackspace/requests/auto_scale/get_policy.rb +35 -0
  159. data/lib/fog/rackspace/requests/auto_scale/get_webhook.rb +39 -0
  160. data/lib/fog/rackspace/requests/auto_scale/list_groups.rb +35 -0
  161. data/lib/fog/rackspace/requests/auto_scale/list_policies.rb +23 -0
  162. data/lib/fog/rackspace/requests/auto_scale/list_webhooks.rb +33 -0
  163. data/lib/fog/rackspace/requests/auto_scale/pause_group_state.rb +23 -0
  164. data/lib/fog/rackspace/requests/auto_scale/resume_group_state.rb +23 -0
  165. data/lib/fog/rackspace/requests/auto_scale/update_group_config.rb +39 -0
  166. data/lib/fog/rackspace/requests/auto_scale/update_launch_config.rb +36 -0
  167. data/lib/fog/rackspace/requests/auto_scale/update_policy.rb +33 -0
  168. data/lib/fog/rackspace/requests/auto_scale/update_webhook.rb +44 -0
  169. data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +2 -2
  170. data/lib/fog/rackspace/requests/load_balancers/create_load_balancer.rb +5 -6
  171. data/lib/fog/rackspace/requests/load_balancers/delete_load_balancer.rb +10 -0
  172. data/lib/fog/rackspace/requests/load_balancers/get_load_balancer.rb +30 -0
  173. data/lib/fog/rackspace/requests/monitoring/create_agent_token.rb +31 -0
  174. data/lib/fog/rackspace/requests/monitoring/create_alarm.rb +32 -0
  175. data/lib/fog/rackspace/requests/monitoring/create_check.rb +31 -0
  176. data/lib/fog/rackspace/requests/monitoring/create_entity.rb +32 -0
  177. data/lib/fog/rackspace/requests/monitoring/create_notification.rb +18 -0
  178. data/lib/fog/rackspace/requests/monitoring/delete_agent_token.rb +32 -0
  179. data/lib/fog/rackspace/requests/monitoring/delete_alarm.rb +27 -0
  180. data/lib/fog/rackspace/requests/monitoring/delete_check.rb +26 -0
  181. data/lib/fog/rackspace/requests/monitoring/delete_entity.rb +27 -0
  182. data/lib/fog/rackspace/requests/monitoring/delete_notification.rb +16 -0
  183. data/lib/fog/rackspace/requests/monitoring/get_agent_token.rb +33 -0
  184. data/lib/fog/rackspace/requests/monitoring/get_alarm.rb +38 -0
  185. data/lib/fog/rackspace/requests/monitoring/get_check.rb +41 -0
  186. data/lib/fog/rackspace/requests/monitoring/get_entity.rb +30 -21
  187. data/lib/fog/rackspace/requests/monitoring/get_notification.rb +50 -0
  188. data/lib/fog/rackspace/requests/monitoring/list_agent_tokens.rb +39 -0
  189. data/lib/fog/rackspace/requests/monitoring/list_alarms.rb +50 -0
  190. data/lib/fog/rackspace/requests/monitoring/list_check_types.rb +72 -0
  191. data/lib/fog/rackspace/requests/monitoring/list_checks.rb +54 -0
  192. data/lib/fog/rackspace/requests/monitoring/list_data_points.rb +37 -0
  193. data/lib/fog/rackspace/requests/monitoring/list_entities.rb +53 -0
  194. data/lib/fog/rackspace/requests/monitoring/list_metrics.rb +65 -0
  195. data/lib/fog/rackspace/requests/monitoring/list_notification_plans.rb +55 -0
  196. data/lib/fog/rackspace/requests/monitoring/list_notifications.rb +67 -0
  197. data/lib/fog/rackspace/requests/monitoring/list_overview.rb +97 -1
  198. data/lib/fog/rackspace/requests/monitoring/update_alarm.rb +33 -2
  199. data/lib/fog/rackspace/requests/monitoring/update_check.rb +32 -2
  200. data/lib/fog/rackspace/requests/monitoring/update_entity.rb +33 -2
  201. data/lib/fog/rackspace/requests/monitoring/update_notification.rb +17 -0
  202. data/lib/fog/rackspace/requests/storage/get_object.rb +7 -9
  203. data/lib/fog/rackspace/service.rb +16 -8
  204. data/lib/fog/rackspace/storage.rb +2 -2
  205. data/lib/fog/vcloud_director.rb +11 -0
  206. data/lib/fog/vcloud_director/README.md +967 -0
  207. data/lib/fog/vcloud_director/compute.rb +398 -0
  208. data/lib/fog/vcloud_director/generators/compute/customization.rb +100 -0
  209. data/lib/fog/vcloud_director/generators/compute/disks.rb +175 -0
  210. data/lib/fog/vcloud_director/generators/compute/metadata.rb +105 -0
  211. data/lib/fog/vcloud_director/generators/compute/vm_network.rb +122 -0
  212. data/lib/fog/vcloud_director/models/compute/catalog.rb +25 -0
  213. data/lib/fog/vcloud_director/models/compute/catalog_item.rb +25 -0
  214. data/lib/fog/vcloud_director/models/compute/catalog_items.rb +32 -0
  215. data/lib/fog/vcloud_director/models/compute/catalogs.rb +32 -0
  216. data/lib/fog/vcloud_director/models/compute/disk.rb +51 -0
  217. data/lib/fog/vcloud_director/models/compute/disks.rb +40 -0
  218. data/lib/fog/vcloud_director/models/compute/network.rb +26 -0
  219. data/lib/fog/vcloud_director/models/compute/networks.rb +31 -0
  220. data/lib/fog/vcloud_director/models/compute/organization.rb +41 -0
  221. data/lib/fog/vcloud_director/models/compute/organizations.rb +30 -0
  222. data/lib/fog/vcloud_director/models/compute/tag.rb +36 -0
  223. data/lib/fog/vcloud_director/models/compute/tags.rb +51 -0
  224. data/lib/fog/vcloud_director/models/compute/task.rb +58 -0
  225. data/lib/fog/vcloud_director/models/compute/tasks.rb +31 -0
  226. data/lib/fog/vcloud_director/models/compute/vapp.rb +56 -0
  227. data/lib/fog/vcloud_director/models/compute/vapps.rb +34 -0
  228. data/lib/fog/vcloud_director/models/compute/vdc.rb +33 -0
  229. data/lib/fog/vcloud_director/models/compute/vdcs.rb +32 -0
  230. data/lib/fog/vcloud_director/models/compute/vm.rb +99 -0
  231. data/lib/fog/vcloud_director/models/compute/vm_customization.rb +40 -0
  232. data/lib/fog/vcloud_director/models/compute/vm_customizations.rb +16 -0
  233. data/lib/fog/vcloud_director/models/compute/vm_network.rb +30 -0
  234. data/lib/fog/vcloud_director/models/compute/vm_networks.rb +21 -0
  235. data/lib/fog/vcloud_director/models/compute/vms.rb +41 -0
  236. data/lib/fog/vcloud_director/parsers/compute/disks.rb +57 -0
  237. data/lib/fog/vcloud_director/parsers/compute/metadata.rb +66 -0
  238. data/lib/fog/vcloud_director/parsers/compute/network.rb +108 -0
  239. data/lib/fog/vcloud_director/parsers/compute/vm.rb +82 -0
  240. data/lib/fog/vcloud_director/parsers/compute/vm_customization.rb +56 -0
  241. data/lib/fog/vcloud_director/parsers/compute/vm_network.rb +111 -0
  242. data/lib/fog/vcloud_director/parsers/compute/vms.rb +96 -0
  243. data/lib/fog/vcloud_director/parsers/compute/vms_by_metadata.rb +41 -0
  244. data/lib/fog/vcloud_director/requests/compute/delete_metadata.rb +20 -0
  245. data/lib/fog/vcloud_director/requests/compute/delete_vapp.rb +20 -0
  246. data/lib/fog/vcloud_director/requests/compute/get_catalog.rb +18 -0
  247. data/lib/fog/vcloud_director/requests/compute/get_catalog_item.rb +18 -0
  248. data/lib/fog/vcloud_director/requests/compute/get_current_session.rb +75 -0
  249. data/lib/fog/vcloud_director/requests/compute/get_href.rb +19 -0
  250. data/lib/fog/vcloud_director/requests/compute/get_metadata.rb +20 -0
  251. data/lib/fog/vcloud_director/requests/compute/get_network.rb +21 -0
  252. data/lib/fog/vcloud_director/requests/compute/get_organization.rb +72 -0
  253. data/lib/fog/vcloud_director/requests/compute/get_organizations.rb +37 -0
  254. data/lib/fog/vcloud_director/requests/compute/get_request.rb +17 -0
  255. data/lib/fog/vcloud_director/requests/compute/get_supported_versions.rb +1160 -0
  256. data/lib/fog/vcloud_director/requests/compute/get_task.rb +18 -0
  257. data/lib/fog/vcloud_director/requests/compute/get_tasks_list.rb +18 -0
  258. data/lib/fog/vcloud_director/requests/compute/get_vapp.rb +18 -0
  259. data/lib/fog/vcloud_director/requests/compute/get_vapp_template.rb +18 -0
  260. data/lib/fog/vcloud_director/requests/compute/get_vdc.rb +154 -0
  261. data/lib/fog/vcloud_director/requests/compute/get_vm.rb +20 -0
  262. data/lib/fog/vcloud_director/requests/compute/get_vm_cpu.rb +18 -0
  263. data/lib/fog/vcloud_director/requests/compute/get_vm_customization.rb +20 -0
  264. data/lib/fog/vcloud_director/requests/compute/get_vm_disks.rb +20 -0
  265. data/lib/fog/vcloud_director/requests/compute/get_vm_memory.rb +18 -0
  266. data/lib/fog/vcloud_director/requests/compute/get_vm_network.rb +20 -0
  267. data/lib/fog/vcloud_director/requests/compute/get_vms.rb +20 -0
  268. data/lib/fog/vcloud_director/requests/compute/get_vms_by_metadata.rb +20 -0
  269. data/lib/fog/vcloud_director/requests/compute/helper.rb +93 -0
  270. data/lib/fog/vcloud_director/requests/compute/instantiate_vapp_template.rb +124 -0
  271. data/lib/fog/vcloud_director/requests/compute/post_task_cancel.rb +25 -0
  272. data/lib/fog/vcloud_director/requests/compute/post_vapp_undeploy.rb +26 -0
  273. data/lib/fog/vcloud_director/requests/compute/post_vm_metadata.rb +29 -0
  274. data/lib/fog/vcloud_director/requests/compute/post_vm_poweroff.rb +18 -0
  275. data/lib/fog/vcloud_director/requests/compute/post_vm_poweron.rb +18 -0
  276. data/lib/fog/vcloud_director/requests/compute/put_metadata_value.rb +25 -0
  277. data/lib/fog/vcloud_director/requests/compute/put_vm_cpu.rb +34 -0
  278. data/lib/fog/vcloud_director/requests/compute/put_vm_customization.rb +24 -0
  279. data/lib/fog/vcloud_director/requests/compute/put_vm_disks.rb +25 -0
  280. data/lib/fog/vcloud_director/requests/compute/put_vm_memory.rb +34 -0
  281. data/lib/fog/vcloud_director/requests/compute/put_vm_network.rb +24 -0
  282. data/tests/aws/models/auto_scaling/groups_test.rb +5 -0
  283. data/tests/aws/models/compute/subnet_tests.rb +1 -1
  284. data/tests/aws/models/compute/subnets_tests.rb +1 -1
  285. data/tests/aws/requests/data_pipeline/helper.rb +38 -8
  286. data/tests/aws/requests/data_pipeline/pipeline_tests.rb +25 -1
  287. data/tests/aws/requests/elasticache/security_group_tests.rb +3 -2
  288. data/tests/aws/requests/redshift/cluster_parameter_group_tests.rb +77 -0
  289. data/tests/aws/requests/redshift/cluster_security_group_tests.rb +44 -0
  290. data/tests/aws/requests/redshift/cluster_snapshot_tests.rb +75 -0
  291. data/tests/aws/requests/redshift/cluster_tests.rb +82 -0
  292. data/tests/aws/requests/sts/get_federation_token_tests.rb +0 -1
  293. data/tests/aws/signed_params_tests.rb +12 -0
  294. data/tests/brightbox/compute/helper.rb +1 -0
  295. data/tests/brightbox/compute/schema.rb +696 -0
  296. data/tests/brightbox/requests/compute/account_tests.rb +7 -7
  297. data/tests/brightbox/requests/compute/api_client_tests.rb +6 -6
  298. data/tests/brightbox/requests/compute/application_test.rb +6 -6
  299. data/tests/brightbox/requests/compute/cloud_ip_tests.rb +7 -7
  300. data/tests/brightbox/requests/compute/firewall_policy_tests.rb +5 -5
  301. data/tests/brightbox/requests/compute/firewall_rule_tests.rb +4 -4
  302. data/tests/brightbox/requests/compute/helper.rb +0 -688
  303. data/tests/brightbox/requests/compute/image_tests.rb +2 -2
  304. data/tests/brightbox/requests/compute/interface_tests.rb +1 -1
  305. data/tests/brightbox/requests/compute/load_balancer_tests.rb +9 -9
  306. data/tests/brightbox/requests/compute/server_group_tests.rb +8 -8
  307. data/tests/brightbox/requests/compute/server_tests.rb +13 -10
  308. data/tests/brightbox/requests/compute/server_type_tests.rb +2 -2
  309. data/tests/brightbox/requests/compute/user_tests.rb +3 -3
  310. data/tests/brightbox/requests/compute/zone_tests.rb +2 -2
  311. data/tests/compute/helper.rb +3 -2
  312. data/tests/dynect/requests/dns/dns_tests.rb +29 -0
  313. data/tests/helpers/mock_helper.rb +3 -0
  314. data/tests/openstack/requests/compute/server_tests.rb +30 -0
  315. data/tests/openstack/requests/orchestration/stack_tests.rb +30 -0
  316. data/tests/rackspace/auto_scale_tests.rb +84 -0
  317. data/tests/rackspace/models/auto_scale/group.rb +19 -0
  318. data/tests/rackspace/models/auto_scale/groups.rb +13 -0
  319. data/tests/rackspace/models/auto_scale/policies.rb +23 -0
  320. data/tests/rackspace/models/auto_scale/policy.rb +29 -0
  321. data/tests/rackspace/models/auto_scale/webhook.rb +35 -0
  322. data/tests/rackspace/models/auto_scale/webhooks.rb +28 -0
  323. data/tests/rackspace/models/monitoring/notification_tests.rb +19 -0
  324. data/tests/rackspace/models/monitoring/notifications_tests.rb +10 -0
  325. data/tests/rackspace/requests/auto_scale/config_tests.rb +51 -0
  326. data/tests/rackspace/requests/auto_scale/group_tests.rb +38 -0
  327. data/tests/rackspace/requests/auto_scale/helper.rb +181 -0
  328. data/tests/rackspace/requests/auto_scale/policy_tests.rb +61 -0
  329. data/tests/rackspace/requests/auto_scale/webhook_tests.rb +49 -0
  330. data/tests/rackspace/requests/compute_v2/address_tests.rb +1 -1
  331. data/tests/rackspace/requests/monitoring/agent_tests.rb +0 -1
  332. data/tests/rackspace/requests/monitoring/alarm_tests.rb +3 -3
  333. data/tests/rackspace/requests/monitoring/check_tests.rb +0 -1
  334. data/tests/rackspace/requests/monitoring/entity_tests.rb +3 -12
  335. data/tests/rackspace/requests/monitoring/list_tests.rb +18 -6
  336. data/tests/rackspace/requests/monitoring/notification_tests.rb +46 -0
  337. data/tests/vcloud_director/models/compute/catalog_items_tests.rb +42 -0
  338. data/tests/vcloud_director/models/compute/catalogs_tests.rb +42 -0
  339. data/tests/vcloud_director/models/compute/helper.rb +67 -0
  340. data/tests/vcloud_director/models/compute/organizations_tests.rb +22 -0
  341. data/tests/vcloud_director/models/compute/vapp_life_cycle_tests.rb +98 -0
  342. data/tests/vcloud_director/models/compute/vapp_tests.rb +42 -0
  343. data/tests/vcloud_director/models/compute/vdcs_tests.rb +45 -0
  344. data/tests/vcloud_director/models/compute/vms_tests.rb +89 -0
  345. data/tests/vcloud_director/models/tools/reduced_vcr_requests.rb +27 -0
  346. data/tests/vcloud_director/requests/compute/organization_tests.rb +48 -0
  347. data/tests/vcloud_director/requests/compute/session_tests.rb +29 -0
  348. data/tests/vcloud_director/requests/compute/vdc_tests.rb +90 -0
  349. data/tests/vcloud_director/requests/compute/versions_tests.rb +28 -0
  350. metadata +342 -43
@@ -0,0 +1,398 @@
1
+ require 'fog/vcloud_director'
2
+ require 'fog/compute'
3
+ require 'fog/vcloud_director/requests/compute/helper'
4
+
5
+ class VcloudDirectorParser < Fog::Parsers::Base
6
+ def extract_attributes(attributes_xml)
7
+ attributes = {}
8
+ until attributes_xml.empty?
9
+ if attributes_xml.first.is_a?(Array)
10
+ until attributes_xml.first.empty?
11
+ attribute = attributes_xml.first.shift
12
+ attributes[attribute.localname.to_sym] = attribute.value
13
+ end
14
+ else
15
+ attribute = attributes_xml.shift
16
+ attributes[attribute.localname.to_sym] = attribute.value
17
+ end
18
+ end
19
+ attributes
20
+ end
21
+ end
22
+
23
+ class NonLoaded
24
+ end
25
+
26
+ module Fog
27
+ module Compute
28
+ class VcloudDirector < Fog::Service
29
+
30
+ module Defaults
31
+ PATH = '/api'
32
+ PORT = 443
33
+ SCHEME = 'https'
34
+ API_VERSION = '5.1'
35
+ end
36
+
37
+ module Errors
38
+ class ServiceError < Fog::Errors::Error; end
39
+ class Task < ServiceError; end
40
+ end
41
+
42
+ requires :vcloud_director_username, :vcloud_director_password, :vcloud_director_host
43
+ recognizes :vcloud_director_api_version
44
+
45
+ secrets :vcloud_director_password
46
+
47
+ model_path 'fog/vcloud_director/models/compute'
48
+ model :catalog
49
+ collection :catalogs
50
+ model :organization
51
+ collection :organizations
52
+ model :catalog_item
53
+ collection :catalog_items
54
+ model :vdc
55
+ collection :vdcs
56
+ model :vapp
57
+ collection :vapps
58
+ model :task
59
+ collection :tasks
60
+ model :vm
61
+ collection :vms
62
+ model :vm_customization
63
+ collection :vm_customizations
64
+ model :network
65
+ collection :networks
66
+ model :disk
67
+ collection :disks
68
+ model :vm_network
69
+ collection :vm_networks
70
+ model :tag # this is called metadata in vcloud
71
+ collection :tags
72
+
73
+ request_path 'fog/vcloud_director/requests/compute'
74
+ request :get_organizations
75
+ request :get_organization
76
+ request :get_catalog
77
+ request :get_catalog_item
78
+ request :get_vdc
79
+ request :get_vapp_template
80
+ request :get_vapp
81
+ request :get_vms
82
+ request :instantiate_vapp_template
83
+ request :get_task
84
+ request :get_tasks_list
85
+ request :get_vm_customization
86
+ request :put_vm_customization
87
+ request :get_network
88
+ request :get_vm_cpu
89
+ request :put_vm_cpu
90
+ request :get_vm_memory
91
+ request :put_vm_memory
92
+ request :get_vm_disks
93
+ request :put_vm_disks
94
+ request :get_vm_network
95
+ request :put_vm_network
96
+ request :get_metadata
97
+ request :post_vm_metadata
98
+ request :put_metadata_value
99
+ request :delete_metadata
100
+ request :post_vm_poweron
101
+ request :post_vm_poweroff
102
+ request :get_request # this is used for manual testing
103
+ request :get_href # this is used for manual testing
104
+ request :get_vms_by_metadata
105
+ request :get_vm
106
+ request :post_task_cancel
107
+ request :post_vapp_undeploy
108
+ request :delete_vapp
109
+ request :get_current_session
110
+ request :get_supported_versions
111
+
112
+ class Model < Fog::Model
113
+ def initialize(attrs={})
114
+ super(attrs)
115
+ lazy_load_attrs.each do |attr|
116
+ attributes[attr]= NonLoaded if attributes[attr].nil?
117
+ make_lazy_load_method(attr)
118
+ end
119
+ self.class.attributes.each {|attr| make_attr_loaded_method(attr)}
120
+ end
121
+
122
+ def lazy_load_attrs
123
+ @lazy_load_attrs ||= self.class.attributes - attributes.keys
124
+ end
125
+
126
+ def make_lazy_load_method(attr)
127
+ self.class.instance_eval do
128
+ define_method(attr) do
129
+ reload if attributes[attr] == NonLoaded and !@inspecting
130
+ attributes[attr]
131
+ end
132
+ end
133
+ end
134
+
135
+ # it adds an attr_loaded? method to know if the value has been loaded
136
+ # yet or not: ie description_loaded?
137
+ def make_attr_loaded_method(attr)
138
+ self.class.instance_eval do
139
+ define_method("#{attr}_loaded?") do
140
+ attributes[attr] != NonLoaded
141
+ end
142
+ end
143
+ end
144
+
145
+ def inspect
146
+ @inspecting = true
147
+ out = super
148
+ @inspecting = false
149
+ out
150
+ end
151
+ end
152
+
153
+ class Collection < Fog::Collection
154
+ def all(lazy_load=true)
155
+ lazy_load ? index : get_everyone
156
+ end
157
+
158
+ def get(item_id)
159
+ item = get_by_id(item_id)
160
+ return nil unless item
161
+ new(item)
162
+ end
163
+
164
+ def get_by_name(item_name)
165
+ item_found = item_list.detect {|item| item[:name] == item_name}
166
+ return nil unless item_found
167
+ get(item_found[:id])
168
+ end
169
+
170
+ def index
171
+ load(item_list)
172
+ end
173
+
174
+ def get_everyone
175
+ items = item_list.map {|item| get_by_id(item[:id])}
176
+ load(items)
177
+ end
178
+
179
+ def ensure_list(items)
180
+ items.is_a?(Hash) ? [items] : items
181
+ end
182
+ end
183
+
184
+ class Real
185
+ include Fog::Compute::Helper
186
+
187
+ attr_reader :end_point, :api_version
188
+
189
+ def initialize(options={})
190
+ @vcloud_director_password = options[:vcloud_director_password]
191
+ @vcloud_director_username = options[:vcloud_director_username]
192
+ @connection_options = options[:connection_options] || {}
193
+ @host = options[:vcloud_director_host]
194
+ @path = options[:path] || Fog::Compute::VcloudDirector::Defaults::PATH
195
+ @persistent = options[:persistent] || false
196
+ @port = options[:port] || Fog::Compute::VcloudDirector::Defaults::PORT
197
+ @scheme = options[:scheme] || Fog::Compute::VcloudDirector::Defaults::SCHEME
198
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
199
+ @end_point = "#{@scheme}://#{@host}#{@path}/"
200
+ @api_version = options[:vcloud_director_api_version] || Fog::Compute::VcloudDirector::Defaults::API_VERSION
201
+ end
202
+
203
+ def auth_token
204
+ login if @auth_token.nil?
205
+ @auth_token
206
+ end
207
+
208
+ def org_name
209
+ login if @org_name.nil?
210
+ @org_name
211
+ end
212
+
213
+ def reload
214
+ @cookie = nil # verify that this makes the connection to be restored, if so use Excon::Errors::Forbidden instead of Excon::Errors::Unauthorized
215
+ @connection.reset
216
+ end
217
+
218
+ def request(params)
219
+ unless @cookie
220
+ @cookie = auth_token
221
+ end
222
+ begin
223
+ do_request(params)
224
+ # this is to know if Excon::Errors::Unauthorized really happens
225
+ #rescue Excon::Errors::Unauthorized
226
+ # @cookie = auth_token
227
+ # do_request(params)
228
+ end
229
+ end
230
+
231
+ def do_request(params)
232
+ headers = { 'Accept' => 'application/*+xml;version=' + @api_version }
233
+ if @cookie
234
+ headers.merge!('Cookie' => @cookie)
235
+ end
236
+ if params[:path]
237
+ if params[:override_path] == true
238
+ path = params[:path]
239
+ else
240
+ path = "#{@path}/#{params[:path]}"
241
+ end
242
+ else
243
+ path = "#{@path}"
244
+ end
245
+ @connection.request({
246
+ :body => params[:body],
247
+ :expects => params[:expects],
248
+ :headers => headers.merge!(params[:headers] || {}),
249
+ :host => @host,
250
+ :method => params[:method],
251
+ :parser => params[:parser],
252
+ :path => path
253
+ })
254
+ rescue => @e
255
+ raise @e unless @e.class.to_s =~ /^Excon::Errors/
256
+ if @e.respond_to?(:response)
257
+ puts @e.response.status
258
+ puts CGI::unescapeHTML(@e.response.body)
259
+ end
260
+ raise @e
261
+ end
262
+
263
+ def process_task(response_body)
264
+ task = make_task_object(response_body)
265
+ wait_and_raise_unless_success(task)
266
+ true
267
+ end
268
+
269
+ def make_task_object(task_response)
270
+ task_response[:id] = task_response[:href].split('/').last
271
+ tasks.new(task_response)
272
+ end
273
+
274
+ def wait_and_raise_unless_success(task)
275
+ task.wait_for { non_running? }
276
+ raise Errors::Task.new "status: #{task.status}, error: #{task.error}" unless task.success?
277
+ end
278
+
279
+ def add_id_from_href!(data={})
280
+ data[:id] = data[:href].split('/').last
281
+ end
282
+
283
+ private
284
+
285
+ def login
286
+ headers = {
287
+ 'Authorization' => "Basic #{Base64.encode64("#{@vcloud_director_username}:#{@vcloud_director_password}").delete("\r\n")}",
288
+ 'Accept' => 'application/*+xml;version=' + @api_version
289
+ }
290
+ response = @connection.request({
291
+ :expects => 200,
292
+ :headers => headers,
293
+ :host => @host,
294
+ :method => 'POST',
295
+ :parser => Fog::ToHashDocument.new,
296
+ :path => '/api/sessions' # curl http://example.com/api/versions | grep LoginUrl
297
+ })
298
+ @auth_token = response.headers['Set-Cookie'] || response.headers['set-cookie']
299
+ @org_name = response.body[:org]
300
+ end
301
+ end
302
+
303
+ class Mock
304
+ attr_reader :end_point, :api_version
305
+
306
+ def data
307
+ @@data ||= Hash.new do |hash, key|
308
+ hash[key] = {
309
+ :catalog => {
310
+ :name => 'Default Catalog',
311
+ :uuid => uuid
312
+ },
313
+ :catalog_items => [{
314
+ :type => 'vAppTemplate',
315
+ :name => 'vAppTemplate 1',
316
+ :uuid => uuid
317
+ }],
318
+ :networks => [{
319
+ :name => 'Default Network',
320
+ :uuid => uuid
321
+ }],
322
+ :org => {
323
+ :description => 'Organization for mocking',
324
+ :full_name => 'Mock Organization',
325
+ :name => org_name,
326
+ :uuid => uuid
327
+ },
328
+ :vdc => {
329
+ :description => 'vDC for mocking',
330
+ :name => 'MockVDC',
331
+ :uuid => uuid
332
+ }
333
+ }
334
+ end[@vcloud_director_username]
335
+ end
336
+
337
+ def initialize(options={})
338
+ @vcloud_director_password = options[:vcloud_director_password]
339
+ @vcloud_director_username = options[:vcloud_director_username]
340
+ #@connection_options = options[:connection_options] || {}
341
+ @host = options[:vcloud_director_host]
342
+ @path = options[:path] || Fog::Compute::VcloudDirector::Defaults::PATH
343
+ @persistent = options[:persistent] || false
344
+ @port = options[:port] || Fog::Compute::VcloudDirector::Defaults::PORT
345
+ @scheme = options[:scheme] || Fog::Compute::VcloudDirector::Defaults::SCHEME
346
+ #@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
347
+ @end_point = "#{@scheme}://#{@host}#{@path}/"
348
+ @api_version = options[:vcloud_director_api_version] || Fog::Compute::VcloudDirector::Defaults::API_VERSION
349
+ end
350
+
351
+ def auth_token
352
+ @auth_token || Fog::Mock.random_base64(32)
353
+ end
354
+
355
+ def org_name
356
+ @org_name ||=
357
+ begin
358
+ username = @vcloud_director_username.split('@')
359
+ unless username.size == 2
360
+ Fog::Logger.warning('vcloud_director_username should be in the form user@org_name')
361
+ end
362
+ username.last || 'vcd_org_name'
363
+ end
364
+ end
365
+
366
+ def user_name
367
+ @user_name ||= @vcloud_director_username.split('@').first
368
+ end
369
+
370
+ def uuid
371
+ [8,4,4,4,12].map {|i| Fog::Mock.random_hex(i)}.join('-')
372
+ end
373
+
374
+ def add_id_from_href!(data={})
375
+ data[:id] = data[:href].split('/').last
376
+ end
377
+
378
+ private
379
+
380
+ def make_href(path)
381
+ "#{@end_point}#{path}"
382
+ end
383
+
384
+ def xmlns
385
+ 'http://www.vmware.com/vcloud/v1.5'
386
+ end
387
+
388
+ def xmlns_xsi
389
+ 'http://www.w3.org/2001/XMLSchema-instance'
390
+ end
391
+
392
+ def xsi_schema_location
393
+ "http://www.vmware.com/vcloud/v1.5 http://#{@host}#{@path}/v1.5/schema/master.xsd"
394
+ end
395
+ end
396
+ end
397
+ end
398
+ end
@@ -0,0 +1,100 @@
1
+ # This is the data structure it accepts, this is the output of get_vm_disks
2
+ #
3
+ # {"type"=>"application/vnd.vmware.vcloud.guestCustomizationSection+xml",
4
+ # "href"=>
5
+ # "https://example.com/api/vApp/vm-2bbbf556-55dc-4974-82e6-aa6e814f0b64/guestCustomizationSection/",
6
+ # "id"=>"vm-2bbbf556-55dc-4974-82e6-aa6e814f0b64",
7
+ # "enabled"=>false,
8
+ # "change_sid"=>false,
9
+ # "virtual_machine_id"=>"2bbbf556-55dc-4974-82e6-aa6e814f0b64",
10
+ # "join_domain_enabled"=>false,
11
+ # "use_org_settings"=>false,
12
+ # "admin_password_enabled"=>false,
13
+ # "admin_password_auto"=>true,
14
+ # "reset_password_required"=>false,
15
+ # "customization_script"=>"hola\nmundo",
16
+ # "has_customization_script"=>true,
17
+ # "computer_name"=>"DEVWEB-001"}
18
+ #
19
+ # This is what it generates
20
+ #
21
+ # <vcloud:GuestCustomizationSection
22
+ # xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
23
+ # xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
24
+ # href="https://vcloud.example.com/api/vApp/vm-55cc91f2-7e12-48d4-ad90-6f637a51fd88/guestCustomizationSection/"
25
+ # ovf:required="false"
26
+ # type="application/vnd.vmware.vcloud.guestCustomizationSection+xml">
27
+ # <ovf:Info>Specifies Guest OS Customization Settings</ovf:Info>
28
+ # <vcloud:Enabled>true</vcloud:Enabled>
29
+ # <vcloud:ChangeSid>true</vcloud:ChangeSid>
30
+ # <vcloud:VirtualMachineId>55cc91f2-7e12-48d4-ad90-6f637a51fd88</vcloud:VirtualMachineId>
31
+ # <vcloud:JoinDomainEnabled>false</vcloud:JoinDomainEnabled>
32
+ # <vcloud:UseOrgSettings>false</vcloud:UseOrgSettings>
33
+ # <vcloud:AdminPasswordEnabled>true</vcloud:AdminPasswordEnabled>
34
+ # <vcloud:AdminPasswordAuto>true</vcloud:AdminPasswordAuto>
35
+ # <vcloud:ResetPasswordRequired>false</vcloud:ResetPasswordRequired>
36
+ # <vcloud:ComputerName>DEVWEB-001</vcloud:ComputerName>
37
+ # </vcloud:GuestCustomizationSection>
38
+ #
39
+ module Fog
40
+ module Generators
41
+ module Compute
42
+ module VcloudDirector
43
+
44
+ class Customization
45
+
46
+ def initialize(attrs={})
47
+ @attrs = attrs
48
+ end
49
+
50
+ def generate_xml
51
+ output = ""
52
+ output << header
53
+ output << body(@attrs)
54
+ output << tail
55
+ output
56
+ end
57
+
58
+ def header
59
+ '<GuestCustomizationSection xmlns="http://www.vmware.com/vcloud/v1.5"
60
+ xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
61
+ type="application/vnd.vmware.vcloud.guestCustomizationSection+xml"
62
+ ovf:required="false"
63
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
64
+ xsi:schemaLocation="http://schemas.dmtf.org/ovf/envelope/1
65
+ http://schemas.dmtf.org/ovf/envelope/1/dsp8023_1.1.0.xsd
66
+ http://www.vmware.com/vcloud/v1.5
67
+ http://zone01.bluelock.com/api/v1.5/schema/master.xsd">'
68
+ end
69
+
70
+ # the order maters http://communities.vmware.com/thread/448760?start=0&tstart=0
71
+
72
+ # http://www.vmware.com/support/vcd/doc/rest-api-doc-1.5-html/types/GuestCustomizationSectionType.html
73
+ # CustomizationScript
74
+ # Script to run on guest customization. You could use xml escape sequence &#13; to make multiple lines script. The script could contain any UNICODE symbol by specifying its number in format &#xxxx; where xxxx is the number. The predefined symbols in the XML are: * & &amp; * < &lt; * > &gt; * " &quot; * ' &apos;
75
+
76
+ def body(opts={})
77
+ body = "
78
+ <ovf:Info>Specifies Guest OS Customization Settings</ovf:Info>
79
+ <Enabled>#{opts[:enabled]}</Enabled>
80
+ <ChangeSid>#{opts[:change_sid]}</ChangeSid>
81
+ <VirtualMachineId>#{opts[:virtual_machine_id]}</VirtualMachineId>
82
+ <JoinDomainEnabled>#{opts[:join_domain_enabled]}</JoinDomainEnabled>
83
+ <UseOrgSettings>#{opts[:use_org_settings]}</UseOrgSettings>
84
+ <AdminPasswordEnabled>#{opts[:admin_password_enabled]}</AdminPasswordEnabled>
85
+ <AdminPasswordAuto>#{opts[:admin_password_auto]}</AdminPasswordAuto>
86
+ <ResetPasswordRequired>#{opts[:reset_password_required]}</ResetPasswordRequired>
87
+ <CustomizationScript>#{CGI::escapeHTML(opts[:customization_script]).gsub(/\r/, "&#13;")}</CustomizationScript>
88
+ <ComputerName>#{opts[:computer_name]}</ComputerName>"
89
+ end
90
+
91
+ def tail
92
+ '</GuestCustomizationSection>'
93
+ end
94
+
95
+ end
96
+
97
+ end
98
+ end
99
+ end
100
+ end