brightbox-cli 0.14.1 → 0.15.0

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 (381) hide show
  1. data/.gitignore +7 -0
  2. data/bin/brightbox-firewall-policies +14 -0
  3. data/bin/brightbox-firewall-rules +14 -0
  4. data/bin/brightbox-groups +14 -0
  5. data/lib/brightbox-cli/api.rb +2 -1
  6. data/lib/brightbox-cli/cloud_ips.rb +2 -2
  7. data/lib/brightbox-cli/command_generator.rb +3 -0
  8. data/lib/brightbox-cli/commands/cloudips-update.rb +2 -2
  9. data/lib/brightbox-cli/commands/config-client-list.rb +1 -1
  10. data/lib/brightbox-cli/commands/firewall-policies-apply.rb +31 -0
  11. data/lib/brightbox-cli/commands/firewall-policies-create.rb +39 -0
  12. data/lib/brightbox-cli/commands/firewall-policies-destroy.rb +24 -0
  13. data/lib/brightbox-cli/commands/firewall-policies-list.rb +17 -0
  14. data/lib/brightbox-cli/commands/firewall-policies-remove.rb +31 -0
  15. data/lib/brightbox-cli/commands/firewall-policies-show.rb +19 -0
  16. data/lib/brightbox-cli/commands/firewall-rules-create.rb +51 -0
  17. data/lib/brightbox-cli/commands/firewall-rules-destroy.rb +24 -0
  18. data/lib/brightbox-cli/commands/firewall-rules-list.rb +19 -0
  19. data/lib/brightbox-cli/commands/firewall-rules-show.rb +22 -0
  20. data/lib/brightbox-cli/commands/groups-add-server.rb +23 -0
  21. data/lib/brightbox-cli/commands/groups-create.rb +22 -0
  22. data/lib/brightbox-cli/commands/groups-destroy.rb +23 -0
  23. data/lib/brightbox-cli/commands/groups-list.rb +16 -0
  24. data/lib/brightbox-cli/commands/groups-move_servers.rb +39 -0
  25. data/lib/brightbox-cli/commands/groups-remove-servers.rb +35 -0
  26. data/lib/brightbox-cli/commands/groups-show.rb +14 -0
  27. data/lib/brightbox-cli/commands/groups-update.rb +38 -0
  28. data/lib/brightbox-cli/commands/images-register.rb +11 -3
  29. data/lib/brightbox-cli/commands/images-update.rb +4 -0
  30. data/lib/brightbox-cli/commands/servers-create.rb +19 -8
  31. data/lib/brightbox-cli/commands/servers-list.rb +0 -3
  32. data/lib/brightbox-cli/commands/servers-show.rb +3 -39
  33. data/lib/brightbox-cli/commands/servers-stop.rb +1 -1
  34. data/lib/brightbox-cli/detailed_server.rb +43 -0
  35. data/lib/brightbox-cli/detailed_server_group.rb +13 -0
  36. data/lib/brightbox-cli/firewall_policy.rb +32 -0
  37. data/lib/brightbox-cli/firewall_rule.rb +39 -0
  38. data/lib/brightbox-cli/firewall_rules.rb +26 -0
  39. data/lib/brightbox-cli/images.rb +2 -1
  40. data/lib/brightbox-cli/server_groups.rb +64 -0
  41. data/lib/brightbox-cli/servers.rb +5 -13
  42. data/lib/brightbox-cli/vendor/fog/Rakefile +17 -2
  43. data/lib/brightbox-cli/vendor/fog/changelog.txt +434 -0
  44. data/lib/brightbox-cli/vendor/fog/docs/_layouts/default.html +12 -12
  45. data/lib/brightbox-cli/vendor/fog/docs/about/getting_started.markdown +2 -2
  46. data/lib/brightbox-cli/vendor/fog/docs/dns/index.markdown +3 -3
  47. data/lib/brightbox-cli/vendor/fog/docs/index.markdown +1 -1
  48. data/lib/brightbox-cli/vendor/fog/docs/public/css/fog.css +14 -1
  49. data/lib/brightbox-cli/vendor/fog/docs/public/images/engineyard.png +0 -0
  50. data/lib/brightbox-cli/vendor/fog/docs/public/images/fog.png +0 -0
  51. data/lib/brightbox-cli/vendor/fog/fog.gemspec +4 -4
  52. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/cloud_watch.rb +14 -0
  53. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/compute.rb +50 -19
  54. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/elasticache.rb +127 -0
  55. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/cloud_watch/alarm.rb +12 -0
  56. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/cloud_watch/alarm_data.rb +39 -0
  57. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/cloud_watch/alarm_datum.rb +66 -0
  58. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/cloud_watch/alarm_histories.rb +18 -0
  59. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/cloud_watch/alarm_history.rb +16 -0
  60. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/cloud_watch/alarms.rb +30 -0
  61. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/compute/servers.rb +1 -1
  62. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/elasticache/cluster.rb +69 -0
  63. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/elasticache/clusters.rb +31 -0
  64. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/elasticache/parameter_group.rb +32 -0
  65. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/elasticache/parameter_groups.rb +30 -0
  66. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/elasticache/security_group.rb +52 -0
  67. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/models/elasticache/security_groups.rb +30 -0
  68. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/delete_alarms.rb +26 -0
  69. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/describe_alarm_history.rb +40 -0
  70. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/describe_alarms.rb +73 -0
  71. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/describe_alarms_for_metric.rb +71 -0
  72. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/disable_alarm_actions.rb +26 -0
  73. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/enable_alarm_actions.rb +26 -0
  74. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/get_metric_statistics.rb +1 -0
  75. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/put_metric_alarm.rb +26 -0
  76. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/cloud_watch/set_alarm_state.rb +26 -0
  77. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -2
  78. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/{aws → dns}/change_resource_record_sets.rb +0 -0
  79. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/{aws → dns}/create_hosted_zone.rb +0 -0
  80. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/{aws → dns}/delete_hosted_zone.rb +0 -0
  81. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/{aws → dns}/get_change.rb +0 -0
  82. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/{aws → dns}/get_hosted_zone.rb +0 -0
  83. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/{aws → dns}/list_hosted_zones.rb +0 -0
  84. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/{aws → dns}/list_resource_record_sets.rb +0 -0
  85. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/authorize_cache_security_group_ingress.rb +26 -0
  86. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/base.rb +34 -0
  87. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/cache_cluster_parser.rb +79 -0
  88. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/describe_cache_clusters.rb +27 -0
  89. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/describe_cache_parameters.rb +22 -0
  90. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/describe_engine_default_parameters.rb +22 -0
  91. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/describe_parameter_groups.rb +27 -0
  92. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/describe_security_groups.rb +27 -0
  93. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/engine_defaults_parser.rb +59 -0
  94. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/event_list.rb +38 -0
  95. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/modify_parameter_group.rb +27 -0
  96. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/parameter_group_parser.rb +30 -0
  97. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/reset_parameter_group.rb +27 -0
  98. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/security_group_parser.rb +40 -0
  99. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/single_cache_cluster.rb +22 -0
  100. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/single_parameter_group.rb +22 -0
  101. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/parsers/elasticache/single_security_group.rb +34 -0
  102. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/cloud_watch/delete_alarms.rb +30 -0
  103. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/cloud_watch/describe_alarm_history.rb +33 -0
  104. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/cloud_watch/describe_alarms.rb +38 -0
  105. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/cloud_watch/describe_alarms_for_metric.rb +39 -0
  106. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/cloud_watch/disable_alarm_actions.rb +30 -0
  107. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/cloud_watch/enable_alarm_actions.rb +30 -0
  108. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +84 -0
  109. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/cloud_watch/set_alarm_state.rb +31 -0
  110. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/create_security_group.rb +5 -4
  111. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/create_snapshot.rb +2 -3
  112. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/create_tags.rb +5 -3
  113. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/create_volume.rb +0 -1
  114. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/delete_tags.rb +2 -3
  115. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/describe_images.rb +5 -8
  116. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/describe_instances.rb +2 -2
  117. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/describe_snapshots.rb +3 -1
  118. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/describe_volumes.rb +3 -2
  119. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/modify_image_attribute.rb +32 -0
  120. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +1 -1
  121. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/register_image.rb +0 -1
  122. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/compute/run_instances.rb +1 -2
  123. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/authorize_cache_security_group_ingress.rb +36 -0
  124. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +62 -0
  125. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/create_cache_parameter_group.rb +37 -0
  126. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/create_cache_security_group.rb +33 -0
  127. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/delete_cache_cluster.rb +32 -0
  128. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/delete_cache_parameter_group.rb +31 -0
  129. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/delete_cache_security_group.rb +31 -0
  130. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/describe_cache_clusters.rb +39 -0
  131. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/describe_cache_parameter_groups.rb +34 -0
  132. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/describe_cache_parameters.rb +36 -0
  133. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/describe_cache_security_groups.rb +34 -0
  134. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/describe_engine_default_parameters.rb +35 -0
  135. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/describe_events.rb +46 -0
  136. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/modify_cache_cluster.rb +70 -0
  137. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/modify_cache_parameter_group.rb +45 -0
  138. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/reboot_cache_cluster.rb +44 -0
  139. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/reset_cache_parameter_group.rb +46 -0
  140. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elasticache/revoke_cache_security_group_ingress.rb +37 -0
  141. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elb/create_load_balancer.rb +1 -1
  142. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +1 -1
  143. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
  144. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elb/describe_instance_health.rb +2 -2
  145. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +1 -1
  146. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/iam/get_server_certificate.rb +5 -7
  147. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/iam/list_server_certificates.rb +3 -1
  148. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/iam/upload_server_certificate.rb +3 -2
  149. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/change_message_visibility.rb +30 -0
  150. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/create_queue.rb +35 -1
  151. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/delete_message.rb +29 -0
  152. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/delete_queue.rb +24 -1
  153. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/get_queue_attributes.rb +22 -1
  154. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/list_queues.rb +15 -1
  155. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/receive_message.rb +55 -1
  156. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/send_message.rb +39 -1
  157. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/sqs/set_queue_attributes.rb +19 -1
  158. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/storage/copy_object.rb +1 -1
  159. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/storage/get_object_acl.rb +1 -1
  160. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/storage/hash_to_acl.rb +2 -3
  161. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/sqs.rb +30 -0
  162. data/lib/brightbox-cli/vendor/fog/lib/fog/aws/storage.rb +2 -1
  163. data/lib/brightbox-cli/vendor/fog/lib/fog/aws.rb +17 -14
  164. data/lib/brightbox-cli/vendor/fog/lib/fog/bin/aws.rb +4 -0
  165. data/lib/brightbox-cli/vendor/fog/lib/fog/bin/openstack.rb +31 -0
  166. data/lib/brightbox-cli/vendor/fog/lib/fog/bin.rb +1 -0
  167. data/lib/brightbox-cli/vendor/fog/lib/fog/bluebox/models/compute/server.rb +1 -1
  168. data/lib/brightbox-cli/vendor/fog/lib/fog/bluebox/requests/compute/create_template.rb +1 -1
  169. data/lib/brightbox-cli/vendor/fog/lib/fog/bluebox.rb +2 -2
  170. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/compute.rb +5 -0
  171. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/account.rb +1 -1
  172. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/firewall_policies.rb +29 -0
  173. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/firewall_policy.rb +65 -0
  174. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/firewall_rule.rb +54 -0
  175. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/firewall_rules.rb +24 -0
  176. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/image.rb +2 -0
  177. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/server.rb +27 -2
  178. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/server_group.rb +1 -1
  179. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/requests/compute/remove_firewall_policy.rb +14 -0
  180. data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox.rb +1 -1
  181. data/lib/brightbox-cli/vendor/fog/lib/fog/compute/models/server.rb +1 -2
  182. data/lib/brightbox-cli/vendor/fog/lib/fog/compute.rb +3 -0
  183. data/lib/brightbox-cli/vendor/fog/lib/fog/core/attributes.rb +5 -5
  184. data/lib/brightbox-cli/vendor/fog/lib/fog/core/credentials.rb +5 -0
  185. data/lib/brightbox-cli/vendor/fog/lib/fog/core/errors.rb +4 -0
  186. data/lib/brightbox-cli/vendor/fog/lib/fog/core/provider.rb +9 -4
  187. data/lib/brightbox-cli/vendor/fog/lib/fog/dnsimple.rb +1 -1
  188. data/lib/brightbox-cli/vendor/fog/lib/fog/dnsmadeeasy.rb +1 -1
  189. data/lib/brightbox-cli/vendor/fog/lib/fog/dynect.rb +1 -1
  190. data/lib/brightbox-cli/vendor/fog/lib/fog/ecloud/compute.rb +1 -5
  191. data/lib/brightbox-cli/vendor/fog/lib/fog/ecloud.rb +1 -1
  192. data/lib/brightbox-cli/vendor/fog/lib/fog/glesys/compute.rb +20 -4
  193. data/lib/brightbox-cli/vendor/fog/lib/fog/glesys/models/compute/templates.rb +0 -6
  194. data/lib/brightbox-cli/vendor/fog/lib/fog/glesys.rb +1 -1
  195. data/lib/brightbox-cli/vendor/fog/lib/fog/go_grid.rb +1 -1
  196. data/lib/brightbox-cli/vendor/fog/lib/fog/google.rb +1 -1
  197. data/lib/brightbox-cli/vendor/fog/lib/fog/libvirt/models/compute/server.rb +1 -1
  198. data/lib/brightbox-cli/vendor/fog/lib/fog/libvirt/models/compute/uri.rb +7 -3
  199. data/lib/brightbox-cli/vendor/fog/lib/fog/libvirt.rb +1 -1
  200. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/models/compute/server.rb +10 -0
  201. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/{models/dns/linode → requests/dns}/domain_create.rb +3 -3
  202. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/{models/dns/linode → requests/dns}/domain_delete.rb +0 -0
  203. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/{models/dns/linode → requests/dns}/domain_list.rb +1 -1
  204. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/{models/dns/linode → requests/dns}/domain_resource_create.rb +8 -8
  205. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/{models/dns/linode → requests/dns}/domain_resource_delete.rb +0 -0
  206. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/{models/dns/linode → requests/dns}/domain_resource_list.rb +8 -8
  207. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/{models/dns/linode → requests/dns}/domain_resource_update.rb +9 -9
  208. data/lib/brightbox-cli/vendor/fog/lib/fog/linode/{models/dns/linode → requests/dns}/domain_update.rb +5 -5
  209. data/lib/brightbox-cli/vendor/fog/lib/fog/linode.rb +2 -2
  210. data/lib/brightbox-cli/vendor/fog/lib/fog/local/models/storage/directories.rb +33 -0
  211. data/lib/brightbox-cli/vendor/fog/lib/fog/local/models/storage/directory.rb +57 -0
  212. data/lib/brightbox-cli/vendor/fog/lib/fog/local/models/storage/file.rb +113 -0
  213. data/lib/brightbox-cli/vendor/fog/lib/fog/local/models/storage/files.rb +87 -0
  214. data/lib/brightbox-cli/vendor/fog/lib/fog/local/storage.rb +71 -0
  215. data/lib/brightbox-cli/vendor/fog/lib/fog/local.rb +1 -1
  216. data/lib/brightbox-cli/vendor/fog/lib/fog/new_servers.rb +1 -1
  217. data/lib/brightbox-cli/vendor/fog/lib/fog/ninefold/compute.rb +1 -1
  218. data/lib/brightbox-cli/vendor/fog/lib/fog/ninefold/models/compute/server.rb +2 -1
  219. data/lib/brightbox-cli/vendor/fog/lib/fog/ninefold.rb +2 -2
  220. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/compute.rb +198 -0
  221. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/compute/flavor.rb +20 -0
  222. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/compute/flavors.rb +28 -0
  223. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/compute/image.rb +57 -0
  224. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/compute/images.rb +33 -0
  225. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/compute/meta.rb +29 -0
  226. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/compute/metadata.rb +69 -0
  227. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/compute/server.rb +195 -0
  228. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/compute/servers.rb +36 -0
  229. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/models/meta_parent.rb +33 -0
  230. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/change_password_server.rb +24 -0
  231. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/confirm_resized_server.rb +24 -0
  232. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/create_image.rb +49 -0
  233. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/create_server.rb +75 -0
  234. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/delete_image.rb +40 -0
  235. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/delete_meta.rb +28 -0
  236. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/delete_server.rb +38 -0
  237. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/get_flavor_details.rb +43 -0
  238. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/get_image_details.rb +33 -0
  239. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/get_meta.rb +29 -0
  240. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/get_server_details.rb +32 -0
  241. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_addresses.rb +32 -0
  242. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_flavors.rb +38 -0
  243. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_flavors_detail.rb +38 -0
  244. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_images.rb +33 -0
  245. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_images_detail.rb +39 -0
  246. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_metadata.rb +28 -0
  247. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_private_addresses.rb +32 -0
  248. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_public_addresses.rb +32 -0
  249. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_servers.rb +33 -0
  250. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/list_servers_detail.rb +39 -0
  251. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/reboot_server.rb +24 -0
  252. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/rebuild_server.rb +31 -0
  253. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/resize_server.rb +24 -0
  254. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/revert_resized_server.rb +30 -0
  255. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/server_action.rb +18 -0
  256. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/set_metadata.rb +45 -0
  257. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/update_meta.rb +45 -0
  258. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/update_metadata.rb +46 -0
  259. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack/requests/compute/update_server.rb +35 -0
  260. data/lib/brightbox-cli/vendor/fog/lib/fog/openstack.rb +113 -0
  261. data/lib/brightbox-cli/vendor/fog/lib/fog/providers.rb +1 -0
  262. data/lib/brightbox-cli/vendor/fog/lib/fog/rackspace/dns.rb +25 -0
  263. data/lib/brightbox-cli/vendor/fog/lib/fog/rackspace/requests/dns/callback.rb +3 -2
  264. data/lib/brightbox-cli/vendor/fog/lib/fog/rackspace.rb +5 -5
  265. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost/{parsers/dns/slicehost → requests/dns}/create_record.rb +2 -2
  266. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost/{parsers/dns/slicehost → requests/dns}/create_zone.rb +1 -1
  267. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost/{parsers/dns/slicehost → requests/dns}/delete_record.rb +0 -0
  268. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost/{parsers/dns/slicehost → requests/dns}/delete_zone.rb +0 -0
  269. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost/{parsers/dns/slicehost → requests/dns}/get_record.rb +2 -2
  270. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost/{parsers/dns/slicehost → requests/dns}/get_records.rb +1 -1
  271. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost/{parsers/dns/slicehost → requests/dns}/get_zone.rb +0 -0
  272. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost/{parsers/dns/slicehost → requests/dns}/get_zones.rb +0 -0
  273. data/lib/brightbox-cli/vendor/fog/lib/fog/slicehost.rb +2 -2
  274. data/lib/brightbox-cli/vendor/fog/lib/fog/storm_on_demand.rb +1 -1
  275. data/lib/brightbox-cli/vendor/fog/lib/fog/vcloud.rb +1 -1
  276. data/lib/brightbox-cli/vendor/fog/lib/fog/virtual_box.rb +1 -1
  277. data/lib/brightbox-cli/vendor/fog/lib/fog/vmfusion/models/compute/servers.rb +6 -6
  278. data/lib/brightbox-cli/vendor/fog/lib/fog/vmfusion.rb +1 -1
  279. data/lib/brightbox-cli/vendor/fog/lib/fog/voxel.rb +1 -1
  280. data/lib/brightbox-cli/vendor/fog/lib/fog/vsphere/compute.rb +0 -2
  281. data/lib/brightbox-cli/vendor/fog/lib/fog/vsphere.rb +1 -1
  282. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/dns.rb +14 -3
  283. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/models/dns/record.rb +1 -1
  284. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/models/dns/records.rb +5 -0
  285. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/models/dns/zones.rb +2 -2
  286. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/count_hosts.rb +20 -1
  287. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/count_zones.rb +12 -1
  288. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/create_host.rb +67 -1
  289. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/create_zone.rb +44 -1
  290. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/delete_host.rb +19 -0
  291. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/delete_zone.rb +17 -0
  292. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/find_hosts.rb +22 -1
  293. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/get_host.rb +18 -1
  294. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/get_zone.rb +19 -2
  295. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/get_zone_stats.rb +23 -0
  296. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/list_hosts.rb +20 -1
  297. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/list_zones.rb +15 -0
  298. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/update_host.rb +20 -1
  299. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo/requests/dns/update_zone.rb +20 -1
  300. data/lib/brightbox-cli/vendor/fog/lib/fog/zerigo.rb +1 -1
  301. data/lib/brightbox-cli/vendor/fog/lib/fog.rb +1 -1
  302. data/lib/brightbox-cli/vendor/fog/tests/aws/models/cloud_watch/alarm_data_tests.rb +40 -0
  303. data/lib/brightbox-cli/vendor/fog/tests/aws/models/cloud_watch/alarm_history_tests.rb +20 -0
  304. data/lib/brightbox-cli/vendor/fog/tests/aws/models/compute/server_tests.rb +2 -0
  305. data/lib/brightbox-cli/vendor/fog/tests/aws/models/elasticache/cluster_tests.rb +30 -0
  306. data/lib/brightbox-cli/vendor/fog/tests/aws/models/elasticache/parameter_groups_tests.rb +17 -0
  307. data/lib/brightbox-cli/vendor/fog/tests/aws/models/elasticache/security_groups_tests.rb +52 -0
  308. data/lib/brightbox-cli/vendor/fog/tests/aws/models/elb/model_tests.rb +2 -0
  309. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/cloud_watch/list_metrics_test.rb +5 -5
  310. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/compute/image_tests.rb +33 -2
  311. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/compute/tag_tests.rb +40 -0
  312. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/elasticache/cache_cluster_tests.rb +137 -0
  313. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/elasticache/describe_events.rb +17 -0
  314. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/elasticache/helper.rb +68 -0
  315. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/elasticache/parameter_group_tests.rb +105 -0
  316. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/elasticache/security_group_tests.rb +107 -0
  317. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/iam/server_certificate_tests.rb +39 -18
  318. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/simpledb/attributes_tests.rb +18 -18
  319. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/simpledb/domain_tests.rb +7 -7
  320. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/sqs/message_tests.rb +1 -7
  321. data/lib/brightbox-cli/vendor/fog/tests/aws/requests/sqs/queue_tests.rb +0 -5
  322. data/lib/brightbox-cli/vendor/fog/tests/brightbox/requests/compute/load_balancer_tests.rb +1 -0
  323. data/lib/brightbox-cli/vendor/fog/tests/compute/models/flavors_tests.rb +1 -1
  324. data/lib/brightbox-cli/vendor/fog/tests/core/attribute_tests.rb +29 -0
  325. data/lib/brightbox-cli/vendor/fog/tests/core/credential_tests.rb +2 -0
  326. data/lib/brightbox-cli/vendor/fog/tests/helper.rb +1 -1
  327. data/lib/brightbox-cli/vendor/fog/tests/helpers/collection_helper.rb +5 -0
  328. data/lib/brightbox-cli/vendor/fog/tests/helpers/compute/server_helper.rb +1 -0
  329. data/lib/brightbox-cli/vendor/fog/tests/helpers/formats_helper.rb +16 -8
  330. data/lib/brightbox-cli/vendor/fog/tests/helpers/formats_helper_tests.rb +8 -0
  331. data/lib/brightbox-cli/vendor/fog/tests/helpers/mock_helper.rb +6 -2
  332. data/lib/brightbox-cli/vendor/fog/tests/linode/requests/compute/linodeplans_tests.rb +2 -1
  333. data/lib/brightbox-cli/vendor/fog/tests/ninefold/requests/compute/helper.rb +14 -17
  334. data/lib/brightbox-cli/vendor/fog/tests/openstack/requests/compute/flavor_tests.rb +35 -0
  335. data/lib/brightbox-cli/vendor/fog/tests/openstack/requests/compute/helper.rb +17 -0
  336. data/lib/brightbox-cli/vendor/fog/tests/openstack/requests/compute/image_tests.rb +59 -0
  337. data/lib/brightbox-cli/vendor/fog/tests/openstack/requests/compute/server_tests.rb +142 -0
  338. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/dns/dns_tests.rb +21 -21
  339. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/dns/helper.rb +17 -9
  340. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/dns/records_tests.rb +16 -16
  341. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{access_list_tests.rb → load_balancers/access_list_tests.rb} +0 -0
  342. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{algorithm_tests.rb → load_balancers/algorithm_tests.rb} +0 -0
  343. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{connection_logging_tests.rb → load_balancers/connection_logging_tests.rb} +0 -0
  344. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{connection_throttling_tests.rb → load_balancers/connection_throttling_tests.rb} +0 -0
  345. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{helper.rb → load_balancers/helper.rb} +12 -1
  346. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{load_balancer_tests.rb → load_balancers/load_balancer_tests.rb} +1 -1
  347. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{load_balancer_usage_tests.rb → load_balancers/load_balancer_usage_tests.rb} +0 -0
  348. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{monitor_tests.rb → load_balancers/monitor_tests.rb} +0 -0
  349. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{node_tests.rb → load_balancers/node_tests.rb} +0 -0
  350. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{protocol_tests.rb → load_balancers/protocol_tests.rb} +0 -0
  351. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{session_persistence_tests.rb → load_balancers/session_persistence_tests.rb} +0 -0
  352. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{usage_tests.rb → load_balancers/usage_tests.rb} +0 -0
  353. data/lib/brightbox-cli/vendor/fog/tests/rackspace/requests/{virtual_ip_tests.rb → load_balancers/virtual_ip_tests.rb} +2 -2
  354. data/lib/brightbox-cli/vendor/fog/tests/vsphere/requests/compute/vm_clone_tests.rb +2 -1
  355. data/lib/brightbox-cli/version.rb +1 -1
  356. data/lib/brightbox_cli.rb +16 -10
  357. data/spec/cloud_ips_spec.rb +17 -0
  358. data/spec/firewall_policy_spec.rb +78 -0
  359. data/spec/firewall_rule_spec.rb +74 -0
  360. data/spec/fixtures/vcr_cassettes/apply_firewall_policy.yml +137 -0
  361. data/spec/fixtures/vcr_cassettes/create_firewall_policy.yml +104 -0
  362. data/spec/fixtures/vcr_cassettes/destroy_firewall_policy.yml +137 -0
  363. data/spec/fixtures/vcr_cassettes/firewall_rule.yml +36 -0
  364. data/spec/fixtures/vcr_cassettes/firewall_rule_create.yml +36 -0
  365. data/spec/fixtures/vcr_cassettes/firewall_rule_destroy.yml +69 -0
  366. data/spec/fixtures/vcr_cassettes/firewall_rule_list.yml +36 -0
  367. data/spec/fixtures/vcr_cassettes/firewall_rule_show.yml +36 -0
  368. data/spec/fixtures/vcr_cassettes/list_cloud_ip.yml +36 -0
  369. data/spec/fixtures/vcr_cassettes/list_firewall_policy.yml +36 -0
  370. data/spec/fixtures/vcr_cassettes/list_server_groups.yml +36 -0
  371. data/spec/fixtures/vcr_cassettes/server_destroy.yml +71 -0
  372. data/spec/fixtures/vcr_cassettes/server_show.yml +141 -0
  373. data/spec/fixtures/vcr_cassettes/server_shutdown.yml +104 -0
  374. data/spec/fixtures/vcr_cassettes/server_start.yml +137 -0
  375. data/spec/fixtures/vcr_cassettes/server_stop.yml +104 -0
  376. data/spec/fixtures/vcr_cassettes/show_firewall_policy.yml +36 -0
  377. data/spec/server_group_spec.rb +15 -0
  378. data/spec/servers_spec.rb +75 -0
  379. data/spec/spec_helper.rb +0 -3
  380. data/tools/bash_completion_script +269 -122
  381. metadata +224 -41
@@ -103,12 +103,17 @@ module Fog
103
103
 
104
104
  def self.data
105
105
  @data ||= Hash.new do |hash, region|
106
- owner_id = Fog::AWS::Mock.owner_id
107
106
  hash[region] = Hash.new do |region_hash, key|
107
+ owner_id = Fog::AWS::Mock.owner_id
108
108
  region_hash[key] = {
109
109
  :deleted_at => {},
110
110
  :addresses => {},
111
111
  :images => {},
112
+ :image_launch_permissions => Hash.new do |permissions_hash, image_key|
113
+ permissions_hash[image_key] = {
114
+ :users => []
115
+ }
116
+ end,
112
117
  :instances => {},
113
118
  :reserved_instances => {},
114
119
  :key_pairs => {},
@@ -116,9 +121,10 @@ module Fog
116
121
  :owner_id => owner_id,
117
122
  :security_groups => {
118
123
  'default' => {
119
- 'groupDescription' => 'default group',
120
- 'groupName' => 'default',
121
- 'ipPermissions' => [
124
+ 'groupDescription' => 'default group',
125
+ 'groupName' => 'default',
126
+ 'ipPermissionsEgress' => [],
127
+ 'ipPermissions' => [
122
128
  {
123
129
  'groups' => [{'groupName' => 'default', 'userId' => owner_id}],
124
130
  'fromPort' => -1,
@@ -141,12 +147,15 @@ module Fog
141
147
  'ipRanges' => []
142
148
  }
143
149
  ],
144
- 'ownerId' => owner_id
150
+ 'ownerId' => owner_id
145
151
  }
146
152
  },
147
153
  :snapshots => {},
148
154
  :volumes => {},
149
- :tags => {}
155
+ :tags => {},
156
+ :tag_sets => Hash.new do |tag_set_hash, resource_id|
157
+ tag_set_hash[resource_id] = {}
158
+ end
150
159
  }
151
160
  end
152
161
  end
@@ -166,36 +175,58 @@ module Fog
166
175
  end
167
176
  end
168
177
 
178
+ def region_data
179
+ self.class.data[@region]
180
+ end
181
+
169
182
  def data
170
- self.class.data[@region][@aws_access_key_id]
183
+ self.region_data[@aws_access_key_id]
171
184
  end
172
185
 
173
186
  def reset_data
174
- self.class.data[@region].delete(@aws_access_key_id)
187
+ self.region_data.delete(@aws_access_key_id)
188
+ end
189
+
190
+ def visible_images
191
+ images = self.data[:images].values.inject({}) do |h, image|
192
+ h.update(image['imageId'] => image)
193
+ end
194
+
195
+ self.region_data.each do |aws_access_key_id, data|
196
+ data[:image_launch_permissions].each do |image_id, list|
197
+ if list[:users].include?(self.data[:owner_id])
198
+ images.update(image_id => data[:images][image_id])
199
+ end
200
+ end
201
+ end
202
+
203
+ images
175
204
  end
176
205
 
177
- def apply_tag_filters(resources, filters)
206
+ def apply_tag_filters(resources, filters, resource_id_key)
207
+ tag_set_fetcher = lambda {|resource| self.data[:tag_sets][resource[resource_id_key]] }
208
+
178
209
  # tag-key: match resources tagged with this key (any value)
179
210
  if filters.has_key?('tag-key')
180
211
  value = filters.delete('tag-key')
181
- resources = resources.select{|r| r['tagSet'].has_key?(value)}
212
+ resources = resources.select{|r| tag_set_fetcher[r].has_key?(value)}
182
213
  end
183
-
214
+
184
215
  # tag-value: match resources tagged with this value (any key)
185
216
  if filters.has_key?('tag-value')
186
217
  value = filters.delete('tag-value')
187
- resources = resources.select{|r| r['tagSet'].values.include?(value)}
218
+ resources = resources.select{|r| tag_set_fetcher[r].values.include?(value)}
188
219
  end
189
-
190
- # tag:key: match resources taged with a key-value pair. Value may be an array, which is OR'd.
220
+
221
+ # tag:key: match resources tagged with a key-value pair. Value may be an array, which is OR'd.
191
222
  tag_filters = {}
192
- filters.keys.each do |key|
223
+ filters.keys.each do |key|
193
224
  tag_filters[key.gsub('tag:', '')] = filters.delete(key) if /^tag:/ =~ key
194
225
  end
195
226
  for tag_key, tag_value in tag_filters
196
- resources = resources.select{|r| tag_value.include?(r['tagSet'][tag_key])}
227
+ resources = resources.select{|r| tag_value.include?(tag_set_fetcher[r][tag_key])}
197
228
  end
198
-
229
+
199
230
  resources
200
231
  end
201
232
  end
@@ -205,7 +236,7 @@ module Fog
205
236
  # Initialize connection to EC2
206
237
  #
207
238
  # ==== Notes
208
- # options parameter must include values for :aws_access_key_id and
239
+ # options parameter must include values for :aws_access_key_id and
209
240
  # :aws_secret_access_key in order to create a connection
210
241
  #
211
242
  # ==== Examples
@@ -264,7 +295,7 @@ module Fog
264
295
  end
265
296
 
266
297
  private
267
-
298
+
268
299
  def request(params)
269
300
  idempotent = params.delete(:idempotent)
270
301
  parser = params.delete(:parser)
@@ -0,0 +1,127 @@
1
+ module Fog
2
+ module AWS
3
+ class Elasticache < Fog::Service
4
+
5
+ class IdentifierTaken < Fog::Errors::Error; end
6
+ class InvalidInstance < Fog::Errors::Error; end
7
+
8
+ requires :aws_access_key_id, :aws_secret_access_key
9
+ recognizes :region, :host, :path, :port, :scheme, :persistent
10
+
11
+ request_path 'fog/aws/requests/elasticache'
12
+
13
+ request :create_cache_cluster
14
+ request :delete_cache_cluster
15
+ request :describe_cache_clusters
16
+ request :modify_cache_cluster
17
+ request :reboot_cache_cluster
18
+
19
+ request :create_cache_parameter_group
20
+ request :delete_cache_parameter_group
21
+ request :describe_cache_parameter_groups
22
+ request :modify_cache_parameter_group
23
+ request :reset_cache_parameter_group
24
+ request :describe_engine_default_parameters
25
+ request :describe_cache_parameters
26
+
27
+ request :create_cache_security_group
28
+ request :delete_cache_security_group
29
+ request :describe_cache_security_groups
30
+ request :authorize_cache_security_group_ingress
31
+ request :revoke_cache_security_group_ingress
32
+
33
+ request :describe_events
34
+
35
+ model_path 'fog/aws/models/elasticache'
36
+ model :cluster
37
+ collection :clusters
38
+ model :security_group
39
+ collection :security_groups
40
+ model :parameter_group
41
+ collection :parameter_groups
42
+
43
+ class Mock
44
+ def initalize(options={})
45
+ Fog::Mock.not_implemented
46
+ end
47
+ end
48
+
49
+ class Real
50
+
51
+ def initialize(options={})
52
+ @aws_access_key_id = options[:aws_access_key_id]
53
+ @aws_secret_access_key = options[:aws_secret_access_key]
54
+ @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
55
+
56
+ options[:region] ||= 'us-east-1'
57
+ @host = options[:host] || case options[:region]
58
+ when 'us-east-1'
59
+ 'elasticache.us-east-1.amazonaws.com'
60
+ #TODO: Support other regions
61
+ else
62
+ raise ArgumentError, "Unknown region: #{options[:region].inspect}"
63
+ end
64
+ @path = options[:path] || '/'
65
+ @port = options[:port] || 443
66
+ @scheme = options[:scheme] || 'https'
67
+ @connection = Fog::Connection.new(
68
+ "#{@scheme}://#{@host}:#{@port}#{@path}", options[:persistent]
69
+ )
70
+ end
71
+
72
+ def reload
73
+ @connection.reset
74
+ end
75
+
76
+ private
77
+ def request(params)
78
+ idempotent = params.delete(:idempotent)
79
+ parser = params.delete(:parser)
80
+
81
+ body = Fog::AWS.signed_params(
82
+ params,
83
+ {
84
+ :aws_access_key_id => @aws_access_key_id,
85
+ :hmac => @hmac,
86
+ :host => @host,
87
+ :path => @path,
88
+ :port => @port,
89
+ :version => '2011-07-15'
90
+ }
91
+ )
92
+
93
+ begin
94
+ response = @connection.request({
95
+ :body => body,
96
+ :expects => 200,
97
+ :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
98
+ :idempotent => idempotent,
99
+ :host => @host,
100
+ :method => 'POST',
101
+ :parser => parser
102
+ })
103
+ rescue Excon::Errors::HTTPStatusError => error
104
+ if match = error.message.match(/<Code>(.*)<\/Code>/m)
105
+ case match[1]
106
+ when 'CacheSecurityGroupNotFound', 'CacheParameterGroupNotFound',
107
+ 'CacheClusterNotFound'
108
+ raise Fog::AWS::Elasticache::NotFound
109
+ when 'CacheSecurityGroupAlreadyExists'
110
+ raise Fog::AWS::Elasticache::IdentifierTaken
111
+ when 'InvalidParameterValue'
112
+ raise Fog::AWS::Elasticache::InvalidInstance
113
+ else
114
+ raise
115
+ end
116
+ else
117
+ raise
118
+ end
119
+ end
120
+
121
+ response
122
+ end
123
+
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,12 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class CloudWatch
6
+
7
+ class Alarm < Fog::Model
8
+ attribute :alarm_names, :aliases => 'AlarmNames'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,39 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/models/cloud_watch/alarm_datum'
3
+
4
+ module Fog
5
+ module AWS
6
+ class CloudWatch
7
+ class AlarmData < Fog::Collection
8
+ model Fog::AWS::CloudWatch::AlarmDatum
9
+
10
+ def all(conditions={})
11
+ data = connection.describe_alarms(conditions).body['DescribeAlarmsResult']['MetricAlarms']
12
+ load(data) # data is an array of attribute hashes
13
+ end
14
+
15
+ def get(namespace, metric_name, dimensions=nil, period=nil, statistic=nil, unit=nil)
16
+ list_opts = {'Namespace' => namespace, 'MetricName' => metric_name}
17
+ if dimensions
18
+ dimensions_array = dimensions.collect do |name, value|
19
+ {'Name' => name, 'Value' => value}
20
+ end
21
+ list_opts.merge!('Dimensions' => dimensions_array)
22
+ end
23
+ if period
24
+ list_opts.merge!('Period' => period)
25
+ end
26
+ if statistic
27
+ list_opts.merge!('Statistic' => statistic)
28
+ end
29
+ if unit
30
+ list_opts.merge!('Unit' => unit)
31
+ end
32
+ data = connection.describe_alarms_for_metric(list_opts).body['DescribeAlarmsForMetricResult']['MetricAlarms']
33
+ load(data)
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,66 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class CloudWatch
6
+
7
+ class AlarmDatum < Fog::Model
8
+ attribute :alarm_name, :aliases => 'AlarmName'
9
+ attribute :metric_name, :aliases => 'MetricName'
10
+ attribute :namespace, :aliases => 'Namespace'
11
+ attribute :dimensions, :aliases => 'Dimensions'
12
+ attribute :alarm_description, :aliases => 'AlarmDescription'
13
+ attribute :alarm_arn, :aliases => 'AlarmArn'
14
+ attribute :state_value, :aliases => 'StateValue'
15
+ attribute :statistic, :aliases => 'Statistic'
16
+ attribute :comparison_operator, :aliases => 'ComparisonOperator'
17
+ attribute :state_reason, :aliases => 'StateReason'
18
+ attribute :action_enabled, :aliases => 'ActionsEnabled'
19
+ attribute :period, :aliases => 'Period'
20
+ attribute :evaluation_periods, :aliases => 'EvaluationPeriods'
21
+ attribute :threshold, :aliases => 'Threshold'
22
+ attribute :alarm_actions, :aliases => 'AlarmActions'
23
+ attribute :ok_actions, :aliases => 'OKActions'
24
+ attribute :insufficient_actions, :aliases => 'InsufficientDataActions'
25
+ attribute :unit, :aliases => 'Unit'
26
+ attribute :state_updated_timestamp, :aliases => 'StateUpdatedTimestamp'
27
+ attribute :alarm_configuration_updated_timestamp, :aliases => 'AlarmConfigurationUpdatedTimestamp'
28
+
29
+ def save
30
+ requires :alarm_name
31
+ requires :comparison_operator
32
+ requires :evaluation_periods
33
+ requires :metric_name
34
+ requires :namespace
35
+ requires :period
36
+ requires :statistic
37
+ requires :threshold
38
+
39
+ alarm_definition = {
40
+ 'AlarmName' => alarm_name,
41
+ 'ComparisonOperator' => comparison_operator,
42
+ 'EvaluationPeriods' => evaluation_periods,
43
+ 'MetricName' => metric_name,
44
+ 'Namespace' => namespace,
45
+ 'Period' => period,
46
+ 'Statistic' => statistic,
47
+ 'Threshold' => threshold
48
+ }
49
+
50
+ alarm_definition.merge!('ActionsEnabled' => action_enabled) if action_enabled
51
+ alarm_definition.merge!('AlarmActions' => alarm_actions) if alarm_actions
52
+ alarm_definition.merge!('AlarmDescription' => alarm_description) if alarm_description
53
+
54
+ #dimension is an array of Name/Value pairs, ex. [{'Name'=>'host', 'Value'=>'localhost'},{'Name'=>'version', 'Value'=>'0.11.0'}]
55
+ alarm_definition.merge!('Dimensions' => dimensions) if dimensions
56
+ alarm_definition.merge!('InsufficientDataActions' => insufficient_actions) if insufficient_actions
57
+ alarm_definition.merge!('OKActions' => ok_actions) if ok_actions
58
+ alarm_definition.merge!('Unit' => unit) if unit
59
+
60
+ connection.put_metric_alarm(alarm_definition)
61
+ true
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,18 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/models/cloud_watch/alarm_history'
3
+
4
+ module Fog
5
+ module AWS
6
+ class CloudWatch
7
+ class AlarmHistories < Fog::Collection
8
+ model Fog::AWS::CloudWatch::AlarmHistory
9
+
10
+ def all(conditions={})
11
+ data = connection.describe_alarm_history(conditions).body['DescribeAlarmHistoryResult']['AlarmHistoryItems']
12
+ load(data) # data is an array of attribute hashes
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class CloudWatch
6
+
7
+ class AlarmHistory < Fog::Model
8
+ attribute :alarm_name, :aliases => 'AlarmName'
9
+ attribute :end_date, :aliases => 'EndDate'
10
+ attribute :history_item_type, :aliases => 'HistoryItemType'
11
+ attribute :max_records, :aliases => 'MaxRecords'
12
+ attribute :start_date, :aliases => 'StartDate'
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/models/cloud_watch/alarm'
3
+
4
+ module Fog
5
+ module AWS
6
+ class CloudWatch
7
+
8
+ class Alarms < Fog::Collection
9
+ model Fog::AWS::CloudWatch::Alarm
10
+
11
+ #alarm_names is an array of alarm names
12
+ def delete(alarm_names)
13
+ connection.delete_alarms(alarm_names)
14
+ true
15
+ end
16
+
17
+ def disable(alarm_names)
18
+ connection.disable_alarm_actions(alarm_names)
19
+ true
20
+ end
21
+
22
+ def enable(alarm_names)
23
+ connection.enable_alarm_actions(alarm_names)
24
+ true
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -49,7 +49,7 @@ module Fog
49
49
  # user_data=nil
50
50
  # >
51
51
  #
52
-
52
+
53
53
  def initialize(attributes)
54
54
  self.filters ||= {}
55
55
  super
@@ -0,0 +1,69 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class Elasticache
6
+
7
+ class Cluster < Fog::Model
8
+ # simple attributes
9
+ identity :id, :aliases => 'CacheClusterId'
10
+ attribute :auto_upgrade, :aliases => 'AutoMinorVersionUpgrade'
11
+ attribute :status, :aliases => 'CacheClusterStatus'
12
+ attribute :node_type, :aliases => 'CacheNodeType'
13
+ attribute :engine, :aliases => 'Engine'
14
+ attribute :engine_version, :aliases => 'EngineVersion'
15
+ attribute :num_nodes, :aliases => 'NumCacheNodes'
16
+ attribute :zone, :aliases => 'PreferredAvailabilityZone'
17
+ attribute :port, :aliases => 'Port'
18
+ attribute :maintenance_window, :aliases => 'PreferredMaintenanceWindow'
19
+ # complex attributes
20
+ attribute :nodes, :aliases => 'CacheNodes', :type => :array
21
+ attribute :parameter_group,
22
+ :aliases => 'CacheParameterGroup', :type => :hash
23
+ attribute :pending_values,
24
+ :aliases => 'PendingModifiedValues', :type => :hash
25
+ attribute :create_time,
26
+ :aliases => 'CacheClusterCreateTime', :type => :date_time
27
+ attribute :security_groups,
28
+ :aliases => 'CacheSecurityGroups', :type => :array
29
+ attribute :notification_config,
30
+ :aliases => 'NotificationConfiguration', :type => :hash
31
+
32
+ def ready?
33
+ status == 'available'
34
+ end
35
+
36
+ def destroy
37
+ requires :id
38
+ connection.delete_cache_cluster(id)
39
+ true
40
+ end
41
+
42
+ def save
43
+ requires :id
44
+
45
+ parameter_group ||= Hash.new
46
+ notification_config ||= Hash.new
47
+
48
+ connection.create_cache_cluster(
49
+ id, {
50
+ :node_type => node_type,
51
+ :security_group_names => security_groups,
52
+ :num_nodes => num_nodes,
53
+ :auto_minor_version_upgrade => auto_upgrade,
54
+ :engine => engine,
55
+ :engine_version => engine_version,
56
+ :notification_topic_arn => notification_config['TopicArn'],
57
+ :port => port,
58
+ :preferred_availablility_zone => zone,
59
+ :preferred_maintenance_window => maintenance_window,
60
+ :parameter_group_name => parameter_group['CacheParameterGroupName'],
61
+ }
62
+ )
63
+ end
64
+
65
+ end
66
+
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,31 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/models/elasticache/cluster'
3
+
4
+ module Fog
5
+ module AWS
6
+ class Elasticache
7
+
8
+ class Clusters < Fog::Collection
9
+ model Fog::AWS::Elasticache::Cluster
10
+
11
+ def all
12
+ load(
13
+ connection.describe_cache_clusters(
14
+ nil, :show_node_info => true
15
+ ).body['CacheClusters']
16
+ )
17
+ end
18
+
19
+ def get(identity, show_node_info = true)
20
+ new(
21
+ connection.describe_cache_clusters(
22
+ identity, :show_node_info => show_node_info
23
+ ).body['CacheClusters'].first
24
+ )
25
+ rescue Fog::AWS::Elasticache::NotFound
26
+ end
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,32 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class Elasticache
6
+
7
+ class ParameterGroup < Fog::Model
8
+
9
+ identity :id, :aliases => 'CacheParameterGroupName'
10
+ attribute :description, :aliases => 'Description'
11
+ attribute :family, :aliases => 'CacheParameterGroupFamily'
12
+
13
+ def destroy
14
+ requires :id
15
+ connection.delete_cache_parameter_group(id)
16
+ true
17
+ end
18
+
19
+ def save
20
+ requires :id
21
+ connection.create_cache_parameter_group(
22
+ id,
23
+ description = id,
24
+ family = 'memcached1.4'
25
+ )
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,30 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/models/elasticache/parameter_group'
3
+
4
+ module Fog
5
+ module AWS
6
+ class Elasticache
7
+
8
+ class ParameterGroups < Fog::Collection
9
+ model Fog::AWS::Elasticache::ParameterGroup
10
+
11
+ def all
12
+ load(
13
+ connection.describe_cache_parameter_groups.body['CacheParameterGroups']
14
+ )
15
+ end
16
+
17
+ def get(identity)
18
+ new(
19
+ connection.describe_cache_parameter_groups(
20
+ identity
21
+ ).body['CacheParameterGroups'].first
22
+ )
23
+ rescue Fog::AWS::Elasticache::NotFound
24
+ nil
25
+ end
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,52 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class Elasticache
6
+
7
+ class SecurityGroup < Fog::Model
8
+
9
+ identity :id, :aliases => 'CacheSecurityGroupName'
10
+ attribute :description, :aliases => 'Description'
11
+ attribute :ec2_groups, :aliases => 'EC2SecurityGroups', :type => :array
12
+ attribute :owner_id, :aliases => 'OwnerId'
13
+
14
+ def ready?
15
+ ec2_groups.all?{|ingress| ingress['Status'] == 'authorized'}
16
+ end
17
+
18
+ def destroy
19
+ requires :id
20
+ connection.delete_cache_security_group(id)
21
+ true
22
+ end
23
+
24
+ def save
25
+ requires :id
26
+ requires :description
27
+ connection.create_cache_security_group(id, description)
28
+ end
29
+
30
+ def authorize_ec2_group(group_name, group_owner_id=owner_id)
31
+ requires :id
32
+ requires :owner_id if group_owner_id.nil?
33
+ data = connection.authorize_cache_security_group_ingress(
34
+ id, group_name, group_owner_id
35
+ )
36
+ merge_attributes(data.body['CacheSecurityGroup'])
37
+ end
38
+
39
+ def revoke_ec2_group(group_name, group_owner_id=owner_id)
40
+ requires :id
41
+ requires :owner_id if group_owner_id.nil?
42
+ data = connection.revoke_cache_security_group_ingress(
43
+ id, group_name, group_owner_id
44
+ )
45
+ merge_attributes(data.body['CacheSecurityGroup'])
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+ end
52
+ end