brightbox-cli 3.3.0 → 4.1.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 (419) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +1 -0
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.gitignore +1 -1
  5. data/.rubocop.yml +70 -0
  6. data/CHANGELOG.md +60 -0
  7. data/Gemfile.lock +74 -45
  8. data/Jenkinsfile +12 -32
  9. data/README +23 -32
  10. data/README.rdoc +1 -1
  11. data/brightbox-cli.gemspec +21 -34
  12. data/lib/brightbox-cli/accounts.rb +9 -11
  13. data/lib/brightbox-cli/api.rb +38 -36
  14. data/lib/brightbox-cli/cloud_ips.rb +8 -8
  15. data/lib/brightbox-cli/collaborating_account.rb +5 -5
  16. data/lib/brightbox-cli/collaboration.rb +1 -1
  17. data/lib/brightbox-cli/commands/accounts/{accept-invite.rb → accept_invite.rb} +2 -6
  18. data/lib/brightbox-cli/commands/accounts/default.rb +1 -2
  19. data/lib/brightbox-cli/commands/accounts/list.rb +6 -8
  20. data/lib/brightbox-cli/commands/accounts/remove.rb +2 -6
  21. data/lib/brightbox-cli/commands/accounts/{reset-ftp-password.rb → reset_ftp_password.rb} +6 -9
  22. data/lib/brightbox-cli/commands/accounts/show.rb +10 -13
  23. data/lib/brightbox-cli/commands/cloudips/create.rb +2 -5
  24. data/lib/brightbox-cli/commands/cloudips/destroy.rb +10 -14
  25. data/lib/brightbox-cli/commands/cloudips/list.rb +0 -2
  26. data/lib/brightbox-cli/commands/cloudips/map.rb +10 -13
  27. data/lib/brightbox-cli/commands/cloudips/show.rb +11 -14
  28. data/lib/brightbox-cli/commands/cloudips/unmap.rb +2 -4
  29. data/lib/brightbox-cli/commands/cloudips/update.rb +2 -4
  30. data/lib/brightbox-cli/commands/collaborations.rb +2 -3
  31. data/lib/brightbox-cli/commands/config/{client-add.rb → client_add.rb} +0 -3
  32. data/lib/brightbox-cli/commands/config/client_default.rb +18 -0
  33. data/lib/brightbox-cli/commands/config/{client-list.rb → client_list.rb} +1 -4
  34. data/lib/brightbox-cli/commands/config/{client-remove.rb → client_remove.rb} +0 -3
  35. data/lib/brightbox-cli/commands/config/{user-add.rb → user_add.rb} +1 -4
  36. data/lib/brightbox-cli/commands/firewall/{policies-apply.rb → policies_apply.rb} +2 -2
  37. data/lib/brightbox-cli/commands/firewall/{policies-create.rb → policies_create.rb} +2 -4
  38. data/lib/brightbox-cli/commands/firewall/{policies-destroy.rb → policies_destroy.rb} +0 -3
  39. data/lib/brightbox-cli/commands/firewall/{policies-list.rb → policies_list.rb} +0 -2
  40. data/lib/brightbox-cli/commands/firewall/{policies-remove.rb → policies_remove.rb} +2 -2
  41. data/lib/brightbox-cli/commands/firewall/{policies-show.rb → policies_show.rb} +6 -8
  42. data/lib/brightbox-cli/commands/firewall/{policies-update.rb → policies_update.rb} +2 -4
  43. data/lib/brightbox-cli/commands/firewall/{rules-create.rb → rules_create.rb} +6 -8
  44. data/lib/brightbox-cli/commands/firewall/{rules-destroy.rb → rules_destroy.rb} +0 -2
  45. data/lib/brightbox-cli/commands/firewall/{rules-list.rb → rules_list.rb} +0 -2
  46. data/lib/brightbox-cli/commands/firewall/{rules-show.rb → rules_show.rb} +7 -9
  47. data/lib/brightbox-cli/commands/firewall/{rules-update.rb → rules_update.rb} +7 -8
  48. data/lib/brightbox-cli/commands/groups/{add-server.rb → add_server.rb} +0 -2
  49. data/lib/brightbox-cli/commands/groups/create.rb +2 -3
  50. data/lib/brightbox-cli/commands/groups/destroy.rb +0 -2
  51. data/lib/brightbox-cli/commands/groups/list.rb +0 -1
  52. data/lib/brightbox-cli/commands/groups/move_servers.rb +2 -3
  53. data/lib/brightbox-cli/commands/groups/{remove-servers.rb → remove_servers.rb} +2 -4
  54. data/lib/brightbox-cli/commands/groups/show.rb +0 -2
  55. data/lib/brightbox-cli/commands/groups/update.rb +2 -3
  56. data/lib/brightbox-cli/commands/images/destroy.rb +0 -4
  57. data/lib/brightbox-cli/commands/images/list.rb +3 -5
  58. data/lib/brightbox-cli/commands/images/register.rb +9 -17
  59. data/lib/brightbox-cli/commands/images/show.rb +19 -20
  60. data/lib/brightbox-cli/commands/images/update.rb +12 -8
  61. data/lib/brightbox-cli/commands/lbs/{add-nodes.rb → add_nodes.rb} +0 -3
  62. data/lib/brightbox-cli/commands/lbs/create.rb +5 -7
  63. data/lib/brightbox-cli/commands/lbs/destroy.rb +0 -3
  64. data/lib/brightbox-cli/commands/lbs/list.rb +0 -1
  65. data/lib/brightbox-cli/commands/lbs/{remove-nodes.rb → remove_nodes.rb} +0 -3
  66. data/lib/brightbox-cli/commands/lbs/show.rb +20 -22
  67. data/lib/brightbox-cli/commands/lbs/update.rb +6 -9
  68. data/lib/brightbox-cli/commands/login.rb +13 -12
  69. data/lib/brightbox-cli/commands/servers/{activate-console.rb → activate_console.rb} +2 -5
  70. data/lib/brightbox-cli/commands/servers/create.rb +32 -26
  71. data/lib/brightbox-cli/commands/servers/destroy.rb +0 -3
  72. data/lib/brightbox-cli/commands/servers/list.rb +4 -5
  73. data/lib/brightbox-cli/commands/servers/show.rb +0 -2
  74. data/lib/brightbox-cli/commands/servers/shutdown.rb +0 -3
  75. data/lib/brightbox-cli/commands/servers/snapshot.rb +0 -4
  76. data/lib/brightbox-cli/commands/servers/start.rb +0 -4
  77. data/lib/brightbox-cli/commands/servers/stop.rb +0 -3
  78. data/lib/brightbox-cli/commands/servers/update.rb +5 -5
  79. data/lib/brightbox-cli/commands/sql/instances_create.rb +3 -6
  80. data/lib/brightbox-cli/commands/sql/instances_destroy.rb +0 -2
  81. data/lib/brightbox-cli/commands/sql/instances_list.rb +7 -9
  82. data/lib/brightbox-cli/commands/sql/instances_reset_password.rb +0 -1
  83. data/lib/brightbox-cli/commands/sql/instances_show.rb +0 -3
  84. data/lib/brightbox-cli/commands/sql/instances_snapshot.rb +0 -3
  85. data/lib/brightbox-cli/commands/sql/instances_update.rb +1 -3
  86. data/lib/brightbox-cli/commands/sql/snapshots_destroy.rb +0 -3
  87. data/lib/brightbox-cli/commands/sql/snapshots_list.rb +7 -9
  88. data/lib/brightbox-cli/commands/sql/snapshots_show.rb +12 -15
  89. data/lib/brightbox-cli/commands/sql/snapshots_update.rb +1 -3
  90. data/lib/brightbox-cli/commands/sql/types.rb +8 -15
  91. data/lib/brightbox-cli/commands/token.rb +0 -1
  92. data/lib/brightbox-cli/commands/types.rb +8 -14
  93. data/lib/brightbox-cli/commands/{user-collaborations.rb → user_collaborations.rb} +7 -8
  94. data/lib/brightbox-cli/commands/users/list.rb +0 -2
  95. data/lib/brightbox-cli/commands/users/show.rb +1 -3
  96. data/lib/brightbox-cli/commands/users/update.rb +3 -6
  97. data/lib/brightbox-cli/commands/zones.rb +7 -10
  98. data/lib/brightbox-cli/config/accounts.rb +18 -26
  99. data/lib/brightbox-cli/config/api_client.rb +12 -16
  100. data/lib/brightbox-cli/config/authentication_tokens.rb +39 -42
  101. data/lib/brightbox-cli/config/cache.rb +1 -0
  102. data/lib/brightbox-cli/config/clients.rb +8 -8
  103. data/lib/brightbox-cli/config/gpg_encrypted_passwords.rb +6 -8
  104. data/lib/brightbox-cli/config/password_helper.rb +33 -8
  105. data/lib/brightbox-cli/config/sections.rb +45 -29
  106. data/lib/brightbox-cli/config/two_factor_auth.rb +12 -14
  107. data/lib/brightbox-cli/config/two_factor_helper.rb +5 -7
  108. data/lib/brightbox-cli/config/user_application.rb +18 -18
  109. data/lib/brightbox-cli/config.rb +26 -23
  110. data/lib/brightbox-cli/connection_manager.rb +4 -2
  111. data/lib/brightbox-cli/database_server.rb +28 -29
  112. data/lib/brightbox-cli/database_snapshot.rb +1 -1
  113. data/lib/brightbox-cli/database_type.rb +6 -6
  114. data/lib/brightbox-cli/detailed_server.rb +43 -43
  115. data/lib/brightbox-cli/detailed_server_group.rb +1 -1
  116. data/lib/brightbox-cli/error_parser.rb +9 -9
  117. data/lib/brightbox-cli/firewall_policy.rb +2 -1
  118. data/lib/brightbox-cli/firewall_rule.rb +3 -3
  119. data/lib/brightbox-cli/firewall_rules.rb +3 -3
  120. data/lib/brightbox-cli/gli_global_hooks.rb +25 -27
  121. data/lib/brightbox-cli/images.rb +14 -12
  122. data/lib/brightbox-cli/load_balancers.rb +3 -6
  123. data/lib/brightbox-cli/logging.rb +14 -14
  124. data/lib/brightbox-cli/nilable_hash.rb +1 -1
  125. data/lib/brightbox-cli/ruby_core_ext.rb +3 -3
  126. data/lib/brightbox-cli/server_groups.rb +2 -2
  127. data/lib/brightbox-cli/servers.rb +6 -6
  128. data/lib/brightbox-cli/tables.rb +13 -15
  129. data/lib/brightbox-cli/types.rb +6 -6
  130. data/lib/brightbox-cli/user_collaboration.rb +5 -7
  131. data/lib/brightbox-cli/users.rb +1 -1
  132. data/lib/brightbox-cli/version.rb +1 -1
  133. data/lib/brightbox-cli/zones.rb +1 -1
  134. data/lib/brightbox_cli.rb +33 -33
  135. data/locales/en.yml +2 -0
  136. data/spec/brightbox_spec.rb +0 -1
  137. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_a_collection_of_Accounts.yml +5 -5
  138. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_resources_on_the_same_connection.yml +2 -2
  139. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_a_collection_of_Accounts.yml +4 -4
  140. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_resources_on_the_same_connection.yml +2 -2
  141. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_false/does_not_update_the_config_file.yml +12 -12
  142. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_true/does_not_update_the_config_file.yml +12 -12
  143. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_changes_to_the_config_file.yml +2 -2
  144. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_default_account.yml +2 -2
  145. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_new_client_as_the_default.yml +2 -2
  146. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_is_not_authenticated/does_not_raise_an_error.yml +8 -8
  147. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_may_access_one_account/updates_the_setting.yml +8 -8
  148. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_config_in_use_is_not_the_default/uses_correct_credentials.yml +1 -1
  149. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_a_cached_refresh_token/caches_the_new_tokens.yml +1 -1
  150. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_an_expired_refresh_token/caches_the_new_tokens.yml +2 -2
  151. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/caches_the_new_tokens.yml +1 -1
  152. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/prompts_user_to_retry_command.yml +1 -1
  153. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_an_API_client_with_no_tokens/caches_a_new_access_token.yml +1 -1
  154. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/does_not_alter_the_configuration.yml +6 -6
  155. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_access_token.yml +6 -6
  156. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_refresh_token.yml +6 -6
  157. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/does_not_alter_the_configuration.yml +6 -6
  158. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_access_token.yml +6 -6
  159. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_refresh_token.yml +6 -6
  160. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/does_not_alter_the_configuration.yml +9 -9
  161. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_access_token.yml +9 -9
  162. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_refresh_token.yml +9 -9
  163. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/creates_the_configuration.yml +6 -6
  164. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/refreshed_tokens.yml +6 -6
  165. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/creates_the_configuration.yml +6 -6
  166. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/refreshed_tokens.yml +6 -6
  167. data/spec/cassettes/Brightbox_CloudIP/_find_all_/when_a_Cloud_IP_exists/returns_a_suitable.yml +15 -15
  168. data/spec/cassettes/Brightbox_FirewallPolicy/_apply_to/should_apply_firewall_policy.yml +14 -14
  169. data/spec/cassettes/Brightbox_FirewallPolicy/_create/should_create_firewall_policy.yml +14 -14
  170. data/spec/cassettes/Brightbox_FirewallPolicy/_destroy/should_destroy_firewall_policy.yml +16 -16
  171. data/spec/cassettes/Brightbox_FirewallPolicy/_find_all_/when_a_policy_exists/should_list_firewall_policy.yml +13 -13
  172. data/spec/cassettes/Brightbox_FirewallPolicy/_find_or_call/when_a_policy_exists/should_show_firewall_policy.yml +11 -11
  173. data/spec/cassettes/Brightbox_FirewallRule/_create/when_policy_exists/creates_the_rule_successfully.yml +14 -14
  174. data/spec/cassettes/Brightbox_FirewallRule/_destroy/when_rule_exists/destroys_a_rule.yml +12 -12
  175. data/spec/cassettes/Brightbox_FirewallRule/_find/when_rule_exists/can_display_the_result.yml +14 -14
  176. data/spec/cassettes/Brightbox_FirewallRule/_from_policy/when_policy_exists_with_a_rule/lists_all_rules.yml +19 -19
  177. data/spec/cassettes/Brightbox_Server/_destroy/when_server_exists/should_work.yml +12 -12
  178. data/spec/cassettes/Brightbox_Server/_find_all_/when_a_server_exists/should_print_server_list.yml +15 -15
  179. data/spec/cassettes/Brightbox_Server/_show/when_server_exists/shows_detailed_attributes_of_a_server.yml +18 -18
  180. data/spec/cassettes/Brightbox_Server/_shutdown/should_work.yml +18 -18
  181. data/spec/cassettes/Brightbox_Server/_start/should_work.yml +24 -24
  182. data/spec/cassettes/Brightbox_Server/_stop/should_work.yml +18 -18
  183. data/spec/cassettes/Brightbox_Server/_update/when_passing_new_group_membership/should_update_with_group.yml +22 -22
  184. data/spec/cassettes/Brightbox_ServerGroup/_find_all_/when_a_group_exists/list_server_groups.yml +13 -13
  185. data/spec/cassettes/Firewall_policies/update/when_the_policy_does_not_exist/prints_error_to_STDERR.yml +3 -3
  186. data/spec/cassettes/brightbox_accounts/list/_when_access_token_expired_/does_not_report_invalid_token_errors.yml +30 -30
  187. data/spec/cassettes/brightbox_accounts/list/_when_both_tokens_expired_/does_not_report_invalid_token_errors.yml +9 -9
  188. data/spec/cassettes/brightbox_accounts/list/_when_invalid_tokens_/does_not_report_invalid_token_errors.yml +9 -9
  189. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/does_not_report_invalid_token_errors.yml +27 -27
  190. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/reports_they_were_updated.yml +7 -7
  191. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/does_not_report_invalid_token_errors.yml +7 -7
  192. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/reports_unable_to_authenticate.yml +6 -6
  193. data/spec/cassettes/brightbox_accounts/list/does_not_error.yml +3 -3
  194. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_a_server_ID/passes_the_interface_identifier_to_the_API.yml +12 -12
  195. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_another_value/passes_the_identifier_to_the_API.yml +7 -7
  196. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/does_not_error.yml +7 -7
  197. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/sets_up_the_config.yml +7 -7
  198. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_change_the_default_client.yml +7 -7
  199. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_error.yml +7 -7
  200. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +7 -7
  201. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +7 -7
  202. data/spec/cassettes/brightbox_config/user_add/when_NO_config_file_on_disk/sets_up_the_config.yml +5 -5
  203. data/spec/cassettes/brightbox_config/user_add/when_a_default_client_is_already_set/does_not_change_the_default_client.yml +2 -2
  204. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/does_not_error.yml +2 -2
  205. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/sets_up_the_config.yml +2 -2
  206. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/display_an_warning_about_preselected_default.yml +2 -2
  207. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/does_not_error.yml +2 -2
  208. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/selects_the_active_account_for_the_default.yml +2 -2
  209. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/sets_up_the_config.yml +2 -2
  210. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/display_an_warning_about_preselected_default.yml +2 -2
  211. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/does_not_error.yml +2 -2
  212. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/sets_up_the_config.yml +2 -2
  213. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_error.yml +2 -2
  214. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_prompt_to_rerun_the_command.yml +2 -2
  215. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/requests_access_tokens.yml +2 -2
  216. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +2 -2
  217. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +5 -5
  218. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_error.yml +2 -2
  219. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_prompt_to_rerun_the_command.yml +2 -2
  220. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/requests_access_tokens.yml +2 -2
  221. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/sets_up_the_config.yml +3 -3
  222. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/does_not_error.yml +2 -2
  223. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/requests_access_tokens.yml +2 -2
  224. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/sets_up_the_config.yml +2 -2
  225. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_error.yml +6 -6
  226. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  227. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/prompts_for_the_password.yml +6 -6
  228. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/requests_access_tokens.yml +6 -6
  229. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/sets_up_the_config.yml +6 -6
  230. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_error.yml +6 -6
  231. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  232. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/prompts_for_the_password.yml +6 -6
  233. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/requests_access_tokens.yml +6 -6
  234. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/sets_up_the_config.yml +6 -6
  235. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_error.yml +3 -3
  236. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_prompt_to_rerun_the_command.yml +3 -3
  237. data/spec/cassettes/brightbox_login/when_default_account_is_passed/prompts_for_the_password.yml +3 -3
  238. data/spec/cassettes/brightbox_login/when_default_account_is_passed/requests_access_tokens.yml +3 -3
  239. data/spec/cassettes/brightbox_login/when_default_account_is_passed/sets_up_the_config.yml +3 -3
  240. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_error.yml +6 -6
  241. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_prompt_to_rerun_the_command.yml +6 -6
  242. data/spec/cassettes/brightbox_login/when_no_config_is_present/requests_access_tokens.yml +6 -6
  243. data/spec/cassettes/brightbox_login/when_no_config_is_present/sets_up_the_config.yml +6 -6
  244. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_error.yml +6 -6
  245. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  246. data/spec/cassettes/brightbox_login/when_no_password_is_given/prompts_for_the_password.yml +6 -6
  247. data/spec/cassettes/brightbox_login/when_no_password_is_given/requests_access_tokens.yml +6 -6
  248. data/spec/cassettes/brightbox_login/when_no_password_is_given/sets_up_the_config.yml +6 -6
  249. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_10_0_0_0/correctly_sends_API_parameters.yml +313 -26
  250. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_srv-12345_grp-12345/correctly_sends_API_parameters.yml +1204 -38
  251. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql/correctly_sends_API_parameters.yml +596 -26
  252. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_5_6/correctly_sends_API_parameters.yml +63 -9
  253. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_8_0/correctly_sends_API_parameters.yml +393 -0
  254. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_5_--maintenance_hour_11/correctly_sends_API_parameters.yml +393 -0
  255. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_thursday/correctly_sends_API_parameters.yml +393 -0
  256. data/spec/cassettes/brightbox_sql_instances/create/--snapshot_dbi-12345/includes_schedule_fields_in_response.yml +1466 -0
  257. data/spec/cassettes/brightbox_sql_instances/create/--snapshots-schedule_0_12_4_/includes_schedule_fields_in_response.yml +342 -0
  258. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_password.yml +541 -26
  259. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_username.yml +484 -26
  260. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_active/correctly_sends_API_parameters.yml +4 -4
  261. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_can_not_be_snapshotted/reports_an_error_to_the_user.yml +2 -2
  262. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/does_not_output_to_stderr.yml +2 -2
  263. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/outputs_table_details_to_stdout.yml +2 -2
  264. data/spec/cassettes/brightbox_sql_snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +2 -2
  265. data/spec/commands/accounts/default_spec.rb +1 -2
  266. data/spec/commands/accounts/list_spec.rb +7 -8
  267. data/spec/commands/accounts/reset_ftp_password_spec.rb +1 -2
  268. data/spec/commands/accounts/show_spec.rb +1 -2
  269. data/spec/commands/cloudips/create_spec.rb +1 -2
  270. data/spec/commands/cloudips/destroy_spec.rb +1 -2
  271. data/spec/commands/cloudips/list_spec.rb +1 -2
  272. data/spec/commands/cloudips/map_spec.rb +2 -3
  273. data/spec/commands/cloudips/show_spec.rb +1 -2
  274. data/spec/commands/cloudips/unmap_spec.rb +1 -2
  275. data/spec/commands/cloudips/update_spec.rb +7 -8
  276. data/spec/commands/config/client_add_spec.rb +2 -3
  277. data/spec/commands/config/client_default_spec.rb +1 -2
  278. data/spec/commands/config/client_list_spec.rb +1 -2
  279. data/spec/commands/config/client_remove_spec.rb +1 -2
  280. data/spec/commands/config/user_add_spec.rb +3 -4
  281. data/spec/commands/firewall_policies/update_spec.rb +3 -3
  282. data/spec/commands/groups/add_server_spec.rb +1 -2
  283. data/spec/commands/groups/create_spec.rb +1 -2
  284. data/spec/commands/groups/destroy_spec.rb +1 -2
  285. data/spec/commands/groups/list_spec.rb +1 -2
  286. data/spec/commands/groups/move_servers_spec.rb +1 -2
  287. data/spec/commands/groups/remove_servers_spec.rb +1 -2
  288. data/spec/commands/groups/show_spec.rb +1 -2
  289. data/spec/commands/groups/update_spec.rb +1 -2
  290. data/spec/commands/images/destroy_spec.rb +1 -2
  291. data/spec/commands/images/list_spec.rb +62 -63
  292. data/spec/commands/images/locking_spec.rb +4 -4
  293. data/spec/commands/images/register_spec.rb +89 -3
  294. data/spec/commands/images/show_spec.rb +56 -4
  295. data/spec/commands/images/update_spec.rb +53 -3
  296. data/spec/commands/lbs/add_nodes_spec.rb +1 -2
  297. data/spec/commands/lbs/create_spec.rb +2 -3
  298. data/spec/commands/lbs/destroy_spec.rb +1 -2
  299. data/spec/commands/lbs/list_spec.rb +1 -2
  300. data/spec/commands/lbs/locking_spec.rb +4 -4
  301. data/spec/commands/lbs/remove_nodes_spec.rb +1 -2
  302. data/spec/commands/lbs/show_spec.rb +1 -2
  303. data/spec/commands/lbs/update_spec.rb +3 -4
  304. data/spec/commands/login_spec.rb +134 -30
  305. data/spec/commands/policies/apply_spec.rb +1 -2
  306. data/spec/commands/policies/create_spec.rb +1 -2
  307. data/spec/commands/policies/destroy_spec.rb +1 -2
  308. data/spec/commands/policies/list_spec.rb +1 -2
  309. data/spec/commands/policies/remove_spec.rb +1 -2
  310. data/spec/commands/policies/show_spec.rb +1 -2
  311. data/spec/commands/policies/update_spec.rb +1 -2
  312. data/spec/commands/rules/create_spec.rb +1 -2
  313. data/spec/commands/rules/destroy_spec.rb +1 -2
  314. data/spec/commands/rules/list_spec.rb +1 -2
  315. data/spec/commands/rules/show_spec.rb +1 -2
  316. data/spec/commands/rules/update_spec.rb +1 -2
  317. data/spec/commands/servers/activate_console_spec.rb +1 -2
  318. data/spec/commands/servers/create_spec.rb +112 -10
  319. data/spec/commands/servers/destroy_spec.rb +1 -2
  320. data/spec/commands/servers/list_spec.rb +1 -2
  321. data/spec/commands/servers/locking_spec.rb +4 -4
  322. data/spec/commands/servers/reboot_spec.rb +3 -4
  323. data/spec/commands/servers/reset_spec.rb +3 -4
  324. data/spec/commands/servers/show_spec.rb +1 -2
  325. data/spec/commands/servers/shutdown_spec.rb +1 -2
  326. data/spec/commands/servers/snapshot_spec.rb +1 -2
  327. data/spec/commands/servers/start_spec.rb +1 -2
  328. data/spec/commands/servers/stop_spec.rb +1 -2
  329. data/spec/commands/servers/update_spec.rb +1 -2
  330. data/spec/commands/sql/instances/create_spec.rb +58 -75
  331. data/spec/commands/sql/instances/locking_spec.rb +4 -4
  332. data/spec/commands/sql/instances/show_spec.rb +7 -7
  333. data/spec/commands/sql/instances/snapshot_spec.rb +2 -2
  334. data/spec/commands/sql/instances/update_spec.rb +8 -8
  335. data/spec/commands/sql/snapshots/list_spec.rb +1 -1
  336. data/spec/commands/sql/snapshots/locking_spec.rb +4 -4
  337. data/spec/commands/sql/snapshots/show_spec.rb +1 -1
  338. data/spec/commands/sql/types/list_spec.rb +1 -2
  339. data/spec/commands/types/list_spec.rb +1 -2
  340. data/spec/commands/users/list_spec.rb +1 -2
  341. data/spec/commands/users/show_spec.rb +1 -2
  342. data/spec/commands/users/update_spec.rb +1 -2
  343. data/spec/commands/zones/list_spec.rb +1 -2
  344. data/spec/configs/api_client.ini +1 -1
  345. data/spec/configs/user_app.ini +2 -2
  346. data/spec/spec_helper.rb +16 -3
  347. data/spec/support/authentication_helpers.rb +98 -0
  348. data/spec/support/config_helpers.rb +2 -4
  349. data/spec/support/password_prompt_helpers.rb +22 -1
  350. data/spec/support/server_helper.rb +5 -5
  351. data/spec/support/tmp_config.rb +1 -1
  352. data/spec/support/token_helpers.rb +2 -2
  353. data/spec/support/vcr.rb +3 -22
  354. data/spec/unit/brightbox/api/created_on_spec.rb +2 -2
  355. data/spec/unit/brightbox/api/fog_model_spec.rb +13 -13
  356. data/spec/unit/brightbox/api/klass_name_spec.rb +0 -1
  357. data/spec/unit/brightbox/api/method_missing_spec.rb +64 -0
  358. data/spec/unit/brightbox/api/require_account_spec.rb +0 -1
  359. data/spec/unit/brightbox/api/respond_to_spec.rb +71 -0
  360. data/spec/unit/brightbox/bb_config/access_token_filename_spec.rb +0 -1
  361. data/spec/unit/brightbox/bb_config/account_spec.rb +0 -1
  362. data/spec/unit/brightbox/bb_config/add_login_spec.rb +27 -28
  363. data/spec/unit/brightbox/bb_config/add_section_spec.rb +1 -2
  364. data/spec/unit/brightbox/bb_config/clear_default_client_spec.rb +0 -1
  365. data/spec/unit/brightbox/bb_config/client_id_spec.rb +0 -1
  366. data/spec/unit/brightbox/bb_config/client_name_spec.rb +0 -1
  367. data/spec/unit/brightbox/bb_config/config_directory_exists_spec.rb +0 -1
  368. data/spec/unit/brightbox/bb_config/config_directory_spec.rb +0 -1
  369. data/spec/unit/brightbox/bb_config/config_spec.rb +2 -3
  370. data/spec/unit/brightbox/bb_config/default_account_spec.rb +0 -1
  371. data/spec/unit/brightbox/bb_config/default_client_spec.rb +0 -1
  372. data/spec/unit/brightbox/bb_config/delete_section_spec.rb +0 -1
  373. data/spec/unit/brightbox/bb_config/find_or_set_default_account_spec.rb +4 -4
  374. data/spec/unit/brightbox/bb_config/refresh_token_filename_spec.rb +0 -1
  375. data/spec/unit/brightbox/bb_config/renew_tokens_spec.rb +3 -4
  376. data/spec/unit/brightbox/bb_config/save_default_account_spec.rb +0 -1
  377. data/spec/unit/brightbox/bb_config/save_spec.rb +0 -1
  378. data/spec/unit/brightbox/bb_config/section_names_spec.rb +1 -1
  379. data/spec/unit/brightbox/bb_config/to_fog_spec.rb +2 -2
  380. data/spec/unit/brightbox/collaborating_account/to_row_spec.rb +3 -3
  381. data/spec/unit/brightbox/config/api_client/to_fog_spec.rb +8 -8
  382. data/spec/unit/brightbox/config/api_client/valid_spec.rb +4 -4
  383. data/spec/unit/brightbox/config/discover_two_factor_pin_spec.rb +87 -0
  384. data/spec/unit/brightbox/config/section_name_deduplicator_spec.rb +1 -1
  385. data/spec/unit/brightbox/config/user_application/to_fog_spec.rb +10 -10
  386. data/spec/unit/brightbox/config/user_application/valid_spec.rb +3 -3
  387. data/spec/unit/brightbox/connection_manager/fetch_connection_spec.rb +1 -1
  388. data/spec/unit/brightbox/database_server/clean_arguments_spec.rb +1 -2
  389. data/spec/unit/brightbox/database_server/maintenance_window_spec.rb +0 -1
  390. data/spec/unit/brightbox/error_parser/pretty_print_spec.rb +0 -1
  391. data/spec/unit/brightbox/firewall_policy/apply_to_spec.rb +0 -1
  392. data/spec/unit/brightbox/firewall_policy/create_spec.rb +0 -1
  393. data/spec/unit/brightbox/firewall_policy/find_or_call_spec.rb +0 -1
  394. data/spec/unit/brightbox/firewall_policy/find_spec.rb +0 -1
  395. data/spec/unit/brightbox/firewall_rule/find_spec.rb +9 -9
  396. data/spec/unit/brightbox/firewall_rule/from_policy_spec.rb +4 -4
  397. data/spec/unit/brightbox/legacy/args_adjuster_spec.rb +20 -21
  398. data/spec/unit/brightbox/server/create_spec.rb +1 -2
  399. data/spec/unit/brightbox/server/start_spec.rb +2 -2
  400. data/spec/unit/brightbox/server/update_spec.rb +0 -1
  401. data/spec/unit/brightbox/user_collaboration/remove_spec.rb +0 -1
  402. data/spec/unit/nilable_hash_spec.rb +5 -5
  403. data/spec/unit/ruby_core_ext_spec.rb +3 -4
  404. data/spec/unit/temporary_home_spec.rb +1 -1
  405. data/spec/unit/tmp_config_spec.rb +0 -1
  406. metadata +131 -99
  407. data/bin/brightbox-accounts +0 -13
  408. data/bin/brightbox-cloudips +0 -13
  409. data/bin/brightbox-config +0 -13
  410. data/bin/brightbox-firewall-policies +0 -13
  411. data/bin/brightbox-firewall-rules +0 -13
  412. data/bin/brightbox-groups +0 -13
  413. data/bin/brightbox-images +0 -13
  414. data/bin/brightbox-lbs +0 -13
  415. data/bin/brightbox-servers +0 -13
  416. data/bin/brightbox-types +0 -13
  417. data/bin/brightbox-users +0 -13
  418. data/bin/brightbox-zones +0 -13
  419. data/lib/brightbox-cli/commands/config/client-default.rb +0 -26
@@ -4,12 +4,13 @@ module Brightbox
4
4
 
5
5
  class Api
6
6
  attr_reader :id
7
- class ApiError < StandardError ; end
8
- class NotFound < ApiError ; end
9
- class Conflict < ApiError ; end
10
- class InvalidRecord < ApiError ; end
11
- class Forbidden < ApiError ; end
12
- class InvalidArguments < ApiError ; end
7
+
8
+ class ApiError < StandardError; end
9
+ class NotFound < ApiError; end
10
+ class Conflict < ApiError; end
11
+ class InvalidRecord < ApiError; end
12
+ class Forbidden < ApiError; end
13
+ class InvalidArguments < ApiError; end
13
14
 
14
15
  @@connection_manager = nil
15
16
 
@@ -19,12 +20,8 @@ module Brightbox
19
20
  # @return [Fog::Brightbox::Compute::Real]
20
21
  #
21
22
  def self.conn
22
- if @@connection_manager
23
- @@connection_manager.fetch_connection(require_account?)
24
- else
25
- @@connection_manager = Brightbox::ConnectionManager.new(Brightbox.config.to_fog)
26
- @@connection_manager.fetch_connection(require_account?)
27
- end
23
+ @@connection_manager ||= Brightbox::ConnectionManager.new(Brightbox.config.to_fog)
24
+ @@connection_manager.fetch_connection(require_account?)
28
25
  end
29
26
 
30
27
  # Returns +true+ if instances of this class require account details to be
@@ -43,14 +40,14 @@ module Brightbox
43
40
  name.split("::").last
44
41
  end
45
42
 
46
- def initialize(m = nil)
47
- if m.is_a? String
48
- @id = m
49
- elsif m.respond_to?(:attributes) && m.respond_to?(:id)
50
- @fog_model = m
51
- @id = m.id
43
+ def initialize(model = nil)
44
+ if model.is_a? String
45
+ @id = model
46
+ elsif model.respond_to?(:attributes) && model.respond_to?(:id)
47
+ @fog_model = model
48
+ @id = model.id
52
49
  else
53
- raise InvalidArguments, "Can't initialize #{self.class} with #{m.inspect}"
50
+ raise InvalidArguments, "Can't initialize #{self.class} with #{model.inspect}"
54
51
  end
55
52
  Brightbox.config.cache_id(@id) if Brightbox.config.respond_to?(:cache_id)
56
53
  end
@@ -99,6 +96,7 @@ module Brightbox
99
96
  def self.find(args = :all, options = {})
100
97
  raise InvalidArguments, "find(nil)" if args.nil?
101
98
  raise InvalidArguments, "find([])" if args.respond_to?(:empty?) && args.empty?
99
+
102
100
  options = { :order => :created_at }.merge(options)
103
101
 
104
102
  objects = nil
@@ -113,6 +111,7 @@ module Brightbox
113
111
  objects = args.map do |arg|
114
112
  o = cached_get(arg.to_s)
115
113
  raise NotFound, "Couldn't find '#{arg}'" if o.nil?
114
+
116
115
  o
117
116
  end
118
117
  else
@@ -141,21 +140,23 @@ module Brightbox
141
140
  def self.find_or_call(ids, &_block)
142
141
  objects = []
143
142
  ids.each do |id|
144
- begin
145
- objects << find(id)
146
- rescue Api::NotFound
147
- yield id
148
- end
143
+ objects << find(id)
144
+ rescue Api::NotFound
145
+ yield id
149
146
  end
150
147
  objects
151
148
  end
152
149
 
153
- def method_missing(m, *args)
154
- if fog_model
155
- fog_model.send(m, *args)
156
- else
157
- raise NoMethodError
158
- end
150
+ def method_missing(method_name, *args)
151
+ raise NoMethodError unless fog_model
152
+
153
+ fog_model.send(method_name, *args)
154
+ end
155
+
156
+ def respond_to_missing?(method_name, _)
157
+ return false unless fog_model
158
+
159
+ fog_model.respond_to?(method_name)
159
160
  end
160
161
 
161
162
  def self.cached_get(id)
@@ -169,9 +170,10 @@ module Brightbox
169
170
  end
170
171
  end
171
172
 
172
- def self.find_by_handle(h)
173
- object = find(:all).find { |o| o.handle == h }
174
- raise Api::NotFound, "Invalid #{klass_name} #{h}" if object.nil?
173
+ def self.find_by_handle(handle)
174
+ object = find(:all).find { |obj| obj.handle == handle }
175
+ raise Api::NotFound, "Invalid #{klass_name} #{handle}" if object.nil?
176
+
175
177
  object
176
178
  end
177
179
 
@@ -186,9 +188,9 @@ module Brightbox
186
188
  # Displays creation date in ISO 8601 Complete date format
187
189
  #
188
190
  def created_on
189
- if fog_model.created_at
190
- fog_model.created_at.strftime("%Y-%m-%d")
191
- end
191
+ return unless fog_model.created_at
192
+
193
+ fog_model.created_at.strftime("%Y-%m-%d")
192
194
  end
193
195
  end
194
196
  end
@@ -27,6 +27,7 @@ module Brightbox
27
27
  translators.split(",").map do |t|
28
28
  incoming, outgoing, protocol = t.split(":")
29
29
  raise "translator #{t} is invalid" if incoming.nil? || outgoing.nil? || protocol.nil?
30
+
30
31
  { :incoming => incoming, :outgoing => outgoing, :protocol => protocol }
31
32
  end
32
33
  end
@@ -44,21 +45,20 @@ module Brightbox
44
45
  end
45
46
 
46
47
  def mapped?
47
- status == 'mapped'
48
+ status == "mapped"
48
49
  end
49
50
 
50
51
  def translators(raw_attributes)
51
- if translators = (raw_attributes[:port_translators] || raw_attributes['port_translators'])
52
- translators.map do |t|
53
- [t['incoming'], t['outgoing'], t['protocol']].join(":")
54
- end
55
- else
56
- nil
52
+ translators = (raw_attributes[:port_translators] || raw_attributes["port_translators"])
53
+ return unless translators
54
+
55
+ translators.map do |t|
56
+ [t["incoming"], t["outgoing"], t["protocol"]].join(":")
57
57
  end
58
58
  end
59
59
 
60
60
  def self.default_field_order
61
- [:id, :status, :public_ip, :destination, :reverse_dns, :name]
61
+ %i[id status public_ip destination reverse_dns name]
62
62
  end
63
63
 
64
64
  def <=>(other)
@@ -45,9 +45,10 @@ module Brightbox
45
45
  @id = fog_model.id
46
46
  # Rather than merging, we have store the collaboration as a secondary item
47
47
  @collaboration = collaboration
48
- if @collaboration.nil? && @fog_model.attributes["resource_type"] == "collaboration"
49
- @collaboration = @fog_model
50
- end
48
+
49
+ return unless @collaboration.nil? && @fog_model.attributes["resource_type"] == "collaboration"
50
+
51
+ @collaboration = @fog_model
51
52
  end
52
53
 
53
54
  # Is this record based on an account?
@@ -64,7 +65,6 @@ module Brightbox
64
65
  attributes[:resource_type] || attributes["resource_type"]
65
66
  end
66
67
 
67
- #
68
68
  def id
69
69
  if collaboration?
70
70
  account_id
@@ -133,7 +133,7 @@ module Brightbox
133
133
  end
134
134
 
135
135
  def self.default_field_order
136
- [:id, :cloud_ips_limit, :lb_limit, :ram_limit, :ram_used, :ram_free, :role, :name]
136
+ %i[id cloud_ips_limit lb_limit ram_limit ram_used ram_free role name]
137
137
  end
138
138
 
139
139
  private
@@ -22,7 +22,7 @@ module Brightbox
22
22
  end
23
23
 
24
24
  def self.default_field_order
25
- [:id, :status, :role, :email, :name]
25
+ %i[id status role email name]
26
26
  end
27
27
 
28
28
  def to_s
@@ -1,7 +1,6 @@
1
1
  module Brightbox
2
2
  desc I18n.t("accounts.desc")
3
3
  command [:accounts] do |cmd|
4
-
5
4
  cmd.desc I18n.t("accounts.accept_invite.desc")
6
5
  cmd.arg_name "account_id"
7
6
  cmd.command [:accept_invite] do |c|
@@ -10,12 +9,9 @@ module Brightbox
10
9
 
11
10
  # Find the collaboration for that account
12
11
  collaboration = UserCollaboration.get_for_account(account_id)
13
- if collaboration
14
- collaboration.accept
15
- else
16
- raise "Couldn't find an invite for account #{account_id}"
17
- end
12
+ raise "Couldn't find an invite for account #{account_id}" unless collaboration
18
13
 
14
+ collaboration.accept
19
15
  render_table([collaboration], global_options)
20
16
  end
21
17
  end
@@ -1,14 +1,13 @@
1
1
  module Brightbox
2
2
  command [:accounts] do |cmd|
3
-
4
3
  cmd.desc I18n.t("accounts.default.desc")
5
4
  cmd.arg_name "account-id"
6
5
  cmd.command [:default] do |c|
7
-
8
6
  c.action do |_global_options, _options, args|
9
7
  if args.empty?
10
8
  raise "You must specify the account-id to set as default."
11
9
  end
10
+
12
11
  account_id = args.shift
13
12
  account = Account.find(account_id)
14
13
 
@@ -1,19 +1,17 @@
1
1
  module Brightbox
2
2
  command [:accounts] do |cmd|
3
-
4
3
  cmd.default_command :list
5
4
 
6
5
  cmd.desc I18n.t("accounts.list.desc")
7
6
  cmd.arg_name "[account-id...]"
8
7
  cmd.command [:list] do |c|
9
-
10
8
  c.action do |global_options, _options, _args|
11
- if Brightbox.config.using_application?
12
- # Collaborating Accounts are combined from owned and collaborations
13
- accounts = CollaboratingAccount.all
14
- else
15
- accounts = Account.find(:all)
16
- end
9
+ accounts = if Brightbox.config.using_application?
10
+ # Collaborating Accounts are combined from owned and collaborations
11
+ CollaboratingAccount.all
12
+ else
13
+ Account.find(:all)
14
+ end
17
15
 
18
16
  render_table(accounts, global_options)
19
17
  end
@@ -1,6 +1,5 @@
1
1
  module Brightbox
2
2
  command [:accounts] do |cmd|
3
-
4
3
  cmd.desc I18n.t("accounts.remove.desc")
5
4
  cmd.arg_name "account_id"
6
5
  cmd.command [:remove] do |c|
@@ -9,12 +8,9 @@ module Brightbox
9
8
 
10
9
  # Find the collaboration for that account
11
10
  collaboration = UserCollaboration.get_for_account(account_id)
12
- if collaboration
13
- collaboration.remove
14
- else
15
- raise "Couldn't find an invite for account #{account_id}"
16
- end
11
+ raise "Couldn't find an invite for account #{account_id}" unless collaboration
17
12
 
13
+ collaboration.remove
18
14
  render_table([collaboration], global_options)
19
15
  end
20
16
  end
@@ -1,12 +1,9 @@
1
1
  module Brightbox
2
2
  command [:accounts] do |cmd|
3
-
4
3
  cmd.desc I18n.t("accounts.reset_ftp_password.desc")
5
4
  cmd.arg_name "account-id..."
6
5
  cmd.command [:reset_ftp_password] do |c|
7
-
8
6
  c.action do |global_options, _options, args|
9
-
10
7
  if args.empty?
11
8
  raise "You must specify the accounts to reset ftp passwords for"
12
9
  end
@@ -27,12 +24,12 @@ module Brightbox
27
24
 
28
25
  table_opts = global_options.merge(
29
26
  :vertical => true,
30
- :fields => [
31
- :id,
32
- :name,
33
- :library_ftp_host,
34
- :library_ftp_user,
35
- :library_ftp_password
27
+ :fields => %i[
28
+ id
29
+ name
30
+ library_ftp_host
31
+ library_ftp_user
32
+ library_ftp_password
36
33
  ]
37
34
  )
38
35
 
@@ -1,12 +1,9 @@
1
1
  module Brightbox
2
2
  command [:accounts] do |cmd|
3
-
4
3
  cmd.desc I18n.t("accounts.show.desc")
5
4
  cmd.arg_name "account-id..."
6
5
  cmd.command [:show] do |c|
7
-
8
6
  c.action do |global_options, _options, args|
9
-
10
7
  if args.empty?
11
8
  raise "You must specify the accounts to show"
12
9
  end
@@ -17,16 +14,16 @@ module Brightbox
17
14
 
18
15
  table_opts = global_options.merge(
19
16
  :vertical => true,
20
- :fields => [
21
- :id,
22
- :name,
23
- :cloud_ip_limit,
24
- :ram_limit,
25
- :ram_used,
26
- :lb_limit,
27
- :ram_free,
28
- :library_ftp_host,
29
- :library_ftp_user
17
+ :fields => %i[
18
+ id
19
+ name
20
+ cloud_ip_limit
21
+ ram_limit
22
+ ram_used
23
+ lb_limit
24
+ ram_free
25
+ library_ftp_host
26
+ library_ftp_user
30
27
  ]
31
28
  )
32
29
 
@@ -1,22 +1,19 @@
1
1
  module Brightbox
2
2
  desc I18n.t("cloudips.desc")
3
3
  command [:cloudips] do |cmd|
4
-
5
4
  cmd.desc I18n.t("cloudips.create.desc")
6
5
  cmd.command [:create] do |c|
7
-
8
6
  c.desc "Number of Cloud IPs to create"
9
7
  c.default_value 1
10
8
  c.flag [:i, "count"]
11
9
 
12
10
  c.desc I18n.t("options.name.desc")
13
- c.flag [:n, :name]
11
+ c.flag %i[n name]
14
12
 
15
13
  c.desc I18n.t("cloudips.options.port_translators.desc")
16
- c.flag [:t, :"port-translators"]
14
+ c.flag %i[t port-translators]
17
15
 
18
16
  c.action do |global_options, options, _args|
19
-
20
17
  if options[:i].to_s !~ /^[0-9]+$/
21
18
  raise "count must be a number"
22
19
  end
@@ -1,15 +1,12 @@
1
1
  module Brightbox
2
2
  command [:cloudips] do |cmd|
3
-
4
3
  cmd.desc I18n.t("cloudips.destroy.desc")
5
4
  cmd.arg_name "[cloudip-id...]"
6
5
  cmd.command [:destroy] do |c|
7
-
8
6
  c.desc "Unmap mapped IPs before destroying them"
9
7
  c.switch [:u, "unmap"], :negatable => false
10
8
 
11
9
  c.action do |_global_options, options, args|
12
-
13
10
  if args.empty?
14
11
  raise "You must specify the Cloud IPs you want to destroy"
15
12
  end
@@ -19,20 +16,19 @@ module Brightbox
19
16
  end
20
17
 
21
18
  ips.each do |ip|
22
-
23
19
  if ip.mapped?
24
- if options[:u]
25
- info "Unmapping Cloud IP #{ip}"
26
- ip.unmap
27
- 3.times do
28
- break unless ip.mapped?
29
- sleep 1
30
- ip.reload
31
- end
32
- else
33
- raise "Cannot destroy mapped Cloud IP #{ip}"
20
+ raise "Cannot destroy mapped Cloud IP #{ip}" unless options[:u]
21
+
22
+ info "Unmapping Cloud IP #{ip}"
23
+ ip.unmap
24
+ 3.times do
25
+ break unless ip.mapped?
26
+
27
+ sleep 1
28
+ ip.reload
34
29
  end
35
30
  end
31
+
36
32
  info "Destroying Cloud IP #{ip}"
37
33
  ip.destroy
38
34
  end
@@ -1,12 +1,10 @@
1
1
  module Brightbox
2
2
  command [:cloudips] do |cmd|
3
-
4
3
  cmd.default_command :list
5
4
 
6
5
  cmd.desc I18n.t("cloudips.list.desc")
7
6
  cmd.arg_name "[cloudip-id...]"
8
7
  cmd.command [:list] do |c|
9
-
10
8
  c.action do |global_options, _options, args|
11
9
  ips = CloudIP.find_all_or_warn(args)
12
10
  render_table(ips.sort, global_options)
@@ -1,15 +1,12 @@
1
1
  module Brightbox
2
2
  command [:cloudips] do |cmd|
3
-
4
3
  cmd.desc I18n.t("cloudips.map.desc")
5
4
  cmd.arg_name "cloudip-id destination"
6
5
  cmd.command [:map] do |c|
7
-
8
6
  c.desc "Unmap mapped IPs before remapping them"
9
7
  c.switch [:u, "unmap"], :negatable => false
10
8
 
11
9
  c.action do |global_options, options, args|
12
-
13
10
  if args.size > 2
14
11
  raise "Too many arguments"
15
12
  end
@@ -24,7 +21,7 @@ module Brightbox
24
21
 
25
22
  destination_id = args.last
26
23
  case destination_id
27
- when /^srv\-/
24
+ when /^srv-/
28
25
  server = Server.find destination_id
29
26
  destination_id = server.interfaces.first["id"]
30
27
  info "Mapping #{ip} to interface #{destination_id} on #{server}"
@@ -33,15 +30,14 @@ module Brightbox
33
30
  end
34
31
 
35
32
  if ip.mapped?
36
- if options[:u]
37
- ip.unmap
38
- 3.times do
39
- break unless ip.mapped?
40
- sleep 1
41
- ip.reload
42
- end
43
- else
44
- raise "Refusing to map already mapped IP #{ip}"
33
+ raise "Refusing to map already mapped IP #{ip}" unless options[:u]
34
+
35
+ ip.unmap
36
+ 3.times do
37
+ break unless ip.mapped?
38
+
39
+ sleep 1
40
+ ip.reload
45
41
  end
46
42
  end
47
43
 
@@ -51,6 +47,7 @@ module Brightbox
51
47
  3.times do
52
48
  ip.reload
53
49
  break if ip.mapped?
50
+
54
51
  sleep 1
55
52
  end
56
53
 
@@ -1,12 +1,9 @@
1
1
  module Brightbox
2
2
  command [:cloudips] do |cmd|
3
-
4
3
  cmd.desc I18n.t("cloudips.show.desc")
5
4
  cmd.arg_name "cloudip-id..."
6
5
  cmd.command [:show] do |c|
7
-
8
6
  c.action do |global_options, _options, args|
9
-
10
7
  if args.empty?
11
8
  raise "You must specify the cloud ips you want to show"
12
9
  end
@@ -15,17 +12,17 @@ module Brightbox
15
12
  warn "Couldn't find Cloud IP #{id}"
16
13
  end
17
14
 
18
- fields = [
19
- :id,
20
- :name,
21
- :status,
22
- :public_ipv4,
23
- :public_ipv6,
24
- :fqdn,
25
- :reverse_dns,
26
- :destination,
27
- :interface_id,
28
- :port_translators
15
+ fields = %i[
16
+ id
17
+ name
18
+ status
19
+ public_ipv4
20
+ public_ipv6
21
+ fqdn
22
+ reverse_dns
23
+ destination
24
+ interface_id
25
+ port_translators
29
26
  ]
30
27
 
31
28
  render_table(ips.compact, global_options.merge(:vertical => true, :fields => fields))
@@ -1,12 +1,9 @@
1
1
  module Brightbox
2
2
  command [:cloudips] do |cmd|
3
-
4
3
  cmd.desc I18n.t("cloudips.map.desc")
5
4
  cmd.arg_name "cloudip-id..."
6
5
  cmd.command [:unmap] do |c|
7
-
8
6
  c.action do |global_options, _options, args|
9
-
10
7
  if args.empty?
11
8
  raise "You must specify the Cloud IPs you want to unmap"
12
9
  end
@@ -27,7 +24,8 @@ module Brightbox
27
24
 
28
25
  # Wait up to 3 seconds for unmapping to complete
29
26
  3.times do
30
- break unless ips.find { |ip| ip.mapped? }
27
+ break unless ips.find(&:mapped?)
28
+
31
29
  sleep 1
32
30
  ips.each { |ip| ip.reload if ip.mapped? }
33
31
  end
@@ -1,10 +1,8 @@
1
1
  module Brightbox
2
2
  command [:cloudips] do |cmd|
3
-
4
3
  cmd.desc I18n.t("cloudips.update.desc")
5
4
  cmd.arg_name "cloudip-id"
6
5
  cmd.command [:update] do |c|
7
-
8
6
  c.desc "Set reverse DNS for this Cloud IP"
9
7
  c.flag [:r, "reverse-dns"]
10
8
 
@@ -12,10 +10,10 @@ module Brightbox
12
10
  c.switch ["delete-reverse-dns"], :negatable => false
13
11
 
14
12
  c.desc I18n.t("options.name.desc")
15
- c.flag [:n, :name]
13
+ c.flag %i[n name]
16
14
 
17
15
  c.desc I18n.t("cloudips.options.port_translators.desc")
18
- c.flag [:t, :"port-translators"]
16
+ c.flag %i[t port-translators]
19
17
 
20
18
  c.action do |global_options, options, args|
21
19
  cip_id = args.shift
@@ -1,7 +1,6 @@
1
1
  module Brightbox
2
2
  desc "Lists collaborations scoped to an account"
3
3
  command [:collaborators] do |cmd|
4
-
5
4
  cmd.default_command :list
6
5
 
7
6
  cmd.desc "List an accounts collaborations"
@@ -36,7 +35,7 @@ module Brightbox
36
35
  collaborations = Collaboration.find_or_call(args) do |id|
37
36
  warn "Couldn't find collaboration #{id}"
38
37
  end
39
- collaborations.each { |col| col.resend }
38
+ collaborations.each(&:resend)
40
39
  render_table(collaborations, global_options)
41
40
  end
42
41
  end
@@ -59,7 +58,7 @@ module Brightbox
59
58
  collaborations = Collaboration.find_or_call(args) do |id|
60
59
  warn "Couldn't find collaboration #{id}"
61
60
  end
62
- collaborations.each { |col| col.destroy }
61
+ collaborations.each(&:destroy)
63
62
  render_table(collaborations, global_options)
64
63
  end
65
64
  end
@@ -1,11 +1,9 @@
1
1
  module Brightbox
2
2
  desc I18n.t("config.desc")
3
3
  command [:config] do |cmd|
4
-
5
4
  cmd.desc I18n.t("config.client_add.desc")
6
5
  cmd.arg_name "client-id secret [api_url, auth_url]"
7
6
  cmd.command [:client_add] do |c|
8
-
9
7
  c.desc "client alias (local reference)"
10
8
  c.flag [:a, "alias"]
11
9
 
@@ -13,7 +11,6 @@ module Brightbox
13
11
  c.flag [:t, "auth-url"]
14
12
 
15
13
  c.action do |_global_options, options, args|
16
-
17
14
  info "Using config file #{Brightbox.config.config_filename}"
18
15
 
19
16
  client_id = args.shift
@@ -0,0 +1,18 @@
1
+ module Brightbox
2
+ command [:config] do |cmd|
3
+ cmd.desc I18n.t("config.client_default.desc")
4
+ cmd.arg_name "alias"
5
+ cmd.command [:client_default] do |c|
6
+ c.action do |_global_options, _options, args|
7
+ info "Using config file #{Brightbox.config.config_filename}"
8
+ calias = args.shift
9
+
10
+ raise "You must specify the api alias you want to set as the default" if calias.nil?
11
+ raise "An api client with the alias #{calias} does not exist in the config" unless Brightbox.config.client_named?(calias)
12
+
13
+ info "Setting #{calias} as default api client"
14
+ Brightbox.config.set_default_client(calias)
15
+ end
16
+ end
17
+ end
18
+ end