brightbox-cli 3.2.0 → 4.0.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 (418) 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 +71 -0
  7. data/Gemfile.lock +71 -42
  8. data/README +57 -33
  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 -10
  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 -11
  106. data/lib/brightbox-cli/config/two_factor_helper.rb +36 -0
  107. data/lib/brightbox-cli/config/user_application.rb +18 -18
  108. data/lib/brightbox-cli/config.rb +27 -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 +34 -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 +132 -100
  405. data/.travis.yml +0 -8
  406. data/bin/brightbox-accounts +0 -13
  407. data/bin/brightbox-cloudips +0 -13
  408. data/bin/brightbox-config +0 -13
  409. data/bin/brightbox-firewall-policies +0 -13
  410. data/bin/brightbox-firewall-rules +0 -13
  411. data/bin/brightbox-groups +0 -13
  412. data/bin/brightbox-images +0 -13
  413. data/bin/brightbox-lbs +0 -13
  414. data/bin/brightbox-servers +0 -13
  415. data/bin/brightbox-types +0 -13
  416. data/bin/brightbox-users +0 -13
  417. data/bin/brightbox-zones +0 -13
  418. 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: d5c03039c9263c4872064938223b825be9550d1c08e2a77d438b68f1fd7b42cc
4
- data.tar.gz: 85f994952c28133cf8ad08c70d16228b165373f94a90916a0a83fe365e14672d
3
+ metadata.gz: cf8d230d121ac70d4971ed2acf19776ed75bac9256d4f4ea7d980af8e563350a
4
+ data.tar.gz: feb53ae71fe302c76fcbe2f6b4e1e67723b64d706266ed3db5531195df9ec167
5
5
  SHA512:
6
- metadata.gz: 013e062376468560718cfbf25c2e2221db7e0808bcadc6413b6cbf5532b966917de0e2c40d2ffd1a859f8fd78267c28b86166e5638d2869cfe22e9c315bd8a4b
7
- data.tar.gz: f81c26c3a3705e6caa3399e1598e4c8ad399f175a0be4d26c2383ccfab8a8cfc75c2ebde0135aa9cee2f4cd220df2119a4d3a880b4c585b3dfc113384cfe57e6
6
+ metadata.gz: c5325d637d559f620a9b5a4cff4157aa67f6da2a802329c59d81270a429958afbf5e7d9f982d59d99786f099931b64bd1f50feedd123e6221371580234ac8986
7
+ data.tar.gz: 97431207227f81834213a4ab61c6d77d78f526ba4ec1a1885975c4169299cb4f88c323197984391ffed000feee9523b0a4aabbc7075fc15fe8389943400cb8d9
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.4", "2.5", "2.6", "2.7"]
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,74 @@
1
+ ### v4.0.0 / 2022-08-01
2
+
3
+ [Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.3.0...v4.0.0)
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
+
53
+ ### v3.3.0 / 2021-09-17
54
+
55
+ [Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.2.0...v3.3.0)
56
+
57
+ Changes:
58
+
59
+ * Update `fog-brightbox` to v1.4.0` (allowing Ruby 3.0 support)
60
+ * Added support for getting 2FA from helper
61
+ * Added missing `sql snapshot` fields
62
+ * Infrastructure changes to test on more versions of Ruby
63
+ * Added GitHub actions support for CI testing.
64
+ * Removed Travis CI support.
65
+
66
+ Bug fixes:
67
+
68
+ * Updates `crack` gem to switch from `safe_yaml` to `rexml`
69
+ * Bump addressable from 2.3.8 to 2.8.0. (fixing ReDoS vulnerability)
70
+ * Bump rexml from 3.2.4 to 3.2.5 (fixing round-trip vulnerability bugs)
71
+
1
72
  ### v3.2.0 / 2020-11-26
2
73
 
3
74
  [Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.1.0...v3.2.0)
data/Gemfile.lock CHANGED
@@ -1,29 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- brightbox-cli (3.2.0)
5
- dry-inflector (< 0.2)
6
- fog-brightbox (>= 1.3.0)
4
+ brightbox-cli (4.0.0)
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
 
15
15
  GEM
16
16
  remote: https://rubygems.org/
17
17
  specs:
18
- addressable (2.3.8)
18
+ addressable (2.8.0)
19
+ public_suffix (>= 2.0.2, < 5.0)
20
+ ast (2.4.2)
19
21
  builder (3.2.4)
20
- coderay (1.0.9)
21
- crack (0.4.2)
22
- safe_yaml (~> 1.0.0)
23
- diff-lcs (1.4.3)
24
- dry-inflector (0.1.2)
25
- excon (0.78.0)
26
- fog-brightbox (1.3.0)
22
+ coderay (1.1.3)
23
+ concurrent-ruby (1.1.10)
24
+ crack (0.4.5)
25
+ rexml
26
+ diff-lcs (1.5.0)
27
+ dry-inflector (0.2.0)
28
+ excon (0.92.4)
29
+ fog-brightbox (1.7.0)
27
30
  dry-inflector
28
31
  fog-core (>= 1.45, < 3.0)
29
32
  fog-json
@@ -34,44 +37,67 @@ GEM
34
37
  fog-json (1.2.0)
35
38
  fog-core
36
39
  multi_json (~> 1.10)
37
- formatador (0.2.5)
38
- gli (2.12.3)
40
+ formatador (0.3.0)
41
+ gli (2.21.0)
42
+ hashdiff (1.0.1)
39
43
  highline (1.6.21)
40
44
  hirb (0.7.3)
41
- i18n (0.6.11)
42
- metaclass (0.0.1)
43
- method_source (0.8.1)
45
+ i18n (1.10.0)
46
+ concurrent-ruby (~> 1.0)
47
+ method_source (1.0.0)
44
48
  mime-types (2.99.3)
45
- mocha (0.14.0)
46
- metaclass (~> 0.0.1)
49
+ mocha (1.14.0)
47
50
  multi_json (1.11.3)
48
- pry (0.9.12.2)
49
- coderay (~> 1.0.5)
50
- method_source (~> 0.8)
51
- 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)
52
57
  pry-remote (0.1.8)
53
58
  pry (~> 0.9)
54
59
  slop (~> 3.0)
55
- rake (12.3.3)
56
- rspec (3.9.0)
57
- rspec-core (~> 3.9.0)
58
- rspec-expectations (~> 3.9.0)
59
- rspec-mocks (~> 3.9.0)
60
- rspec-core (3.9.2)
61
- rspec-support (~> 3.9.3)
62
- rspec-expectations (3.9.2)
60
+ public_suffix (4.0.7)
61
+ rainbow (3.1.1)
62
+ rake (13.0.6)
63
+ regexp_parser (2.5.0)
64
+ rexml (3.2.5)
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)
63
72
  diff-lcs (>= 1.2.0, < 2.0)
64
- rspec-support (~> 3.9.0)
65
- rspec-mocks (3.9.1)
73
+ rspec-support (~> 3.11.0)
74
+ rspec-mocks (3.11.1)
66
75
  diff-lcs (>= 1.2.0, < 2.0)
67
- rspec-support (~> 3.9.0)
68
- rspec-support (3.9.3)
69
- safe_yaml (1.0.4)
70
- slop (3.4.5)
71
- vcr (2.5.0)
72
- webmock (1.21.0)
73
- 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)
74
99
  crack (>= 0.3.2)
100
+ hashdiff (>= 0.4.0, < 2.0.0)
75
101
 
76
102
  PLATFORMS
77
103
  ruby
@@ -82,8 +108,11 @@ DEPENDENCIES
82
108
  pry-remote
83
109
  rake
84
110
  rspec
111
+ rubocop
112
+ rubocop-rake
113
+ rubocop-rspec
85
114
  vcr (~> 2.5)
86
115
  webmock
87
116
 
88
117
  BUNDLED WITH
89
- 1.17.3
118
+ 2.1.4
data/README CHANGED
@@ -2,24 +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.
5
+ You will need a Brightbox account in order to make use of these tools.
7
6
 
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]
11
-
12
- == UPGRADE NOTES
13
-
14
- Version 1.0.0 adds a new top level `brightbox` command for the suite.
15
-
16
- This may clash with our `brightbox` (brightbox-deployment) gem which, before
17
- version 2.4.0, used `brightbox` as the name for it's binary. Please ensure you
18
- update your `brightbox` gem to avoid using the wrong command.
19
-
20
- We have included backwards compatible binaries for all the older CLI commands
21
- (brightbox-accounts, brightbox-servers etc...) but recommend getting used to the
22
- new form.
7
+ You can sign up at https://cloud.brightbox.com/signup
23
8
 
24
9
  == Installation instructions
25
10
 
@@ -36,7 +21,11 @@ For a list of available commands use:
36
21
 
37
22
  $ brightbox help
38
23
 
39
- To add client (account based) credentials use:
24
+ To login with your user credentials use:
25
+
26
+ $ brightbox login john@example.com
27
+
28
+ To instead add api client (account-specific) credentials use:
40
29
 
41
30
  $ brightbox config client_add cli-2igtb theclientsecret
42
31
  Using config file /home/ubuntu/.brightbox/config
@@ -49,7 +38,14 @@ To browse available resources use the resource name as the command:
49
38
  $ brightbox images
50
39
  ... List of images
51
40
 
52
- Command structure may be subject to change.
41
+ === Two factor authentication ===
42
+
43
+ If you've enabled two factor authentication for your user, you should be
44
+ prompted for a one time password (OTP) when it is required unless you have set
45
+ up a two factor helper (see below).
46
+
47
+ The previous configuration setting `two_factor` is no longer required when
48
+ using v4.0 or greater. This is ignored and can be removed.
53
49
 
54
50
  === Integrating with a password manager
55
51
 
@@ -64,6 +60,13 @@ appropriate section:
64
60
  username = john@example.com
65
61
  password_helper_command = pass john-example-com-brightbox
66
62
 
63
+ You can also specify a separate helper command to retrive two factor pins:
64
+
65
+ [john@example.com]
66
+ username = john@example.com
67
+ password_helper_command = pass john-example-com-brightbox
68
+ two_factor_helper_command = get-two-factor-pin john-example-com-brightbox
69
+
67
70
  === Using GPG to secure passwords
68
71
 
69
72
  If you use an OAuth application to access your accounts
@@ -94,7 +97,6 @@ The alias here is `main`. To prepare the password run this command:
94
97
  $ gpg --decrypt ~/.brightbox/main.password.gpg
95
98
  password!2015
96
99
  $ brightbox accounts
97
- INFO: client_id: app-12345 (main)
98
100
  INFO: Decrypting /home/user/.brightbox/main.password.gpg to obtain password
99
101
  gpg: encrypted with 2048-bit RSA key, ID ABCDE890, created 2015-01-01
100
102
  "Jason Null <gpg@example.com>"
@@ -108,11 +110,24 @@ incorrectly or there may be an issue with your GPG configuration.
108
110
 
109
111
  To remove the password delete the `~/.brightbox/main.password.gpg` file.
110
112
 
111
- == Usage guides
113
+ === Integrating with a password manager
112
114
 
113
- * http://docs.brightbox.com/reference/cli
114
- * http://brightbox.com
115
- * http://docs.brightbox.com/reference/api/
115
+ You can retrieve your passwords from an external password manager by specifying
116
+ a password helper command. This command will be executed any time your password
117
+ is required and its output used as your password.
118
+
119
+ Configure the command in your config file (usually ~/.brightbox/config) in the
120
+ appropriate section:
121
+
122
+ [john@example.com]
123
+ username = john@example.com
124
+ password_helper_command = pass john-example-com-brightbox
125
+
126
+
127
+ == Documentation
128
+
129
+ * https://www.brightbox.com/docs/guides/cli/
130
+ * http://www.brightbox.com/docs/reference/cli/
116
131
 
117
132
  == BASH Auto-completion
118
133
 
@@ -130,6 +145,24 @@ in the path, just specify the full path to it:
130
145
 
131
146
  complete -C /full/path/to/bin/_brightbox-bash-completer -o filenames brightbox
132
147
 
148
+ == UPGRADE NOTES
149
+
150
+ Version 4.0.0 removes the older, backward compatible binaries for users of the
151
+ original `brightbox` (brightbox-deployment) gem.
152
+
153
+ So `brightbox-servers` will no longer work. Use the subcommand variation
154
+ `brightbox servers` instead.
155
+
156
+ == Alternatives
157
+
158
+ There are a number of alternative ways to manage Brightbox resources:
159
+
160
+ * Control Panel - https://cloud.brightbox.com/
161
+ * Terraform – https://registry.terraform.io/providers/brightbox/brightbox/latest
162
+ * Kubernetes - https://github.com/brightbox/brightbox-cloud-controller-manager
163
+ * fog - https://github.com/fog/fog-brightbox
164
+ * Go - https://github.com/brightbox/gobrightbox
165
+
133
166
  == Testing
134
167
 
135
168
  You should be able to run the specs and features with the following steps:
@@ -140,15 +173,6 @@ You should be able to run the specs and features with the following steps:
140
173
  The specs use VCR to playback filtered recordings from real API sessions. This
141
174
  process is not perfect, please report an issue
142
175
 
143
- == Alternatives
144
-
145
- There are a number of alternative ways to interact with the Brightbox Cloud.
146
-
147
- * The Web GUI - https://manage.brightbox.com/
148
- * fog - https://github.com/fog/fog
149
- * knife plugin - https://github.com/rubiojr/knife-brightbox
150
- * Vagrant plugin - https://github.com/NeilW/vagrant-brightbox
151
-
152
176
  == Packaging
153
177
 
154
178
  === Vendoring libraries
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