brightbox-cli 2.11.2 → 3.2.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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +36 -0
- data/.travis.yml +0 -3
- data/CHANGELOG.md +58 -0
- data/Gemfile.lock +22 -18
- data/Jenkinsfile +7 -18
- data/Rakefile +2 -12
- data/brightbox-cli.gemspec +3 -3
- data/lib/brightbox-cli/api.rb +1 -1
- data/lib/brightbox-cli/cloud_ips.rb +1 -1
- data/lib/brightbox-cli/collaboration.rb +1 -1
- data/lib/brightbox-cli/commands/firewall/policies-update.rb +1 -1
- data/lib/brightbox-cli/commands/lbs/create.rb +5 -0
- data/lib/brightbox-cli/commands/lbs/show.rb +1 -0
- data/lib/brightbox-cli/commands/lbs/update.rb +7 -0
- data/lib/brightbox-cli/commands/servers/create.rb +5 -0
- data/lib/brightbox-cli/commands/token.rb +16 -1
- data/lib/brightbox-cli/detailed_server.rb +1 -0
- data/lib/brightbox-cli/load_balancers.rb +1 -0
- data/lib/brightbox-cli/version.rb +1 -1
- data/spec/commands/cloudips/update_spec.rb +65 -0
- data/spec/commands/lbs/create_spec.rb +31 -0
- data/spec/commands/lbs/update_spec.rb +32 -0
- data/spec/commands/servers/create_spec.rb +24 -8
- data/spec/commands/sql/instances/create_spec.rb +26 -0
- data/spec/support/shared/collaborating_accounts_context.rb +3 -3
- data/spec/unit/brightbox/account/all_spec.rb +2 -2
- data/spec/unit/brightbox/account/get_spec.rb +2 -2
- data/spec/unit/brightbox/api/conn_spec.rb +1 -1
- data/spec/unit/brightbox/collaborating_account_spec.rb +1 -1
- data/spec/unit/brightbox/connection_manager/fetch_connection_spec.rb +1 -1
- data/spec/unit/brightbox/database_server/cloud_ips_spec.rb +1 -1
- data/spec/unit/brightbox/database_server/maintenance_window_spec.rb +1 -1
- data/spec/unit/brightbox/user_collaboration/get_for_account_spec.rb +1 -1
- data/spec/unit/brightbox/user_collaboration/remove_spec.rb +1 -1
- metadata +9 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5c03039c9263c4872064938223b825be9550d1c08e2a77d438b68f1fd7b42cc
|
4
|
+
data.tar.gz: 85f994952c28133cf8ad08c70d16228b165373f94a90916a0a83fe365e14672d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 013e062376468560718cfbf25c2e2221db7e0808bcadc6413b6cbf5532b966917de0e2c40d2ffd1a859f8fd78267c28b86166e5638d2869cfe22e9c315bd8a4b
|
7
|
+
data.tar.gz: f81c26c3a3705e6caa3399e1598e4c8ad399f175a0be4d26c2383ccfab8a8cfc75c2ebde0135aa9cee2f4cd220df2119a4d3a880b4c585b3dfc113384cfe57e6
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
|
21
|
+
strategy:
|
22
|
+
matrix:
|
23
|
+
ruby: ["2.4", "2.5", "2.6", "2.7"]
|
24
|
+
|
25
|
+
steps:
|
26
|
+
- uses: actions/checkout@v2
|
27
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
28
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
29
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
30
|
+
uses: ruby/setup-ruby@v1
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby }}
|
33
|
+
- name: Install dependencies
|
34
|
+
run: bundle install
|
35
|
+
- name: Run tests
|
36
|
+
run: bundle exec rake
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,61 @@
|
|
1
|
+
### v3.2.0 / 2020-11-26
|
2
|
+
|
3
|
+
[Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.1.0...v3.2.0)
|
4
|
+
|
5
|
+
Changes:
|
6
|
+
|
7
|
+
* Add `--disk-encrypted` option to server creation to allow enabling encryption
|
8
|
+
at rest during a build.
|
9
|
+
* Setup GitHub Actions for Ruby 2.4+ builds to reduce the delays of testing
|
10
|
+
using Travis.
|
11
|
+
* Reduce number of Travis builds due to incredibly slow start up times. We are
|
12
|
+
approaching an hour to get a build taking less than a minute starting.
|
13
|
+
|
14
|
+
### v3.1.0 / 2020-11-17
|
15
|
+
|
16
|
+
[Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.0.1...v3.1.0)
|
17
|
+
|
18
|
+
Changes:
|
19
|
+
|
20
|
+
* Update `fog-brightbox` to v1.2.0
|
21
|
+
* Add `lbs` option for `--min-ssl-ver` to specify the minimum TLS/SSL protocol
|
22
|
+
that should be acceptable for use with the load balancer
|
23
|
+
|
24
|
+
### v3.0.1 / 2020-07-01
|
25
|
+
|
26
|
+
[Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v3.0.0...v3.0.1)
|
27
|
+
|
28
|
+
Bug fixes:
|
29
|
+
|
30
|
+
* Fix `cloudips update --name` to correctly set blank names
|
31
|
+
|
32
|
+
### v3.0.0 / 2020-07-01
|
33
|
+
|
34
|
+
[Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v2.12.0...v3.0.0)
|
35
|
+
|
36
|
+
Backwards incompatible changes:
|
37
|
+
|
38
|
+
* Dropped support for Ruby 1.9
|
39
|
+
|
40
|
+
Changes:
|
41
|
+
|
42
|
+
* Update `fog-brightbox` to v1.1.0
|
43
|
+
* Update `rake` to v12.3.3 to resolve CVE-2020-8130
|
44
|
+
* Update `rspec` to v3.9 to avoid issue when updating `rake`
|
45
|
+
|
46
|
+
Bug fixes:
|
47
|
+
|
48
|
+
* Creating an SQL instance from an existing snapshot has been fixed following
|
49
|
+
the update for `fog-brightbox v1.1.0`
|
50
|
+
|
51
|
+
### v2.12.0 / 2020-01-28
|
52
|
+
|
53
|
+
[Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v2.11.2...v2.12.0)
|
54
|
+
|
55
|
+
Enhancements:
|
56
|
+
|
57
|
+
* Adds `token create` to always attempt to reauthenticate and display a token.
|
58
|
+
|
1
59
|
### v2.11.2 / 2020-01-07
|
2
60
|
|
3
61
|
[Full Changelog](https://github.com/brightbox/brightbox-cli/compare/v2.11.1...v2.11.2)
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
brightbox-cli (2.
|
4
|
+
brightbox-cli (3.2.0)
|
5
5
|
dry-inflector (< 0.2)
|
6
|
-
fog-brightbox (>=
|
6
|
+
fog-brightbox (>= 1.3.0)
|
7
7
|
fog-core (< 2.0)
|
8
8
|
gli (~> 2.12.0)
|
9
9
|
highline (~> 1.6.0)
|
@@ -20,14 +20,13 @@ GEM
|
|
20
20
|
coderay (1.0.9)
|
21
21
|
crack (0.4.2)
|
22
22
|
safe_yaml (~> 1.0.0)
|
23
|
-
diff-lcs (1.
|
23
|
+
diff-lcs (1.4.3)
|
24
24
|
dry-inflector (0.1.2)
|
25
|
-
excon (0.
|
26
|
-
fog-brightbox (
|
25
|
+
excon (0.78.0)
|
26
|
+
fog-brightbox (1.3.0)
|
27
27
|
dry-inflector
|
28
|
-
fog-core
|
28
|
+
fog-core (>= 1.45, < 3.0)
|
29
29
|
fog-json
|
30
|
-
mime-types
|
31
30
|
fog-core (1.45.0)
|
32
31
|
builder
|
33
32
|
excon (~> 0.58)
|
@@ -53,15 +52,20 @@ GEM
|
|
53
52
|
pry-remote (0.1.8)
|
54
53
|
pry (~> 0.9)
|
55
54
|
slop (~> 3.0)
|
56
|
-
rake (
|
57
|
-
rspec (
|
58
|
-
rspec-core (~>
|
59
|
-
rspec-expectations (~>
|
60
|
-
rspec-mocks (~>
|
61
|
-
rspec-core (
|
62
|
-
|
63
|
-
|
64
|
-
|
55
|
+
rake (12.3.3)
|
56
|
+
rspec (3.9.0)
|
57
|
+
rspec-core (~> 3.9.0)
|
58
|
+
rspec-expectations (~> 3.9.0)
|
59
|
+
rspec-mocks (~> 3.9.0)
|
60
|
+
rspec-core (3.9.2)
|
61
|
+
rspec-support (~> 3.9.3)
|
62
|
+
rspec-expectations (3.9.2)
|
63
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
64
|
+
rspec-support (~> 3.9.0)
|
65
|
+
rspec-mocks (3.9.1)
|
66
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
67
|
+
rspec-support (~> 3.9.0)
|
68
|
+
rspec-support (3.9.3)
|
65
69
|
safe_yaml (1.0.4)
|
66
70
|
slop (3.4.5)
|
67
71
|
vcr (2.5.0)
|
@@ -77,9 +81,9 @@ DEPENDENCIES
|
|
77
81
|
mocha
|
78
82
|
pry-remote
|
79
83
|
rake
|
80
|
-
rspec
|
84
|
+
rspec
|
81
85
|
vcr (~> 2.5)
|
82
86
|
webmock
|
83
87
|
|
84
88
|
BUNDLED WITH
|
85
|
-
1.
|
89
|
+
1.17.3
|
data/Jenkinsfile
CHANGED
@@ -9,17 +9,6 @@ pipeline {
|
|
9
9
|
stages {
|
10
10
|
stage("Run tests") {
|
11
11
|
parallel {
|
12
|
-
stage("Ruby 1.9.3") {
|
13
|
-
agent {
|
14
|
-
docker {
|
15
|
-
image 'ruby:1.9.3'
|
16
|
-
}
|
17
|
-
}
|
18
|
-
steps {
|
19
|
-
sh 'BUNDLE_APP_CONFIG=/tmp/bundle.config BUNDLE_DISABLE_SHARED_GEMS=true bundle install --deployment'
|
20
|
-
sh 'BUNDLE_APP_CONFIG=/tmp/bundle.config bundle exec rake test'
|
21
|
-
}
|
22
|
-
}
|
23
12
|
stage("Ruby 2.0") {
|
24
13
|
agent {
|
25
14
|
docker {
|
@@ -28,7 +17,7 @@ pipeline {
|
|
28
17
|
}
|
29
18
|
steps {
|
30
19
|
sh 'bundle install --deployment'
|
31
|
-
sh 'bundle exec rake
|
20
|
+
sh 'bundle exec rake spec'
|
32
21
|
}
|
33
22
|
}
|
34
23
|
stage("Ruby 2.1") {
|
@@ -39,7 +28,7 @@ pipeline {
|
|
39
28
|
}
|
40
29
|
steps {
|
41
30
|
sh 'bundle install --deployment'
|
42
|
-
sh 'bundle exec rake
|
31
|
+
sh 'bundle exec rake spec'
|
43
32
|
}
|
44
33
|
}
|
45
34
|
stage("Ruby 2.2") {
|
@@ -50,7 +39,7 @@ pipeline {
|
|
50
39
|
}
|
51
40
|
steps {
|
52
41
|
sh 'bundle install --deployment'
|
53
|
-
sh 'bundle exec rake
|
42
|
+
sh 'bundle exec rake spec'
|
54
43
|
}
|
55
44
|
}
|
56
45
|
stage("Ruby 2.3") {
|
@@ -61,7 +50,7 @@ pipeline {
|
|
61
50
|
}
|
62
51
|
steps {
|
63
52
|
sh 'bundle install --deployment'
|
64
|
-
sh 'bundle exec rake
|
53
|
+
sh 'bundle exec rake spec'
|
65
54
|
}
|
66
55
|
}
|
67
56
|
stage("Ruby 2.4") {
|
@@ -72,7 +61,7 @@ pipeline {
|
|
72
61
|
}
|
73
62
|
steps {
|
74
63
|
sh 'bundle install --deployment'
|
75
|
-
sh 'bundle exec rake
|
64
|
+
sh 'bundle exec rake spec'
|
76
65
|
}
|
77
66
|
}
|
78
67
|
stage("Ruby 2.5") {
|
@@ -83,7 +72,7 @@ pipeline {
|
|
83
72
|
}
|
84
73
|
steps {
|
85
74
|
sh 'bundle install --deployment'
|
86
|
-
sh 'bundle exec rake
|
75
|
+
sh 'bundle exec rake spec'
|
87
76
|
}
|
88
77
|
}
|
89
78
|
stage("Ruby 2.6") {
|
@@ -94,7 +83,7 @@ pipeline {
|
|
94
83
|
}
|
95
84
|
steps {
|
96
85
|
sh 'bundle install --deployment'
|
97
|
-
sh 'bundle exec rake
|
86
|
+
sh 'bundle exec rake spec'
|
98
87
|
}
|
99
88
|
}
|
100
89
|
}
|
data/Rakefile
CHANGED
@@ -1,16 +1,6 @@
|
|
1
|
-
require "bundler"
|
2
1
|
require "rspec/core/rake_task"
|
3
2
|
|
4
|
-
bbcloud_path = File.expand_path("./lib", File.dirname(__FILE__))
|
5
|
-
$LOAD_PATH.unshift(bbcloud_path)
|
6
|
-
|
7
|
-
task :default => [:test]
|
8
|
-
|
9
3
|
Bundler::GemHelper.install_tasks
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
10
5
|
|
11
|
-
|
12
|
-
|
13
|
-
desc "Runs all tests (rspec and cucumber)"
|
14
|
-
task :test do
|
15
|
-
Rake::Task["spec"].invoke
|
16
|
-
end
|
6
|
+
task :default => :spec
|
data/brightbox-cli.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.description = %q(Scripts to interact with the Brightbox cloud API)
|
13
13
|
s.license = "MIT"
|
14
14
|
|
15
|
-
s.required_ruby_version = ">=
|
15
|
+
s.required_ruby_version = ">= 2.0"
|
16
16
|
|
17
17
|
s.rubyforge_project = "brightbox-cli"
|
18
18
|
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
22
22
|
s.require_paths = ["lib"]
|
23
23
|
|
24
|
-
s.add_dependency "fog-brightbox", ">=
|
24
|
+
s.add_dependency "fog-brightbox", ">= 1.3.0"
|
25
25
|
s.add_dependency "fog-core", "< 2.0"
|
26
26
|
s.add_dependency "gli", "~> 2.12.0"
|
27
27
|
s.add_dependency "i18n", "~> 0.6.0"
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
s.add_development_dependency "mocha"
|
37
37
|
s.add_development_dependency "pry-remote"
|
38
38
|
s.add_development_dependency "rake"
|
39
|
-
s.add_development_dependency "rspec"
|
39
|
+
s.add_development_dependency "rspec"
|
40
40
|
s.add_development_dependency "vcr", "~> 2.5"
|
41
41
|
s.add_development_dependency "webmock"
|
42
42
|
|
data/lib/brightbox-cli/api.rb
CHANGED
@@ -16,7 +16,7 @@ module Brightbox
|
|
16
16
|
# Returns the current connection to the Brightbox API, creating a new
|
17
17
|
# {ConnectionManager} and connection if necessary.
|
18
18
|
#
|
19
|
-
# @return [Fog::Compute::
|
19
|
+
# @return [Fog::Brightbox::Compute::Real]
|
20
20
|
#
|
21
21
|
def self.conn
|
22
22
|
if @@connection_manager
|
@@ -9,7 +9,7 @@ module Brightbox
|
|
9
9
|
def self.invite(email, role)
|
10
10
|
options = { :email => email, :role => role }
|
11
11
|
data = conn.create_collaboration(options)
|
12
|
-
model = Fog::Compute::
|
12
|
+
model = Fog::Brightbox::Compute::Collaboration.new(data)
|
13
13
|
new(model)
|
14
14
|
end
|
15
15
|
|
@@ -36,7 +36,7 @@ module Brightbox
|
|
36
36
|
# with a request, before updating the model
|
37
37
|
data = FirewallPolicy.conn.update_firewall_policy(policy_id, params)
|
38
38
|
|
39
|
-
model = Fog::Compute::
|
39
|
+
model = Fog::Brightbox::Compute::FirewallPolicy.new(data)
|
40
40
|
policy = FirewallPolicy.new(model)
|
41
41
|
|
42
42
|
render_table([policy], global_options)
|
@@ -52,6 +52,10 @@ module Brightbox
|
|
52
52
|
c.desc "Filepath to the private key used to sign SSL certificate (OpenSSL supported formats)."
|
53
53
|
c.flag ["ssl-key"]
|
54
54
|
|
55
|
+
c.desc "Sets the minimum version of TLS/SSL to support in the format 'TLSv1.x'"
|
56
|
+
c.default_value "TLSv1.2"
|
57
|
+
c.flag ["ssl-min-ver"]
|
58
|
+
|
55
59
|
c.desc "Enable SSL v3 support"
|
56
60
|
c.switch ["sslv3"]
|
57
61
|
|
@@ -118,6 +122,7 @@ module Brightbox
|
|
118
122
|
:listeners => listeners,
|
119
123
|
:certificate_pem => ssl_cert,
|
120
124
|
:certificate_private_key => ssl_key,
|
125
|
+
:ssl_minimum_version => options["ssl-min-ver"],
|
121
126
|
:sslv3 => options["sslv3"],
|
122
127
|
:nodes => nodes)
|
123
128
|
render_table([lb], global_options)
|
@@ -45,6 +45,9 @@ module Brightbox
|
|
45
45
|
c.desc "Filepath to the private key used to sign SSL certificate (OpenSSL supported formats)."
|
46
46
|
c.flag ["ssl-key"]
|
47
47
|
|
48
|
+
c.desc "Sets the minimum version of TLS/SSL to support in the format 'TLSv1.x'"
|
49
|
+
c.flag ["ssl-min-ver"]
|
50
|
+
|
48
51
|
c.desc "Clears SSL details from the load balancer."
|
49
52
|
c.switch ["remove-ssl"], :negatable => false
|
50
53
|
|
@@ -128,6 +131,10 @@ module Brightbox
|
|
128
131
|
lbopts[:certificate_private_key] = ""
|
129
132
|
end
|
130
133
|
|
134
|
+
if options["ssl-min-ver"]
|
135
|
+
lbopts[:ssl_minimum_version] = options["ssl-min-ver"] unless options["ssl-min-ver"].nil?
|
136
|
+
end
|
137
|
+
|
131
138
|
lbopts.nilify_blanks
|
132
139
|
|
133
140
|
lb = LoadBalancer.find lb_id
|
@@ -29,6 +29,10 @@ module Brightbox
|
|
29
29
|
c.default_value true
|
30
30
|
c.switch [:e, :base64], :negatable => true
|
31
31
|
|
32
|
+
c.desc "Enable encryption at rest for disk"
|
33
|
+
c.default_value false
|
34
|
+
c.switch ["disk-encrypted"], :negatable => false
|
35
|
+
|
32
36
|
c.desc "Server groups to place server in - comma delimited list"
|
33
37
|
c.flag [:g, "server-groups"]
|
34
38
|
|
@@ -116,6 +120,7 @@ module Brightbox
|
|
116
120
|
}
|
117
121
|
|
118
122
|
params[:cloud_ip] = options[:"cloud-ip"] if options.key?(:"cloud-ip")
|
123
|
+
params[:disk_encrypted] = options[:"disk-encrypted"] if options.key?(:"disk-encrypted")
|
119
124
|
|
120
125
|
servers = Server.create_servers options[:i], params
|
121
126
|
render_table(servers, global_options)
|
@@ -10,10 +10,25 @@ module Brightbox
|
|
10
10
|
c.default_value "text"
|
11
11
|
c.flag [:format]
|
12
12
|
|
13
|
-
c.action do |
|
13
|
+
c.action do |_, options, _|
|
14
|
+
token = Token.show(Brightbox.config, options)
|
15
|
+
$stdout.puts token.format(options[:format] || "text")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
cmd.desc "Create new OAuth2 Bearer token"
|
20
|
+
cmd.command [:create] do |c|
|
21
|
+
c.desc "Either 'text', 'token', 'json' or 'curl'"
|
22
|
+
c.arg_name "format"
|
23
|
+
c.default_value "text"
|
24
|
+
c.flag [:format]
|
25
|
+
|
26
|
+
c.action do |_, options, _|
|
27
|
+
config.reauthenticate
|
14
28
|
token = Token.show(Brightbox.config, options)
|
15
29
|
$stdout.puts token.format(options[:format])
|
16
30
|
end
|
17
31
|
end
|
32
|
+
|
18
33
|
end
|
19
34
|
end
|
@@ -7,6 +7,13 @@ describe "brightbox cloudips" do
|
|
7
7
|
let(:stdout) { output.stdout }
|
8
8
|
let(:stderr) { output.stderr }
|
9
9
|
|
10
|
+
before do
|
11
|
+
config_from_contents(USER_APP_CONFIG_CONTENTS)
|
12
|
+
|
13
|
+
stub_request(:post, "http://api.brightbox.dev/token").
|
14
|
+
to_return(status: 200, body: JSON.dump(access_token: "ACCESS-TOKEN", refresh_token: "REFRESH-TOKEN"))
|
15
|
+
end
|
16
|
+
|
10
17
|
context "" do
|
11
18
|
let(:argv) { %w(cloudips update) }
|
12
19
|
|
@@ -14,5 +21,63 @@ describe "brightbox cloudips" do
|
|
14
21
|
expect { output }.to_not raise_error
|
15
22
|
end
|
16
23
|
end
|
24
|
+
|
25
|
+
context "when name is updated" do
|
26
|
+
let(:argv) { ["cloudips", "update", "--name=#{new_name}", "cip-12345"] }
|
27
|
+
|
28
|
+
let(:json_response) do
|
29
|
+
<<-EOS
|
30
|
+
{
|
31
|
+
"id":"cip-12345",
|
32
|
+
"name":"#{new_name}"
|
33
|
+
}
|
34
|
+
EOS
|
35
|
+
end
|
36
|
+
|
37
|
+
context "--name 'New name'" do
|
38
|
+
let(:new_name) { "New name" }
|
39
|
+
let(:expected_args) { ["cip-12345", { :name => new_name }] }
|
40
|
+
|
41
|
+
before do
|
42
|
+
stub_request(:put, "http://api.brightbox.dev/1.0/cloud_ips/cip-12345?account_id=acc-12345")
|
43
|
+
.with(:headers => { "Content-Type" => "application/json" },
|
44
|
+
:body => hash_including("name" => "New name"))
|
45
|
+
.and_return(:status => 200, :body => json_response)
|
46
|
+
|
47
|
+
stub_request(:get, "http://api.brightbox.dev/1.0/cloud_ips/cip-12345?account_id=acc-12345")
|
48
|
+
.with(:headers => { "Content-Type" => "application/json" })
|
49
|
+
.and_return(:status => 200, :body => json_response)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "puts new name in update" do
|
53
|
+
expect(Brightbox::CloudIP.conn).to receive(:update_cloud_ip).with(*expected_args).and_call_original
|
54
|
+
expect(stderr).to eq("")
|
55
|
+
expect(stdout).to include("cip-12345")
|
56
|
+
expect(stdout).to include("New name")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "--name ''" do
|
61
|
+
let(:new_name) { "" }
|
62
|
+
let(:expected_args) { ["cip-12345", { :name => "" }] }
|
63
|
+
|
64
|
+
before do
|
65
|
+
stub_request(:put, "http://api.brightbox.dev/1.0/cloud_ips/cip-12345?account_id=acc-12345")
|
66
|
+
.with(:headers => { "Content-Type" => "application/json" },
|
67
|
+
:body => hash_including("name" => ""))
|
68
|
+
.and_return(:status => 200, :body => json_response)
|
69
|
+
|
70
|
+
stub_request(:get, "http://api.brightbox.dev/1.0/cloud_ips/cip-12345?account_id=acc-12345")
|
71
|
+
.with(:headers => { "Content-Type" => "application/json" })
|
72
|
+
.and_return(:status => 200, :body => json_response)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "puts new name in update" do
|
76
|
+
expect(Brightbox::CloudIP.conn).to receive(:update_cloud_ip).with(*expected_args).and_call_original
|
77
|
+
expect(stderr).to eq("")
|
78
|
+
expect(stdout).to include("cip-12345")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
17
82
|
end
|
18
83
|
end
|
@@ -7,6 +7,11 @@ describe "brightbox lbs" do
|
|
7
7
|
let(:stdout) { output.stdout }
|
8
8
|
let(:stderr) { output.stderr }
|
9
9
|
|
10
|
+
before do
|
11
|
+
config = config_from_contents(USER_APP_CONFIG_CONTENTS)
|
12
|
+
cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
|
13
|
+
end
|
14
|
+
|
10
15
|
context "" do
|
11
16
|
let(:argv) { %w(lbs create) }
|
12
17
|
|
@@ -14,5 +19,31 @@ describe "brightbox lbs" do
|
|
14
19
|
expect { output }.to_not raise_error
|
15
20
|
end
|
16
21
|
end
|
22
|
+
|
23
|
+
context "--ssl-min-ver=TLSv1.0" do
|
24
|
+
let(:argv) { ["lbs", "create", "--ssl-min-ver", "TLSv1.0", "srv-12345"] }
|
25
|
+
let(:expected_args) { { ssl_minimum_version: "TLSv1.0" } }
|
26
|
+
|
27
|
+
let(:json_response) do
|
28
|
+
<<-EOS
|
29
|
+
{
|
30
|
+
"id":"lba-12345",
|
31
|
+
"ssl_minimum_version":"TLSv1.0"
|
32
|
+
}
|
33
|
+
EOS
|
34
|
+
end
|
35
|
+
|
36
|
+
before do
|
37
|
+
stub_request(:post, "http://api.brightbox.dev/1.0/load_balancers?account_id=acc-12345")
|
38
|
+
.with(:body => hash_including("ssl_minimum_version" => "TLSv1.0"))
|
39
|
+
.to_return(:status => 202, :body => json_response)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "includes ssl_minimum_version in response" do
|
43
|
+
expect(Brightbox::LoadBalancer).to receive(:create).with(hash_including(expected_args)).and_call_original
|
44
|
+
expect(stderr).to eq("Creating a new load balancer\n")
|
45
|
+
expect(stdout).to include("lba-12345")
|
46
|
+
end
|
47
|
+
end
|
17
48
|
end
|
18
49
|
end
|
@@ -7,6 +7,11 @@ describe "brightbox lbs" do
|
|
7
7
|
let(:stdout) { output.stdout }
|
8
8
|
let(:stderr) { output.stderr }
|
9
9
|
|
10
|
+
before do
|
11
|
+
config = config_from_contents(USER_APP_CONFIG_CONTENTS)
|
12
|
+
cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
|
13
|
+
end
|
14
|
+
|
10
15
|
context "" do
|
11
16
|
let(:argv) { %w(lbs update) }
|
12
17
|
|
@@ -14,5 +19,32 @@ describe "brightbox lbs" do
|
|
14
19
|
expect { output }.to_not raise_error
|
15
20
|
end
|
16
21
|
end
|
22
|
+
|
23
|
+
context "--ssl-min-ver=TLSv1.0" do
|
24
|
+
let(:argv) { ["lbs", "update", "--ssl-min-ver", "TLSv1.0", "lba-12345"] }
|
25
|
+
|
26
|
+
let(:json_response) do
|
27
|
+
<<-EOS
|
28
|
+
{
|
29
|
+
"id":"lba-12345",
|
30
|
+
"ssl_minimum_version":"TLSv1.0"
|
31
|
+
}
|
32
|
+
EOS
|
33
|
+
end
|
34
|
+
|
35
|
+
before do
|
36
|
+
stub_request(:get, "http://api.brightbox.dev/1.0/load_balancers/lba-12345?account_id=acc-12345")
|
37
|
+
.to_return(:status => 200, :body => '{"id":"lba-12345"}')
|
38
|
+
|
39
|
+
stub_request(:put, "http://api.brightbox.dev/1.0/load_balancers/lba-12345?account_id=acc-12345")
|
40
|
+
.with(:body => hash_including("ssl_minimum_version" => "TLSv1.0"))
|
41
|
+
.to_return(:status => 202, :body => json_response)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "includes ssl_minimum_version in response" do
|
45
|
+
expect(stderr).to eq("Updating load balancer lba-12345\n")
|
46
|
+
expect(stdout).to include("lba-12345")
|
47
|
+
end
|
48
|
+
end
|
17
49
|
end
|
18
50
|
end
|
@@ -7,6 +7,10 @@ describe "brightbox servers" do
|
|
7
7
|
let(:stdout) { output.stdout }
|
8
8
|
let(:stderr) { output.stderr }
|
9
9
|
|
10
|
+
let(:image) { double(:id => "img-12345", :name => "Linux") }
|
11
|
+
let(:type) { double(:id => "typ-12345", :handle => "nano") }
|
12
|
+
let(:zone) { double(:handle => "gb1-a") }
|
13
|
+
|
10
14
|
before do
|
11
15
|
config = config_from_contents(USER_APP_CONFIG_CONTENTS)
|
12
16
|
cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
|
@@ -27,10 +31,6 @@ describe "brightbox servers" do
|
|
27
31
|
context "with --cloud-ip with nominated IP argument" do
|
28
32
|
let(:argv) { %w(servers create --cloud-ip cip-12345 img-12345) }
|
29
33
|
|
30
|
-
let(:image) { double(:id => "img-12345", :name => "Linux") }
|
31
|
-
let(:type) { double(:id => "typ-12345", :handle => "nano") }
|
32
|
-
let(:zone) { double(:handle => "gb1-a") }
|
33
|
-
|
34
34
|
before do
|
35
35
|
expect(Brightbox::Image).to receive(:find).with("img-12345").and_return(image)
|
36
36
|
expect(Brightbox::Type).to receive(:find_by_handle).and_return(type)
|
@@ -50,10 +50,6 @@ describe "brightbox servers" do
|
|
50
50
|
context "with --cloud-ip true argument" do
|
51
51
|
let(:argv) { %w(servers create --cloud-ip true img-12345) }
|
52
52
|
|
53
|
-
let(:image) { double(:id => "img-12345", :name => "Linux") }
|
54
|
-
let(:type) { double(:id => "typ-12345", :handle => "nano") }
|
55
|
-
let(:zone) { double(:handle => "gb1-a") }
|
56
|
-
|
57
53
|
before do
|
58
54
|
expect(Brightbox::Image).to receive(:find).with("img-12345").and_return(image)
|
59
55
|
expect(Brightbox::Type).to receive(:find_by_handle).and_return(type)
|
@@ -70,6 +66,26 @@ describe "brightbox servers" do
|
|
70
66
|
end
|
71
67
|
end
|
72
68
|
|
69
|
+
context "with --disk-encrypted switch" do
|
70
|
+
let(:argv) { %w(servers create --disk-encrypted img-12345) }
|
71
|
+
|
72
|
+
before do
|
73
|
+
expect(Brightbox::Image).to receive(:find).with("img-12345").and_return(image)
|
74
|
+
expect(Brightbox::Type).to receive(:find_by_handle).and_return(type)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "requests new server with encryption at rest enabled" do
|
78
|
+
stub_request(:post, "http://api.brightbox.dev/1.0/servers?account_id=acc-12345")
|
79
|
+
.with(:headers => { "Content-Type" => "application/json" },
|
80
|
+
:body => hash_including(:disk_encrypted => true))
|
81
|
+
.and_return(:status => 202, :body => sample_response)
|
82
|
+
|
83
|
+
expect(stderr).to match("Creating a nano")
|
84
|
+
expect(stderr).not_to match("ERROR")
|
85
|
+
expect(stdout).to match("srv-12345")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
73
89
|
def sample_response
|
74
90
|
'{
|
75
91
|
"id": "srv-12345",
|
@@ -104,6 +104,32 @@ describe "brightbox sql instances" do
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
+
context "--snapshot=dbi-1493j" do
|
108
|
+
let(:argv) { ["sql", "instances", "create", "--snapshot=dbi-1493j"] }
|
109
|
+
let(:expected_args) { { :snapshot_id => "dbi-1493j" } }
|
110
|
+
|
111
|
+
let(:json_response) do
|
112
|
+
<<-EOS
|
113
|
+
{
|
114
|
+
"id":"dbs-12345"
|
115
|
+
}
|
116
|
+
EOS
|
117
|
+
end
|
118
|
+
|
119
|
+
before do
|
120
|
+
stub_request(:post, "http://api.brightbox.dev/1.0/database_servers?account_id=acc-12345")
|
121
|
+
.with(:headers => { "Content-Type" => "application/json" },
|
122
|
+
:body => hash_including("snapshot" => "dbi-1493j"))
|
123
|
+
.and_return(:status => 202, :body => json_response)
|
124
|
+
end
|
125
|
+
|
126
|
+
it "includes schedule fields in response" do
|
127
|
+
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
128
|
+
expect(stdout).to include("id: dbs-12345")
|
129
|
+
expect(stderr).to eql("")
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
107
133
|
context "--snapshots-schedule='0 12 * * 4'" do
|
108
134
|
let(:argv) { ["sql", "instances", "create", "--snapshots-schedule=0 12 * * 4"] }
|
109
135
|
let(:expected_args) { { :snapshots_schedule => "0 12 * * 4" } }
|
@@ -19,7 +19,7 @@ shared_context "collaborating accounts" do
|
|
19
19
|
"load_balancers_limit" => 5,
|
20
20
|
"load_balancers_used" => 0
|
21
21
|
}
|
22
|
-
Fog::Compute::
|
22
|
+
Fog::Brightbox::Compute::Account.new(data)
|
23
23
|
end
|
24
24
|
|
25
25
|
# As returned from conn.user_collaborations.all
|
@@ -35,7 +35,7 @@ shared_context "collaborating accounts" do
|
|
35
35
|
"status" => "active"
|
36
36
|
}
|
37
37
|
}
|
38
|
-
Fog::Compute::
|
38
|
+
Fog::Brightbox::Compute::UserCollaboration.new(data)
|
39
39
|
end
|
40
40
|
|
41
41
|
# As returned from conn.user_collaborations.all
|
@@ -51,6 +51,6 @@ shared_context "collaborating accounts" do
|
|
51
51
|
"status" => "active"
|
52
52
|
}
|
53
53
|
}
|
54
|
-
Fog::Compute::
|
54
|
+
Fog::Brightbox::Compute::UserCollaboration.new(data)
|
55
55
|
end
|
56
56
|
end
|
@@ -13,7 +13,7 @@ describe Brightbox::Account do
|
|
13
13
|
expect(Brightbox::Account.all).to be_kind_of(Array)
|
14
14
|
|
15
15
|
Brightbox::Account.all.each do |account|
|
16
|
-
expect(account).to be_kind_of(Fog::Compute::
|
16
|
+
expect(account).to be_kind_of(Fog::Brightbox::Compute::Account)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -31,7 +31,7 @@ describe Brightbox::Account do
|
|
31
31
|
expect(Brightbox::Account.all).to be_kind_of(Array)
|
32
32
|
|
33
33
|
Brightbox::Account.all.each do |account|
|
34
|
-
expect(account).to be_kind_of(Fog::Compute::
|
34
|
+
expect(account).to be_kind_of(Fog::Brightbox::Compute::Account)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -18,7 +18,7 @@ describe Brightbox::Account do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "returns requested account" do
|
21
|
-
expect(@account).to be_kind_of(Fog::Compute::
|
21
|
+
expect(@account).to be_kind_of(Fog::Brightbox::Compute::Account)
|
22
22
|
expect(@account.id).to eql(@account_id)
|
23
23
|
end
|
24
24
|
|
@@ -46,7 +46,7 @@ describe Brightbox::Account do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
it "returns the client's owning account" do
|
49
|
-
expect(@account).to be_kind_of(Fog::Compute::
|
49
|
+
expect(@account).to be_kind_of(Fog::Brightbox::Compute::Account)
|
50
50
|
expect(@account.id).to eql(@account_id)
|
51
51
|
end
|
52
52
|
|
@@ -7,7 +7,7 @@ describe Brightbox::Api, ".conn" do
|
|
7
7
|
|
8
8
|
context "when account is not required", vcr: true do
|
9
9
|
it "returns a 'real' fog compute instance" do
|
10
|
-
expect(Brightbox::Api.conn).to be_instance_of(Fog::Compute::
|
10
|
+
expect(Brightbox::Api.conn).to be_instance_of(Fog::Brightbox::Compute::Real)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -19,7 +19,7 @@ describe Brightbox::ConnectionManager, "#fetch_connection" do
|
|
19
19
|
|
20
20
|
context "when not requesting a scoped connection" do
|
21
21
|
it "returns a fog compute instance" do
|
22
|
-
expect(connection_manager.fetch_connection(false)).to be_kind_of(Fog::Compute::
|
22
|
+
expect(connection_manager.fetch_connection(false)).to be_kind_of(Fog::Brightbox::Compute::Real)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "returns a connection without account scope" do
|
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
require "fog/brightbox/models/compute/database_server"
|
3
3
|
|
4
4
|
describe Brightbox::DatabaseServer, "#cloud_ips" do
|
5
|
-
let(:fog_model) { Fog::Compute::
|
5
|
+
let(:fog_model) { Fog::Brightbox::Compute::DatabaseServer.new(fog_settings) }
|
6
6
|
let(:dbs) { described_class.new(fog_model) }
|
7
7
|
|
8
8
|
context "when attribute is missing" do
|
@@ -4,7 +4,7 @@ require "fog/brightbox/models/compute/database_server"
|
|
4
4
|
describe Brightbox::DatabaseServer do
|
5
5
|
|
6
6
|
describe "#maintenance_window" do
|
7
|
-
let(:fog_model) { Fog::Compute::
|
7
|
+
let(:fog_model) { Fog::Brightbox::Compute::DatabaseServer.new(fog_settings) }
|
8
8
|
let(:dbs) { Brightbox::DatabaseServer.new(fog_model) }
|
9
9
|
|
10
10
|
context "when default values" do
|
@@ -141,7 +141,7 @@ describe Brightbox::UserCollaboration do
|
|
141
141
|
# Collection#load is private in fog so we can't just pass our collection
|
142
142
|
# into get the correct object initialised.
|
143
143
|
api_response_data.map do |datum|
|
144
|
-
Fog::Compute::
|
144
|
+
Fog::Brightbox::Compute::UserCollaboration.new(datum)
|
145
145
|
end
|
146
146
|
end
|
147
147
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brightbox-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Leach
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '1.0'
|
19
|
+
version: 1.3.0
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '1.0'
|
26
|
+
version: 1.3.0
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: fog-core
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -188,16 +182,16 @@ dependencies:
|
|
188
182
|
name: rspec
|
189
183
|
requirement: !ruby/object:Gem::Requirement
|
190
184
|
requirements:
|
191
|
-
- - "
|
185
|
+
- - ">="
|
192
186
|
- !ruby/object:Gem::Version
|
193
|
-
version: '
|
187
|
+
version: '0'
|
194
188
|
type: :development
|
195
189
|
prerelease: false
|
196
190
|
version_requirements: !ruby/object:Gem::Requirement
|
197
191
|
requirements:
|
198
|
-
- - "
|
192
|
+
- - ">="
|
199
193
|
- !ruby/object:Gem::Version
|
200
|
-
version: '
|
194
|
+
version: '0'
|
201
195
|
- !ruby/object:Gem::Dependency
|
202
196
|
name: vcr
|
203
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -247,6 +241,7 @@ executables:
|
|
247
241
|
extensions: []
|
248
242
|
extra_rdoc_files: []
|
249
243
|
files:
|
244
|
+
- ".github/workflows/ruby.yml"
|
250
245
|
- ".gitignore"
|
251
246
|
- ".travis.yml"
|
252
247
|
- CHANGELOG.md
|
@@ -763,7 +758,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
763
758
|
requirements:
|
764
759
|
- - ">="
|
765
760
|
- !ruby/object:Gem::Version
|
766
|
-
version:
|
761
|
+
version: '2.0'
|
767
762
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
768
763
|
requirements:
|
769
764
|
- - ">="
|