brightbox-cli 3.3.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +1 -0
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.gitignore +1 -1
  5. data/.rubocop.yml +70 -0
  6. data/CHANGELOG.md +60 -0
  7. data/Gemfile.lock +74 -45
  8. data/Jenkinsfile +12 -32
  9. data/README +23 -32
  10. data/README.rdoc +1 -1
  11. data/brightbox-cli.gemspec +21 -34
  12. data/lib/brightbox-cli/accounts.rb +9 -11
  13. data/lib/brightbox-cli/api.rb +38 -36
  14. data/lib/brightbox-cli/cloud_ips.rb +8 -8
  15. data/lib/brightbox-cli/collaborating_account.rb +5 -5
  16. data/lib/brightbox-cli/collaboration.rb +1 -1
  17. data/lib/brightbox-cli/commands/accounts/{accept-invite.rb → accept_invite.rb} +2 -6
  18. data/lib/brightbox-cli/commands/accounts/default.rb +1 -2
  19. data/lib/brightbox-cli/commands/accounts/list.rb +6 -8
  20. data/lib/brightbox-cli/commands/accounts/remove.rb +2 -6
  21. data/lib/brightbox-cli/commands/accounts/{reset-ftp-password.rb → reset_ftp_password.rb} +6 -9
  22. data/lib/brightbox-cli/commands/accounts/show.rb +10 -13
  23. data/lib/brightbox-cli/commands/cloudips/create.rb +2 -5
  24. data/lib/brightbox-cli/commands/cloudips/destroy.rb +10 -14
  25. data/lib/brightbox-cli/commands/cloudips/list.rb +0 -2
  26. data/lib/brightbox-cli/commands/cloudips/map.rb +10 -13
  27. data/lib/brightbox-cli/commands/cloudips/show.rb +11 -14
  28. data/lib/brightbox-cli/commands/cloudips/unmap.rb +2 -4
  29. data/lib/brightbox-cli/commands/cloudips/update.rb +2 -4
  30. data/lib/brightbox-cli/commands/collaborations.rb +2 -3
  31. data/lib/brightbox-cli/commands/config/{client-add.rb → client_add.rb} +0 -3
  32. data/lib/brightbox-cli/commands/config/client_default.rb +18 -0
  33. data/lib/brightbox-cli/commands/config/{client-list.rb → client_list.rb} +1 -4
  34. data/lib/brightbox-cli/commands/config/{client-remove.rb → client_remove.rb} +0 -3
  35. data/lib/brightbox-cli/commands/config/{user-add.rb → user_add.rb} +1 -4
  36. data/lib/brightbox-cli/commands/firewall/{policies-apply.rb → policies_apply.rb} +2 -2
  37. data/lib/brightbox-cli/commands/firewall/{policies-create.rb → policies_create.rb} +2 -4
  38. data/lib/brightbox-cli/commands/firewall/{policies-destroy.rb → policies_destroy.rb} +0 -3
  39. data/lib/brightbox-cli/commands/firewall/{policies-list.rb → policies_list.rb} +0 -2
  40. data/lib/brightbox-cli/commands/firewall/{policies-remove.rb → policies_remove.rb} +2 -2
  41. data/lib/brightbox-cli/commands/firewall/{policies-show.rb → policies_show.rb} +6 -8
  42. data/lib/brightbox-cli/commands/firewall/{policies-update.rb → policies_update.rb} +2 -4
  43. data/lib/brightbox-cli/commands/firewall/{rules-create.rb → rules_create.rb} +6 -8
  44. data/lib/brightbox-cli/commands/firewall/{rules-destroy.rb → rules_destroy.rb} +0 -2
  45. data/lib/brightbox-cli/commands/firewall/{rules-list.rb → rules_list.rb} +0 -2
  46. data/lib/brightbox-cli/commands/firewall/{rules-show.rb → rules_show.rb} +7 -9
  47. data/lib/brightbox-cli/commands/firewall/{rules-update.rb → rules_update.rb} +7 -8
  48. data/lib/brightbox-cli/commands/groups/{add-server.rb → add_server.rb} +0 -2
  49. data/lib/brightbox-cli/commands/groups/create.rb +2 -3
  50. data/lib/brightbox-cli/commands/groups/destroy.rb +0 -2
  51. data/lib/brightbox-cli/commands/groups/list.rb +0 -1
  52. data/lib/brightbox-cli/commands/groups/move_servers.rb +2 -3
  53. data/lib/brightbox-cli/commands/groups/{remove-servers.rb → remove_servers.rb} +2 -4
  54. data/lib/brightbox-cli/commands/groups/show.rb +0 -2
  55. data/lib/brightbox-cli/commands/groups/update.rb +2 -3
  56. data/lib/brightbox-cli/commands/images/destroy.rb +0 -4
  57. data/lib/brightbox-cli/commands/images/list.rb +3 -5
  58. data/lib/brightbox-cli/commands/images/register.rb +9 -17
  59. data/lib/brightbox-cli/commands/images/show.rb +19 -20
  60. data/lib/brightbox-cli/commands/images/update.rb +12 -8
  61. data/lib/brightbox-cli/commands/lbs/{add-nodes.rb → add_nodes.rb} +0 -3
  62. data/lib/brightbox-cli/commands/lbs/create.rb +5 -7
  63. data/lib/brightbox-cli/commands/lbs/destroy.rb +0 -3
  64. data/lib/brightbox-cli/commands/lbs/list.rb +0 -1
  65. data/lib/brightbox-cli/commands/lbs/{remove-nodes.rb → remove_nodes.rb} +0 -3
  66. data/lib/brightbox-cli/commands/lbs/show.rb +20 -22
  67. data/lib/brightbox-cli/commands/lbs/update.rb +6 -9
  68. data/lib/brightbox-cli/commands/login.rb +13 -12
  69. data/lib/brightbox-cli/commands/servers/{activate-console.rb → activate_console.rb} +2 -5
  70. data/lib/brightbox-cli/commands/servers/create.rb +32 -26
  71. data/lib/brightbox-cli/commands/servers/destroy.rb +0 -3
  72. data/lib/brightbox-cli/commands/servers/list.rb +4 -5
  73. data/lib/brightbox-cli/commands/servers/show.rb +0 -2
  74. data/lib/brightbox-cli/commands/servers/shutdown.rb +0 -3
  75. data/lib/brightbox-cli/commands/servers/snapshot.rb +0 -4
  76. data/lib/brightbox-cli/commands/servers/start.rb +0 -4
  77. data/lib/brightbox-cli/commands/servers/stop.rb +0 -3
  78. data/lib/brightbox-cli/commands/servers/update.rb +5 -5
  79. data/lib/brightbox-cli/commands/sql/instances_create.rb +3 -6
  80. data/lib/brightbox-cli/commands/sql/instances_destroy.rb +0 -2
  81. data/lib/brightbox-cli/commands/sql/instances_list.rb +7 -9
  82. data/lib/brightbox-cli/commands/sql/instances_reset_password.rb +0 -1
  83. data/lib/brightbox-cli/commands/sql/instances_show.rb +0 -3
  84. data/lib/brightbox-cli/commands/sql/instances_snapshot.rb +0 -3
  85. data/lib/brightbox-cli/commands/sql/instances_update.rb +1 -3
  86. data/lib/brightbox-cli/commands/sql/snapshots_destroy.rb +0 -3
  87. data/lib/brightbox-cli/commands/sql/snapshots_list.rb +7 -9
  88. data/lib/brightbox-cli/commands/sql/snapshots_show.rb +12 -15
  89. data/lib/brightbox-cli/commands/sql/snapshots_update.rb +1 -3
  90. data/lib/brightbox-cli/commands/sql/types.rb +8 -15
  91. data/lib/brightbox-cli/commands/token.rb +0 -1
  92. data/lib/brightbox-cli/commands/types.rb +8 -14
  93. data/lib/brightbox-cli/commands/{user-collaborations.rb → user_collaborations.rb} +7 -8
  94. data/lib/brightbox-cli/commands/users/list.rb +0 -2
  95. data/lib/brightbox-cli/commands/users/show.rb +1 -3
  96. data/lib/brightbox-cli/commands/users/update.rb +3 -6
  97. data/lib/brightbox-cli/commands/zones.rb +7 -10
  98. data/lib/brightbox-cli/config/accounts.rb +18 -26
  99. data/lib/brightbox-cli/config/api_client.rb +12 -16
  100. data/lib/brightbox-cli/config/authentication_tokens.rb +39 -42
  101. data/lib/brightbox-cli/config/cache.rb +1 -0
  102. data/lib/brightbox-cli/config/clients.rb +8 -8
  103. data/lib/brightbox-cli/config/gpg_encrypted_passwords.rb +6 -8
  104. data/lib/brightbox-cli/config/password_helper.rb +33 -8
  105. data/lib/brightbox-cli/config/sections.rb +45 -29
  106. data/lib/brightbox-cli/config/two_factor_auth.rb +12 -14
  107. data/lib/brightbox-cli/config/two_factor_helper.rb +5 -7
  108. data/lib/brightbox-cli/config/user_application.rb +18 -18
  109. data/lib/brightbox-cli/config.rb +26 -23
  110. data/lib/brightbox-cli/connection_manager.rb +4 -2
  111. data/lib/brightbox-cli/database_server.rb +28 -29
  112. data/lib/brightbox-cli/database_snapshot.rb +1 -1
  113. data/lib/brightbox-cli/database_type.rb +6 -6
  114. data/lib/brightbox-cli/detailed_server.rb +43 -43
  115. data/lib/brightbox-cli/detailed_server_group.rb +1 -1
  116. data/lib/brightbox-cli/error_parser.rb +9 -9
  117. data/lib/brightbox-cli/firewall_policy.rb +2 -1
  118. data/lib/brightbox-cli/firewall_rule.rb +3 -3
  119. data/lib/brightbox-cli/firewall_rules.rb +3 -3
  120. data/lib/brightbox-cli/gli_global_hooks.rb +25 -27
  121. data/lib/brightbox-cli/images.rb +14 -12
  122. data/lib/brightbox-cli/load_balancers.rb +3 -6
  123. data/lib/brightbox-cli/logging.rb +14 -14
  124. data/lib/brightbox-cli/nilable_hash.rb +1 -1
  125. data/lib/brightbox-cli/ruby_core_ext.rb +3 -3
  126. data/lib/brightbox-cli/server_groups.rb +2 -2
  127. data/lib/brightbox-cli/servers.rb +6 -6
  128. data/lib/brightbox-cli/tables.rb +13 -15
  129. data/lib/brightbox-cli/types.rb +6 -6
  130. data/lib/brightbox-cli/user_collaboration.rb +5 -7
  131. data/lib/brightbox-cli/users.rb +1 -1
  132. data/lib/brightbox-cli/version.rb +1 -1
  133. data/lib/brightbox-cli/zones.rb +1 -1
  134. data/lib/brightbox_cli.rb +33 -33
  135. data/locales/en.yml +2 -0
  136. data/spec/brightbox_spec.rb +0 -1
  137. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_a_collection_of_Accounts.yml +5 -5
  138. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_resources_on_the_same_connection.yml +2 -2
  139. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_a_collection_of_Accounts.yml +4 -4
  140. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_resources_on_the_same_connection.yml +2 -2
  141. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_false/does_not_update_the_config_file.yml +12 -12
  142. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_true/does_not_update_the_config_file.yml +12 -12
  143. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_changes_to_the_config_file.yml +2 -2
  144. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_default_account.yml +2 -2
  145. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_new_client_as_the_default.yml +2 -2
  146. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_is_not_authenticated/does_not_raise_an_error.yml +8 -8
  147. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_may_access_one_account/updates_the_setting.yml +8 -8
  148. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_config_in_use_is_not_the_default/uses_correct_credentials.yml +1 -1
  149. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_a_cached_refresh_token/caches_the_new_tokens.yml +1 -1
  150. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_an_expired_refresh_token/caches_the_new_tokens.yml +2 -2
  151. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/caches_the_new_tokens.yml +1 -1
  152. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/prompts_user_to_retry_command.yml +1 -1
  153. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_an_API_client_with_no_tokens/caches_a_new_access_token.yml +1 -1
  154. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/does_not_alter_the_configuration.yml +6 -6
  155. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_access_token.yml +6 -6
  156. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_refresh_token.yml +6 -6
  157. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/does_not_alter_the_configuration.yml +6 -6
  158. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_access_token.yml +6 -6
  159. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_refresh_token.yml +6 -6
  160. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/does_not_alter_the_configuration.yml +9 -9
  161. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_access_token.yml +9 -9
  162. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_refresh_token.yml +9 -9
  163. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/creates_the_configuration.yml +6 -6
  164. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/refreshed_tokens.yml +6 -6
  165. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/creates_the_configuration.yml +6 -6
  166. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/refreshed_tokens.yml +6 -6
  167. data/spec/cassettes/Brightbox_CloudIP/_find_all_/when_a_Cloud_IP_exists/returns_a_suitable.yml +15 -15
  168. data/spec/cassettes/Brightbox_FirewallPolicy/_apply_to/should_apply_firewall_policy.yml +14 -14
  169. data/spec/cassettes/Brightbox_FirewallPolicy/_create/should_create_firewall_policy.yml +14 -14
  170. data/spec/cassettes/Brightbox_FirewallPolicy/_destroy/should_destroy_firewall_policy.yml +16 -16
  171. data/spec/cassettes/Brightbox_FirewallPolicy/_find_all_/when_a_policy_exists/should_list_firewall_policy.yml +13 -13
  172. data/spec/cassettes/Brightbox_FirewallPolicy/_find_or_call/when_a_policy_exists/should_show_firewall_policy.yml +11 -11
  173. data/spec/cassettes/Brightbox_FirewallRule/_create/when_policy_exists/creates_the_rule_successfully.yml +14 -14
  174. data/spec/cassettes/Brightbox_FirewallRule/_destroy/when_rule_exists/destroys_a_rule.yml +12 -12
  175. data/spec/cassettes/Brightbox_FirewallRule/_find/when_rule_exists/can_display_the_result.yml +14 -14
  176. data/spec/cassettes/Brightbox_FirewallRule/_from_policy/when_policy_exists_with_a_rule/lists_all_rules.yml +19 -19
  177. data/spec/cassettes/Brightbox_Server/_destroy/when_server_exists/should_work.yml +12 -12
  178. data/spec/cassettes/Brightbox_Server/_find_all_/when_a_server_exists/should_print_server_list.yml +15 -15
  179. data/spec/cassettes/Brightbox_Server/_show/when_server_exists/shows_detailed_attributes_of_a_server.yml +18 -18
  180. data/spec/cassettes/Brightbox_Server/_shutdown/should_work.yml +18 -18
  181. data/spec/cassettes/Brightbox_Server/_start/should_work.yml +24 -24
  182. data/spec/cassettes/Brightbox_Server/_stop/should_work.yml +18 -18
  183. data/spec/cassettes/Brightbox_Server/_update/when_passing_new_group_membership/should_update_with_group.yml +22 -22
  184. data/spec/cassettes/Brightbox_ServerGroup/_find_all_/when_a_group_exists/list_server_groups.yml +13 -13
  185. data/spec/cassettes/Firewall_policies/update/when_the_policy_does_not_exist/prints_error_to_STDERR.yml +3 -3
  186. data/spec/cassettes/brightbox_accounts/list/_when_access_token_expired_/does_not_report_invalid_token_errors.yml +30 -30
  187. data/spec/cassettes/brightbox_accounts/list/_when_both_tokens_expired_/does_not_report_invalid_token_errors.yml +9 -9
  188. data/spec/cassettes/brightbox_accounts/list/_when_invalid_tokens_/does_not_report_invalid_token_errors.yml +9 -9
  189. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/does_not_report_invalid_token_errors.yml +27 -27
  190. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/reports_they_were_updated.yml +7 -7
  191. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/does_not_report_invalid_token_errors.yml +7 -7
  192. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/reports_unable_to_authenticate.yml +6 -6
  193. data/spec/cassettes/brightbox_accounts/list/does_not_error.yml +3 -3
  194. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_a_server_ID/passes_the_interface_identifier_to_the_API.yml +12 -12
  195. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_another_value/passes_the_identifier_to_the_API.yml +7 -7
  196. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/does_not_error.yml +7 -7
  197. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/sets_up_the_config.yml +7 -7
  198. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_change_the_default_client.yml +7 -7
  199. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_error.yml +7 -7
  200. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +7 -7
  201. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +7 -7
  202. data/spec/cassettes/brightbox_config/user_add/when_NO_config_file_on_disk/sets_up_the_config.yml +5 -5
  203. data/spec/cassettes/brightbox_config/user_add/when_a_default_client_is_already_set/does_not_change_the_default_client.yml +2 -2
  204. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/does_not_error.yml +2 -2
  205. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/sets_up_the_config.yml +2 -2
  206. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/display_an_warning_about_preselected_default.yml +2 -2
  207. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/does_not_error.yml +2 -2
  208. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/selects_the_active_account_for_the_default.yml +2 -2
  209. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/sets_up_the_config.yml +2 -2
  210. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/display_an_warning_about_preselected_default.yml +2 -2
  211. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/does_not_error.yml +2 -2
  212. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/sets_up_the_config.yml +2 -2
  213. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_error.yml +2 -2
  214. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_prompt_to_rerun_the_command.yml +2 -2
  215. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/requests_access_tokens.yml +2 -2
  216. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +2 -2
  217. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +5 -5
  218. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_error.yml +2 -2
  219. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_prompt_to_rerun_the_command.yml +2 -2
  220. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/requests_access_tokens.yml +2 -2
  221. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/sets_up_the_config.yml +3 -3
  222. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/does_not_error.yml +2 -2
  223. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/requests_access_tokens.yml +2 -2
  224. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/sets_up_the_config.yml +2 -2
  225. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_error.yml +6 -6
  226. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  227. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/prompts_for_the_password.yml +6 -6
  228. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/requests_access_tokens.yml +6 -6
  229. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/sets_up_the_config.yml +6 -6
  230. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_error.yml +6 -6
  231. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  232. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/prompts_for_the_password.yml +6 -6
  233. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/requests_access_tokens.yml +6 -6
  234. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/sets_up_the_config.yml +6 -6
  235. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_error.yml +3 -3
  236. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_prompt_to_rerun_the_command.yml +3 -3
  237. data/spec/cassettes/brightbox_login/when_default_account_is_passed/prompts_for_the_password.yml +3 -3
  238. data/spec/cassettes/brightbox_login/when_default_account_is_passed/requests_access_tokens.yml +3 -3
  239. data/spec/cassettes/brightbox_login/when_default_account_is_passed/sets_up_the_config.yml +3 -3
  240. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_error.yml +6 -6
  241. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_prompt_to_rerun_the_command.yml +6 -6
  242. data/spec/cassettes/brightbox_login/when_no_config_is_present/requests_access_tokens.yml +6 -6
  243. data/spec/cassettes/brightbox_login/when_no_config_is_present/sets_up_the_config.yml +6 -6
  244. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_error.yml +6 -6
  245. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  246. data/spec/cassettes/brightbox_login/when_no_password_is_given/prompts_for_the_password.yml +6 -6
  247. data/spec/cassettes/brightbox_login/when_no_password_is_given/requests_access_tokens.yml +6 -6
  248. data/spec/cassettes/brightbox_login/when_no_password_is_given/sets_up_the_config.yml +6 -6
  249. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_10_0_0_0/correctly_sends_API_parameters.yml +313 -26
  250. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_srv-12345_grp-12345/correctly_sends_API_parameters.yml +1204 -38
  251. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql/correctly_sends_API_parameters.yml +596 -26
  252. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_5_6/correctly_sends_API_parameters.yml +63 -9
  253. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_8_0/correctly_sends_API_parameters.yml +393 -0
  254. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_5_--maintenance_hour_11/correctly_sends_API_parameters.yml +393 -0
  255. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_thursday/correctly_sends_API_parameters.yml +393 -0
  256. data/spec/cassettes/brightbox_sql_instances/create/--snapshot_dbi-12345/includes_schedule_fields_in_response.yml +1466 -0
  257. data/spec/cassettes/brightbox_sql_instances/create/--snapshots-schedule_0_12_4_/includes_schedule_fields_in_response.yml +342 -0
  258. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_password.yml +541 -26
  259. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_username.yml +484 -26
  260. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_active/correctly_sends_API_parameters.yml +4 -4
  261. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_can_not_be_snapshotted/reports_an_error_to_the_user.yml +2 -2
  262. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/does_not_output_to_stderr.yml +2 -2
  263. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/outputs_table_details_to_stdout.yml +2 -2
  264. data/spec/cassettes/brightbox_sql_snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +2 -2
  265. data/spec/commands/accounts/default_spec.rb +1 -2
  266. data/spec/commands/accounts/list_spec.rb +7 -8
  267. data/spec/commands/accounts/reset_ftp_password_spec.rb +1 -2
  268. data/spec/commands/accounts/show_spec.rb +1 -2
  269. data/spec/commands/cloudips/create_spec.rb +1 -2
  270. data/spec/commands/cloudips/destroy_spec.rb +1 -2
  271. data/spec/commands/cloudips/list_spec.rb +1 -2
  272. data/spec/commands/cloudips/map_spec.rb +2 -3
  273. data/spec/commands/cloudips/show_spec.rb +1 -2
  274. data/spec/commands/cloudips/unmap_spec.rb +1 -2
  275. data/spec/commands/cloudips/update_spec.rb +7 -8
  276. data/spec/commands/config/client_add_spec.rb +2 -3
  277. data/spec/commands/config/client_default_spec.rb +1 -2
  278. data/spec/commands/config/client_list_spec.rb +1 -2
  279. data/spec/commands/config/client_remove_spec.rb +1 -2
  280. data/spec/commands/config/user_add_spec.rb +3 -4
  281. data/spec/commands/firewall_policies/update_spec.rb +3 -3
  282. data/spec/commands/groups/add_server_spec.rb +1 -2
  283. data/spec/commands/groups/create_spec.rb +1 -2
  284. data/spec/commands/groups/destroy_spec.rb +1 -2
  285. data/spec/commands/groups/list_spec.rb +1 -2
  286. data/spec/commands/groups/move_servers_spec.rb +1 -2
  287. data/spec/commands/groups/remove_servers_spec.rb +1 -2
  288. data/spec/commands/groups/show_spec.rb +1 -2
  289. data/spec/commands/groups/update_spec.rb +1 -2
  290. data/spec/commands/images/destroy_spec.rb +1 -2
  291. data/spec/commands/images/list_spec.rb +62 -63
  292. data/spec/commands/images/locking_spec.rb +4 -4
  293. data/spec/commands/images/register_spec.rb +89 -3
  294. data/spec/commands/images/show_spec.rb +56 -4
  295. data/spec/commands/images/update_spec.rb +53 -3
  296. data/spec/commands/lbs/add_nodes_spec.rb +1 -2
  297. data/spec/commands/lbs/create_spec.rb +2 -3
  298. data/spec/commands/lbs/destroy_spec.rb +1 -2
  299. data/spec/commands/lbs/list_spec.rb +1 -2
  300. data/spec/commands/lbs/locking_spec.rb +4 -4
  301. data/spec/commands/lbs/remove_nodes_spec.rb +1 -2
  302. data/spec/commands/lbs/show_spec.rb +1 -2
  303. data/spec/commands/lbs/update_spec.rb +3 -4
  304. data/spec/commands/login_spec.rb +134 -30
  305. data/spec/commands/policies/apply_spec.rb +1 -2
  306. data/spec/commands/policies/create_spec.rb +1 -2
  307. data/spec/commands/policies/destroy_spec.rb +1 -2
  308. data/spec/commands/policies/list_spec.rb +1 -2
  309. data/spec/commands/policies/remove_spec.rb +1 -2
  310. data/spec/commands/policies/show_spec.rb +1 -2
  311. data/spec/commands/policies/update_spec.rb +1 -2
  312. data/spec/commands/rules/create_spec.rb +1 -2
  313. data/spec/commands/rules/destroy_spec.rb +1 -2
  314. data/spec/commands/rules/list_spec.rb +1 -2
  315. data/spec/commands/rules/show_spec.rb +1 -2
  316. data/spec/commands/rules/update_spec.rb +1 -2
  317. data/spec/commands/servers/activate_console_spec.rb +1 -2
  318. data/spec/commands/servers/create_spec.rb +112 -10
  319. data/spec/commands/servers/destroy_spec.rb +1 -2
  320. data/spec/commands/servers/list_spec.rb +1 -2
  321. data/spec/commands/servers/locking_spec.rb +4 -4
  322. data/spec/commands/servers/reboot_spec.rb +3 -4
  323. data/spec/commands/servers/reset_spec.rb +3 -4
  324. data/spec/commands/servers/show_spec.rb +1 -2
  325. data/spec/commands/servers/shutdown_spec.rb +1 -2
  326. data/spec/commands/servers/snapshot_spec.rb +1 -2
  327. data/spec/commands/servers/start_spec.rb +1 -2
  328. data/spec/commands/servers/stop_spec.rb +1 -2
  329. data/spec/commands/servers/update_spec.rb +1 -2
  330. data/spec/commands/sql/instances/create_spec.rb +58 -75
  331. data/spec/commands/sql/instances/locking_spec.rb +4 -4
  332. data/spec/commands/sql/instances/show_spec.rb +7 -7
  333. data/spec/commands/sql/instances/snapshot_spec.rb +2 -2
  334. data/spec/commands/sql/instances/update_spec.rb +8 -8
  335. data/spec/commands/sql/snapshots/list_spec.rb +1 -1
  336. data/spec/commands/sql/snapshots/locking_spec.rb +4 -4
  337. data/spec/commands/sql/snapshots/show_spec.rb +1 -1
  338. data/spec/commands/sql/types/list_spec.rb +1 -2
  339. data/spec/commands/types/list_spec.rb +1 -2
  340. data/spec/commands/users/list_spec.rb +1 -2
  341. data/spec/commands/users/show_spec.rb +1 -2
  342. data/spec/commands/users/update_spec.rb +1 -2
  343. data/spec/commands/zones/list_spec.rb +1 -2
  344. data/spec/configs/api_client.ini +1 -1
  345. data/spec/configs/user_app.ini +2 -2
  346. data/spec/spec_helper.rb +16 -3
  347. data/spec/support/authentication_helpers.rb +98 -0
  348. data/spec/support/config_helpers.rb +2 -4
  349. data/spec/support/password_prompt_helpers.rb +22 -1
  350. data/spec/support/server_helper.rb +5 -5
  351. data/spec/support/tmp_config.rb +1 -1
  352. data/spec/support/token_helpers.rb +2 -2
  353. data/spec/support/vcr.rb +3 -22
  354. data/spec/unit/brightbox/api/created_on_spec.rb +2 -2
  355. data/spec/unit/brightbox/api/fog_model_spec.rb +13 -13
  356. data/spec/unit/brightbox/api/klass_name_spec.rb +0 -1
  357. data/spec/unit/brightbox/api/method_missing_spec.rb +64 -0
  358. data/spec/unit/brightbox/api/require_account_spec.rb +0 -1
  359. data/spec/unit/brightbox/api/respond_to_spec.rb +71 -0
  360. data/spec/unit/brightbox/bb_config/access_token_filename_spec.rb +0 -1
  361. data/spec/unit/brightbox/bb_config/account_spec.rb +0 -1
  362. data/spec/unit/brightbox/bb_config/add_login_spec.rb +27 -28
  363. data/spec/unit/brightbox/bb_config/add_section_spec.rb +1 -2
  364. data/spec/unit/brightbox/bb_config/clear_default_client_spec.rb +0 -1
  365. data/spec/unit/brightbox/bb_config/client_id_spec.rb +0 -1
  366. data/spec/unit/brightbox/bb_config/client_name_spec.rb +0 -1
  367. data/spec/unit/brightbox/bb_config/config_directory_exists_spec.rb +0 -1
  368. data/spec/unit/brightbox/bb_config/config_directory_spec.rb +0 -1
  369. data/spec/unit/brightbox/bb_config/config_spec.rb +2 -3
  370. data/spec/unit/brightbox/bb_config/default_account_spec.rb +0 -1
  371. data/spec/unit/brightbox/bb_config/default_client_spec.rb +0 -1
  372. data/spec/unit/brightbox/bb_config/delete_section_spec.rb +0 -1
  373. data/spec/unit/brightbox/bb_config/find_or_set_default_account_spec.rb +4 -4
  374. data/spec/unit/brightbox/bb_config/refresh_token_filename_spec.rb +0 -1
  375. data/spec/unit/brightbox/bb_config/renew_tokens_spec.rb +3 -4
  376. data/spec/unit/brightbox/bb_config/save_default_account_spec.rb +0 -1
  377. data/spec/unit/brightbox/bb_config/save_spec.rb +0 -1
  378. data/spec/unit/brightbox/bb_config/section_names_spec.rb +1 -1
  379. data/spec/unit/brightbox/bb_config/to_fog_spec.rb +2 -2
  380. data/spec/unit/brightbox/collaborating_account/to_row_spec.rb +3 -3
  381. data/spec/unit/brightbox/config/api_client/to_fog_spec.rb +8 -8
  382. data/spec/unit/brightbox/config/api_client/valid_spec.rb +4 -4
  383. data/spec/unit/brightbox/config/discover_two_factor_pin_spec.rb +87 -0
  384. data/spec/unit/brightbox/config/section_name_deduplicator_spec.rb +1 -1
  385. data/spec/unit/brightbox/config/user_application/to_fog_spec.rb +10 -10
  386. data/spec/unit/brightbox/config/user_application/valid_spec.rb +3 -3
  387. data/spec/unit/brightbox/connection_manager/fetch_connection_spec.rb +1 -1
  388. data/spec/unit/brightbox/database_server/clean_arguments_spec.rb +1 -2
  389. data/spec/unit/brightbox/database_server/maintenance_window_spec.rb +0 -1
  390. data/spec/unit/brightbox/error_parser/pretty_print_spec.rb +0 -1
  391. data/spec/unit/brightbox/firewall_policy/apply_to_spec.rb +0 -1
  392. data/spec/unit/brightbox/firewall_policy/create_spec.rb +0 -1
  393. data/spec/unit/brightbox/firewall_policy/find_or_call_spec.rb +0 -1
  394. data/spec/unit/brightbox/firewall_policy/find_spec.rb +0 -1
  395. data/spec/unit/brightbox/firewall_rule/find_spec.rb +9 -9
  396. data/spec/unit/brightbox/firewall_rule/from_policy_spec.rb +4 -4
  397. data/spec/unit/brightbox/legacy/args_adjuster_spec.rb +20 -21
  398. data/spec/unit/brightbox/server/create_spec.rb +1 -2
  399. data/spec/unit/brightbox/server/start_spec.rb +2 -2
  400. data/spec/unit/brightbox/server/update_spec.rb +0 -1
  401. data/spec/unit/brightbox/user_collaboration/remove_spec.rb +0 -1
  402. data/spec/unit/nilable_hash_spec.rb +5 -5
  403. data/spec/unit/ruby_core_ext_spec.rb +3 -4
  404. data/spec/unit/temporary_home_spec.rb +1 -1
  405. data/spec/unit/tmp_config_spec.rb +0 -1
  406. metadata +131 -99
  407. data/bin/brightbox-accounts +0 -13
  408. data/bin/brightbox-cloudips +0 -13
  409. data/bin/brightbox-config +0 -13
  410. data/bin/brightbox-firewall-policies +0 -13
  411. data/bin/brightbox-firewall-rules +0 -13
  412. data/bin/brightbox-groups +0 -13
  413. data/bin/brightbox-images +0 -13
  414. data/bin/brightbox-lbs +0 -13
  415. data/bin/brightbox-servers +0 -13
  416. data/bin/brightbox-types +0 -13
  417. data/bin/brightbox-users +0 -13
  418. data/bin/brightbox-zones +0 -13
  419. data/lib/brightbox-cli/commands/config/client-default.rb +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 881d758fc2932375edc56797f613f757a7f83729087cf2335a44736f4554fe1d
4
- data.tar.gz: cfb933331637277089d47a0feccf9456e18b45f0a248aa27f233c52f24ba2f61
3
+ metadata.gz: fc36c35cb32073368b55abc445d0720ce2e635336e1c3b8af4ef9e1dcedc0000
4
+ data.tar.gz: '0351935cba15d3c1503c1e8c44d7d4f5258d3d07f67700d363a5b043e58e287e'
5
5
  SHA512:
6
- metadata.gz: a7b28703cc70a953b900f0caabaf036ff78c1e914810fcba9523b7f8b44ae5c7d148ee09f08d073d71449b587024f7d64ead1f88a659c3a2d2a52c502134d23a
7
- data.tar.gz: ea62fcbe6b909e8b7cb8744da7acacd50c75bcb0c109fada221ef135ff1c1ac0d88dc01d8975ef3a8068c75e86956ce244ab88abc641e2dc3d79ed474502e59d
6
+ metadata.gz: e230034d8c611139a5ed70b1508f1aef3ff3dd263e8f8f53acd58aad72c0616bdcfd5c44ae267e1fa27be66c7958e25e7de986f9169e29c484a47f4b5ceb1e0b
7
+ data.tar.gz: c4672a3f3efcb30390a6fb536d2542c36988fbb1ba82b5fa59d6dfa1f58868d5518e36ac48f54d9987294b0de46531f0c9b8cb383d21817631a0436008d3e825
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,63 @@
1
+ ### v4.1.0 / 2022-08-01
2
+
3
+ [Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v4.0.0...v4.1.0)
4
+
5
+ Changes:
6
+
7
+ * Add `volume-size` to `servers create` to allow passing of arbitary sizes for network based storage types.
8
+
9
+ ### v4.0.0 / 2022-08-01
10
+
11
+ [Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.3.0...v4.0.0)
12
+
13
+ Backwards incompatible changes:
14
+
15
+ * Drop support for Ruby versions older than 2.5
16
+ * Update `Gemfile.lock` to use Bundler 2.1.4
17
+ * Remove hypenated versions of sub commands. For example `brightbox-servers`
18
+ wrapping `brightbox servers`.
19
+
20
+ Changes:
21
+
22
+ * Improved Two Factor Authentication (2FA) support resulting in it working
23
+ automatically without configuration prompting when required. The `two_factor`
24
+ configuration setting is now ignored
25
+ * The `brightbox login` command will now work when 2FA is enabled for a user
26
+ * Adds Ruby 3.1 and 3.2 (preview) to testing matrix
27
+ * Update `fog-brightbox` to `v1.7.0`
28
+ * Removed references to `Fixnum` from code and dependencies to allow
29
+ testing of Ruby 3.2 support
30
+ * Updates `webmock` from 1.21.0 to 3.14.0
31
+ * Removes `rubyforge` reference from gemspec to remove deprecation warning
32
+ * Remove post install message from gemspec
33
+ * Update `gli` to latest version v2.21.0 to clear some deprecations seen under
34
+ later Ruby versions
35
+ * Update development gems to ensure up to date
36
+ * Change `client_id` logging level from info to debug
37
+ * Setup Rubocop to help improve code quality/consistency
38
+ * Updated code based on Rubocop reports resulting in many changes
39
+ * Pin `dry-inflector` to v0.2.0 to prevent issues with Ruby =< 2.5
40
+ * Add support for `min-ram` to `brightbox images` commands
41
+ * Update authors (and emails) in gemspec
42
+
43
+ Bug fixes:
44
+
45
+ * Implement `Brightbox::Api#respond_to_missing?` to avoid issues when
46
+ delegating made `#respond_to?` raise an error
47
+ * `brightbox login` no longer attempts (and fails) to download accounts when
48
+ authentication has failed
49
+
50
+ Testing:
51
+
52
+ * Updated testing/development gems
53
+ * Update VCR to latest release v2.9.3
54
+ * Remove VCR identifier sanitisation as temp dev instance are used and
55
+ squashing IDs cause bug when chain/multiple requests combined
56
+ * RSpec is configured to allow re-runs
57
+ * Timeout testing is dropped to 10s
58
+ * Updated `.dev` TLD used in testing to `.localhost` to avoid problems when the
59
+ original was commercialised such as local DNS blocked by browsers.
60
+
1
61
  ### v3.3.0 / 2021-09-17
2
62
 
3
63
  [Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.2.0...v3.3.0)
data/Gemfile.lock CHANGED
@@ -1,30 +1,32 @@
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.1.0)
5
+ dry-inflector (= 0.2.0)
6
+ fog-brightbox (>= 1.8.0)
7
7
  fog-core (< 2.0)
8
- gli (~> 2.12.0)
9
- highline (~> 1.6.0)
8
+ gli (~> 2.21)
9
+ highline (~> 1.6)
10
10
  hirb (~> 0.6)
11
- i18n (~> 0.6.0)
12
- mime-types (~> 2.6)
13
- multi_json (~> 1.11.0)
11
+ i18n (>= 0.6, < 1.11)
12
+ mime-types (~> 3.0)
13
+ multi_json (~> 1.11)
14
14
 
15
15
  GEM
16
16
  remote: https://rubygems.org/
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.8.0)
28
30
  dry-inflector
29
31
  fog-core (>= 1.45, < 3.0)
30
32
  fog-json
@@ -35,45 +37,69 @@ 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
- highline (1.6.21)
40
+ formatador (0.3.0)
41
+ gli (2.21.0)
42
+ hashdiff (1.0.1)
43
+ highline (1.7.10)
41
44
  hirb (0.7.3)
42
- i18n (0.6.11)
43
- metaclass (0.0.1)
44
- method_source (0.8.1)
45
- mime-types (2.99.3)
46
- mocha (0.14.0)
47
- metaclass (~> 0.0.1)
48
- 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)
45
+ i18n (1.10.0)
46
+ concurrent-ruby (~> 1.0)
47
+ method_source (1.0.0)
48
+ mime-types (3.4.1)
49
+ mime-types-data (~> 3.2015)
50
+ mime-types-data (3.2022.0105)
51
+ mocha (1.14.0)
52
+ multi_json (1.15.0)
53
+ parallel (1.22.1)
54
+ parser (3.1.2.0)
55
+ ast (~> 2.4.1)
56
+ pry (0.14.1)
57
+ coderay (~> 1.1)
58
+ method_source (~> 1.0)
53
59
  pry-remote (0.1.8)
54
60
  pry (~> 0.9)
55
61
  slop (~> 3.0)
56
- public_suffix (2.0.5)
57
- rake (12.3.3)
62
+ public_suffix (4.0.7)
63
+ rainbow (3.1.1)
64
+ rake (13.0.6)
65
+ regexp_parser (2.5.0)
58
66
  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)
67
+ rspec (3.11.0)
68
+ rspec-core (~> 3.11.0)
69
+ rspec-expectations (~> 3.11.0)
70
+ rspec-mocks (~> 3.11.0)
71
+ rspec-core (3.11.0)
72
+ rspec-support (~> 3.11.0)
73
+ rspec-expectations (3.11.0)
66
74
  diff-lcs (>= 1.2.0, < 2.0)
67
- rspec-support (~> 3.9.0)
68
- rspec-mocks (3.9.1)
75
+ rspec-support (~> 3.11.0)
76
+ rspec-mocks (3.11.1)
69
77
  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)
78
+ rspec-support (~> 3.11.0)
79
+ rspec-support (3.11.0)
80
+ rubocop (1.28.2)
81
+ parallel (~> 1.10)
82
+ parser (>= 3.1.0.0)
83
+ rainbow (>= 2.2.2, < 4.0)
84
+ regexp_parser (>= 1.8, < 3.0)
85
+ rexml
86
+ rubocop-ast (>= 1.17.0, < 2.0)
87
+ ruby-progressbar (~> 1.7)
88
+ unicode-display_width (>= 1.4.0, < 3.0)
89
+ rubocop-ast (1.17.0)
90
+ parser (>= 3.1.1.0)
91
+ rubocop-rake (0.6.0)
92
+ rubocop (~> 1.0)
93
+ rubocop-rspec (2.10.0)
94
+ rubocop (~> 1.19)
95
+ ruby-progressbar (1.11.0)
96
+ slop (3.6.0)
97
+ unicode-display_width (2.1.0)
98
+ vcr (2.9.3)
99
+ webmock (3.14.0)
100
+ addressable (>= 2.8.0)
76
101
  crack (>= 0.3.2)
102
+ hashdiff (>= 0.4.0, < 2.0.0)
77
103
 
78
104
  PLATFORMS
79
105
  ruby
@@ -84,8 +110,11 @@ DEPENDENCIES
84
110
  pry-remote
85
111
  rake
86
112
  rspec
113
+ rubocop
114
+ rubocop-rake
115
+ rubocop-rspec
87
116
  vcr (~> 2.5)
88
117
  webmock
89
118
 
90
119
  BUNDLED WITH
91
- 1.17.3
120
+ 2.1.4
data/Jenkinsfile CHANGED
@@ -9,54 +9,34 @@ pipeline {
9
9
  stages {
10
10
  stage("Run tests") {
11
11
  parallel {
12
- stage("Ruby 2.0") {
13
- agent {
14
- docker {
15
- image 'ruby:2.0'
16
- }
17
- }
18
- steps {
19
- sh 'bundle install --deployment'
20
- sh 'bundle exec rake spec'
21
- }
22
- }
23
- stage("Ruby 2.1") {
24
- agent {
25
- docker {
26
- image 'ruby:2.1'
27
- }
28
- }
29
- steps {
30
- sh 'bundle install --deployment'
31
- sh 'bundle exec rake spec'
32
- }
33
- }
34
- stage("Ruby 2.2") {
12
+ stage("Ruby 2.5") {
35
13
  agent {
36
14
  docker {
37
- image 'ruby:2.2'
15
+ image 'ruby:2.5'
38
16
  }
39
17
  }
40
18
  steps {
19
+ sh 'gem install bundler:2.1.4'
41
20
  sh 'bundle install --deployment'
42
21
  sh 'bundle exec rake spec'
43
22
  }
44
23
  }
45
- stage("Ruby 2.3") {
24
+ stage("Ruby 2.6") {
46
25
  agent {
47
26
  docker {
48
- image 'ruby:2.3'
27
+ image 'ruby:2.6'
49
28
  }
50
29
  }
51
30
  steps {
31
+ sh 'gem install bundler:2.1.4'
52
32
  sh 'bundle install --deployment'
53
33
  sh 'bundle exec rake spec'
54
34
  }
55
35
  }
56
- stage("Ruby 2.4") {
36
+ stage("Ruby 2.7") {
57
37
  agent {
58
38
  docker {
59
- image 'ruby:2.4'
39
+ image 'ruby:2.7'
60
40
  }
61
41
  }
62
42
  steps {
@@ -64,10 +44,10 @@ pipeline {
64
44
  sh 'bundle exec rake spec'
65
45
  }
66
46
  }
67
- stage("Ruby 2.5") {
47
+ stage("Ruby 3.0") {
68
48
  agent {
69
49
  docker {
70
- image 'ruby:2.5'
50
+ image 'ruby:3.0'
71
51
  }
72
52
  }
73
53
  steps {
@@ -75,10 +55,10 @@ pipeline {
75
55
  sh 'bundle exec rake spec'
76
56
  }
77
57
  }
78
- stage("Ruby 2.6") {
58
+ stage("Ruby 3.1") {
79
59
  agent {
80
60
  docker {
81
- image 'ruby:2.6'
61
+ image 'ruby:3.1'
82
62
  }
83
63
  }
84
64
  steps {
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
 
@@ -44,12 +40,12 @@ To browse available resources use the resource name as the command:
44
40
 
45
41
  === Two factor authentication ===
46
42
 
47
- If you've enabled two factor authentication for your user, you can enable it in
48
- your config and the CLI will prompt for a two factor pin when needed:
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).
49
46
 
50
- [john@example.com]
51
- username = john@example.com
52
- two_factor = true
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
 
@@ -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
 
@@ -153,15 +147,21 @@ in the path, just specify the full path to it:
153
147
 
154
148
  == UPGRADE NOTES
155
149
 
156
- Version 1.0.0 adds a new top level `brightbox` command for the suite.
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.
157
155
 
158
- This may clash with our `brightbox` (brightbox-deployment) gem which, before
159
- version 2.4.0, used `brightbox` as the name for it's binary. Please ensure you
160
- update your `brightbox` gem to avoid using the wrong command.
156
+ == Alternatives
161
157
 
162
- We have included backwards compatible binaries for all the older CLI commands
163
- (brightbox-accounts, brightbox-servers etc...) but recommend getting used to the
164
- new form.
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
165
 
166
166
  == Testing
167
167
 
@@ -173,15 +173,6 @@ You should be able to run the specs and features with the following steps:
173
173
  The specs use VCR to playback filtered recordings from real API sessions. This
174
174
  process is not perfect, please report an issue
175
175
 
176
- == Alternatives
177
-
178
- There are a number of alternative ways to interact with the Brightbox Cloud.
179
-
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
184
-
185
176
  == Packaging
186
177
 
187
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.8.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"
30
- s.add_dependency "highline", "~> 1.6.0"
26
+ s.add_dependency "gli", "~> 2.21"
27
+ s.add_dependency "highline", "~> 1.6"
31
28
  s.add_dependency "hirb", "~> 0.6"
29
+ s.add_dependency "i18n", ">= 0.6", "< 1.11"
30
+ s.add_dependency "mime-types", "~> 3.0"
31
+ s.add_dependency "multi_json", "~> 1.11"
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