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
@@ -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
 
@@ -34,15 +34,15 @@ module Brightbox
34
34
  end
35
35
 
36
36
  def self.default_field_order
37
- [:id, :name, :handle, :ram, :disk, :cores]
37
+ %i[id name handle ram disk cores]
38
38
  end
39
39
 
40
40
  def <=>(other)
41
- if other.is_a? Type
42
- ram <=> other.ram
43
- else
44
- ram <=> other
45
- end
41
+ ram <=> if other.is_a? Type
42
+ other.ram
43
+ else
44
+ other
45
+ end
46
46
  end
47
47
  end
48
48
  end
@@ -24,20 +24,18 @@ module Brightbox
24
24
  #
25
25
  def self.get_for_account(account_id)
26
26
  collaborations = conn.user_collaborations
27
- open_collaborations = collaborations.select { |col| %w(pending accepted).include?(col.status) }
27
+ open_collaborations = collaborations.select { |col| %w[pending accepted].include?(col.status) }
28
28
  collaboration = open_collaborations.find do |col|
29
29
  col.account_id == account_id
30
30
  end
31
31
 
32
- if collaboration
33
- new(collaboration)
34
- else
35
- nil
36
- end
32
+ return unless collaboration
33
+
34
+ new(collaboration)
37
35
  end
38
36
 
39
37
  def self.default_field_order
40
- [:id, :status, :account, :role]
38
+ %i[id status account role]
41
39
  end
42
40
 
43
41
  def to_s
@@ -18,7 +18,7 @@ module Brightbox
18
18
  end
19
19
 
20
20
  def self.default_field_order
21
- [:id, :name, :email_address, :accounts]
21
+ %i[id name email_address accounts]
22
22
  end
23
23
 
24
24
  def accounts
@@ -1,3 +1,3 @@
1
1
  module Brightbox
2
- VERSION = "3.3.0" unless defined?(Brightbox::VERSION)
2
+ VERSION = "4.1.0".freeze unless defined?(Brightbox::VERSION)
3
3
  end
@@ -15,7 +15,7 @@ module Brightbox
15
15
  end
16
16
 
17
17
  def self.default_field_order
18
- [:id, :handle]
18
+ %i[id handle]
19
19
  end
20
20
 
21
21
  def to_s
data/lib/brightbox_cli.rb CHANGED
@@ -6,67 +6,67 @@ unless Kernel.respond_to?(:require_relative)
6
6
  end
7
7
  end
8
8
 
9
- lib_dir = File.expand_path(File.dirname(__FILE__))
9
+ lib_dir = __dir__
10
10
 
11
11
  $LOAD_PATH.unshift lib_dir unless $LOAD_PATH.include?(lib_dir)
12
12
 
13
13
  os_config = File.join(lib_dir, "brightbox-cli", "os_config.rb")
14
14
  require os_config if File.exist? os_config
15
15
 
16
- vendor_dir = File.expand_path(File.join(lib_dir, 'brightbox-cli', 'vendor'))
16
+ vendor_dir = File.expand_path(File.join(lib_dir, "brightbox-cli", "vendor"))
17
17
 
18
18
  # Add any vendored libraries into search path
19
- Dir.glob(vendor_dir + '/*').each do |f|
20
- $LOAD_PATH.unshift File.join(f, 'lib')
19
+ Dir.glob("#{vendor_dir}/*").each do |f|
20
+ $LOAD_PATH.unshift File.join(f, "lib")
21
21
  end
22
22
 
23
23
  require "multi_json"
24
- require 'date'
25
- require 'gli'
24
+ require "date"
25
+ require "gli"
26
26
  require "i18n"
27
27
  require "fog/brightbox"
28
28
 
29
29
  # I18n stuff to clean up scattered text everywhere
30
30
  I18n.enforce_available_locales = false
31
31
  I18n.default_locale = :en
32
- I18n.load_path = [File.join(File.dirname(__FILE__) + "/../locales/en.yml")]
32
+ I18n.load_path = [File.join("#{File.dirname(__FILE__)}/../locales/en.yml")]
33
33
 
34
34
  module Brightbox
35
- DEFAULT_API_ENDPOINT = ENV["BRIGHTBOX_API_URL"] || "https://api.gb1.brightbox.com"
36
- EMBEDDED_APP_ID = "app-12345"
37
- EMBEDDED_APP_SECRET = "mocbuipbiaa6k6c"
35
+ DEFAULT_API_ENDPOINT = ENV.fetch("BRIGHTBOX_API_URL", "https://api.gb1.brightbox.com")
36
+ EMBEDDED_APP_ID = "app-12345".freeze
37
+ EMBEDDED_APP_SECRET = "mocbuipbiaa6k6c".freeze
38
38
 
39
- autoload :Server, File.expand_path("../brightbox-cli/servers", __FILE__)
40
- autoload :DetailedServer, File.expand_path("../brightbox-cli/detailed_server", __FILE__)
41
- autoload :Image, File.expand_path("../brightbox-cli/images", __FILE__)
42
- autoload :Type, File.expand_path("../brightbox-cli/types", __FILE__)
43
- autoload :Zone, File.expand_path("../brightbox-cli/zones", __FILE__)
44
- autoload :CloudIP, File.expand_path("../brightbox-cli/cloud_ips", __FILE__)
45
- autoload :User, File.expand_path("../brightbox-cli/users", __FILE__)
46
- autoload :Account, File.expand_path("../brightbox-cli/accounts", __FILE__)
47
- autoload :CollaboratingAccount, File.expand_path("../brightbox-cli/collaborating_account", __FILE__)
48
- autoload :LoadBalancer, File.expand_path("../brightbox-cli/load_balancers", __FILE__)
49
- autoload :ServerGroup, File.expand_path("../brightbox-cli/server_groups", __FILE__)
50
- autoload :DetailedServerGroup, File.expand_path("../brightbox-cli/detailed_server_group", __FILE__)
51
- autoload :FirewallPolicy, File.expand_path("../brightbox-cli/firewall_policy", __FILE__)
52
- autoload :FirewallRule, File.expand_path("../brightbox-cli/firewall_rule", __FILE__)
53
- autoload :FirewallRules, File.expand_path("../brightbox-cli/firewall_rules", __FILE__)
54
- autoload :Collaboration, File.expand_path("../brightbox-cli/collaboration", __FILE__)
55
- autoload :UserCollaboration, File.expand_path("../brightbox-cli/user_collaboration", __FILE__)
56
- autoload :DatabaseType, File.expand_path("../brightbox-cli/database_type", __FILE__)
57
- autoload :DatabaseServer, File.expand_path("../brightbox-cli/database_server", __FILE__)
58
- autoload :DatabaseSnapshot, File.expand_path("../brightbox-cli/database_snapshot", __FILE__)
59
- autoload :Token, File.expand_path("../brightbox-cli/token", __FILE__)
39
+ autoload :Server, File.expand_path("brightbox-cli/servers", __dir__)
40
+ autoload :DetailedServer, File.expand_path("brightbox-cli/detailed_server", __dir__)
41
+ autoload :Image, File.expand_path("brightbox-cli/images", __dir__)
42
+ autoload :Type, File.expand_path("brightbox-cli/types", __dir__)
43
+ autoload :Zone, File.expand_path("brightbox-cli/zones", __dir__)
44
+ autoload :CloudIP, File.expand_path("brightbox-cli/cloud_ips", __dir__)
45
+ autoload :User, File.expand_path("brightbox-cli/users", __dir__)
46
+ autoload :Account, File.expand_path("brightbox-cli/accounts", __dir__)
47
+ autoload :CollaboratingAccount, File.expand_path("brightbox-cli/collaborating_account", __dir__)
48
+ autoload :LoadBalancer, File.expand_path("brightbox-cli/load_balancers", __dir__)
49
+ autoload :ServerGroup, File.expand_path("brightbox-cli/server_groups", __dir__)
50
+ autoload :DetailedServerGroup, File.expand_path("brightbox-cli/detailed_server_group", __dir__)
51
+ autoload :FirewallPolicy, File.expand_path("brightbox-cli/firewall_policy", __dir__)
52
+ autoload :FirewallRule, File.expand_path("brightbox-cli/firewall_rule", __dir__)
53
+ autoload :FirewallRules, File.expand_path("brightbox-cli/firewall_rules", __dir__)
54
+ autoload :Collaboration, File.expand_path("brightbox-cli/collaboration", __dir__)
55
+ autoload :UserCollaboration, File.expand_path("brightbox-cli/user_collaboration", __dir__)
56
+ autoload :DatabaseType, File.expand_path("brightbox-cli/database_type", __dir__)
57
+ autoload :DatabaseServer, File.expand_path("brightbox-cli/database_server", __dir__)
58
+ autoload :DatabaseSnapshot, File.expand_path("brightbox-cli/database_snapshot", __dir__)
59
+ autoload :Token, File.expand_path("brightbox-cli/token", __dir__)
60
60
 
61
61
  module Config
62
- autoload :SectionNameDeduplicator, File.expand_path("../brightbox-cli/config/section_name_deduplicator", __FILE__)
62
+ autoload :SectionNameDeduplicator, File.expand_path("brightbox-cli/config/section_name_deduplicator", __dir__)
63
63
  end
64
64
  end
65
65
 
66
66
  require_relative "brightbox/cli/config"
67
67
 
68
68
  require_relative "brightbox-cli/connection_manager"
69
- require_relative 'brightbox-cli/tables'
69
+ require_relative "brightbox-cli/tables"
70
70
  require_relative "brightbox-cli/logging"
71
71
  require_relative "brightbox-cli/api"
72
72
  require_relative "brightbox-cli/config/cache"
data/locales/en.yml CHANGED
@@ -144,6 +144,8 @@ en:
144
144
  desc: Create servers
145
145
  cloud_ip:
146
146
  desc: Immediately map a Cloud IP to new server? Either "true" or the identifier of the Cloud IP
147
+ volume_size:
148
+ desc: Specify a custom volume size (in MiB) when building a network block storage server
147
149
  destroy:
148
150
  desc: Destroy servers
149
151
  lock:
@@ -1,6 +1,5 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox do
4
-
5
4
  it { expect(Brightbox).to respond_to(:render_table) }
6
5
  end
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: http://api.brightbox.dev/token
5
+ uri: http://api.brightbox.localhost/token
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: '{"grant_type":"client_credentials"}'
@@ -47,7 +47,7 @@ http_interactions:
47
47
  recorded_at: Tue, 27 Aug 2013 16:12:38 GMT
48
48
  - request:
49
49
  method: get
50
- uri: http://api.brightbox.dev/1.0/accounts
50
+ uri: http://api.brightbox.localhost/1.0/accounts
51
51
  body:
52
52
  encoding: US-ASCII
53
53
  string: ''
@@ -90,7 +90,7 @@ http_interactions:
90
90
  recorded_at: Tue, 27 Aug 2013 16:12:38 GMT
91
91
  - request:
92
92
  method: get
93
- uri: http://api.brightbox.dev/1.0/accounts
93
+ uri: http://api.brightbox.localhost/1.0/accounts
94
94
  body:
95
95
  encoding: US-ASCII
96
96
  string: ''
@@ -133,7 +133,7 @@ http_interactions:
133
133
  recorded_at: Tue, 27 Aug 2013 16:12:38 GMT
134
134
  - request:
135
135
  method: post
136
- uri: http://api.brightbox.dev/token
136
+ uri: http://api.brightbox.localhost/token
137
137
  body:
138
138
  encoding: UTF-8
139
139
  string: '{"grant_type":"client_credentials"}'
@@ -177,7 +177,7 @@ http_interactions:
177
177
  recorded_at: Tue, 27 Aug 2013 17:09:42 GMT
178
178
  - request:
179
179
  method: post
180
- uri: http://api.brightbox.dev/token
180
+ uri: http://api.brightbox.localhost/token
181
181
  body:
182
182
  encoding: UTF-8
183
183
  string: '{"grant_type":"client_credentials"}'
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://api.brightbox.dev/1.0/accounts
5
+ uri: http://api.brightbox.localhost/1.0/accounts
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -45,7 +45,7 @@ http_interactions:
45
45
  recorded_at: Tue, 27 Aug 2013 16:12:39 GMT
46
46
  - request:
47
47
  method: post
48
- uri: http://api.brightbox.dev/token
48
+ uri: http://api.brightbox.localhost/token
49
49
  body:
50
50
  encoding: UTF-8
51
51
  string: '{"grant_type":"client_credentials"}'
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://api.brightbox.dev/1.0/account
5
+ uri: http://api.brightbox.localhost/1.0/account
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -47,7 +47,7 @@ http_interactions:
47
47
  recorded_at: Tue, 27 Aug 2013 16:12:39 GMT
48
48
  - request:
49
49
  method: get
50
- uri: http://api.brightbox.dev/1.0/account
50
+ uri: http://api.brightbox.localhost/1.0/account
51
51
  body:
52
52
  encoding: US-ASCII
53
53
  string: ''
@@ -92,7 +92,7 @@ http_interactions:
92
92
  recorded_at: Tue, 27 Aug 2013 16:12:39 GMT
93
93
  - request:
94
94
  method: post
95
- uri: http://api.brightbox.dev/token
95
+ uri: http://api.brightbox.localhost/token
96
96
  body:
97
97
  encoding: UTF-8
98
98
  string: '{"grant_type":"client_credentials"}'
@@ -136,7 +136,7 @@ http_interactions:
136
136
  recorded_at: Tue, 27 Aug 2013 17:09:43 GMT
137
137
  - request:
138
138
  method: post
139
- uri: http://api.brightbox.dev/token
139
+ uri: http://api.brightbox.localhost/token
140
140
  body:
141
141
  encoding: UTF-8
142
142
  string: '{"grant_type":"client_credentials"}'
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://api.brightbox.dev/1.0/account
5
+ uri: http://api.brightbox.localhost/1.0/account
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -47,7 +47,7 @@ http_interactions:
47
47
  recorded_at: Tue, 27 Aug 2013 16:12:39 GMT
48
48
  - request:
49
49
  method: post
50
- uri: http://api.brightbox.dev/token
50
+ uri: http://api.brightbox.localhost/token
51
51
  body:
52
52
  encoding: UTF-8
53
53
  string: '{"grant_type":"client_credentials"}'
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: http://api.brightbox.dev/token
5
+ uri: http://api.brightbox.localhost/token
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: '{"grant_type":"password","username":"jason.null@brightbox.com","password":"N:B3e%7Cmh"}'
@@ -16,7 +16,7 @@ http_interactions:
16
16
  response:
17
17
  status:
18
18
  code: 200
19
- message:
19
+ message:
20
20
  headers:
21
21
  Content-Type:
22
22
  - application/json
@@ -46,11 +46,11 @@ http_interactions:
46
46
  encoding: UTF-8
47
47
  string: '{"access_token":"64f68b5dddea1c6b774286180375ba883b896cac","token_type":"Bearer","refresh_token":"b7716ed2480d2831c8cb8af8ea536666c27815b1","scope":"infrastructure,
48
48
  orbit","expires_in":7200}'
49
- http_version:
49
+ http_version:
50
50
  recorded_at: Wed, 30 Sep 2015 14:34:22 GMT
51
51
  - request:
52
52
  method: get
53
- uri: http://api.brightbox.dev/1.0/accounts
53
+ uri: http://api.brightbox.localhost/1.0/accounts
54
54
  body:
55
55
  encoding: US-ASCII
56
56
  string: ''
@@ -64,7 +64,7 @@ http_interactions:
64
64
  response:
65
65
  status:
66
66
  code: 200
67
- message:
67
+ message:
68
68
  headers:
69
69
  X-Oauth-Scopes:
70
70
  - infrastructure, orbit
@@ -96,11 +96,11 @@ http_interactions:
96
96
  new servers are added to this group unless specified otherwise.","created_at":"2015-09-29T08:22:15Z","default":true}],"firewall_policies":[{"id":"fwp-12345","resource_type":"firewall_policy","url":"https://api.gb1.brightbox.com/1.0/firewall_policies/fwp-12345","default":true,"name":"default","created_at":"2015-09-29T08:22:15Z","description":"Applied
97
97
  to the default server group."}],"owner":{"id":"usr-12345","resource_type":"user","url":"https://api.gb1.brightbox.com/1.0/users/usr-12345","name":"Jason
98
98
  Null","email_address":"jason.null@brightbox.com"},"users":[],"zones":[{"id":"zon-12345","resource_type":"zone","url":"https://api.gb1.brightbox.com/1.0/zones/zon-12345","handle":"gb1-a"},{"id":"zon-12345","resource_type":"zone","url":"https://api.gb1.brightbox.com/1.0/zones/zon-12345","handle":"gb1-b"}]}]'
99
- http_version:
99
+ http_version:
100
100
  recorded_at: Wed, 30 Sep 2015 14:34:22 GMT
101
101
  - request:
102
102
  method: post
103
- uri: http://api.brightbox.dev/token
103
+ uri: http://api.brightbox.localhost/token
104
104
  body:
105
105
  encoding: UTF-8
106
106
  string: '{"grant_type":"refresh_token","refresh_token":"b7716ed2480d2831c8cb8af8ea536666c27815b1"}'
@@ -114,7 +114,7 @@ http_interactions:
114
114
  response:
115
115
  status:
116
116
  code: 200
117
- message:
117
+ message:
118
118
  headers:
119
119
  Content-Type:
120
120
  - application/json
@@ -144,11 +144,11 @@ http_interactions:
144
144
  encoding: UTF-8
145
145
  string: '{"access_token":"c8975689c865aafc885cf964a76fa72418451e25","token_type":"Bearer","refresh_token":"9f7921dbea20637a80b117f3e677060831b6522d","scope":"infrastructure,
146
146
  orbit","expires_in":7200}'
147
- http_version:
147
+ http_version:
148
148
  recorded_at: Wed, 30 Sep 2015 14:34:22 GMT
149
149
  - request:
150
150
  method: get
151
- uri: http://api.brightbox.dev/1.0/accounts
151
+ uri: http://api.brightbox.localhost/1.0/accounts
152
152
  body:
153
153
  encoding: US-ASCII
154
154
  string: ''
@@ -162,7 +162,7 @@ http_interactions:
162
162
  response:
163
163
  status:
164
164
  code: 200
165
- message:
165
+ message:
166
166
  headers:
167
167
  X-Oauth-Scopes:
168
168
  - infrastructure, orbit
@@ -194,6 +194,6 @@ http_interactions:
194
194
  new servers are added to this group unless specified otherwise.","created_at":"2015-09-29T08:22:15Z","default":true}],"firewall_policies":[{"id":"fwp-12345","resource_type":"firewall_policy","url":"https://api.gb1.brightbox.com/1.0/firewall_policies/fwp-12345","default":true,"name":"default","created_at":"2015-09-29T08:22:15Z","description":"Applied
195
195
  to the default server group."}],"owner":{"id":"usr-12345","resource_type":"user","url":"https://api.gb1.brightbox.com/1.0/users/usr-12345","name":"Jason
196
196
  Null","email_address":"jason.null@brightbox.com"},"users":[],"zones":[{"id":"zon-12345","resource_type":"zone","url":"https://api.gb1.brightbox.com/1.0/zones/zon-12345","handle":"gb1-a"},{"id":"zon-12345","resource_type":"zone","url":"https://api.gb1.brightbox.com/1.0/zones/zon-12345","handle":"gb1-b"}]}]'
197
- http_version:
197
+ http_version:
198
198
  recorded_at: Wed, 30 Sep 2015 14:34:22 GMT
199
199
  recorded_with: VCR 2.5.0