brightbox-cli 1.1.0 → 1.2.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 (237) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +18 -0
  4. data/Gemfile.lock +18 -19
  5. data/bin/_brightbox-bash-completer +42 -0
  6. data/brightbox-cli.gemspec +5 -5
  7. data/lib/brightbox-cli/accounts.rb +1 -3
  8. data/lib/brightbox-cli/api.rb +27 -8
  9. data/lib/brightbox-cli/cloud_ips.rb +11 -15
  10. data/lib/brightbox-cli/collaborating_account.rb +23 -26
  11. data/lib/brightbox-cli/collaboration.rb +1 -1
  12. data/lib/brightbox-cli/commands/{accounts-accept-invite.rb → accounts/accept-invite.rb} +2 -3
  13. data/lib/brightbox-cli/commands/{accounts-default.rb → accounts/default.rb} +1 -3
  14. data/lib/brightbox-cli/commands/{accounts-list.rb → accounts/list.rb} +1 -1
  15. data/lib/brightbox-cli/commands/{accounts-remove.rb → accounts/remove.rb} +1 -2
  16. data/lib/brightbox-cli/commands/{accounts-reset-ftp-password.rb → accounts/reset-ftp-password.rb} +10 -5
  17. data/lib/brightbox-cli/commands/{accounts-show.rb → accounts/show.rb} +14 -6
  18. data/lib/brightbox-cli/commands/{cloudips-create.rb → cloudips/create.rb} +4 -4
  19. data/lib/brightbox-cli/commands/{cloudips-destroy.rb → cloudips/destroy.rb} +1 -1
  20. data/lib/brightbox-cli/commands/{cloudips-list.rb → cloudips/list.rb} +2 -10
  21. data/lib/brightbox-cli/commands/{cloudips-map.rb → cloudips/map.rb} +2 -8
  22. data/lib/brightbox-cli/commands/{cloudips-show.rb → cloudips/show.rb} +13 -3
  23. data/lib/brightbox-cli/commands/{cloudips-unmap.rb → cloudips/unmap.rb} +1 -1
  24. data/lib/brightbox-cli/commands/{cloudips-update.rb → cloudips/update.rb} +5 -6
  25. data/lib/brightbox-cli/commands/collaborations.rb +3 -9
  26. data/lib/brightbox-cli/commands/{config-client-add.rb → config/client-add.rb} +2 -2
  27. data/lib/brightbox-cli/commands/{config-client-default.rb → config/client-default.rb} +1 -1
  28. data/lib/brightbox-cli/commands/{config-client-list.rb → config/client-list.rb} +3 -3
  29. data/lib/brightbox-cli/commands/{config-client-remove.rb → config/client-remove.rb} +4 -1
  30. data/lib/brightbox-cli/commands/{config-user-add.rb → config/user-add.rb} +1 -1
  31. data/lib/brightbox-cli/commands/{firewall-policies-apply.rb → firewall/policies-apply.rb} +3 -4
  32. data/lib/brightbox-cli/commands/{firewall-policies-create.rb → firewall/policies-create.rb} +3 -4
  33. data/lib/brightbox-cli/commands/{firewall-policies-destroy.rb → firewall/policies-destroy.rb} +2 -3
  34. data/lib/brightbox-cli/commands/{firewall-policies-list.rb → firewall/policies-list.rb} +2 -9
  35. data/lib/brightbox-cli/commands/{firewall-policies-remove.rb → firewall/policies-remove.rb} +2 -3
  36. data/lib/brightbox-cli/commands/{firewall-policies-show.rb → firewall/policies-show.rb} +11 -3
  37. data/lib/brightbox-cli/commands/{firewall-policies-update.rb → firewall/policies-update.rb} +3 -3
  38. data/lib/brightbox-cli/commands/{firewall-rules-create.rb → firewall/rules-create.rb} +4 -4
  39. data/lib/brightbox-cli/commands/{firewall-rules-destroy.rb → firewall/rules-destroy.rb} +2 -4
  40. data/lib/brightbox-cli/commands/{firewall-rules-list.rb → firewall/rules-list.rb} +2 -2
  41. data/lib/brightbox-cli/commands/{firewall-rules-show.rb → firewall/rules-show.rb} +10 -4
  42. data/lib/brightbox-cli/commands/{firewall-rules-update.rb → firewall/rules-update.rb} +3 -3
  43. data/lib/brightbox-cli/commands/{groups-add-server.rb → groups/add-server.rb} +2 -2
  44. data/lib/brightbox-cli/commands/{groups-create.rb → groups/create.rb} +3 -3
  45. data/lib/brightbox-cli/commands/{groups-destroy.rb → groups/destroy.rb} +2 -2
  46. data/lib/brightbox-cli/commands/groups/list.rb +14 -0
  47. data/lib/brightbox-cli/commands/{groups-move_servers.rb → groups/move_servers.rb} +1 -2
  48. data/lib/brightbox-cli/commands/{groups-remove-servers.rb → groups/remove-servers.rb} +1 -1
  49. data/lib/brightbox-cli/commands/{groups-show.rb → groups/show.rb} +1 -1
  50. data/lib/brightbox-cli/commands/{groups-update.rb → groups/update.rb} +5 -10
  51. data/lib/brightbox-cli/commands/{images-destroy.rb → images/destroy.rb} +2 -2
  52. data/lib/brightbox-cli/commands/{images-list.rb → images/list.rb} +2 -10
  53. data/lib/brightbox-cli/commands/{images-register.rb → images/register.rb} +6 -6
  54. data/lib/brightbox-cli/commands/{images-show.rb → images/show.rb} +2 -11
  55. data/lib/brightbox-cli/commands/{images-update.rb → images/update.rb} +8 -8
  56. data/lib/brightbox-cli/commands/{lbs-add-nodes.rb → lbs/add-nodes.rb} +2 -2
  57. data/lib/brightbox-cli/commands/{lbs-create.rb → lbs/create.rb} +16 -10
  58. data/lib/brightbox-cli/commands/{lbs-destroy.rb → lbs/destroy.rb} +1 -1
  59. data/lib/brightbox-cli/commands/{lbs-list.rb → lbs/list.rb} +2 -10
  60. data/lib/brightbox-cli/commands/{lbs-remove-nodes.rb → lbs/remove-nodes.rb} +2 -2
  61. data/lib/brightbox-cli/commands/{lbs-show.rb → lbs/show.rb} +4 -7
  62. data/lib/brightbox-cli/commands/{lbs-update.rb → lbs/update.rb} +16 -10
  63. data/lib/brightbox-cli/commands/{servers-activate-console.rb → servers/activate-console.rb} +3 -3
  64. data/lib/brightbox-cli/commands/{servers-create.rb → servers/create.rb} +4 -4
  65. data/lib/brightbox-cli/commands/{servers-destroy.rb → servers/destroy.rb} +2 -2
  66. data/lib/brightbox-cli/commands/{servers-list.rb → servers/list.rb} +7 -8
  67. data/lib/brightbox-cli/commands/{servers-show.rb → servers/show.rb} +1 -6
  68. data/lib/brightbox-cli/commands/{servers-shutdown.rb → servers/shutdown.rb} +1 -1
  69. data/lib/brightbox-cli/commands/{servers-snapshot.rb → servers/snapshot.rb} +1 -1
  70. data/lib/brightbox-cli/commands/{servers-start.rb → servers/start.rb} +1 -1
  71. data/lib/brightbox-cli/commands/{servers-stop.rb → servers/stop.rb} +1 -1
  72. data/lib/brightbox-cli/commands/{servers-update.rb → servers/update.rb} +2 -2
  73. data/lib/brightbox-cli/commands/sql/instances_create.rb +66 -0
  74. data/lib/brightbox-cli/commands/sql/instances_destroy.rb +28 -0
  75. data/lib/brightbox-cli/commands/sql/instances_list.rb +27 -0
  76. data/lib/brightbox-cli/commands/sql/instances_reset_password.rb +33 -0
  77. data/lib/brightbox-cli/commands/sql/instances_show.rb +26 -0
  78. data/lib/brightbox-cli/commands/sql/instances_snapshot.rb +25 -0
  79. data/lib/brightbox-cli/commands/sql/instances_update.rb +45 -0
  80. data/lib/brightbox-cli/commands/sql/snapshots_destroy.rb +31 -0
  81. data/lib/brightbox-cli/commands/sql/snapshots_list.rb +25 -0
  82. data/lib/brightbox-cli/commands/sql/snapshots_show.rb +26 -0
  83. data/lib/brightbox-cli/commands/sql/snapshots_update.rb +37 -0
  84. data/lib/brightbox-cli/commands/sql/types.rb +53 -0
  85. data/lib/brightbox-cli/commands/types.rb +1 -1
  86. data/lib/brightbox-cli/commands/users/list.rb +17 -0
  87. data/lib/brightbox-cli/commands/{users-show.rb → users/show.rb} +5 -13
  88. data/lib/brightbox-cli/commands/{users-update.rb → users/update.rb} +3 -3
  89. data/lib/brightbox-cli/config.rb +4 -7
  90. data/lib/brightbox-cli/config/accounts.rb +3 -6
  91. data/lib/brightbox-cli/config/api_client.rb +12 -4
  92. data/lib/brightbox-cli/config/authentication_tokens.rb +8 -14
  93. data/lib/brightbox-cli/config/clients.rb +6 -7
  94. data/lib/brightbox-cli/config/section_name_deduplicator.rb +4 -5
  95. data/lib/brightbox-cli/config/sections.rb +7 -10
  96. data/lib/brightbox-cli/config/user_application.rb +15 -7
  97. data/lib/brightbox-cli/connection_manager.rb +1 -2
  98. data/lib/brightbox-cli/database_server.rb +100 -0
  99. data/lib/brightbox-cli/database_snapshot.rb +36 -0
  100. data/lib/brightbox-cli/database_type.rb +44 -0
  101. data/lib/brightbox-cli/detailed_server.rb +8 -7
  102. data/lib/brightbox-cli/error_parser.rb +8 -4
  103. data/lib/brightbox-cli/firewall_rule.rb +5 -5
  104. data/lib/brightbox-cli/firewall_rules.rb +2 -3
  105. data/lib/brightbox-cli/gli_global_hooks.rb +7 -7
  106. data/lib/brightbox-cli/images.rb +13 -14
  107. data/lib/brightbox-cli/legacy/args_adjuster.rb +5 -6
  108. data/lib/brightbox-cli/load_balancers.rb +10 -13
  109. data/lib/brightbox-cli/logging.rb +3 -3
  110. data/lib/brightbox-cli/nilable_hash.rb +1 -1
  111. data/lib/brightbox-cli/ruby_core_ext.rb +1 -2
  112. data/lib/brightbox-cli/server_groups.rb +5 -5
  113. data/lib/brightbox-cli/servers.rb +9 -9
  114. data/lib/brightbox-cli/tables.rb +24 -25
  115. data/lib/brightbox-cli/types.rb +6 -5
  116. data/lib/brightbox-cli/user_collaboration.rb +2 -3
  117. data/lib/brightbox-cli/users.rb +3 -3
  118. data/lib/brightbox-cli/version.rb +1 -1
  119. data/lib/brightbox_cli.rb +10 -2
  120. data/locales/en.yml +205 -0
  121. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_a_collection_of_Accounts.yml +10 -10
  122. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_resources_on_the_same_connection.yml +4 -4
  123. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_a_collection_of_Accounts.yml +8 -8
  124. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_resources_on_the_same_connection.yml +4 -4
  125. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_changes_to_the_config_file.yml +4 -4
  126. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_default_account.yml +4 -4
  127. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_new_client_as_the_default.yml +4 -4
  128. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_is_not_authenticated/does_not_raise_an_error.yml +176 -176
  129. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_may_access_one_account/updates_the_setting.yml +176 -176
  130. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_config_in_use_is_not_the_default/uses_correct_credentials.yml +2 -2
  131. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_a_cached_refresh_token/caches_the_new_tokens.yml +2 -2
  132. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_an_expired_refresh_token/caches_the_new_tokens.yml +4 -4
  133. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/caches_the_new_tokens.yml +2 -2
  134. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/prompts_user_to_retry_command.yml +2 -2
  135. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_an_API_client_with_no_tokens/caches_a_new_access_token.yml +2 -2
  136. data/spec/cassettes/Brightbox_CloudIP/_find_all_/when_a_Cloud_IP_exists/returns_a_suitable.yml +28 -28
  137. data/spec/cassettes/Brightbox_FirewallPolicy/_apply_to/should_apply_firewall_policy.yml +24 -24
  138. data/spec/cassettes/Brightbox_FirewallPolicy/_create/should_create_firewall_policy.yml +24 -24
  139. data/spec/cassettes/Brightbox_FirewallPolicy/_destroy/should_destroy_firewall_policy.yml +28 -28
  140. data/spec/cassettes/Brightbox_FirewallPolicy/_find_all_/when_a_policy_exists/should_list_firewall_policy.yml +24 -24
  141. data/spec/cassettes/Brightbox_FirewallPolicy/_find_or_call/when_a_policy_exists/should_show_firewall_policy.yml +20 -20
  142. data/spec/cassettes/Brightbox_FirewallRule/_create/when_policy_exists/creates_the_rule_successfully.yml +24 -24
  143. data/spec/cassettes/Brightbox_FirewallRule/_destroy/when_rule_exists/destroys_a_rule.yml +20 -20
  144. data/spec/cassettes/Brightbox_FirewallRule/_find/when_rule_exists/can_display_the_result.yml +24 -24
  145. data/spec/cassettes/Brightbox_FirewallRule/_from_policy/when_policy_exists_with_a_rule/lists_all_rules.yml +32 -32
  146. data/spec/cassettes/Brightbox_Server/_destroy/when_server_exists/should_work.yml +20 -20
  147. data/spec/cassettes/Brightbox_Server/_find_all_/when_a_server_exists/should_print_server_list.yml +28 -28
  148. data/spec/cassettes/Brightbox_Server/_show/when_server_exists/shows_detailed_attributes_of_a_server.yml +32 -32
  149. data/spec/cassettes/Brightbox_Server/_shutdown/should_work.yml +32 -32
  150. data/spec/cassettes/Brightbox_Server/_start/should_work.yml +44 -44
  151. data/spec/cassettes/Brightbox_Server/_stop/should_work.yml +32 -32
  152. data/spec/cassettes/Brightbox_Server/_update/when_passing_new_group_membership/should_update_with_group.yml +40 -40
  153. data/spec/cassettes/Brightbox_ServerGroup/_find_all_/when_a_group_exists/list_server_groups.yml +24 -24
  154. data/spec/cassettes/Firewall_policies/update/when_the_policy_does_not_exist/prints_error_to_STDERR.yml +6 -6
  155. data/spec/cassettes/brightbox_accounts/list/_when_access_token_expired_/does_not_report_invalid_token_errors.yml +18 -18
  156. data/spec/cassettes/brightbox_accounts/list/_when_both_tokens_expired_/does_not_report_invalid_token_errors.yml +18 -18
  157. data/spec/cassettes/brightbox_accounts/list/_when_invalid_tokens_/does_not_report_invalid_token_errors.yml +18 -18
  158. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/does_not_report_invalid_token_errors.yml +16 -16
  159. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/reports_they_were_updated.yml +14 -14
  160. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/does_not_report_invalid_token_errors.yml +14 -14
  161. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/reports_unable_to_authenticate.yml +12 -12
  162. data/spec/cassettes/brightbox_accounts/list/does_not_error.yml +6 -6
  163. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_a_server_ID/passes_the_interface_identifier_to_the_API.yml +542 -0
  164. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_another_value/passes_the_identifier_to_the_API.yml +317 -0
  165. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/does_not_error.yml +154 -154
  166. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/sets_up_the_config.yml +154 -154
  167. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_change_the_default_client.yml +154 -154
  168. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_error.yml +154 -154
  169. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +154 -154
  170. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +154 -154
  171. data/spec/cassettes/brightbox_config/user_add/when_NO_config_file_on_disk/sets_up_the_config.yml +10 -10
  172. data/spec/cassettes/brightbox_config/user_add/when_a_default_client_is_already_set/does_not_change_the_default_client.yml +4 -4
  173. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/does_not_error.yml +4 -4
  174. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/sets_up_the_config.yml +4 -4
  175. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/display_an_warning_about_preselected_default.yml +4 -4
  176. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/does_not_error.yml +4 -4
  177. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/selects_the_active_account_for_the_default.yml +4 -4
  178. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/sets_up_the_config.yml +4 -4
  179. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/display_an_warning_about_preselected_default.yml +4 -4
  180. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/does_not_error.yml +4 -4
  181. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/sets_up_the_config.yml +4 -4
  182. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_error.yml +4 -4
  183. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_prompt_to_rerun_the_command.yml +4 -4
  184. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/requests_access_tokens.yml +4 -4
  185. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +4 -4
  186. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +10 -10
  187. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_error.yml +4 -4
  188. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_prompt_to_rerun_the_command.yml +4 -4
  189. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/requests_access_tokens.yml +4 -4
  190. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/sets_up_the_config.yml +6 -6
  191. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/does_not_error.yml +4 -4
  192. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/requests_access_tokens.yml +4 -4
  193. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/sets_up_the_config.yml +4 -4
  194. data/spec/cassettes/brightbox_database-servers/create/--allow-access_10_0_0_0/correctly_sends_API_parameters.yml +93 -0
  195. data/spec/cassettes/brightbox_database-servers/create/--allow-access_srv-12345_grp-12345/correctly_sends_API_parameters.yml +93 -0
  196. data/spec/cassettes/brightbox_database-servers/create/--engine_mysql/correctly_sends_API_parameters.yml +93 -0
  197. data/spec/cassettes/brightbox_database-servers/create/--engine_mysql_--engine-version_5_6/correctly_sends_API_parameters.yml +93 -0
  198. data/spec/cassettes/brightbox_database-servers/create/without_arguments/reports_the_new_admin_password.yml +93 -0
  199. data/spec/cassettes/brightbox_database-servers/create/without_arguments/reports_the_new_admin_username.yml +93 -0
  200. data/spec/cassettes/brightbox_database-servers/snapshot/when_database_server_active/correctly_sends_API_parameters.yml +181 -0
  201. data/spec/cassettes/brightbox_database-servers/snapshot/when_database_server_can_not_be_snapshotted/reports_an_error_to_the_user.yml +91 -0
  202. data/spec/cassettes/brightbox_database-snapshots/list/when_resources_are_available/does_not_output_to_stderr.yml +93 -0
  203. data/spec/cassettes/brightbox_database-snapshots/list/when_resources_are_available/outputs_table_details_to_stdout.yml +93 -0
  204. data/spec/cassettes/brightbox_database-snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +93 -0
  205. data/spec/commands/accounts/list_spec.rb +1 -1
  206. data/spec/commands/cloudips/map_spec.rb +23 -4
  207. data/spec/commands/config/user_add_spec.rb +1 -1
  208. data/spec/commands/sql/instances/create_spec.rb +69 -0
  209. data/spec/commands/sql/instances/snapshot_spec.rb +36 -0
  210. data/spec/commands/sql/snapshots/list_spec.rb +29 -0
  211. data/spec/commands/sql/snapshots/show_spec.rb +29 -0
  212. data/spec/commands/sql/types/list_spec.rb +18 -0
  213. data/spec/spec_helper.rb +1 -3
  214. data/spec/support/vcr.rb +1 -1
  215. data/spec/unit/brightbox/api/conn_spec.rb +1 -1
  216. data/spec/unit/brightbox/bb_config/add_section_spec.rb +1 -1
  217. data/spec/unit/brightbox/bb_config/renew_tokens_spec.rb +1 -1
  218. data/spec/unit/brightbox/database_server_spec.rb +9 -0
  219. data/spec/unit/brightbox/database_snapshot_spec.rb +9 -0
  220. data/spec/unit/brightbox/database_type_spec.rb +9 -0
  221. data/spec/unit/brightbox/firewall_policy/create_spec.rb +1 -1
  222. data/spec/unit/brightbox/firewall_policy/destroy_spec.rb +1 -1
  223. data/spec/unit/brightbox/firewall_rule/create_spec.rb +1 -1
  224. data/spec/unit/brightbox/firewall_rule/destroy_spec.rb +1 -1
  225. data/spec/unit/brightbox/firewall_rule/find_spec.rb +1 -1
  226. data/spec/unit/brightbox/firewall_rule/from_policy_spec.rb +1 -1
  227. data/spec/unit/brightbox/server/destroy_spec.rb +1 -1
  228. data/spec/unit/brightbox/server/find_or_call_spec.rb +1 -1
  229. data/spec/unit/brightbox/server/shutdown_spec.rb +1 -1
  230. data/spec/unit/brightbox/server/start_spec.rb +1 -1
  231. data/spec/unit/brightbox/server/stop_spec.rb +1 -1
  232. data/spec/unit/brightbox/server/update_spec.rb +1 -1
  233. data/spec/unit/brightbox/server_group/find_spec.rb +1 -1
  234. data/spec/unit/brightbox/user_collaboration/get_for_account_spec.rb +3 -3
  235. metadata +160 -115
  236. data/lib/brightbox-cli/commands/groups-list.rb +0 -21
  237. data/lib/brightbox-cli/commands/users-list.rb +0 -25
@@ -0,0 +1,93 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://api.brightbox.dev/1.0/database_snapshots/dbi-12345?account_id=acc-12345
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - fog/1.19.0
12
+ Authorization:
13
+ - OAuth f83da712e6299cda953513ec07f7a754f747d727
14
+ Content-Type:
15
+ - application/json
16
+ response:
17
+ status:
18
+ code: 200
19
+ message:
20
+ headers:
21
+ Content-Type:
22
+ - application/json; charset=utf-8
23
+ X-Ua-Compatible:
24
+ - IE=Edge
25
+ Etag:
26
+ - "\"fac2ed3edb567b9281616c1bdc334a1a\""
27
+ Cache-Control:
28
+ - max-age=0, private, must-revalidate
29
+ X-Request-Id:
30
+ - 5514a55df99fee2c5f631f7ff8acfe3d
31
+ X-Runtime:
32
+ - '0.205251'
33
+ Server:
34
+ - WEBrick/1.3.1 (Ruby/1.9.3/2013-11-22)
35
+ Date:
36
+ - Fri, 17 Jan 2014 10:45:59 GMT
37
+ Content-Length:
38
+ - '449'
39
+ Connection:
40
+ - Keep-Alive
41
+ body:
42
+ encoding: UTF-8
43
+ string: "{\"id\":\"dbi-12345\",\"resource_type\":\"database_snapshot\",\"url\":\"https://api.gb1.brightbox.com/1.0/database_snapshots/dbi-12345\",\"name\":\"\",\"description\":\"\",\"status\":\"active\",\"database_version\":\"5.5\",\"size\":0,\"created_at\":\"2014-01-17T10:23:00Z\",\"updated_at\":\"2014-01-17T10:23:00Z\",\"deleted_at\":null,\"account\":{\"id\":\"acc-12345\",\"resource_type\":\"account\",\"url\":\"https://api.gb1.brightbox.com/1.0/accounts/acc-12345\",\"name\":\"VCR
44
+ account\",\"status\":\"active\"}}"
45
+ http_version:
46
+ recorded_at: Fri, 17 Jan 2014 10:45:59 GMT
47
+ - request:
48
+ method: post
49
+ uri: http://api.brightbox.dev/token
50
+ body:
51
+ encoding: UTF-8
52
+ string: "{\"grant_type\":\"none\",\"client_id\":\"app-12345\"}"
53
+ headers:
54
+ User-Agent:
55
+ - fog/1.20.0
56
+ Authorization:
57
+ - Basic YXBwLTEyMzQ1Om1vY2J1aXBiaWFhNms2Yw==
58
+ Content-Type:
59
+ - application/json
60
+ response:
61
+ status:
62
+ code: 400
63
+ message:
64
+ headers:
65
+ X-Frame-Options:
66
+ - sameorigin
67
+ X-Xss-Protection:
68
+ - 1; mode=block
69
+ Content-Type:
70
+ - application/json;charset=utf-8
71
+ Cache-Control:
72
+ - no-store
73
+ Content-Length:
74
+ - '135'
75
+ X-Ua-Compatible:
76
+ - IE=Edge
77
+ X-Request-Id:
78
+ - 3223730ff4c4c65e052fc92b95171647
79
+ X-Runtime:
80
+ - '0.102349'
81
+ Server:
82
+ - WEBrick/1.3.1 (Ruby/1.9.3/2013-11-22)
83
+ Date:
84
+ - Tue, 18 Feb 2014 17:30:27 GMT
85
+ Connection:
86
+ - close
87
+ body:
88
+ encoding: UTF-8
89
+ string: "{\"error\":\"unauthorized_client\",\"error_description\":\"The authenticated
90
+ client is not authorized to use the access grant type provided.\"}"
91
+ http_version:
92
+ recorded_at: Tue, 18 Feb 2014 17:30:27 GMT
93
+ recorded_with: VCR 2.5.0
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe "brightbox accounts" do
4
4
 
5
- describe "list", :broken_1_8 do
5
+ describe "list" do
6
6
  let(:output) { FauxIO.new { Brightbox::run(argv) } }
7
7
  let(:stdout) { output.stdout }
8
8
  let(:stderr) { output.stderr }
@@ -7,11 +7,30 @@ describe "brightbox cloudips" do
7
7
  let(:stdout) { output.stdout }
8
8
  let(:stderr) { output.stderr }
9
9
 
10
- context "" do
11
- let(:argv) { ["cloudips", "map"] }
10
+ before do
11
+ config = config_from_contents(USER_APP_CONFIG_CONTENTS)
12
12
 
13
- it "does not error" do
14
- expect { output }.to_not raise_error
13
+ # Setup in the VCR recordings
14
+ cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
15
+ end
16
+
17
+ context "when destination is a server ID", :vcr do
18
+ let(:argv) { %w{cloudips map cip-12345 srv-12345} }
19
+ let(:target) { "int-12345" }
20
+
21
+ it "passes the interface identifier to the API" do
22
+ expect_any_instance_of(Brightbox::CloudIP).to receive(:map).with(target).and_call_original
23
+ expect(stdout).to include("mapped")
24
+ end
25
+ end
26
+
27
+ context "when destination is another value", :vcr do
28
+ let(:target) { "res-12345" }
29
+ let(:argv) { %w{cloudips map cip-12345 res-12345} }
30
+
31
+ it "passes the identifier to the API" do
32
+ expect_any_instance_of(Brightbox::CloudIP).to receive(:map).with(target)
33
+ expect(stderr).to include(target)
15
34
  end
16
35
  end
17
36
  end
@@ -6,7 +6,7 @@ require "spec_helper"
6
6
  #
7
7
  describe "brightbox config" do
8
8
 
9
- describe "user_add", :broken_1_8 do
9
+ describe "user_add" do
10
10
  let(:output) { FauxIO.new { Brightbox::run(argv) } }
11
11
  let(:stdout) { output.stdout }
12
12
  let(:stderr) { output.stderr }
@@ -0,0 +1,69 @@
1
+ require "spec_helper"
2
+
3
+ describe "brightbox database-servers" do
4
+ describe "create" do
5
+ let(:output) { FauxIO.new { Brightbox.run(argv) } }
6
+ let(:stdout) { output.stdout }
7
+ let(:stderr) { output.stderr }
8
+
9
+ before do
10
+ config = config_from_contents(USER_APP_CONFIG_CONTENTS)
11
+
12
+ # Setup in the VCR recordings
13
+ cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
14
+ end
15
+
16
+ context "without arguments", :vcr do
17
+ let(:argv) { %w{sql instances create } }
18
+ let(:expected_password) { "477wwwj48yifrnuk" }
19
+
20
+ it "reports the new admin username" do
21
+ expect(stdout).to include("admin_username: admin")
22
+ end
23
+
24
+ it "reports the new admin password" do
25
+ expect(stdout).to include("admin_password: #{expected_password}")
26
+ end
27
+ end
28
+
29
+ context "--allow-access=10.0.0.0", :vcr do
30
+ let(:argv) { %w{sql instances create --allow-access=10.0.0.0} }
31
+ let(:expected_args) { { :allow_access => ["10.0.0.0"] } }
32
+
33
+ it "correctly sends API parameters" do
34
+ expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
35
+ expect(stderr).to eql("")
36
+ end
37
+ end
38
+
39
+ context "--allow-access=srv-12345,grp-12345", :vcr do
40
+ let(:argv) { %w{sql instances create --allow-access srv-12345,grp-12345} }
41
+ let(:expected_args) { { :allow_access => %w{srv-12345 grp-12345} } }
42
+
43
+ it "correctly sends API parameters" do
44
+ expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
45
+ expect(stderr).to eql("")
46
+ end
47
+ end
48
+
49
+ context "--engine=mysql", :vcr do
50
+ let(:argv) { %w(sql instances create --engine=mysql) }
51
+ let(:expected_args) { { :database_engine => "mysql" } }
52
+
53
+ it "correctly sends API parameters" do
54
+ expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
55
+ expect(stderr).to eql("")
56
+ end
57
+ end
58
+
59
+ context "--engine=mysql --engine-version=5.6", :vcr do
60
+ let(:argv) { %w(sql instances create --engine=mysql --engine-version=5.6) }
61
+ let(:expected_args) { { :database_engine => "mysql", :database_version => "5.6" } }
62
+
63
+ it "correctly sends API parameters" do
64
+ expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
65
+ expect(stderr).to eql("")
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,36 @@
1
+ require "spec_helper"
2
+
3
+ describe "brightbox database-servers" do
4
+ describe "snapshot" do
5
+ let(:output) { FauxIO.new { Brightbox.run(argv) } }
6
+ let(:stdout) { output.stdout }
7
+ let(:stderr) { output.stderr }
8
+
9
+ before do
10
+ config = config_from_contents(USER_APP_CONFIG_CONTENTS)
11
+
12
+ # Setup in the VCR recordings
13
+ cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
14
+ end
15
+
16
+ context "when database server active", :vcr do
17
+ let(:argv) { %w{sql instances snapshot dbs-12345} }
18
+ let(:expected_args) { { :allow_access => ["10.0.0.0"] } }
19
+
20
+ it "correctly sends API parameters" do
21
+ expect_any_instance_of(Brightbox::DatabaseServer).to receive(:snapshot).and_call_original
22
+ expect(stderr).to include("Creating snapshot for dbs-12345")
23
+ end
24
+ end
25
+
26
+ context "when database server can not be snapshotted", :vcr do
27
+ let(:argv) { %w{sql instances snapshot dbs-12345} }
28
+
29
+ it "reports an error to the user" do
30
+ expect_any_instance_of(Brightbox::DatabaseServer).to receive(:snapshot).and_call_original
31
+ expect(stderr).to include("Creating snapshot for dbs-12345")
32
+ expect(stderr).to include("ERROR: Unable to action the request due to conflicting states")
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ describe "brightbox database-snapshots" do
4
+ describe "list" do
5
+ let(:output) { FauxIO.new { Brightbox.run(argv) } }
6
+ let(:stdout) { output.stdout }
7
+ let(:stderr) { output.stderr }
8
+
9
+ before do
10
+ config = config_from_contents(USER_APP_CONFIG_CONTENTS)
11
+
12
+ # Setup in the VCR recordings
13
+ cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
14
+ end
15
+
16
+ context "when resources are available", :vcr do
17
+ let(:argv) { %w{sql snapshots list} }
18
+
19
+ it "does not output to stderr" do
20
+ expect(stderr).to be_empty
21
+ end
22
+
23
+ it "outputs table details to stdout" do
24
+ expect(stdout).to_not be_empty
25
+ expect(stdout).to match(/dbi-\d+/)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ describe "brightbox database-snapshots" do
4
+ describe "show" do
5
+ let(:output) { FauxIO.new { Brightbox.run(argv) } }
6
+ let(:stdout) { output.stdout }
7
+ let(:stderr) { output.stderr }
8
+
9
+ before do
10
+ config = config_from_contents(USER_APP_CONFIG_CONTENTS)
11
+
12
+ # Setup in the VCR recordings
13
+ cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
14
+ end
15
+
16
+ context "when resource exists", :vcr do
17
+ let(:argv) { %w{sql snapshots show dbi-12345} }
18
+
19
+ it "does not output to stderr" do
20
+ expect(stderr).to be_empty
21
+ end
22
+
23
+ it "outputs table details to stdout" do
24
+ expect(stdout).to_not be_empty
25
+ expect(stdout).to match(/dbi-12345/)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ describe "brightbox database-types" do
4
+
5
+ describe "list" do
6
+ let(:output) { FauxIO.new { Brightbox.run(argv) } }
7
+ let(:stdout) { output.stdout }
8
+ let(:stderr) { output.stderr }
9
+
10
+ context "" do
11
+ let(:argv) { %w{sql types list} }
12
+
13
+ it "does not error" do
14
+ expect { output }.to_not raise_error
15
+ end
16
+ end
17
+ end
18
+ end
data/spec/spec_helper.rb CHANGED
@@ -29,9 +29,7 @@ RSpec.configure do |config|
29
29
  config.include TokenHelpers
30
30
  config.include PasswordPromptHelpers
31
31
 
32
- if RUBY_VERSION >= "1.8.7"
33
- config.filter_run_excluding :broken_1_8 => true
34
- end
32
+ config.filter_run_excluding :vcr if RUBY_VERSION <= "1.8.7"
35
33
 
36
34
  # For each test, point to the testing endpoint to make it safer and easier to
37
35
  # record from dev endpoints. Devs can DNS api.brightbox.dev to their dev service
data/spec/support/vcr.rb CHANGED
@@ -11,8 +11,8 @@ VCR.configure do |vcr|
11
11
 
12
12
  vcr.configure_rspec_metadata!
13
13
  vcr.default_cassette_options = {
14
- #:record => :new_episodes,
15
14
  :record => :none,
15
+ #:record => :new_episodes,
16
16
  :match_requests_on => [:method, :path, :body],
17
17
  :update_content_length_header => true
18
18
  }
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe Brightbox::Api, ".conn" do
4
4
 
5
- context "when account is not required" do
5
+ context "when account is not required", :vcr do
6
6
  it "returns a 'real' fog compute instance" do
7
7
  expect(Brightbox::Api.conn).to be_instance_of(Fog::Compute::Brightbox::Real)
8
8
  end
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  describe Brightbox::BBConfig do
4
4
 
5
5
  describe "#add_section" do
6
- context "when first and only client", :vcr, :broken_1_8 do
6
+ context "when first and only client", :vcr do
7
7
  let(:config) { Brightbox::BBConfig.new }
8
8
  let(:client_alias) { "dev" }
9
9
  let(:client_id) { "app-12345" }
@@ -11,7 +11,7 @@ describe Brightbox::BBConfig do
11
11
  let(:cli_id) { "cli-12345" }
12
12
  let(:cli_secret) { "qy6xxnvy4o0tgv5" }
13
13
 
14
- describe "#renew_tokens", :broken_1_8 do
14
+ describe "#renew_tokens" do
15
15
  context "when using a user app with no tokens", :vcr do
16
16
  before do
17
17
  contents = <<-EOS
@@ -0,0 +1,9 @@
1
+ require "spec_helper"
2
+
3
+ describe Brightbox::DatabaseServer do
4
+ subject(:database_server) do
5
+ Brightbox::DatabaseServer.new("dbs-12345")
6
+ end
7
+
8
+ it_behaves_like "a wrapped API resource"
9
+ end
@@ -0,0 +1,9 @@
1
+ require "spec_helper"
2
+
3
+ describe Brightbox::DatabaseSnapshot do
4
+ subject(:database_snapshot) do
5
+ Brightbox::DatabaseSnapshot.new("dbi-12345")
6
+ end
7
+
8
+ it_behaves_like "a wrapped API resource"
9
+ end
@@ -0,0 +1,9 @@
1
+ require "spec_helper"
2
+
3
+ describe Brightbox::DatabaseType do
4
+ subject(:database_type) do
5
+ Brightbox::DatabaseType.new("dbt-12345")
6
+ end
7
+
8
+ it_behaves_like "a wrapped API resource"
9
+ end
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe Brightbox::FirewallPolicy do
4
4
 
5
- describe "#create", :vcr, :broken_1_8 do
5
+ describe "#create", :vcr do
6
6
 
7
7
  it "should create firewall policy" do
8
8
  params = { :name => "rspec_tests"}
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe Brightbox::FirewallPolicy do
4
4
 
5
- describe "#destroy", :vcr, :broken_1_8 do
5
+ describe "#destroy", :vcr do
6
6
  it "should destroy firewall policy" do
7
7
  params = { :name => "rspec_tests"}
8
8
  @group = Brightbox::ServerGroup.create(params)