brightbox-cli 0.14.1 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
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