brightbox-cli 3.3.0 → 4.0.0.rc2

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 (417) 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 +52 -0
  7. data/Gemfile.lock +66 -39
  8. data/README +11 -16
  9. data/README.rdoc +1 -1
  10. data/brightbox-cli.gemspec +20 -33
  11. data/lib/brightbox-cli/accounts.rb +9 -11
  12. data/lib/brightbox-cli/api.rb +38 -36
  13. data/lib/brightbox-cli/cloud_ips.rb +8 -8
  14. data/lib/brightbox-cli/collaborating_account.rb +5 -5
  15. data/lib/brightbox-cli/collaboration.rb +1 -1
  16. data/lib/brightbox-cli/commands/accounts/{accept-invite.rb → accept_invite.rb} +2 -6
  17. data/lib/brightbox-cli/commands/accounts/default.rb +1 -2
  18. data/lib/brightbox-cli/commands/accounts/list.rb +6 -8
  19. data/lib/brightbox-cli/commands/accounts/remove.rb +2 -6
  20. data/lib/brightbox-cli/commands/accounts/{reset-ftp-password.rb → reset_ftp_password.rb} +6 -9
  21. data/lib/brightbox-cli/commands/accounts/show.rb +10 -13
  22. data/lib/brightbox-cli/commands/cloudips/create.rb +2 -5
  23. data/lib/brightbox-cli/commands/cloudips/destroy.rb +10 -14
  24. data/lib/brightbox-cli/commands/cloudips/list.rb +0 -2
  25. data/lib/brightbox-cli/commands/cloudips/map.rb +10 -13
  26. data/lib/brightbox-cli/commands/cloudips/show.rb +11 -14
  27. data/lib/brightbox-cli/commands/cloudips/unmap.rb +2 -4
  28. data/lib/brightbox-cli/commands/cloudips/update.rb +2 -4
  29. data/lib/brightbox-cli/commands/collaborations.rb +2 -3
  30. data/lib/brightbox-cli/commands/config/{client-add.rb → client_add.rb} +0 -3
  31. data/lib/brightbox-cli/commands/config/client_default.rb +18 -0
  32. data/lib/brightbox-cli/commands/config/{client-list.rb → client_list.rb} +1 -4
  33. data/lib/brightbox-cli/commands/config/{client-remove.rb → client_remove.rb} +0 -3
  34. data/lib/brightbox-cli/commands/config/{user-add.rb → user_add.rb} +1 -4
  35. data/lib/brightbox-cli/commands/firewall/{policies-apply.rb → policies_apply.rb} +2 -2
  36. data/lib/brightbox-cli/commands/firewall/{policies-create.rb → policies_create.rb} +2 -4
  37. data/lib/brightbox-cli/commands/firewall/{policies-destroy.rb → policies_destroy.rb} +0 -3
  38. data/lib/brightbox-cli/commands/firewall/{policies-list.rb → policies_list.rb} +0 -2
  39. data/lib/brightbox-cli/commands/firewall/{policies-remove.rb → policies_remove.rb} +2 -2
  40. data/lib/brightbox-cli/commands/firewall/{policies-show.rb → policies_show.rb} +6 -8
  41. data/lib/brightbox-cli/commands/firewall/{policies-update.rb → policies_update.rb} +2 -4
  42. data/lib/brightbox-cli/commands/firewall/{rules-create.rb → rules_create.rb} +6 -8
  43. data/lib/brightbox-cli/commands/firewall/{rules-destroy.rb → rules_destroy.rb} +0 -2
  44. data/lib/brightbox-cli/commands/firewall/{rules-list.rb → rules_list.rb} +0 -2
  45. data/lib/brightbox-cli/commands/firewall/{rules-show.rb → rules_show.rb} +7 -9
  46. data/lib/brightbox-cli/commands/firewall/{rules-update.rb → rules_update.rb} +7 -8
  47. data/lib/brightbox-cli/commands/groups/{add-server.rb → add_server.rb} +0 -2
  48. data/lib/brightbox-cli/commands/groups/create.rb +2 -3
  49. data/lib/brightbox-cli/commands/groups/destroy.rb +0 -2
  50. data/lib/brightbox-cli/commands/groups/list.rb +0 -1
  51. data/lib/brightbox-cli/commands/groups/move_servers.rb +2 -3
  52. data/lib/brightbox-cli/commands/groups/{remove-servers.rb → remove_servers.rb} +2 -4
  53. data/lib/brightbox-cli/commands/groups/show.rb +0 -2
  54. data/lib/brightbox-cli/commands/groups/update.rb +2 -3
  55. data/lib/brightbox-cli/commands/images/destroy.rb +0 -4
  56. data/lib/brightbox-cli/commands/images/list.rb +3 -5
  57. data/lib/brightbox-cli/commands/images/register.rb +9 -17
  58. data/lib/brightbox-cli/commands/images/show.rb +19 -20
  59. data/lib/brightbox-cli/commands/images/update.rb +12 -8
  60. data/lib/brightbox-cli/commands/lbs/{add-nodes.rb → add_nodes.rb} +0 -3
  61. data/lib/brightbox-cli/commands/lbs/create.rb +5 -7
  62. data/lib/brightbox-cli/commands/lbs/destroy.rb +0 -3
  63. data/lib/brightbox-cli/commands/lbs/list.rb +0 -1
  64. data/lib/brightbox-cli/commands/lbs/{remove-nodes.rb → remove_nodes.rb} +0 -3
  65. data/lib/brightbox-cli/commands/lbs/show.rb +20 -22
  66. data/lib/brightbox-cli/commands/lbs/update.rb +6 -9
  67. data/lib/brightbox-cli/commands/login.rb +13 -12
  68. data/lib/brightbox-cli/commands/servers/{activate-console.rb → activate_console.rb} +2 -5
  69. data/lib/brightbox-cli/commands/servers/create.rb +24 -25
  70. data/lib/brightbox-cli/commands/servers/destroy.rb +0 -3
  71. data/lib/brightbox-cli/commands/servers/list.rb +4 -5
  72. data/lib/brightbox-cli/commands/servers/show.rb +0 -2
  73. data/lib/brightbox-cli/commands/servers/shutdown.rb +0 -3
  74. data/lib/brightbox-cli/commands/servers/snapshot.rb +0 -4
  75. data/lib/brightbox-cli/commands/servers/start.rb +0 -4
  76. data/lib/brightbox-cli/commands/servers/stop.rb +0 -3
  77. data/lib/brightbox-cli/commands/servers/update.rb +5 -5
  78. data/lib/brightbox-cli/commands/sql/instances_create.rb +3 -6
  79. data/lib/brightbox-cli/commands/sql/instances_destroy.rb +0 -2
  80. data/lib/brightbox-cli/commands/sql/instances_list.rb +7 -9
  81. data/lib/brightbox-cli/commands/sql/instances_reset_password.rb +0 -1
  82. data/lib/brightbox-cli/commands/sql/instances_show.rb +0 -3
  83. data/lib/brightbox-cli/commands/sql/instances_snapshot.rb +0 -3
  84. data/lib/brightbox-cli/commands/sql/instances_update.rb +1 -3
  85. data/lib/brightbox-cli/commands/sql/snapshots_destroy.rb +0 -3
  86. data/lib/brightbox-cli/commands/sql/snapshots_list.rb +7 -9
  87. data/lib/brightbox-cli/commands/sql/snapshots_show.rb +12 -15
  88. data/lib/brightbox-cli/commands/sql/snapshots_update.rb +1 -3
  89. data/lib/brightbox-cli/commands/sql/types.rb +8 -15
  90. data/lib/brightbox-cli/commands/token.rb +0 -1
  91. data/lib/brightbox-cli/commands/types.rb +8 -14
  92. data/lib/brightbox-cli/commands/{user-collaborations.rb → user_collaborations.rb} +7 -8
  93. data/lib/brightbox-cli/commands/users/list.rb +0 -2
  94. data/lib/brightbox-cli/commands/users/show.rb +1 -3
  95. data/lib/brightbox-cli/commands/users/update.rb +3 -6
  96. data/lib/brightbox-cli/commands/zones.rb +7 -10
  97. data/lib/brightbox-cli/config/accounts.rb +18 -26
  98. data/lib/brightbox-cli/config/api_client.rb +12 -16
  99. data/lib/brightbox-cli/config/authentication_tokens.rb +39 -42
  100. data/lib/brightbox-cli/config/cache.rb +1 -0
  101. data/lib/brightbox-cli/config/clients.rb +8 -8
  102. data/lib/brightbox-cli/config/gpg_encrypted_passwords.rb +6 -8
  103. data/lib/brightbox-cli/config/password_helper.rb +33 -8
  104. data/lib/brightbox-cli/config/sections.rb +45 -29
  105. data/lib/brightbox-cli/config/two_factor_auth.rb +12 -14
  106. data/lib/brightbox-cli/config/two_factor_helper.rb +5 -7
  107. data/lib/brightbox-cli/config/user_application.rb +18 -18
  108. data/lib/brightbox-cli/config.rb +26 -23
  109. data/lib/brightbox-cli/connection_manager.rb +4 -2
  110. data/lib/brightbox-cli/database_server.rb +28 -29
  111. data/lib/brightbox-cli/database_snapshot.rb +1 -1
  112. data/lib/brightbox-cli/database_type.rb +6 -6
  113. data/lib/brightbox-cli/detailed_server.rb +43 -43
  114. data/lib/brightbox-cli/detailed_server_group.rb +1 -1
  115. data/lib/brightbox-cli/error_parser.rb +9 -9
  116. data/lib/brightbox-cli/firewall_policy.rb +2 -1
  117. data/lib/brightbox-cli/firewall_rule.rb +3 -3
  118. data/lib/brightbox-cli/firewall_rules.rb +3 -3
  119. data/lib/brightbox-cli/gli_global_hooks.rb +25 -27
  120. data/lib/brightbox-cli/images.rb +14 -12
  121. data/lib/brightbox-cli/load_balancers.rb +3 -6
  122. data/lib/brightbox-cli/logging.rb +14 -14
  123. data/lib/brightbox-cli/nilable_hash.rb +1 -1
  124. data/lib/brightbox-cli/ruby_core_ext.rb +3 -3
  125. data/lib/brightbox-cli/server_groups.rb +2 -2
  126. data/lib/brightbox-cli/servers.rb +6 -6
  127. data/lib/brightbox-cli/tables.rb +13 -15
  128. data/lib/brightbox-cli/types.rb +6 -6
  129. data/lib/brightbox-cli/user_collaboration.rb +5 -7
  130. data/lib/brightbox-cli/users.rb +1 -1
  131. data/lib/brightbox-cli/version.rb +1 -1
  132. data/lib/brightbox-cli/zones.rb +1 -1
  133. data/lib/brightbox_cli.rb +33 -33
  134. data/spec/brightbox_spec.rb +0 -1
  135. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_a_collection_of_Accounts.yml +5 -5
  136. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_resources_on_the_same_connection.yml +2 -2
  137. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_a_collection_of_Accounts.yml +4 -4
  138. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_resources_on_the_same_connection.yml +2 -2
  139. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_false/does_not_update_the_config_file.yml +12 -12
  140. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_true/does_not_update_the_config_file.yml +12 -12
  141. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_changes_to_the_config_file.yml +2 -2
  142. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_default_account.yml +2 -2
  143. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_new_client_as_the_default.yml +2 -2
  144. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_is_not_authenticated/does_not_raise_an_error.yml +8 -8
  145. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_may_access_one_account/updates_the_setting.yml +8 -8
  146. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_config_in_use_is_not_the_default/uses_correct_credentials.yml +1 -1
  147. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_a_cached_refresh_token/caches_the_new_tokens.yml +1 -1
  148. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_an_expired_refresh_token/caches_the_new_tokens.yml +2 -2
  149. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/caches_the_new_tokens.yml +1 -1
  150. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/prompts_user_to_retry_command.yml +1 -1
  151. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_an_API_client_with_no_tokens/caches_a_new_access_token.yml +1 -1
  152. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/does_not_alter_the_configuration.yml +6 -6
  153. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_access_token.yml +6 -6
  154. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_refresh_token.yml +6 -6
  155. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/does_not_alter_the_configuration.yml +6 -6
  156. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_access_token.yml +6 -6
  157. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_refresh_token.yml +6 -6
  158. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/does_not_alter_the_configuration.yml +9 -9
  159. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_access_token.yml +9 -9
  160. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_refresh_token.yml +9 -9
  161. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/creates_the_configuration.yml +6 -6
  162. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/refreshed_tokens.yml +6 -6
  163. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/creates_the_configuration.yml +6 -6
  164. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/refreshed_tokens.yml +6 -6
  165. data/spec/cassettes/Brightbox_CloudIP/_find_all_/when_a_Cloud_IP_exists/returns_a_suitable.yml +15 -15
  166. data/spec/cassettes/Brightbox_FirewallPolicy/_apply_to/should_apply_firewall_policy.yml +14 -14
  167. data/spec/cassettes/Brightbox_FirewallPolicy/_create/should_create_firewall_policy.yml +14 -14
  168. data/spec/cassettes/Brightbox_FirewallPolicy/_destroy/should_destroy_firewall_policy.yml +16 -16
  169. data/spec/cassettes/Brightbox_FirewallPolicy/_find_all_/when_a_policy_exists/should_list_firewall_policy.yml +13 -13
  170. data/spec/cassettes/Brightbox_FirewallPolicy/_find_or_call/when_a_policy_exists/should_show_firewall_policy.yml +11 -11
  171. data/spec/cassettes/Brightbox_FirewallRule/_create/when_policy_exists/creates_the_rule_successfully.yml +14 -14
  172. data/spec/cassettes/Brightbox_FirewallRule/_destroy/when_rule_exists/destroys_a_rule.yml +12 -12
  173. data/spec/cassettes/Brightbox_FirewallRule/_find/when_rule_exists/can_display_the_result.yml +14 -14
  174. data/spec/cassettes/Brightbox_FirewallRule/_from_policy/when_policy_exists_with_a_rule/lists_all_rules.yml +19 -19
  175. data/spec/cassettes/Brightbox_Server/_destroy/when_server_exists/should_work.yml +12 -12
  176. data/spec/cassettes/Brightbox_Server/_find_all_/when_a_server_exists/should_print_server_list.yml +15 -15
  177. data/spec/cassettes/Brightbox_Server/_show/when_server_exists/shows_detailed_attributes_of_a_server.yml +18 -18
  178. data/spec/cassettes/Brightbox_Server/_shutdown/should_work.yml +18 -18
  179. data/spec/cassettes/Brightbox_Server/_start/should_work.yml +24 -24
  180. data/spec/cassettes/Brightbox_Server/_stop/should_work.yml +18 -18
  181. data/spec/cassettes/Brightbox_Server/_update/when_passing_new_group_membership/should_update_with_group.yml +22 -22
  182. data/spec/cassettes/Brightbox_ServerGroup/_find_all_/when_a_group_exists/list_server_groups.yml +13 -13
  183. data/spec/cassettes/Firewall_policies/update/when_the_policy_does_not_exist/prints_error_to_STDERR.yml +3 -3
  184. data/spec/cassettes/brightbox_accounts/list/_when_access_token_expired_/does_not_report_invalid_token_errors.yml +30 -30
  185. data/spec/cassettes/brightbox_accounts/list/_when_both_tokens_expired_/does_not_report_invalid_token_errors.yml +9 -9
  186. data/spec/cassettes/brightbox_accounts/list/_when_invalid_tokens_/does_not_report_invalid_token_errors.yml +9 -9
  187. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/does_not_report_invalid_token_errors.yml +27 -27
  188. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/reports_they_were_updated.yml +7 -7
  189. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/does_not_report_invalid_token_errors.yml +7 -7
  190. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/reports_unable_to_authenticate.yml +6 -6
  191. data/spec/cassettes/brightbox_accounts/list/does_not_error.yml +3 -3
  192. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_a_server_ID/passes_the_interface_identifier_to_the_API.yml +12 -12
  193. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_another_value/passes_the_identifier_to_the_API.yml +7 -7
  194. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/does_not_error.yml +7 -7
  195. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/sets_up_the_config.yml +7 -7
  196. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_change_the_default_client.yml +7 -7
  197. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_error.yml +7 -7
  198. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +7 -7
  199. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +7 -7
  200. data/spec/cassettes/brightbox_config/user_add/when_NO_config_file_on_disk/sets_up_the_config.yml +5 -5
  201. data/spec/cassettes/brightbox_config/user_add/when_a_default_client_is_already_set/does_not_change_the_default_client.yml +2 -2
  202. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/does_not_error.yml +2 -2
  203. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/sets_up_the_config.yml +2 -2
  204. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/display_an_warning_about_preselected_default.yml +2 -2
  205. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/does_not_error.yml +2 -2
  206. 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
  207. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/sets_up_the_config.yml +2 -2
  208. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/display_an_warning_about_preselected_default.yml +2 -2
  209. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/does_not_error.yml +2 -2
  210. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/sets_up_the_config.yml +2 -2
  211. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_error.yml +2 -2
  212. 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
  213. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/requests_access_tokens.yml +2 -2
  214. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +2 -2
  215. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +5 -5
  216. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_error.yml +2 -2
  217. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_prompt_to_rerun_the_command.yml +2 -2
  218. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/requests_access_tokens.yml +2 -2
  219. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/sets_up_the_config.yml +3 -3
  220. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/does_not_error.yml +2 -2
  221. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/requests_access_tokens.yml +2 -2
  222. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/sets_up_the_config.yml +2 -2
  223. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_error.yml +6 -6
  224. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  225. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/prompts_for_the_password.yml +6 -6
  226. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/requests_access_tokens.yml +6 -6
  227. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/sets_up_the_config.yml +6 -6
  228. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_error.yml +6 -6
  229. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  230. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/prompts_for_the_password.yml +6 -6
  231. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/requests_access_tokens.yml +6 -6
  232. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/sets_up_the_config.yml +6 -6
  233. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_error.yml +3 -3
  234. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_prompt_to_rerun_the_command.yml +3 -3
  235. data/spec/cassettes/brightbox_login/when_default_account_is_passed/prompts_for_the_password.yml +3 -3
  236. data/spec/cassettes/brightbox_login/when_default_account_is_passed/requests_access_tokens.yml +3 -3
  237. data/spec/cassettes/brightbox_login/when_default_account_is_passed/sets_up_the_config.yml +3 -3
  238. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_error.yml +6 -6
  239. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_prompt_to_rerun_the_command.yml +6 -6
  240. data/spec/cassettes/brightbox_login/when_no_config_is_present/requests_access_tokens.yml +6 -6
  241. data/spec/cassettes/brightbox_login/when_no_config_is_present/sets_up_the_config.yml +6 -6
  242. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_error.yml +6 -6
  243. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  244. data/spec/cassettes/brightbox_login/when_no_password_is_given/prompts_for_the_password.yml +6 -6
  245. data/spec/cassettes/brightbox_login/when_no_password_is_given/requests_access_tokens.yml +6 -6
  246. data/spec/cassettes/brightbox_login/when_no_password_is_given/sets_up_the_config.yml +6 -6
  247. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_10_0_0_0/correctly_sends_API_parameters.yml +313 -26
  248. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_srv-12345_grp-12345/correctly_sends_API_parameters.yml +1204 -38
  249. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql/correctly_sends_API_parameters.yml +596 -26
  250. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_5_6/correctly_sends_API_parameters.yml +63 -9
  251. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_8_0/correctly_sends_API_parameters.yml +393 -0
  252. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_5_--maintenance_hour_11/correctly_sends_API_parameters.yml +393 -0
  253. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_thursday/correctly_sends_API_parameters.yml +393 -0
  254. data/spec/cassettes/brightbox_sql_instances/create/--snapshot_dbi-12345/includes_schedule_fields_in_response.yml +1466 -0
  255. data/spec/cassettes/brightbox_sql_instances/create/--snapshots-schedule_0_12_4_/includes_schedule_fields_in_response.yml +342 -0
  256. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_password.yml +541 -26
  257. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_username.yml +484 -26
  258. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_active/correctly_sends_API_parameters.yml +4 -4
  259. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_can_not_be_snapshotted/reports_an_error_to_the_user.yml +2 -2
  260. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/does_not_output_to_stderr.yml +2 -2
  261. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/outputs_table_details_to_stdout.yml +2 -2
  262. data/spec/cassettes/brightbox_sql_snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +2 -2
  263. data/spec/commands/accounts/default_spec.rb +1 -2
  264. data/spec/commands/accounts/list_spec.rb +7 -8
  265. data/spec/commands/accounts/reset_ftp_password_spec.rb +1 -2
  266. data/spec/commands/accounts/show_spec.rb +1 -2
  267. data/spec/commands/cloudips/create_spec.rb +1 -2
  268. data/spec/commands/cloudips/destroy_spec.rb +1 -2
  269. data/spec/commands/cloudips/list_spec.rb +1 -2
  270. data/spec/commands/cloudips/map_spec.rb +2 -3
  271. data/spec/commands/cloudips/show_spec.rb +1 -2
  272. data/spec/commands/cloudips/unmap_spec.rb +1 -2
  273. data/spec/commands/cloudips/update_spec.rb +7 -8
  274. data/spec/commands/config/client_add_spec.rb +2 -3
  275. data/spec/commands/config/client_default_spec.rb +1 -2
  276. data/spec/commands/config/client_list_spec.rb +1 -2
  277. data/spec/commands/config/client_remove_spec.rb +1 -2
  278. data/spec/commands/config/user_add_spec.rb +3 -4
  279. data/spec/commands/firewall_policies/update_spec.rb +3 -3
  280. data/spec/commands/groups/add_server_spec.rb +1 -2
  281. data/spec/commands/groups/create_spec.rb +1 -2
  282. data/spec/commands/groups/destroy_spec.rb +1 -2
  283. data/spec/commands/groups/list_spec.rb +1 -2
  284. data/spec/commands/groups/move_servers_spec.rb +1 -2
  285. data/spec/commands/groups/remove_servers_spec.rb +1 -2
  286. data/spec/commands/groups/show_spec.rb +1 -2
  287. data/spec/commands/groups/update_spec.rb +1 -2
  288. data/spec/commands/images/destroy_spec.rb +1 -2
  289. data/spec/commands/images/list_spec.rb +62 -63
  290. data/spec/commands/images/locking_spec.rb +4 -4
  291. data/spec/commands/images/register_spec.rb +89 -3
  292. data/spec/commands/images/show_spec.rb +56 -4
  293. data/spec/commands/images/update_spec.rb +53 -3
  294. data/spec/commands/lbs/add_nodes_spec.rb +1 -2
  295. data/spec/commands/lbs/create_spec.rb +2 -3
  296. data/spec/commands/lbs/destroy_spec.rb +1 -2
  297. data/spec/commands/lbs/list_spec.rb +1 -2
  298. data/spec/commands/lbs/locking_spec.rb +4 -4
  299. data/spec/commands/lbs/remove_nodes_spec.rb +1 -2
  300. data/spec/commands/lbs/show_spec.rb +1 -2
  301. data/spec/commands/lbs/update_spec.rb +3 -4
  302. data/spec/commands/login_spec.rb +134 -30
  303. data/spec/commands/policies/apply_spec.rb +1 -2
  304. data/spec/commands/policies/create_spec.rb +1 -2
  305. data/spec/commands/policies/destroy_spec.rb +1 -2
  306. data/spec/commands/policies/list_spec.rb +1 -2
  307. data/spec/commands/policies/remove_spec.rb +1 -2
  308. data/spec/commands/policies/show_spec.rb +1 -2
  309. data/spec/commands/policies/update_spec.rb +1 -2
  310. data/spec/commands/rules/create_spec.rb +1 -2
  311. data/spec/commands/rules/destroy_spec.rb +1 -2
  312. data/spec/commands/rules/list_spec.rb +1 -2
  313. data/spec/commands/rules/show_spec.rb +1 -2
  314. data/spec/commands/rules/update_spec.rb +1 -2
  315. data/spec/commands/servers/activate_console_spec.rb +1 -2
  316. data/spec/commands/servers/create_spec.rb +10 -10
  317. data/spec/commands/servers/destroy_spec.rb +1 -2
  318. data/spec/commands/servers/list_spec.rb +1 -2
  319. data/spec/commands/servers/locking_spec.rb +4 -4
  320. data/spec/commands/servers/reboot_spec.rb +3 -4
  321. data/spec/commands/servers/reset_spec.rb +3 -4
  322. data/spec/commands/servers/show_spec.rb +1 -2
  323. data/spec/commands/servers/shutdown_spec.rb +1 -2
  324. data/spec/commands/servers/snapshot_spec.rb +1 -2
  325. data/spec/commands/servers/start_spec.rb +1 -2
  326. data/spec/commands/servers/stop_spec.rb +1 -2
  327. data/spec/commands/servers/update_spec.rb +1 -2
  328. data/spec/commands/sql/instances/create_spec.rb +58 -75
  329. data/spec/commands/sql/instances/locking_spec.rb +4 -4
  330. data/spec/commands/sql/instances/show_spec.rb +7 -7
  331. data/spec/commands/sql/instances/snapshot_spec.rb +2 -2
  332. data/spec/commands/sql/instances/update_spec.rb +8 -8
  333. data/spec/commands/sql/snapshots/list_spec.rb +1 -1
  334. data/spec/commands/sql/snapshots/locking_spec.rb +4 -4
  335. data/spec/commands/sql/snapshots/show_spec.rb +1 -1
  336. data/spec/commands/sql/types/list_spec.rb +1 -2
  337. data/spec/commands/types/list_spec.rb +1 -2
  338. data/spec/commands/users/list_spec.rb +1 -2
  339. data/spec/commands/users/show_spec.rb +1 -2
  340. data/spec/commands/users/update_spec.rb +1 -2
  341. data/spec/commands/zones/list_spec.rb +1 -2
  342. data/spec/configs/api_client.ini +1 -1
  343. data/spec/configs/user_app.ini +2 -2
  344. data/spec/spec_helper.rb +16 -3
  345. data/spec/support/authentication_helpers.rb +98 -0
  346. data/spec/support/config_helpers.rb +2 -4
  347. data/spec/support/password_prompt_helpers.rb +22 -1
  348. data/spec/support/server_helper.rb +5 -5
  349. data/spec/support/tmp_config.rb +1 -1
  350. data/spec/support/token_helpers.rb +2 -2
  351. data/spec/support/vcr.rb +3 -22
  352. data/spec/unit/brightbox/api/created_on_spec.rb +2 -2
  353. data/spec/unit/brightbox/api/fog_model_spec.rb +13 -13
  354. data/spec/unit/brightbox/api/klass_name_spec.rb +0 -1
  355. data/spec/unit/brightbox/api/method_missing_spec.rb +64 -0
  356. data/spec/unit/brightbox/api/require_account_spec.rb +0 -1
  357. data/spec/unit/brightbox/api/respond_to_spec.rb +71 -0
  358. data/spec/unit/brightbox/bb_config/access_token_filename_spec.rb +0 -1
  359. data/spec/unit/brightbox/bb_config/account_spec.rb +0 -1
  360. data/spec/unit/brightbox/bb_config/add_login_spec.rb +27 -28
  361. data/spec/unit/brightbox/bb_config/add_section_spec.rb +1 -2
  362. data/spec/unit/brightbox/bb_config/clear_default_client_spec.rb +0 -1
  363. data/spec/unit/brightbox/bb_config/client_id_spec.rb +0 -1
  364. data/spec/unit/brightbox/bb_config/client_name_spec.rb +0 -1
  365. data/spec/unit/brightbox/bb_config/config_directory_exists_spec.rb +0 -1
  366. data/spec/unit/brightbox/bb_config/config_directory_spec.rb +0 -1
  367. data/spec/unit/brightbox/bb_config/config_spec.rb +2 -3
  368. data/spec/unit/brightbox/bb_config/default_account_spec.rb +0 -1
  369. data/spec/unit/brightbox/bb_config/default_client_spec.rb +0 -1
  370. data/spec/unit/brightbox/bb_config/delete_section_spec.rb +0 -1
  371. data/spec/unit/brightbox/bb_config/find_or_set_default_account_spec.rb +4 -4
  372. data/spec/unit/brightbox/bb_config/refresh_token_filename_spec.rb +0 -1
  373. data/spec/unit/brightbox/bb_config/renew_tokens_spec.rb +3 -4
  374. data/spec/unit/brightbox/bb_config/save_default_account_spec.rb +0 -1
  375. data/spec/unit/brightbox/bb_config/save_spec.rb +0 -1
  376. data/spec/unit/brightbox/bb_config/section_names_spec.rb +1 -1
  377. data/spec/unit/brightbox/bb_config/to_fog_spec.rb +2 -2
  378. data/spec/unit/brightbox/collaborating_account/to_row_spec.rb +3 -3
  379. data/spec/unit/brightbox/config/api_client/to_fog_spec.rb +8 -8
  380. data/spec/unit/brightbox/config/api_client/valid_spec.rb +4 -4
  381. data/spec/unit/brightbox/config/discover_two_factor_pin_spec.rb +87 -0
  382. data/spec/unit/brightbox/config/section_name_deduplicator_spec.rb +1 -1
  383. data/spec/unit/brightbox/config/user_application/to_fog_spec.rb +10 -10
  384. data/spec/unit/brightbox/config/user_application/valid_spec.rb +3 -3
  385. data/spec/unit/brightbox/connection_manager/fetch_connection_spec.rb +1 -1
  386. data/spec/unit/brightbox/database_server/clean_arguments_spec.rb +1 -2
  387. data/spec/unit/brightbox/database_server/maintenance_window_spec.rb +0 -1
  388. data/spec/unit/brightbox/error_parser/pretty_print_spec.rb +0 -1
  389. data/spec/unit/brightbox/firewall_policy/apply_to_spec.rb +0 -1
  390. data/spec/unit/brightbox/firewall_policy/create_spec.rb +0 -1
  391. data/spec/unit/brightbox/firewall_policy/find_or_call_spec.rb +0 -1
  392. data/spec/unit/brightbox/firewall_policy/find_spec.rb +0 -1
  393. data/spec/unit/brightbox/firewall_rule/find_spec.rb +9 -9
  394. data/spec/unit/brightbox/firewall_rule/from_policy_spec.rb +4 -4
  395. data/spec/unit/brightbox/legacy/args_adjuster_spec.rb +20 -21
  396. data/spec/unit/brightbox/server/create_spec.rb +1 -2
  397. data/spec/unit/brightbox/server/start_spec.rb +2 -2
  398. data/spec/unit/brightbox/server/update_spec.rb +0 -1
  399. data/spec/unit/brightbox/user_collaboration/remove_spec.rb +0 -1
  400. data/spec/unit/nilable_hash_spec.rb +5 -5
  401. data/spec/unit/ruby_core_ext_spec.rb +3 -4
  402. data/spec/unit/temporary_home_spec.rb +1 -1
  403. data/spec/unit/tmp_config_spec.rb +0 -1
  404. metadata +133 -101
  405. data/bin/brightbox-accounts +0 -13
  406. data/bin/brightbox-cloudips +0 -13
  407. data/bin/brightbox-config +0 -13
  408. data/bin/brightbox-firewall-policies +0 -13
  409. data/bin/brightbox-firewall-rules +0 -13
  410. data/bin/brightbox-groups +0 -13
  411. data/bin/brightbox-images +0 -13
  412. data/bin/brightbox-lbs +0 -13
  413. data/bin/brightbox-servers +0 -13
  414. data/bin/brightbox-types +0 -13
  415. data/bin/brightbox-users +0 -13
  416. data/bin/brightbox-zones +0 -13
  417. data/lib/brightbox-cli/commands/config/client-default.rb +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 881d758fc2932375edc56797f613f757a7f83729087cf2335a44736f4554fe1d
4
- data.tar.gz: cfb933331637277089d47a0feccf9456e18b45f0a248aa27f233c52f24ba2f61
3
+ metadata.gz: 22b1f59a54b3f902822d401bfc12d5bf3b797ac07ca778006abc0627423fe7f6
4
+ data.tar.gz: ea3417d3a85def958ffe7897493056ceccb07f40d3370f6c20047333bb29066c
5
5
  SHA512:
6
- metadata.gz: a7b28703cc70a953b900f0caabaf036ff78c1e914810fcba9523b7f8b44ae5c7d148ee09f08d073d71449b587024f7d64ead1f88a659c3a2d2a52c502134d23a
7
- data.tar.gz: ea62fcbe6b909e8b7cb8744da7acacd50c75bcb0c109fada221ef135ff1c1ac0d88dc01d8975ef3a8068c75e86956ce244ab88abc641e2dc3d79ed474502e59d
6
+ metadata.gz: f5d7882274fbf277684ace5bd46bace4e2a3157e09ae3e91313e746edb134501d525cee5a2e2121e38780f355141e14d322e800fd83ad1393d5a9b10be2b53ff
7
+ data.tar.gz: 82af52ec25efac5169fef7dd5f2e7b2ad8b4975b9d0dffb9c6014930ceead76a1b251379ca6c185f04b23df77ccfd649e79eaabcc27f837d5d8f0a1040b18bcf
data/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ spec/cassettes/**/*.yml linguist-generated
@@ -20,7 +20,7 @@ jobs:
20
20
 
21
21
  strategy:
22
22
  matrix:
23
- ruby: ["2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "3.0"]
23
+ ruby: ["2.5", "2.6", "2.7", "3.0", "3.1", "head"]
24
24
 
25
25
  steps:
26
26
  - uses: actions/checkout@v2
data/.gitignore CHANGED
@@ -16,4 +16,4 @@ spec/brightbox/cache/
16
16
  *.html
17
17
  *.gem
18
18
  /vendor/
19
-
19
+ spec/examples.txt
data/.rubocop.yml ADDED
@@ -0,0 +1,70 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ Exclude:
4
+ - bin/*
5
+ - lib/brightbox-cli/vendor/**/*
6
+ - vendor/**/*
7
+ TargetRubyVersion: 2.5
8
+
9
+ Layout/HeredocIndentation:
10
+ Enabled: true
11
+
12
+ Layout/LineLength:
13
+ Enabled: false
14
+ Max: 100
15
+
16
+ Lint/SuppressedException:
17
+ Enabled: false
18
+
19
+ Metrics/AbcSize:
20
+ Enabled: false
21
+
22
+ Metrics/BlockLength:
23
+ Enabled: false
24
+
25
+ Metrics/ClassLength:
26
+ Enabled: false
27
+
28
+ Metrics/CyclomaticComplexity:
29
+ Enabled: false
30
+
31
+ Metrics/MethodLength:
32
+ Enabled: false
33
+
34
+ Metrics/ModuleLength:
35
+ Enabled: false
36
+
37
+ Metrics/PerceivedComplexity:
38
+ Enabled: false
39
+
40
+ Naming/HeredocDelimiterNaming:
41
+ Enabled: false
42
+
43
+ Style/Documentation:
44
+ Enabled: false
45
+
46
+ Style/Encoding:
47
+ Enabled: false
48
+
49
+ Style/FrozenStringLiteralComment:
50
+ Enabled: false
51
+
52
+ Style/HashSyntax:
53
+ Enabled: true
54
+ EnforcedStyle: no_mixed_keys
55
+
56
+ Style/GlobalVars:
57
+ Enabled: false # It's horrid, there's so many
58
+
59
+ Style/IfUnlessModifier:
60
+ Enabled: false
61
+
62
+ Style/SignalException:
63
+ # Valid values are: semantic, only_raise and only_fail
64
+ EnforcedStyle: only_raise
65
+
66
+ Style/SingleLineMethods:
67
+ Enabled: false
68
+
69
+ Style/StringLiterals:
70
+ EnforcedStyle: double_quotes
data/CHANGELOG.md CHANGED
@@ -1,3 +1,55 @@
1
+ ### v4.0.0 / master
2
+
3
+ [Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.3.0...master)
4
+
5
+ Backwards incompatible changes:
6
+
7
+ * Drop support for Ruby versions older than 2.5
8
+ * Update `Gemfile.lock` to use Bundler 2.1.4
9
+ * Remove hypenated versions of sub commands. For example `brightbox-servers`
10
+ wrapping `brightbox servers`.
11
+
12
+ Changes:
13
+
14
+ * Improved Two Factor Authentication (2FA) support resulting in it working
15
+ automatically without configuration prompting when required. The `two_factor`
16
+ configuration setting is now ignored
17
+ * The `brightbox login` command will now work when 2FA is enabled for a user
18
+ * Adds Ruby 3.1 and 3.2 (preview) to testing matrix
19
+ * Update `fog-brightbox` to `v1.7.0`
20
+ * Removed references to `Fixnum` from code and dependencies to allow
21
+ testing of Ruby 3.2 support
22
+ * Updates `webmock` from 1.21.0 to 3.14.0
23
+ * Removes `rubyforge` reference from gemspec to remove deprecation warning
24
+ * Remove post install message from gemspec
25
+ * Update `gli` to latest version v2.21.0 to clear some deprecations seen under
26
+ later Ruby versions
27
+ * Update development gems to ensure up to date
28
+ * Change `client_id` logging level from info to debug
29
+ * Setup Rubocop to help improve code quality/consistency
30
+ * Updated code based on Rubocop reports resulting in many changes
31
+ * Pin `dry-inflector` to v0.2.0 to prevent issues with Ruby =< 2.5
32
+ * Add support for `min-ram` to `brightbox images` commands
33
+ * Update authors (and emails) in gemspec
34
+
35
+ Bug fixes:
36
+
37
+ * Implement `Brightbox::Api#respond_to_missing?` to avoid issues when
38
+ delegating made `#respond_to?` raise an error
39
+ * `brightbox login` no longer attempts (and fails) to download accounts when
40
+ authentication has failed
41
+
42
+ Testing:
43
+
44
+ * Updated testing/development gems
45
+ * Update VCR to latest release v2.9.3
46
+ * Remove VCR identifier sanitisation as temp dev instance are used and
47
+ squashing IDs cause bug when chain/multiple requests combined
48
+ * RSpec is configured to allow re-runs
49
+ * Timeout testing is dropped to 10s
50
+ * Updated `.dev` TLD used in testing to `.localhost` to avoid problems when the
51
+ original was commercialised such as local DNS blocked by browsers.
52
+
1
53
  ### v3.3.0 / 2021-09-17
2
54
 
3
55
  [Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.2.0...v3.3.0)
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- brightbox-cli (3.3.0)
5
- dry-inflector (< 0.2)
6
- fog-brightbox (>= 1.3.0)
4
+ brightbox-cli (4.0.0.rc2)
5
+ dry-inflector (= 0.2.0)
6
+ fog-brightbox (>= 1.7.0)
7
7
  fog-core (< 2.0)
8
- gli (~> 2.12.0)
8
+ gli (~> 2.21.0)
9
9
  highline (~> 1.6.0)
10
10
  hirb (~> 0.6)
11
- i18n (~> 0.6.0)
11
+ i18n (>= 0.6, < 1.11)
12
12
  mime-types (~> 2.6)
13
13
  multi_json (~> 1.11.0)
14
14
 
@@ -17,14 +17,16 @@ GEM
17
17
  specs:
18
18
  addressable (2.8.0)
19
19
  public_suffix (>= 2.0.2, < 5.0)
20
+ ast (2.4.2)
20
21
  builder (3.2.4)
21
- coderay (1.0.9)
22
+ coderay (1.1.3)
23
+ concurrent-ruby (1.1.10)
22
24
  crack (0.4.5)
23
25
  rexml
24
- diff-lcs (1.4.3)
25
- dry-inflector (0.1.2)
26
- excon (0.79.0)
27
- fog-brightbox (1.4.0)
26
+ diff-lcs (1.5.0)
27
+ dry-inflector (0.2.0)
28
+ excon (0.92.4)
29
+ fog-brightbox (1.7.0)
28
30
  dry-inflector
29
31
  fog-core (>= 1.45, < 3.0)
30
32
  fog-json
@@ -35,45 +37,67 @@ GEM
35
37
  fog-json (1.2.0)
36
38
  fog-core
37
39
  multi_json (~> 1.10)
38
- formatador (0.2.5)
39
- gli (2.12.3)
40
+ formatador (0.3.0)
41
+ gli (2.21.0)
42
+ hashdiff (1.0.1)
40
43
  highline (1.6.21)
41
44
  hirb (0.7.3)
42
- i18n (0.6.11)
43
- metaclass (0.0.1)
44
- method_source (0.8.1)
45
+ i18n (1.10.0)
46
+ concurrent-ruby (~> 1.0)
47
+ method_source (1.0.0)
45
48
  mime-types (2.99.3)
46
- mocha (0.14.0)
47
- metaclass (~> 0.0.1)
49
+ mocha (1.14.0)
48
50
  multi_json (1.11.3)
49
- pry (0.9.12.2)
50
- coderay (~> 1.0.5)
51
- method_source (~> 0.8)
52
- slop (~> 3.4)
51
+ parallel (1.22.1)
52
+ parser (3.1.2.0)
53
+ ast (~> 2.4.1)
54
+ pry (0.14.1)
55
+ coderay (~> 1.1)
56
+ method_source (~> 1.0)
53
57
  pry-remote (0.1.8)
54
58
  pry (~> 0.9)
55
59
  slop (~> 3.0)
56
- public_suffix (2.0.5)
57
- rake (12.3.3)
60
+ public_suffix (4.0.7)
61
+ rainbow (3.1.1)
62
+ rake (13.0.6)
63
+ regexp_parser (2.5.0)
58
64
  rexml (3.2.5)
59
- rspec (3.9.0)
60
- rspec-core (~> 3.9.0)
61
- rspec-expectations (~> 3.9.0)
62
- rspec-mocks (~> 3.9.0)
63
- rspec-core (3.9.2)
64
- rspec-support (~> 3.9.3)
65
- rspec-expectations (3.9.2)
65
+ rspec (3.11.0)
66
+ rspec-core (~> 3.11.0)
67
+ rspec-expectations (~> 3.11.0)
68
+ rspec-mocks (~> 3.11.0)
69
+ rspec-core (3.11.0)
70
+ rspec-support (~> 3.11.0)
71
+ rspec-expectations (3.11.0)
66
72
  diff-lcs (>= 1.2.0, < 2.0)
67
- rspec-support (~> 3.9.0)
68
- rspec-mocks (3.9.1)
73
+ rspec-support (~> 3.11.0)
74
+ rspec-mocks (3.11.1)
69
75
  diff-lcs (>= 1.2.0, < 2.0)
70
- rspec-support (~> 3.9.0)
71
- rspec-support (3.9.3)
72
- slop (3.4.5)
73
- vcr (2.5.0)
74
- webmock (1.21.0)
75
- addressable (>= 2.3.6)
76
+ rspec-support (~> 3.11.0)
77
+ rspec-support (3.11.0)
78
+ rubocop (1.28.2)
79
+ parallel (~> 1.10)
80
+ parser (>= 3.1.0.0)
81
+ rainbow (>= 2.2.2, < 4.0)
82
+ regexp_parser (>= 1.8, < 3.0)
83
+ rexml
84
+ rubocop-ast (>= 1.17.0, < 2.0)
85
+ ruby-progressbar (~> 1.7)
86
+ unicode-display_width (>= 1.4.0, < 3.0)
87
+ rubocop-ast (1.17.0)
88
+ parser (>= 3.1.1.0)
89
+ rubocop-rake (0.6.0)
90
+ rubocop (~> 1.0)
91
+ rubocop-rspec (2.10.0)
92
+ rubocop (~> 1.19)
93
+ ruby-progressbar (1.11.0)
94
+ slop (3.6.0)
95
+ unicode-display_width (2.1.0)
96
+ vcr (2.9.3)
97
+ webmock (3.14.0)
98
+ addressable (>= 2.8.0)
76
99
  crack (>= 0.3.2)
100
+ hashdiff (>= 0.4.0, < 2.0.0)
77
101
 
78
102
  PLATFORMS
79
103
  ruby
@@ -84,8 +108,11 @@ DEPENDENCIES
84
108
  pry-remote
85
109
  rake
86
110
  rspec
111
+ rubocop
112
+ rubocop-rake
113
+ rubocop-rspec
87
114
  vcr (~> 2.5)
88
115
  webmock
89
116
 
90
117
  BUNDLED WITH
91
- 1.17.3
118
+ 2.1.4
data/README CHANGED
@@ -2,13 +2,9 @@
2
2
 
3
3
  `brightbox-cli` is a set of cli tools to interact with the Brightbox Cloud API.
4
4
 
5
- You will need a user account on the Brightbox Cloud in order to make use of
6
- these tools.
7
-
8
- You can sign up at https://manage.brightbox.com
9
-
10
- {<img src="https://travis-ci.org/brightbox/brightbox-cli.png?branch=master" alt="Build Status" />}[https://travis-ci.org/brightbox/brightbox-cli]
5
+ You will need a Brightbox account in order to make use of these tools.
11
6
 
7
+ You can sign up at https://cloud.brightbox.com/signup
12
8
 
13
9
  == Installation instructions
14
10
 
@@ -101,7 +97,6 @@ The alias here is `main`. To prepare the password run this command:
101
97
  $ gpg --decrypt ~/.brightbox/main.password.gpg
102
98
  password!2015
103
99
  $ brightbox accounts
104
- INFO: client_id: app-12345 (main)
105
100
  INFO: Decrypting /home/user/.brightbox/main.password.gpg to obtain password
106
101
  gpg: encrypted with 2048-bit RSA key, ID ABCDE890, created 2015-01-01
107
102
  "Jason Null <gpg@example.com>"
@@ -129,11 +124,10 @@ appropriate section:
129
124
  password_helper_command = pass john-example-com-brightbox
130
125
 
131
126
 
132
- == Usage guides
127
+ == Documentation
133
128
 
134
- * http://docs.brightbox.com/reference/cli
135
- * http://brightbox.com
136
- * http://docs.brightbox.com/reference/api/
129
+ * https://www.brightbox.com/docs/guides/cli/
130
+ * http://www.brightbox.com/docs/reference/cli/
137
131
 
138
132
  == BASH Auto-completion
139
133
 
@@ -175,12 +169,13 @@ process is not perfect, please report an issue
175
169
 
176
170
  == Alternatives
177
171
 
178
- There are a number of alternative ways to interact with the Brightbox Cloud.
172
+ There are a number of alternative ways to manage Brightbox resources:
179
173
 
180
- * The Web GUI - https://manage.brightbox.com/
181
- * fog - https://github.com/fog/fog
182
- * knife plugin - https://github.com/rubiojr/knife-brightbox
183
- * Vagrant plugin - https://github.com/NeilW/vagrant-brightbox
174
+ * Control Panel - https://cloud.brightbox.com/
175
+ * Terraform https://registry.terraform.io/providers/brightbox/brightbox/latest
176
+ * Kubernetes - https://github.com/brightbox/brightbox-cloud-controller-manager
177
+ * fog - https://github.com/fog/fog-brightbox
178
+ * Go - https://github.com/brightbox/gobrightbox
184
179
 
185
180
  == Packaging
186
181
 
data/README.rdoc CHANGED
@@ -1 +1 @@
1
- ./README
1
+ README
@@ -1,60 +1,47 @@
1
1
  # -*- encoding: utf-8 -*-
2
+
2
3
  require File.join(File.dirname(__FILE__), "lib/brightbox-cli/version")
3
4
 
4
5
  Gem::Specification.new do |s|
5
6
  s.name = "brightbox-cli"
6
7
  s.version = Brightbox::VERSION
7
8
  s.platform = Gem::Platform::RUBY
8
- s.authors = ["John Leach"]
9
- s.email = ["john@brightbox.co.uk"]
10
- s.homepage = "http://docs.brightbox.com/cli"
11
- s.summary = %q(The Brightbox cloud management system)
12
- s.description = %q(Scripts to interact with the Brightbox cloud API)
9
+ s.authors = ["John Leach", "Paul Thornthwaite"]
10
+ s.email = ["john@brightbox.com", "paul@brightbox.com"]
11
+ s.homepage = "https://www.brightbox.com/cli"
12
+ s.summary = "The Brightbox cloud management system"
13
+ s.description = "Scripts to interact with the Brightbox cloud API"
13
14
  s.license = "MIT"
15
+ s.metadata['rubygems_mfa_required'] = 'true'
14
16
 
15
- s.required_ruby_version = ">= 2.0"
16
-
17
- s.rubyforge_project = "brightbox-cli"
17
+ s.required_ruby_version = ">= 2.5"
18
18
 
19
19
  s.files = `git ls-files`.split("\n") + `find lib/brightbox-cli/vendor`.split("\n")
20
20
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
21
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
22
22
  s.require_paths = ["lib"]
23
23
 
24
- s.add_dependency "fog-brightbox", ">= 1.3.0"
24
+ s.add_dependency "fog-brightbox", ">= 1.7.0"
25
25
  s.add_dependency "fog-core", "< 2.0"
26
- s.add_dependency "gli", "~> 2.12.0"
27
- s.add_dependency "i18n", "~> 0.6.0"
28
- s.add_dependency "mime-types", "~> 2.6"
29
- s.add_dependency "multi_json", "~> 1.11.0"
26
+ s.add_dependency "gli", "~> 2.21.0"
30
27
  s.add_dependency "highline", "~> 1.6.0"
31
28
  s.add_dependency "hirb", "~> 0.6"
29
+ s.add_dependency "i18n", ">= 0.6", "< 1.11"
30
+ s.add_dependency "mime-types", "~> 2.6"
31
+ s.add_dependency "multi_json", "~> 1.11.0"
32
32
 
33
- # dry-inflector >= 0.2 drops supports for Ruby < 2.4
34
- s.add_dependency "dry-inflector", "< 0.2"
33
+ # Indirect dependency
34
+ # 0.3 drops support for Ruby < 2.7
35
+ # 0.2.1 drops support for Ruby < 2.6
36
+ s.add_dependency "dry-inflector", "= 0.2.0"
35
37
 
36
38
  s.add_development_dependency "mocha"
37
39
  s.add_development_dependency "pry-remote"
38
40
  s.add_development_dependency "rake"
39
41
  s.add_development_dependency "rspec"
42
+ s.add_development_dependency "rubocop"
43
+ s.add_development_dependency "rubocop-rake"
44
+ s.add_development_dependency "rubocop-rspec"
40
45
  s.add_development_dependency "vcr", "~> 2.5"
41
46
  s.add_development_dependency "webmock"
42
-
43
- s.post_install_message = <<-EOS
44
- The CLI command is now `brightbox` with subcommands for the resources.
45
- Such as `brightbox config` or `brightbox servers`.
46
-
47
- `brightbox --help` lists all the commands.
48
-
49
- The old hypenated versions of the commands (e.g. `brightbox-servers`)
50
- are deprecated and may be removed in the future.
51
-
52
- If you have been using the old "brightbox" gem please ensure you have
53
- the latest version to be able to use the `brightbox-capify` command.
54
-
55
- To enable Bash auto-completion you can do the following:
56
-
57
- complete -C _brightbox-bash-completer -o filenames brightbox
58
-
59
- EOS
60
47
  end
@@ -25,21 +25,19 @@ module Brightbox
25
25
  end
26
26
 
27
27
  def self.get(id)
28
- if Brightbox.config.using_application?
29
- a = conn.accounts.get(id)
30
- else
31
- a = conn.account
32
- end
28
+ acc = if Brightbox.config.using_application?
29
+ conn.accounts.get(id)
30
+ else
31
+ conn.account
32
+ end
33
33
 
34
- if a && a.id == id
35
- a
36
- else
37
- nil
38
- end
34
+ return unless acc && acc.id == id
35
+
36
+ acc
39
37
  end
40
38
 
41
39
  def self.default_field_order
42
- [:id, :name, :cloud_ips_limit, :lb_limit, :ram_limit, :ram_used, :ram_free]
40
+ %i[id name cloud_ips_limit lb_limit ram_limit ram_used ram_free]
43
41
  end
44
42
 
45
43
  def to_s
@@ -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)