brightbox-cli 3.3.0 → 4.0.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +1 -0
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.gitignore +1 -1
  5. data/.rubocop.yml +70 -0
  6. data/CHANGELOG.md +52 -0
  7. data/Gemfile.lock +66 -39
  8. data/README +11 -16
  9. data/README.rdoc +1 -1
  10. data/brightbox-cli.gemspec +20 -33
  11. data/lib/brightbox-cli/accounts.rb +9 -11
  12. data/lib/brightbox-cli/api.rb +38 -36
  13. data/lib/brightbox-cli/cloud_ips.rb +8 -8
  14. data/lib/brightbox-cli/collaborating_account.rb +5 -5
  15. data/lib/brightbox-cli/collaboration.rb +1 -1
  16. data/lib/brightbox-cli/commands/accounts/{accept-invite.rb → accept_invite.rb} +2 -6
  17. data/lib/brightbox-cli/commands/accounts/default.rb +1 -2
  18. data/lib/brightbox-cli/commands/accounts/list.rb +6 -8
  19. data/lib/brightbox-cli/commands/accounts/remove.rb +2 -6
  20. data/lib/brightbox-cli/commands/accounts/{reset-ftp-password.rb → reset_ftp_password.rb} +6 -9
  21. data/lib/brightbox-cli/commands/accounts/show.rb +10 -13
  22. data/lib/brightbox-cli/commands/cloudips/create.rb +2 -5
  23. data/lib/brightbox-cli/commands/cloudips/destroy.rb +10 -14
  24. data/lib/brightbox-cli/commands/cloudips/list.rb +0 -2
  25. data/lib/brightbox-cli/commands/cloudips/map.rb +10 -13
  26. data/lib/brightbox-cli/commands/cloudips/show.rb +11 -14
  27. data/lib/brightbox-cli/commands/cloudips/unmap.rb +2 -4
  28. data/lib/brightbox-cli/commands/cloudips/update.rb +2 -4
  29. data/lib/brightbox-cli/commands/collaborations.rb +2 -3
  30. data/lib/brightbox-cli/commands/config/{client-add.rb → client_add.rb} +0 -3
  31. data/lib/brightbox-cli/commands/config/client_default.rb +18 -0
  32. data/lib/brightbox-cli/commands/config/{client-list.rb → client_list.rb} +1 -4
  33. data/lib/brightbox-cli/commands/config/{client-remove.rb → client_remove.rb} +0 -3
  34. data/lib/brightbox-cli/commands/config/{user-add.rb → user_add.rb} +1 -4
  35. data/lib/brightbox-cli/commands/firewall/{policies-apply.rb → policies_apply.rb} +2 -2
  36. data/lib/brightbox-cli/commands/firewall/{policies-create.rb → policies_create.rb} +2 -4
  37. data/lib/brightbox-cli/commands/firewall/{policies-destroy.rb → policies_destroy.rb} +0 -3
  38. data/lib/brightbox-cli/commands/firewall/{policies-list.rb → policies_list.rb} +0 -2
  39. data/lib/brightbox-cli/commands/firewall/{policies-remove.rb → policies_remove.rb} +2 -2
  40. data/lib/brightbox-cli/commands/firewall/{policies-show.rb → policies_show.rb} +6 -8
  41. data/lib/brightbox-cli/commands/firewall/{policies-update.rb → policies_update.rb} +2 -4
  42. data/lib/brightbox-cli/commands/firewall/{rules-create.rb → rules_create.rb} +6 -8
  43. data/lib/brightbox-cli/commands/firewall/{rules-destroy.rb → rules_destroy.rb} +0 -2
  44. data/lib/brightbox-cli/commands/firewall/{rules-list.rb → rules_list.rb} +0 -2
  45. data/lib/brightbox-cli/commands/firewall/{rules-show.rb → rules_show.rb} +7 -9
  46. data/lib/brightbox-cli/commands/firewall/{rules-update.rb → rules_update.rb} +7 -8
  47. data/lib/brightbox-cli/commands/groups/{add-server.rb → add_server.rb} +0 -2
  48. data/lib/brightbox-cli/commands/groups/create.rb +2 -3
  49. data/lib/brightbox-cli/commands/groups/destroy.rb +0 -2
  50. data/lib/brightbox-cli/commands/groups/list.rb +0 -1
  51. data/lib/brightbox-cli/commands/groups/move_servers.rb +2 -3
  52. data/lib/brightbox-cli/commands/groups/{remove-servers.rb → remove_servers.rb} +2 -4
  53. data/lib/brightbox-cli/commands/groups/show.rb +0 -2
  54. data/lib/brightbox-cli/commands/groups/update.rb +2 -3
  55. data/lib/brightbox-cli/commands/images/destroy.rb +0 -4
  56. data/lib/brightbox-cli/commands/images/list.rb +3 -5
  57. data/lib/brightbox-cli/commands/images/register.rb +9 -17
  58. data/lib/brightbox-cli/commands/images/show.rb +19 -20
  59. data/lib/brightbox-cli/commands/images/update.rb +12 -8
  60. data/lib/brightbox-cli/commands/lbs/{add-nodes.rb → add_nodes.rb} +0 -3
  61. data/lib/brightbox-cli/commands/lbs/create.rb +5 -7
  62. data/lib/brightbox-cli/commands/lbs/destroy.rb +0 -3
  63. data/lib/brightbox-cli/commands/lbs/list.rb +0 -1
  64. data/lib/brightbox-cli/commands/lbs/{remove-nodes.rb → remove_nodes.rb} +0 -3
  65. data/lib/brightbox-cli/commands/lbs/show.rb +20 -22
  66. data/lib/brightbox-cli/commands/lbs/update.rb +6 -9
  67. data/lib/brightbox-cli/commands/login.rb +13 -12
  68. data/lib/brightbox-cli/commands/servers/{activate-console.rb → activate_console.rb} +2 -5
  69. data/lib/brightbox-cli/commands/servers/create.rb +24 -25
  70. data/lib/brightbox-cli/commands/servers/destroy.rb +0 -3
  71. data/lib/brightbox-cli/commands/servers/list.rb +4 -5
  72. data/lib/brightbox-cli/commands/servers/show.rb +0 -2
  73. data/lib/brightbox-cli/commands/servers/shutdown.rb +0 -3
  74. data/lib/brightbox-cli/commands/servers/snapshot.rb +0 -4
  75. data/lib/brightbox-cli/commands/servers/start.rb +0 -4
  76. data/lib/brightbox-cli/commands/servers/stop.rb +0 -3
  77. data/lib/brightbox-cli/commands/servers/update.rb +5 -5
  78. data/lib/brightbox-cli/commands/sql/instances_create.rb +3 -6
  79. data/lib/brightbox-cli/commands/sql/instances_destroy.rb +0 -2
  80. data/lib/brightbox-cli/commands/sql/instances_list.rb +7 -9
  81. data/lib/brightbox-cli/commands/sql/instances_reset_password.rb +0 -1
  82. data/lib/brightbox-cli/commands/sql/instances_show.rb +0 -3
  83. data/lib/brightbox-cli/commands/sql/instances_snapshot.rb +0 -3
  84. data/lib/brightbox-cli/commands/sql/instances_update.rb +1 -3
  85. data/lib/brightbox-cli/commands/sql/snapshots_destroy.rb +0 -3
  86. data/lib/brightbox-cli/commands/sql/snapshots_list.rb +7 -9
  87. data/lib/brightbox-cli/commands/sql/snapshots_show.rb +12 -15
  88. data/lib/brightbox-cli/commands/sql/snapshots_update.rb +1 -3
  89. data/lib/brightbox-cli/commands/sql/types.rb +8 -15
  90. data/lib/brightbox-cli/commands/token.rb +0 -1
  91. data/lib/brightbox-cli/commands/types.rb +8 -14
  92. data/lib/brightbox-cli/commands/{user-collaborations.rb → user_collaborations.rb} +7 -8
  93. data/lib/brightbox-cli/commands/users/list.rb +0 -2
  94. data/lib/brightbox-cli/commands/users/show.rb +1 -3
  95. data/lib/brightbox-cli/commands/users/update.rb +3 -6
  96. data/lib/brightbox-cli/commands/zones.rb +7 -10
  97. data/lib/brightbox-cli/config/accounts.rb +18 -26
  98. data/lib/brightbox-cli/config/api_client.rb +12 -16
  99. data/lib/brightbox-cli/config/authentication_tokens.rb +39 -42
  100. data/lib/brightbox-cli/config/cache.rb +1 -0
  101. data/lib/brightbox-cli/config/clients.rb +8 -8
  102. data/lib/brightbox-cli/config/gpg_encrypted_passwords.rb +6 -8
  103. data/lib/brightbox-cli/config/password_helper.rb +33 -8
  104. data/lib/brightbox-cli/config/sections.rb +45 -29
  105. data/lib/brightbox-cli/config/two_factor_auth.rb +12 -14
  106. data/lib/brightbox-cli/config/two_factor_helper.rb +5 -7
  107. data/lib/brightbox-cli/config/user_application.rb +18 -18
  108. data/lib/brightbox-cli/config.rb +26 -23
  109. data/lib/brightbox-cli/connection_manager.rb +4 -2
  110. data/lib/brightbox-cli/database_server.rb +28 -29
  111. data/lib/brightbox-cli/database_snapshot.rb +1 -1
  112. data/lib/brightbox-cli/database_type.rb +6 -6
  113. data/lib/brightbox-cli/detailed_server.rb +43 -43
  114. data/lib/brightbox-cli/detailed_server_group.rb +1 -1
  115. data/lib/brightbox-cli/error_parser.rb +9 -9
  116. data/lib/brightbox-cli/firewall_policy.rb +2 -1
  117. data/lib/brightbox-cli/firewall_rule.rb +3 -3
  118. data/lib/brightbox-cli/firewall_rules.rb +3 -3
  119. data/lib/brightbox-cli/gli_global_hooks.rb +25 -27
  120. data/lib/brightbox-cli/images.rb +14 -12
  121. data/lib/brightbox-cli/load_balancers.rb +3 -6
  122. data/lib/brightbox-cli/logging.rb +14 -14
  123. data/lib/brightbox-cli/nilable_hash.rb +1 -1
  124. data/lib/brightbox-cli/ruby_core_ext.rb +3 -3
  125. data/lib/brightbox-cli/server_groups.rb +2 -2
  126. data/lib/brightbox-cli/servers.rb +6 -6
  127. data/lib/brightbox-cli/tables.rb +13 -15
  128. data/lib/brightbox-cli/types.rb +6 -6
  129. data/lib/brightbox-cli/user_collaboration.rb +5 -7
  130. data/lib/brightbox-cli/users.rb +1 -1
  131. data/lib/brightbox-cli/version.rb +1 -1
  132. data/lib/brightbox-cli/zones.rb +1 -1
  133. data/lib/brightbox_cli.rb +33 -33
  134. data/spec/brightbox_spec.rb +0 -1
  135. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_a_collection_of_Accounts.yml +5 -5
  136. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_resources_on_the_same_connection.yml +2 -2
  137. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_a_collection_of_Accounts.yml +4 -4
  138. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_resources_on_the_same_connection.yml +2 -2
  139. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_false/does_not_update_the_config_file.yml +12 -12
  140. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_true/does_not_update_the_config_file.yml +12 -12
  141. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_changes_to_the_config_file.yml +2 -2
  142. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_default_account.yml +2 -2
  143. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_new_client_as_the_default.yml +2 -2
  144. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_is_not_authenticated/does_not_raise_an_error.yml +8 -8
  145. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_may_access_one_account/updates_the_setting.yml +8 -8
  146. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_config_in_use_is_not_the_default/uses_correct_credentials.yml +1 -1
  147. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_a_cached_refresh_token/caches_the_new_tokens.yml +1 -1
  148. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_an_expired_refresh_token/caches_the_new_tokens.yml +2 -2
  149. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/caches_the_new_tokens.yml +1 -1
  150. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/prompts_user_to_retry_command.yml +1 -1
  151. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_an_API_client_with_no_tokens/caches_a_new_access_token.yml +1 -1
  152. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/does_not_alter_the_configuration.yml +6 -6
  153. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_access_token.yml +6 -6
  154. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_refresh_token.yml +6 -6
  155. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/does_not_alter_the_configuration.yml +6 -6
  156. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_access_token.yml +6 -6
  157. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_refresh_token.yml +6 -6
  158. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/does_not_alter_the_configuration.yml +9 -9
  159. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_access_token.yml +9 -9
  160. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_refresh_token.yml +9 -9
  161. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/creates_the_configuration.yml +6 -6
  162. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/refreshed_tokens.yml +6 -6
  163. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/creates_the_configuration.yml +6 -6
  164. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/refreshed_tokens.yml +6 -6
  165. data/spec/cassettes/Brightbox_CloudIP/_find_all_/when_a_Cloud_IP_exists/returns_a_suitable.yml +15 -15
  166. data/spec/cassettes/Brightbox_FirewallPolicy/_apply_to/should_apply_firewall_policy.yml +14 -14
  167. data/spec/cassettes/Brightbox_FirewallPolicy/_create/should_create_firewall_policy.yml +14 -14
  168. data/spec/cassettes/Brightbox_FirewallPolicy/_destroy/should_destroy_firewall_policy.yml +16 -16
  169. data/spec/cassettes/Brightbox_FirewallPolicy/_find_all_/when_a_policy_exists/should_list_firewall_policy.yml +13 -13
  170. data/spec/cassettes/Brightbox_FirewallPolicy/_find_or_call/when_a_policy_exists/should_show_firewall_policy.yml +11 -11
  171. data/spec/cassettes/Brightbox_FirewallRule/_create/when_policy_exists/creates_the_rule_successfully.yml +14 -14
  172. data/spec/cassettes/Brightbox_FirewallRule/_destroy/when_rule_exists/destroys_a_rule.yml +12 -12
  173. data/spec/cassettes/Brightbox_FirewallRule/_find/when_rule_exists/can_display_the_result.yml +14 -14
  174. data/spec/cassettes/Brightbox_FirewallRule/_from_policy/when_policy_exists_with_a_rule/lists_all_rules.yml +19 -19
  175. data/spec/cassettes/Brightbox_Server/_destroy/when_server_exists/should_work.yml +12 -12
  176. data/spec/cassettes/Brightbox_Server/_find_all_/when_a_server_exists/should_print_server_list.yml +15 -15
  177. data/spec/cassettes/Brightbox_Server/_show/when_server_exists/shows_detailed_attributes_of_a_server.yml +18 -18
  178. data/spec/cassettes/Brightbox_Server/_shutdown/should_work.yml +18 -18
  179. data/spec/cassettes/Brightbox_Server/_start/should_work.yml +24 -24
  180. data/spec/cassettes/Brightbox_Server/_stop/should_work.yml +18 -18
  181. data/spec/cassettes/Brightbox_Server/_update/when_passing_new_group_membership/should_update_with_group.yml +22 -22
  182. data/spec/cassettes/Brightbox_ServerGroup/_find_all_/when_a_group_exists/list_server_groups.yml +13 -13
  183. data/spec/cassettes/Firewall_policies/update/when_the_policy_does_not_exist/prints_error_to_STDERR.yml +3 -3
  184. data/spec/cassettes/brightbox_accounts/list/_when_access_token_expired_/does_not_report_invalid_token_errors.yml +30 -30
  185. data/spec/cassettes/brightbox_accounts/list/_when_both_tokens_expired_/does_not_report_invalid_token_errors.yml +9 -9
  186. data/spec/cassettes/brightbox_accounts/list/_when_invalid_tokens_/does_not_report_invalid_token_errors.yml +9 -9
  187. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/does_not_report_invalid_token_errors.yml +27 -27
  188. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/reports_they_were_updated.yml +7 -7
  189. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/does_not_report_invalid_token_errors.yml +7 -7
  190. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/reports_unable_to_authenticate.yml +6 -6
  191. data/spec/cassettes/brightbox_accounts/list/does_not_error.yml +3 -3
  192. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_a_server_ID/passes_the_interface_identifier_to_the_API.yml +12 -12
  193. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_another_value/passes_the_identifier_to_the_API.yml +7 -7
  194. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/does_not_error.yml +7 -7
  195. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/sets_up_the_config.yml +7 -7
  196. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_change_the_default_client.yml +7 -7
  197. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_error.yml +7 -7
  198. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +7 -7
  199. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +7 -7
  200. data/spec/cassettes/brightbox_config/user_add/when_NO_config_file_on_disk/sets_up_the_config.yml +5 -5
  201. data/spec/cassettes/brightbox_config/user_add/when_a_default_client_is_already_set/does_not_change_the_default_client.yml +2 -2
  202. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/does_not_error.yml +2 -2
  203. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/sets_up_the_config.yml +2 -2
  204. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/display_an_warning_about_preselected_default.yml +2 -2
  205. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/does_not_error.yml +2 -2
  206. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/selects_the_active_account_for_the_default.yml +2 -2
  207. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/sets_up_the_config.yml +2 -2
  208. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/display_an_warning_about_preselected_default.yml +2 -2
  209. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/does_not_error.yml +2 -2
  210. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/sets_up_the_config.yml +2 -2
  211. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_error.yml +2 -2
  212. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_prompt_to_rerun_the_command.yml +2 -2
  213. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/requests_access_tokens.yml +2 -2
  214. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +2 -2
  215. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +5 -5
  216. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_error.yml +2 -2
  217. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_prompt_to_rerun_the_command.yml +2 -2
  218. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/requests_access_tokens.yml +2 -2
  219. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/sets_up_the_config.yml +3 -3
  220. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/does_not_error.yml +2 -2
  221. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/requests_access_tokens.yml +2 -2
  222. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/sets_up_the_config.yml +2 -2
  223. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_error.yml +6 -6
  224. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  225. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/prompts_for_the_password.yml +6 -6
  226. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/requests_access_tokens.yml +6 -6
  227. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/sets_up_the_config.yml +6 -6
  228. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_error.yml +6 -6
  229. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  230. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/prompts_for_the_password.yml +6 -6
  231. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/requests_access_tokens.yml +6 -6
  232. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/sets_up_the_config.yml +6 -6
  233. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_error.yml +3 -3
  234. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_prompt_to_rerun_the_command.yml +3 -3
  235. data/spec/cassettes/brightbox_login/when_default_account_is_passed/prompts_for_the_password.yml +3 -3
  236. data/spec/cassettes/brightbox_login/when_default_account_is_passed/requests_access_tokens.yml +3 -3
  237. data/spec/cassettes/brightbox_login/when_default_account_is_passed/sets_up_the_config.yml +3 -3
  238. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_error.yml +6 -6
  239. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_prompt_to_rerun_the_command.yml +6 -6
  240. data/spec/cassettes/brightbox_login/when_no_config_is_present/requests_access_tokens.yml +6 -6
  241. data/spec/cassettes/brightbox_login/when_no_config_is_present/sets_up_the_config.yml +6 -6
  242. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_error.yml +6 -6
  243. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  244. data/spec/cassettes/brightbox_login/when_no_password_is_given/prompts_for_the_password.yml +6 -6
  245. data/spec/cassettes/brightbox_login/when_no_password_is_given/requests_access_tokens.yml +6 -6
  246. data/spec/cassettes/brightbox_login/when_no_password_is_given/sets_up_the_config.yml +6 -6
  247. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_10_0_0_0/correctly_sends_API_parameters.yml +313 -26
  248. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_srv-12345_grp-12345/correctly_sends_API_parameters.yml +1204 -38
  249. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql/correctly_sends_API_parameters.yml +596 -26
  250. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_5_6/correctly_sends_API_parameters.yml +63 -9
  251. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_8_0/correctly_sends_API_parameters.yml +393 -0
  252. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_5_--maintenance_hour_11/correctly_sends_API_parameters.yml +393 -0
  253. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_thursday/correctly_sends_API_parameters.yml +393 -0
  254. data/spec/cassettes/brightbox_sql_instances/create/--snapshot_dbi-12345/includes_schedule_fields_in_response.yml +1466 -0
  255. data/spec/cassettes/brightbox_sql_instances/create/--snapshots-schedule_0_12_4_/includes_schedule_fields_in_response.yml +342 -0
  256. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_password.yml +541 -26
  257. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_username.yml +484 -26
  258. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_active/correctly_sends_API_parameters.yml +4 -4
  259. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_can_not_be_snapshotted/reports_an_error_to_the_user.yml +2 -2
  260. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/does_not_output_to_stderr.yml +2 -2
  261. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/outputs_table_details_to_stdout.yml +2 -2
  262. data/spec/cassettes/brightbox_sql_snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +2 -2
  263. data/spec/commands/accounts/default_spec.rb +1 -2
  264. data/spec/commands/accounts/list_spec.rb +7 -8
  265. data/spec/commands/accounts/reset_ftp_password_spec.rb +1 -2
  266. data/spec/commands/accounts/show_spec.rb +1 -2
  267. data/spec/commands/cloudips/create_spec.rb +1 -2
  268. data/spec/commands/cloudips/destroy_spec.rb +1 -2
  269. data/spec/commands/cloudips/list_spec.rb +1 -2
  270. data/spec/commands/cloudips/map_spec.rb +2 -3
  271. data/spec/commands/cloudips/show_spec.rb +1 -2
  272. data/spec/commands/cloudips/unmap_spec.rb +1 -2
  273. data/spec/commands/cloudips/update_spec.rb +7 -8
  274. data/spec/commands/config/client_add_spec.rb +2 -3
  275. data/spec/commands/config/client_default_spec.rb +1 -2
  276. data/spec/commands/config/client_list_spec.rb +1 -2
  277. data/spec/commands/config/client_remove_spec.rb +1 -2
  278. data/spec/commands/config/user_add_spec.rb +3 -4
  279. data/spec/commands/firewall_policies/update_spec.rb +3 -3
  280. data/spec/commands/groups/add_server_spec.rb +1 -2
  281. data/spec/commands/groups/create_spec.rb +1 -2
  282. data/spec/commands/groups/destroy_spec.rb +1 -2
  283. data/spec/commands/groups/list_spec.rb +1 -2
  284. data/spec/commands/groups/move_servers_spec.rb +1 -2
  285. data/spec/commands/groups/remove_servers_spec.rb +1 -2
  286. data/spec/commands/groups/show_spec.rb +1 -2
  287. data/spec/commands/groups/update_spec.rb +1 -2
  288. data/spec/commands/images/destroy_spec.rb +1 -2
  289. data/spec/commands/images/list_spec.rb +62 -63
  290. data/spec/commands/images/locking_spec.rb +4 -4
  291. data/spec/commands/images/register_spec.rb +89 -3
  292. data/spec/commands/images/show_spec.rb +56 -4
  293. data/spec/commands/images/update_spec.rb +53 -3
  294. data/spec/commands/lbs/add_nodes_spec.rb +1 -2
  295. data/spec/commands/lbs/create_spec.rb +2 -3
  296. data/spec/commands/lbs/destroy_spec.rb +1 -2
  297. data/spec/commands/lbs/list_spec.rb +1 -2
  298. data/spec/commands/lbs/locking_spec.rb +4 -4
  299. data/spec/commands/lbs/remove_nodes_spec.rb +1 -2
  300. data/spec/commands/lbs/show_spec.rb +1 -2
  301. data/spec/commands/lbs/update_spec.rb +3 -4
  302. data/spec/commands/login_spec.rb +134 -30
  303. data/spec/commands/policies/apply_spec.rb +1 -2
  304. data/spec/commands/policies/create_spec.rb +1 -2
  305. data/spec/commands/policies/destroy_spec.rb +1 -2
  306. data/spec/commands/policies/list_spec.rb +1 -2
  307. data/spec/commands/policies/remove_spec.rb +1 -2
  308. data/spec/commands/policies/show_spec.rb +1 -2
  309. data/spec/commands/policies/update_spec.rb +1 -2
  310. data/spec/commands/rules/create_spec.rb +1 -2
  311. data/spec/commands/rules/destroy_spec.rb +1 -2
  312. data/spec/commands/rules/list_spec.rb +1 -2
  313. data/spec/commands/rules/show_spec.rb +1 -2
  314. data/spec/commands/rules/update_spec.rb +1 -2
  315. data/spec/commands/servers/activate_console_spec.rb +1 -2
  316. data/spec/commands/servers/create_spec.rb +10 -10
  317. data/spec/commands/servers/destroy_spec.rb +1 -2
  318. data/spec/commands/servers/list_spec.rb +1 -2
  319. data/spec/commands/servers/locking_spec.rb +4 -4
  320. data/spec/commands/servers/reboot_spec.rb +3 -4
  321. data/spec/commands/servers/reset_spec.rb +3 -4
  322. data/spec/commands/servers/show_spec.rb +1 -2
  323. data/spec/commands/servers/shutdown_spec.rb +1 -2
  324. data/spec/commands/servers/snapshot_spec.rb +1 -2
  325. data/spec/commands/servers/start_spec.rb +1 -2
  326. data/spec/commands/servers/stop_spec.rb +1 -2
  327. data/spec/commands/servers/update_spec.rb +1 -2
  328. data/spec/commands/sql/instances/create_spec.rb +58 -75
  329. data/spec/commands/sql/instances/locking_spec.rb +4 -4
  330. data/spec/commands/sql/instances/show_spec.rb +7 -7
  331. data/spec/commands/sql/instances/snapshot_spec.rb +2 -2
  332. data/spec/commands/sql/instances/update_spec.rb +8 -8
  333. data/spec/commands/sql/snapshots/list_spec.rb +1 -1
  334. data/spec/commands/sql/snapshots/locking_spec.rb +4 -4
  335. data/spec/commands/sql/snapshots/show_spec.rb +1 -1
  336. data/spec/commands/sql/types/list_spec.rb +1 -2
  337. data/spec/commands/types/list_spec.rb +1 -2
  338. data/spec/commands/users/list_spec.rb +1 -2
  339. data/spec/commands/users/show_spec.rb +1 -2
  340. data/spec/commands/users/update_spec.rb +1 -2
  341. data/spec/commands/zones/list_spec.rb +1 -2
  342. data/spec/configs/api_client.ini +1 -1
  343. data/spec/configs/user_app.ini +2 -2
  344. data/spec/spec_helper.rb +16 -3
  345. data/spec/support/authentication_helpers.rb +98 -0
  346. data/spec/support/config_helpers.rb +2 -4
  347. data/spec/support/password_prompt_helpers.rb +22 -1
  348. data/spec/support/server_helper.rb +5 -5
  349. data/spec/support/tmp_config.rb +1 -1
  350. data/spec/support/token_helpers.rb +2 -2
  351. data/spec/support/vcr.rb +3 -22
  352. data/spec/unit/brightbox/api/created_on_spec.rb +2 -2
  353. data/spec/unit/brightbox/api/fog_model_spec.rb +13 -13
  354. data/spec/unit/brightbox/api/klass_name_spec.rb +0 -1
  355. data/spec/unit/brightbox/api/method_missing_spec.rb +64 -0
  356. data/spec/unit/brightbox/api/require_account_spec.rb +0 -1
  357. data/spec/unit/brightbox/api/respond_to_spec.rb +71 -0
  358. data/spec/unit/brightbox/bb_config/access_token_filename_spec.rb +0 -1
  359. data/spec/unit/brightbox/bb_config/account_spec.rb +0 -1
  360. data/spec/unit/brightbox/bb_config/add_login_spec.rb +27 -28
  361. data/spec/unit/brightbox/bb_config/add_section_spec.rb +1 -2
  362. data/spec/unit/brightbox/bb_config/clear_default_client_spec.rb +0 -1
  363. data/spec/unit/brightbox/bb_config/client_id_spec.rb +0 -1
  364. data/spec/unit/brightbox/bb_config/client_name_spec.rb +0 -1
  365. data/spec/unit/brightbox/bb_config/config_directory_exists_spec.rb +0 -1
  366. data/spec/unit/brightbox/bb_config/config_directory_spec.rb +0 -1
  367. data/spec/unit/brightbox/bb_config/config_spec.rb +2 -3
  368. data/spec/unit/brightbox/bb_config/default_account_spec.rb +0 -1
  369. data/spec/unit/brightbox/bb_config/default_client_spec.rb +0 -1
  370. data/spec/unit/brightbox/bb_config/delete_section_spec.rb +0 -1
  371. data/spec/unit/brightbox/bb_config/find_or_set_default_account_spec.rb +4 -4
  372. data/spec/unit/brightbox/bb_config/refresh_token_filename_spec.rb +0 -1
  373. data/spec/unit/brightbox/bb_config/renew_tokens_spec.rb +3 -4
  374. data/spec/unit/brightbox/bb_config/save_default_account_spec.rb +0 -1
  375. data/spec/unit/brightbox/bb_config/save_spec.rb +0 -1
  376. data/spec/unit/brightbox/bb_config/section_names_spec.rb +1 -1
  377. data/spec/unit/brightbox/bb_config/to_fog_spec.rb +2 -2
  378. data/spec/unit/brightbox/collaborating_account/to_row_spec.rb +3 -3
  379. data/spec/unit/brightbox/config/api_client/to_fog_spec.rb +8 -8
  380. data/spec/unit/brightbox/config/api_client/valid_spec.rb +4 -4
  381. data/spec/unit/brightbox/config/discover_two_factor_pin_spec.rb +87 -0
  382. data/spec/unit/brightbox/config/section_name_deduplicator_spec.rb +1 -1
  383. data/spec/unit/brightbox/config/user_application/to_fog_spec.rb +10 -10
  384. data/spec/unit/brightbox/config/user_application/valid_spec.rb +3 -3
  385. data/spec/unit/brightbox/connection_manager/fetch_connection_spec.rb +1 -1
  386. data/spec/unit/brightbox/database_server/clean_arguments_spec.rb +1 -2
  387. data/spec/unit/brightbox/database_server/maintenance_window_spec.rb +0 -1
  388. data/spec/unit/brightbox/error_parser/pretty_print_spec.rb +0 -1
  389. data/spec/unit/brightbox/firewall_policy/apply_to_spec.rb +0 -1
  390. data/spec/unit/brightbox/firewall_policy/create_spec.rb +0 -1
  391. data/spec/unit/brightbox/firewall_policy/find_or_call_spec.rb +0 -1
  392. data/spec/unit/brightbox/firewall_policy/find_spec.rb +0 -1
  393. data/spec/unit/brightbox/firewall_rule/find_spec.rb +9 -9
  394. data/spec/unit/brightbox/firewall_rule/from_policy_spec.rb +4 -4
  395. data/spec/unit/brightbox/legacy/args_adjuster_spec.rb +20 -21
  396. data/spec/unit/brightbox/server/create_spec.rb +1 -2
  397. data/spec/unit/brightbox/server/start_spec.rb +2 -2
  398. data/spec/unit/brightbox/server/update_spec.rb +0 -1
  399. data/spec/unit/brightbox/user_collaboration/remove_spec.rb +0 -1
  400. data/spec/unit/nilable_hash_spec.rb +5 -5
  401. data/spec/unit/ruby_core_ext_spec.rb +3 -4
  402. data/spec/unit/temporary_home_spec.rb +1 -1
  403. data/spec/unit/tmp_config_spec.rb +0 -1
  404. metadata +133 -101
  405. data/bin/brightbox-accounts +0 -13
  406. data/bin/brightbox-cloudips +0 -13
  407. data/bin/brightbox-config +0 -13
  408. data/bin/brightbox-firewall-policies +0 -13
  409. data/bin/brightbox-firewall-rules +0 -13
  410. data/bin/brightbox-groups +0 -13
  411. data/bin/brightbox-images +0 -13
  412. data/bin/brightbox-lbs +0 -13
  413. data/bin/brightbox-servers +0 -13
  414. data/bin/brightbox-types +0 -13
  415. data/bin/brightbox-users +0 -13
  416. data/bin/brightbox-zones +0 -13
  417. data/lib/brightbox-cli/commands/config/client-default.rb +0 -26
@@ -6,12 +6,12 @@ module Brightbox
6
6
  row_attributes[:compatibility_mode] = row_attributes["compatibility_mode"]
7
7
 
8
8
  if server_type
9
- row_attributes[:type] = server_type['id']
10
- row_attributes[:type_handle] = server_type['handle']
11
- row_attributes[:type_name] = server_type['name']
12
- row_attributes[:ram] = server_type['ram']
13
- row_attributes[:cores] = server_type['cores']
14
- row_attributes[:disk] = server_type['disk_size'].to_i
9
+ row_attributes[:type] = server_type["id"]
10
+ row_attributes[:type_handle] = server_type["handle"]
11
+ row_attributes[:type_name] = server_type["name"]
12
+ row_attributes[:ram] = server_type["ram"]
13
+ row_attributes[:cores] = server_type["cores"]
14
+ row_attributes[:disk] = server_type["disk_size"].to_i
15
15
  end
16
16
 
17
17
  if image
@@ -19,52 +19,52 @@ module Brightbox
19
19
  row_attributes[:arch] = image.arch
20
20
  end
21
21
 
22
- row_attributes[:private_ips] = interfaces.map { |i| i['ipv4_address'] }.join(", ")
23
- row_attributes[:ipv6_address] = interfaces.map { |i| i['ipv6_address'] }.join(", ")
22
+ row_attributes[:private_ips] = interfaces.map { |i| i["ipv4_address"] }.join(", ")
23
+ row_attributes[:ipv6_address] = interfaces.map { |i| i["ipv6_address"] }.join(", ")
24
24
 
25
- row_attributes[:cloud_ip_ids] = cloud_ips.map { |i| i['id'] }.join(", ")
26
- row_attributes[:cloud_ipv4s] = cloud_ips.map { |i| i['public_ipv4'] }.join(", ")
27
- row_attributes[:cloud_ipv6s] = cloud_ips.map { |i| i['public_ipv6'] }.join(", ")
28
- row_attributes[:snapshots] = snapshots.map { |i| i['id'] }.join(", ")
25
+ row_attributes[:cloud_ip_ids] = cloud_ips.map { |i| i["id"] }.join(", ")
26
+ row_attributes[:cloud_ipv4s] = cloud_ips.map { |i| i["public_ipv4"] }.join(", ")
27
+ row_attributes[:cloud_ipv6s] = cloud_ips.map { |i| i["public_ipv6"] }.join(", ")
28
+ row_attributes[:snapshots] = snapshots.map { |i| i["id"] }.join(", ")
29
29
 
30
30
  if server_groups
31
- row_attributes[:server_groups] = server_groups.map { |sg| sg['id'] }.join(", ")
31
+ row_attributes[:server_groups] = server_groups.map { |sg| sg["id"] }.join(", ")
32
32
  end
33
33
 
34
34
  row_attributes
35
35
  end
36
36
 
37
37
  def self.default_field_order
38
- [
39
- :id,
40
- :status,
41
- :locked,
42
- :name,
43
- :created_at,
44
- :deleted_at,
45
- :zone,
46
- :type,
47
- :type_name,
48
- :type_handle,
49
- :ram,
50
- :cores,
51
- :disk,
52
- :disk_encrypted,
53
- :compatibility_mode,
54
- :image,
55
- :image_name,
56
- :arch,
57
- :private_ips,
58
- :ipv6_address,
59
- :hostname,
60
- :fqdn,
61
- :public_hostname,
62
- :ipv6_hostname,
63
- :cloud_ip_ids,
64
- :cloud_ipv4s,
65
- :cloud_ipv6s,
66
- :snapshots,
67
- :server_groups
38
+ %i[
39
+ id
40
+ status
41
+ locked
42
+ name
43
+ created_at
44
+ deleted_at
45
+ zone
46
+ type
47
+ type_name
48
+ type_handle
49
+ ram
50
+ cores
51
+ disk
52
+ disk_encrypted
53
+ compatibility_mode
54
+ image
55
+ image_name
56
+ arch
57
+ private_ips
58
+ ipv6_address
59
+ hostname
60
+ fqdn
61
+ public_hostname
62
+ ipv6_hostname
63
+ cloud_ip_ids
64
+ cloud_ipv4s
65
+ cloud_ipv6s
66
+ snapshots
67
+ server_groups
68
68
  ]
69
69
  end
70
70
  end
@@ -7,7 +7,7 @@ module Brightbox
7
7
  end
8
8
 
9
9
  def self.default_field_order
10
- [:id, :name, :servers, :firewall_policy, :description]
10
+ %i[id name servers firewall_policy description]
11
11
  end
12
12
  end
13
13
  end
@@ -16,26 +16,26 @@ module Brightbox
16
16
  end
17
17
  end
18
18
 
19
- def parse_http_error(e)
20
- if e.respond_to?(:response) && e.response.respond_to?(:body)
19
+ def parse_http_error(err)
20
+ if err.respond_to?(:response) && err.response.respond_to?(:body)
21
21
  begin
22
- json_response = MultiJson.load(e.response.body)
23
- extract_response_from_json(json_response, e)
24
- rescue
22
+ json_response = MultiJson.load(err.response.body)
23
+ extract_response_from_json(json_response, err)
24
+ rescue StandardError
25
25
  {}
26
26
  end
27
27
  else
28
- error "ERROR: #{e}"
28
+ error "ERROR: #{err}"
29
29
  end
30
30
  end
31
31
 
32
- def extract_response_from_json(error_json, e)
33
- json_error = error_json['errors'] || error_json['error']
32
+ def extract_response_from_json(error_json, err)
33
+ json_error = error_json["errors"] || error_json["error"]
34
34
  if json_error && !json_error.empty?
35
35
  error_string = Array(json_error).join(" ")
36
36
  error "ERROR: #{error_string}"
37
37
  else
38
- error "ERROR: #{e}"
38
+ error "ERROR: #{err}"
39
39
  end
40
40
  end
41
41
  end
@@ -1,6 +1,7 @@
1
1
  module Brightbox
2
2
  class FirewallPolicy < Api
3
3
  def self.require_account?; true; end
4
+
4
5
  def self.create(options)
5
6
  new(conn.firewall_policies.create(options))
6
7
  end
@@ -26,7 +27,7 @@ module Brightbox
26
27
  end
27
28
 
28
29
  def self.default_field_order
29
- [:id, :server_group, :name]
30
+ %i[id server_group name]
30
31
  end
31
32
  end
32
33
  end
@@ -29,8 +29,8 @@ module Brightbox
29
29
 
30
30
  def to_row
31
31
  attrs = attributes.dup
32
- [:protocol, :source, :sport, :destination, :dport, :icmp_type].each do |key|
33
- attrs[key] = attributes[key] || '-'
32
+ %i[protocol source sport destination dport icmp_type].each do |key|
33
+ attrs[key] = attributes[key] || "-"
34
34
  end
35
35
  attrs
36
36
  end
@@ -40,7 +40,7 @@ module Brightbox
40
40
  end
41
41
 
42
42
  def self.default_field_order
43
- [:id, :protocol, :source, :sport, :destination, :dport, :icmp_type, :description]
43
+ %i[id protocol source sport destination dport icmp_type description]
44
44
  end
45
45
  end
46
46
  end
@@ -3,19 +3,19 @@ module Brightbox
3
3
  def self.from_policy(firewall_policy)
4
4
  rules = firewall_policy.rules
5
5
  rules.map do |rule|
6
- fwr = FirewallRule.new('fwr')
6
+ fwr = FirewallRule.new("fwr")
7
7
  fwr.attributes = symbolize_keys(rule)
8
8
  fwr
9
9
  end
10
10
  end
11
11
 
12
- def self.symbolize_keys(object) #:nodoc:
12
+ def self.symbolize_keys(object) # :nodoc:
13
13
  modify_keys(object) do |key|
14
14
  key.is_a?(String) ? key.to_sym : key
15
15
  end
16
16
  end
17
17
 
18
- def self.modify_keys(object, &modifier) #:nodoc:
18
+ def self.modify_keys(object, &modifier) # :nodoc:
19
19
  object.reduce({}) do |result, (key, value)|
20
20
  new_key = modifier.call(key)
21
21
  result.merge! new_key => value
@@ -11,7 +11,7 @@ module Brightbox
11
11
  #
12
12
  # Need to locate the source of double loading under Aruba
13
13
  #
14
- subcommand_files = Dir.glob(File.expand_path("../commands/**/*.rb", __FILE__))
14
+ subcommand_files = Dir.glob(File.expand_path("commands/**/*.rb", __dir__))
15
15
  subcommand_files.sort.each do |cmd_file|
16
16
  require cmd_file
17
17
  end
@@ -21,34 +21,34 @@ module Brightbox
21
21
 
22
22
  # Global options
23
23
  desc "Simple output (tab separated, don't draw fancy tables)"
24
- switch [:s, :simple], :negatable => false
24
+ switch %i[s simple], :negatable => false
25
25
 
26
26
  desc "Set the api client to use"
27
- flag [:c, :client]
27
+ flag %i[c client]
28
28
 
29
29
  desc "Set the account to use"
30
30
  flag :account
31
31
 
32
32
  desc "Disable peer SSL certificate verification"
33
- switch [:k, :insecure], :negatable => false
33
+ switch %i[k insecure], :negatable => false
34
34
 
35
35
  pre do |global_options, command, _options, _args|
36
36
  # Configuration options
37
37
  config_opts = {
38
- :client_name => ENV["CLIENT"] || global_options[:client],
39
- :account => ENV["ACCOUNT"] || global_options[:account]
38
+ :client_name => ENV.fetch("CLIENT", global_options[:client]),
39
+ :account => ENV.fetch("ACCOUNT", global_options[:account])
40
40
  }
41
41
  Brightbox.config = BBConfig.new(config_opts)
42
42
 
43
43
  # Commands that alter the config files should not error here
44
- unless [:config, :login].include?(command.topmost_ancestor.name)
44
+ unless %i[config login].include?(command.topmost_ancestor.name)
45
45
  raise AmbiguousClientError, AMBIGUOUS_CLIENT_ERROR if Brightbox.config.client_name.nil?
46
46
 
47
47
  if Brightbox.config.has_multiple_clients?
48
48
  if Brightbox.config.client_has_alias?
49
- info "INFO: client_id: #{Brightbox.config.client_name} (#{Brightbox.config.client_alias})"
49
+ debug "client_id: #{Brightbox.config.client_name} (#{Brightbox.config.client_alias})"
50
50
  else
51
- info "INFO: client_id: #{Brightbox.config.client_name}"
51
+ debug "client_id: #{Brightbox.config.client_name}"
52
52
  end
53
53
  end
54
54
 
@@ -56,11 +56,11 @@ module Brightbox
56
56
  Brightbox.config.debug_tokens if Brightbox.config.respond_to?(:debug_tokens)
57
57
  end
58
58
 
59
- Excon.defaults[:headers]['User-Agent'] = "brightbox-cli/#{Brightbox::VERSION} Fog/#{Fog::Core::VERSION}"
59
+ Excon.defaults[:headers]["User-Agent"] = "brightbox-cli/#{Brightbox::VERSION} Fog/#{Fog::Core::VERSION}"
60
60
 
61
- Excon.defaults[:headers]['User-Agent'] ||= "brightbox-cli/#{Brightbox::VERSION}"
61
+ Excon.defaults[:headers]["User-Agent"] ||= "brightbox-cli/#{Brightbox::VERSION}"
62
62
 
63
- if global_options[:k] || ENV["INSECURE"]
63
+ if global_options[:k] || ENV.fetch("INSECURE", false)
64
64
  Excon.defaults[:ssl_verify_peer] = false
65
65
  end
66
66
 
@@ -73,20 +73,18 @@ module Brightbox
73
73
  end
74
74
 
75
75
  post do |_global_options, _command, _options, _args|
76
- begin
77
- # Api.conn is another global which holds the authentication tokens so
78
- # we need to shuffle data between globals at a higher level rather than
79
- # force one inside the other
80
- access_token = Api.conn.access_token
81
- refresh_token = Api.conn.refresh_token
82
-
83
- Brightbox.config.update_stored_tokens(access_token, refresh_token)
84
- Brightbox.config.save
85
- rescue BBConfigError
86
- rescue StandardError => e
87
- # FIXME: Other StandardErrors are available
88
- warn "Error writing auth token #{Brightbox.config.access_token_filename}: #{e.class}: #{e}"
89
- end
76
+ # Api.conn is another global which holds the authentication tokens so
77
+ # we need to shuffle data between globals at a higher level rather than
78
+ # force one inside the other
79
+ access_token = Api.conn.access_token
80
+ refresh_token = Api.conn.refresh_token
81
+
82
+ Brightbox.config.update_stored_tokens(access_token, refresh_token)
83
+ Brightbox.config.save
84
+ rescue BBConfigError
85
+ rescue StandardError => e
86
+ # FIXME: Other StandardErrors are available
87
+ warn "Error writing auth token #{Brightbox.config.access_token_filename}: #{e.class}: #{e}"
90
88
  end
91
89
 
92
90
  on_error do |e|
@@ -103,7 +101,7 @@ module Brightbox
103
101
  error "Unable to authenticate with supplied details"
104
102
  Brightbox.config.debug_tokens if Brightbox.config.respond_to?(:debug_tokens)
105
103
  exit(111)
106
- rescue Exception => e
104
+ rescue StandardError => e
107
105
  if ENV["DEBUG"]
108
106
  debug e
109
107
  debug e.class.to_s
@@ -1,6 +1,7 @@
1
1
  module Brightbox
2
2
  class Image < Api
3
3
  def self.require_account?; true; end
4
+
4
5
  def self.all
5
6
  conn.images
6
7
  end
@@ -11,40 +12,40 @@ module Brightbox
11
12
 
12
13
  def self.register(options = {})
13
14
  image = conn.create_image(options)
14
- find image['id']
15
+ find image["id"]
15
16
  end
16
17
 
17
18
  def self.default_field_order
18
- [:id, :owner, :type, :created_on, :status, :size, :name]
19
+ %i[id owner type created_on status size name]
19
20
  end
20
21
 
21
22
  # Filter out images that are not of the right type, account or status if the option is passed
22
23
  def self.filter_images(images, options = {})
23
24
  # Remove images that don't match the given type
24
25
  if options[:t]
25
- images.reject! { |i| i.type != options[:t] }
26
+ images.select! { |i| i.type == options[:t] }
26
27
  end
27
28
 
28
29
  # Remove statuses that don't match the argument
29
30
  if options[:s]
30
- images.reject! { |i| i.status != options[:s] }
31
+ images.select! { |i| i.status == options[:s] }
31
32
  end
32
33
 
33
34
  # Remove images that don't belong to the specified owner id
34
35
  if options[:l]
35
- if options[:l] == 'brightbox'
36
- images.reject! { |i| !i.official }
36
+ if options[:l] == "brightbox"
37
+ images.select!(&:official)
37
38
  else
38
- images.reject! { |i| i.owner_id != options[:l] }
39
+ images.select! { |i| i.owner_id == options[:l] }
39
40
  end
40
41
  end
41
42
 
42
43
  unless options[:a]
43
44
  account = Account.conn.get_scoped_account(:nested => false)
44
- images.reject! { |i| !i.official && i.owner_id != account["id"] }
45
+ images.reject! { |i| !i.official && i.owner_id != account["id"] }
45
46
  end
46
47
 
47
- snapshots = images.select { |i| i.source_type == 'snapshot' }
48
+ snapshots = images.select { |i| i.source_type == "snapshot" }
48
49
  images -= snapshots
49
50
 
50
51
  images.sort! { |a, b| a.default_sort_fields <=> b.default_sort_fields }
@@ -68,7 +69,7 @@ module Brightbox
68
69
 
69
70
  def status
70
71
  if fog_model.attributes[:status] == "available"
71
- public? ? 'public' : 'private'
72
+ public? ? "public" : "private"
72
73
  else
73
74
  fog_model.attributes[:status]
74
75
  end
@@ -90,6 +91,7 @@ module Brightbox
90
91
  o[:description] = description if description
91
92
  o[:licence_name] = licence_name
92
93
  o[:size] = virtual_size
94
+ o[:min_ram] = min_ram
93
95
  o
94
96
  end
95
97
 
@@ -99,9 +101,9 @@ module Brightbox
99
101
 
100
102
  def status_sort_code
101
103
  case fog_model.attributes[:status]
102
- when 'available'
104
+ when "available"
103
105
  (public? ? 1 : 2)
104
- when 'deprecated'
106
+ when "deprecated"
105
107
  3
106
108
  else
107
109
  4
@@ -1,6 +1,7 @@
1
1
  module Brightbox
2
2
  class LoadBalancer < Api
3
3
  def self.require_account?; true; end
4
+
4
5
  def self.create(options)
5
6
  new(conn.load_balancers.create(options))
6
7
  end
@@ -38,11 +39,7 @@ module Brightbox
38
39
  end
39
40
 
40
41
  def listeners
41
- if attributes[:listeners]
42
- attributes[:listeners].map { |l| [l["in"], l["out"], l["protocol"], l['timeout']].join(":") }
43
- else
44
- nil
45
- end
42
+ attributes[:listeners]&.map { |l| [l["in"], l["out"], l["protocol"], l["timeout"]].join(":") }
46
43
  end
47
44
 
48
45
  def buffer_size
@@ -80,7 +77,7 @@ module Brightbox
80
77
  end
81
78
 
82
79
  def self.default_field_order
83
- [:id, :status, :created_on, :cloud_ips, :nodes, :name]
80
+ %i[id status created_on cloud_ips nodes name]
84
81
  end
85
82
  end
86
83
  end
@@ -6,33 +6,33 @@ module Brightbox
6
6
  end
7
7
 
8
8
  module MixinMethods
9
- def error(s = "")
10
- $stderr.write s
9
+ def error(log_msg = "")
10
+ $stderr.write log_msg
11
11
  $stderr.write "\n"
12
12
  $stderr.flush
13
13
  end
14
14
 
15
- def info(s = "")
16
- $stderr.write s
15
+ def info(log_msg = "")
16
+ $stderr.write log_msg
17
17
  $stderr.write "\n"
18
18
  $stderr.flush
19
19
  end
20
20
 
21
- def warn(s = "")
22
- info "WARN: #{s}"
21
+ def warn(log_msg = "")
22
+ info "WARN: #{log_msg}"
23
23
  end
24
24
 
25
- def data(s)
26
- $stdout.write s
25
+ def data(log_msg)
26
+ $stdout.write log_msg
27
27
  $stdout.write "\n"
28
28
  end
29
29
 
30
- def debug(s)
31
- if ENV['DEBUG']
32
- $stderr.write "DEBUG: "
33
- $stderr.write s
34
- $stderr.write "\n"
35
- end
30
+ def debug(log_msg)
31
+ return unless ENV["DEBUG"]
32
+
33
+ $stderr.write "DEBUG: "
34
+ $stderr.write log_msg
35
+ $stderr.write "\n"
36
36
  end
37
37
  end
38
38
  end
@@ -1,7 +1,7 @@
1
1
  class NilableHash < Hash
2
2
  def nilify_blanks
3
3
  keys.each do |k|
4
- self[k] = nil if self[k] == ''
4
+ self[k] = nil if self[k] == ""
5
5
  end
6
6
  end
7
7
  end
@@ -7,11 +7,11 @@ class Time
7
7
  #
8
8
  # @return [String] A clipped form of date, ISO 8601 without seconds
9
9
  #
10
- def clipped_iso_8601
11
- strftime(self.utc? ? "%Y-%m-%dT%H:%MZ" : "%Y-%m-%dT%H:%M")
10
+ def clipped_iso8601
11
+ strftime(utc? ? "%Y-%m-%dT%H:%MZ" : "%Y-%m-%dT%H:%M")
12
12
  end
13
13
 
14
14
  def to_s
15
- clipped_iso_8601
15
+ clipped_iso8601
16
16
  end
17
17
  end
@@ -15,7 +15,7 @@ module Brightbox
15
15
  end
16
16
 
17
17
  def self.default_field_order
18
- [:id, :server_count, :name]
18
+ %i[id server_count name]
19
19
  end
20
20
 
21
21
  def firewall_policy
@@ -46,7 +46,7 @@ module Brightbox
46
46
  end
47
47
 
48
48
  def server_ids
49
- attributes[:server_ids].map { |id| id.is_a?(Hash) ? id['id'] : id }
49
+ attributes[:server_ids].map { |id| id.is_a?(Hash) ? id["id"] : id }
50
50
  end
51
51
 
52
52
  def server_count
@@ -19,7 +19,7 @@ module Brightbox
19
19
  end
20
20
 
21
21
  def self.default_field_order
22
- [:id, :status, :type, :zone, :created_on, :image_id, :cloud_ip_ids, :name]
22
+ %i[id status type zone created_on image_id cloud_ip_ids name]
23
23
  end
24
24
 
25
25
  def update(options)
@@ -41,20 +41,20 @@ module Brightbox
41
41
  a[:image] = image_id
42
42
  a[:created_at] = created_at
43
43
  a[:created_on] = created_on
44
- a[:type] = server_type['handle']
44
+ a[:type] = server_type["handle"]
45
45
  a[:status] = fog_model.state
46
46
  a[:locked] = locked?
47
- a[:zone] = zone && zone['handle']
47
+ a[:zone] = zone && zone["handle"]
48
48
  a[:hostname] = id
49
49
  a[:public_hostname] = "public.#{fqdn}" unless cloud_ips.empty?
50
- a[:ipv6_hostname] = ipv6_fqdn if interfaces.any? { |i| i['ipv6_address'] }
50
+ a[:ipv6_hostname] = ipv6_fqdn if interfaces.any? { |i| i["ipv6_address"] }
51
51
  a
52
52
  end
53
53
 
54
54
  def to_row
55
55
  o = attributes
56
- o[:cloud_ip_ids] = cloud_ips.map { |i| i['id'] }
57
- o[:ips] = interfaces.map { |i| i['ipv4_address'] }.join(', ')
56
+ o[:cloud_ip_ids] = cloud_ips.map { |i| i["id"] }
57
+ o[:ips] = interfaces.map { |i| i["ipv4_address"] }.join(", ")
58
58
  o
59
59
  end
60
60
 
@@ -1,4 +1,4 @@
1
- require 'hirb'
1
+ require "hirb"
2
2
 
3
3
  module Brightbox
4
4
  # Hack to set ascii art table cell width due to limitations in Hirb
@@ -10,9 +10,9 @@ module Brightbox
10
10
  # Remove most of the ascii art table output
11
11
  class SimpleTable < Hirb::Helpers::Table
12
12
  def render_table_header
13
- title_row = ' ' + @fields.map do |f|
13
+ title_row = " " + @fields.map do |f|
14
14
  format_cell(@headers[f], @field_lengths[f])
15
- end.join(' ')
15
+ end.join(" ")
16
16
  ["", title_row, render_border]
17
17
  end
18
18
 
@@ -21,14 +21,14 @@ module Brightbox
21
21
  end
22
22
 
23
23
  def render_border
24
- '-' + @fields.map { |f| '-' * @field_lengths[f] }.join('--') + '-'
24
+ "-" + @fields.map { |f| "-" * @field_lengths[f] }.join("--") + "-"
25
25
  end
26
26
 
27
27
  def render_rows
28
28
  @rows.map do |row|
29
- row = ' ' + @fields.map do |f|
29
+ row = " " + @fields.map do |f|
30
30
  format_cell(row[f], @field_lengths[f])
31
- end.join(' ')
31
+ end.join(" ")
32
32
  end
33
33
  end
34
34
 
@@ -56,7 +56,7 @@ module Brightbox
56
56
  def render_footer; []; end
57
57
 
58
58
  def render_rows
59
- longest_header = Hirb::String.size @headers.values.sort_by { |e| Hirb::String.size(e) }.last
59
+ longest_header = Hirb::String.size(@headers.values.max_by { |e| Hirb::String.size(e) })
60
60
  @rows.map do |row|
61
61
  fields = @fields.map do |f|
62
62
  "#{Hirb::String.rjust(@headers[f], longest_header)}: #{row[f]}"
@@ -87,7 +87,7 @@ module Brightbox
87
87
  rows.each do |row|
88
88
  # FIXME: default Api subclasses do not respond to #keys so specialising
89
89
  # #to_row is required to not break the following
90
- row.keys.each do |k|
90
+ row.each_key do |k|
91
91
  row[k] = row[k].render_cell if row[k].respond_to? :render_cell
92
92
  end
93
93
  end
@@ -97,16 +97,14 @@ module Brightbox
97
97
  if options[:vertical]
98
98
  data options[:fields].map { |k| [k, row[k]].join("\t") }.join("\n")
99
99
  else
100
- data options[:fields].map { |k| row[k].is_a?(Array) ? row[k].join(',') : row[k] }.join("\t")
100
+ data options[:fields].map { |k| row[k].is_a?(Array) ? row[k].join(",") : row[k] }.join("\t")
101
101
  end
102
102
  end
103
- else
103
+ elsif options[:vertical]
104
104
  # "graphical" table
105
- if options[:vertical]
106
- data ShowTable.render(rows, options)
107
- else
108
- data SimpleTable.render(rows, options)
109
- end
105
+ data ShowTable.render(rows, options)
106
+ else
107
+ data SimpleTable.render(rows, options)
110
108
  end
111
109
  end
112
110