aptible-cli 0.14.1 → 0.15.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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -1
  3. data/aptible-cli.gemspec +1 -0
  4. data/bin/aptible +9 -5
  5. data/lib/aptible/cli.rb +36 -0
  6. data/lib/aptible/cli/agent.rb +10 -6
  7. data/lib/aptible/cli/error.rb +6 -0
  8. data/lib/aptible/cli/formatter.rb +21 -0
  9. data/lib/aptible/cli/formatter/grouped_keyed_list.rb +54 -0
  10. data/lib/aptible/cli/formatter/keyed_list.rb +25 -0
  11. data/lib/aptible/cli/formatter/keyed_object.rb +16 -0
  12. data/lib/aptible/cli/formatter/list.rb +33 -0
  13. data/lib/aptible/cli/formatter/node.rb +8 -0
  14. data/lib/aptible/cli/formatter/object.rb +38 -0
  15. data/lib/aptible/cli/formatter/root.rb +46 -0
  16. data/lib/aptible/cli/formatter/value.rb +25 -0
  17. data/lib/aptible/cli/helpers/app.rb +1 -0
  18. data/lib/aptible/cli/helpers/database.rb +22 -6
  19. data/lib/aptible/cli/helpers/operation.rb +3 -2
  20. data/lib/aptible/cli/helpers/tunnel.rb +1 -3
  21. data/lib/aptible/cli/helpers/vhost.rb +9 -46
  22. data/lib/aptible/cli/renderer.rb +26 -0
  23. data/lib/aptible/cli/renderer/base.rb +8 -0
  24. data/lib/aptible/cli/renderer/json.rb +26 -0
  25. data/lib/aptible/cli/renderer/text.rb +99 -0
  26. data/lib/aptible/cli/resource_formatter.rb +136 -0
  27. data/lib/aptible/cli/subcommands/apps.rb +26 -14
  28. data/lib/aptible/cli/subcommands/backup.rb +22 -4
  29. data/lib/aptible/cli/subcommands/config.rb +15 -11
  30. data/lib/aptible/cli/subcommands/db.rb +82 -31
  31. data/lib/aptible/cli/subcommands/deploy.rb +1 -1
  32. data/lib/aptible/cli/subcommands/endpoints.rb +11 -8
  33. data/lib/aptible/cli/subcommands/operation.rb +2 -1
  34. data/lib/aptible/cli/subcommands/rebuild.rb +1 -1
  35. data/lib/aptible/cli/subcommands/restart.rb +1 -1
  36. data/lib/aptible/cli/subcommands/services.rb +8 -9
  37. data/lib/aptible/cli/version.rb +1 -1
  38. data/spec/aptible/cli/agent_spec.rb +11 -14
  39. data/spec/aptible/cli/formatter_spec.rb +4 -0
  40. data/spec/aptible/cli/renderer/json_spec.rb +63 -0
  41. data/spec/aptible/cli/renderer/text_spec.rb +150 -0
  42. data/spec/aptible/cli/resource_formatter_spec.rb +113 -0
  43. data/spec/aptible/cli/subcommands/apps_spec.rb +144 -28
  44. data/spec/aptible/cli/subcommands/backup_spec.rb +37 -16
  45. data/spec/aptible/cli/subcommands/config_spec.rb +95 -0
  46. data/spec/aptible/cli/subcommands/db_spec.rb +185 -93
  47. data/spec/aptible/cli/subcommands/endpoints_spec.rb +10 -8
  48. data/spec/aptible/cli/subcommands/operation_spec.rb +0 -1
  49. data/spec/aptible/cli/subcommands/rebuild_spec.rb +17 -0
  50. data/spec/aptible/cli/subcommands/services_spec.rb +8 -12
  51. data/spec/aptible/cli_spec.rb +31 -0
  52. data/spec/fabricators/account_fabricator.rb +11 -0
  53. data/spec/fabricators/app_fabricator.rb +15 -0
  54. data/spec/fabricators/configuration_fabricator.rb +8 -0
  55. data/spec/fabricators/database_image_fabricator.rb +17 -0
  56. data/spec/fabricators/operation_fabricator.rb +1 -0
  57. data/spec/fabricators/service_fabricator.rb +4 -0
  58. data/spec/spec_helper.rb +63 -1
  59. metadata +55 -4
  60. data/spec/aptible/cli/helpers/vhost_spec.rb +0 -105
@@ -27,7 +27,8 @@ describe Aptible::CLI::Agent do
27
27
  Fabricate(:vhost, service: service, **args).tap do |v|
28
28
  expect_operation(v, 'provision')
29
29
  expect(v).to receive(:reload).and_return(v)
30
- expect(subject).to receive(:explain_vhost).with(service, v)
30
+ expect(Aptible::CLI::ResourceFormatter).to receive(:inject_vhost)
31
+ .with(an_instance_of(Aptible::CLI::Formatter::Object), v, service)
31
32
  end
32
33
  end
33
34
  end
@@ -36,7 +37,10 @@ describe Aptible::CLI::Agent do
36
37
  expect(vhost).to receive(:update!).with(options) do
37
38
  expect_operation(vhost, 'provision')
38
39
  expect(vhost).to receive(:reload).and_return(vhost)
39
- expect(subject).to receive(:explain_vhost).with(vhost.service, vhost)
40
+ expect(Aptible::CLI::ResourceFormatter).to receive(:inject_vhost)
41
+ .with(
42
+ an_instance_of(Aptible::CLI::Formatter::Object), vhost, vhost.service
43
+ )
40
44
  end
41
45
  end
42
46
 
@@ -94,9 +98,6 @@ describe Aptible::CLI::Agent do
94
98
 
95
99
  describe 'endpoints:list' do
96
100
  it 'lists Endpoints' do
97
- lines = []
98
- allow(subject).to receive(:say) { |m| lines << m }
99
-
100
101
  s = Fabricate(:service, database: db)
101
102
  v1 = Fabricate(:vhost, service: s)
102
103
  v2 = Fabricate(:vhost, service: s)
@@ -104,6 +105,8 @@ describe Aptible::CLI::Agent do
104
105
  stub_options(database: db.handle)
105
106
  subject.send('endpoints:list')
106
107
 
108
+ lines = captured_output_text.split("\n")
109
+
107
110
  expect(lines).to include("Hostname: #{v1.external_host}")
108
111
  expect(lines).to include("Hostname: #{v2.external_host}")
109
112
 
@@ -539,9 +542,6 @@ describe Aptible::CLI::Agent do
539
542
 
540
543
  describe 'endpoints:list' do
541
544
  it 'lists Endpoints across services' do
542
- lines = []
543
- allow(subject).to receive(:say) { |m| lines << m }
544
-
545
545
  s1 = Fabricate(:service, app: app)
546
546
  v1 = Fabricate(:vhost, service: s1)
547
547
 
@@ -551,6 +551,8 @@ describe Aptible::CLI::Agent do
551
551
 
552
552
  subject.send('endpoints:list')
553
553
 
554
+ lines = captured_output_text.split("\n")
555
+
554
556
  expect(lines).to include("Hostname: #{v1.external_host}")
555
557
  expect(lines).to include("Hostname: #{v2.external_host}")
556
558
  expect(lines).to include("Hostname: #{v3.external_host}")
@@ -6,7 +6,6 @@ describe Aptible::CLI::Agent do
6
6
 
7
7
  before do
8
8
  allow(subject).to receive(:fetch_token).and_return(token)
9
- allow(subject).to receive(:say) { |m| messages << m }
10
9
  end
11
10
 
12
11
  describe '#operation:cancel' do
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Aptible::CLI::Agent do
4
+ let(:app) { Fabricate(:app) }
5
+ let(:operation) { Fabricate(:operation, resource: app) }
6
+ before { allow(subject).to receive(:ensure_app).and_return(app) }
7
+
8
+ describe '#rebuild' do
9
+ it 'rebuilds the app' do
10
+ expect(app).to receive(:create_operation!)
11
+ .with(type: 'rebuild').and_return(operation)
12
+ expect(subject).to receive(:attach_to_operation_logs).with(operation)
13
+
14
+ subject.send('rebuild')
15
+ end
16
+ end
17
+ end
@@ -4,45 +4,41 @@ describe Aptible::CLI::Agent do
4
4
  let(:token) { double 'token' }
5
5
  let(:app) { Fabricate(:app) }
6
6
 
7
- let(:lines) { [] }
8
-
9
7
  before do
10
8
  allow(subject).to receive(:fetch_token) { token }
11
9
  allow(Aptible::Api::App).to receive(:all).with(token: token)
12
10
  .and_return([app])
13
11
  allow(subject).to receive(:options).and_return(app: app.handle)
14
-
15
- allow(subject).to receive(:say) { |m| lines << m }
16
12
  end
17
13
 
18
14
  it 'lists a CMD service' do
19
15
  Fabricate(:service, app: app, process_type: 'cmd', command: nil)
20
16
  subject.send('services')
21
17
 
22
- expect(lines).to include('Service: cmd')
23
- expect(lines).to include('Command: CMD')
18
+ expect(captured_output_text.split("\n")).to include('Service: cmd')
19
+ expect(captured_output_text.split("\n")).to include('Command: CMD')
24
20
  end
25
21
 
26
22
  it 'lists a service with command' do
27
23
  Fabricate(:service, app: app, process_type: 'cmd', command: 'foobar')
28
24
  subject.send('services')
29
25
 
30
- expect(lines).to include('Service: cmd')
31
- expect(lines).to include('Command: foobar')
26
+ expect(captured_output_text.split("\n")).to include('Service: cmd')
27
+ expect(captured_output_text.split("\n")).to include('Command: foobar')
32
28
  end
33
29
 
34
30
  it 'lists container size' do
35
31
  Fabricate(:service, app: app, container_memory_limit_mb: 1024)
36
32
  subject.send('services')
37
33
 
38
- expect(lines).to include('Container Size: 1024')
34
+ expect(captured_output_text.split("\n")).to include('Container Size: 1024')
39
35
  end
40
36
 
41
37
  it 'lists container count' do
42
38
  Fabricate(:service, app: app, container_count: 3)
43
39
  subject.send('services')
44
40
 
45
- expect(lines).to include('Container Count: 3')
41
+ expect(captured_output_text.split("\n")).to include('Container Count: 3')
46
42
  end
47
43
 
48
44
  it 'lists multiple services' do
@@ -50,7 +46,7 @@ describe Aptible::CLI::Agent do
50
46
  Fabricate(:service, app: app, process_type: 'bar')
51
47
  subject.send('services')
52
48
 
53
- expect(lines).to include('Service: foo')
54
- expect(lines).to include('Service: bar')
49
+ expect(captured_output_text.split("\n")).to include('Service: foo')
50
+ expect(captured_output_text.split("\n")).to include('Service: bar')
55
51
  end
56
52
  end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Aptible::CLI do
4
+ describe described_class::LogFormatter do
5
+ subject do
6
+ Logger.new(File.open(File::NULL, 'w')).tap do |l|
7
+ l.formatter = described_class.new
8
+ end
9
+ end
10
+
11
+ it 'formats DEBUG' do
12
+ subject.debug 'foo'
13
+ end
14
+
15
+ it 'formats INFO' do
16
+ subject.info 'foo'
17
+ end
18
+
19
+ it 'formats WARN' do
20
+ subject.warn 'foo'
21
+ end
22
+
23
+ it 'formats ERROR' do
24
+ subject.error 'foo'
25
+ end
26
+
27
+ it 'formats FATAL' do
28
+ subject.fatal 'foo'
29
+ end
30
+ end
31
+ end
@@ -1,4 +1,14 @@
1
1
  class StubAccount < OpenStruct
2
+ def each_app(&block)
3
+ return enum_for(:each_app) if block.nil?
4
+ apps.each(&block)
5
+ end
6
+
7
+ def each_database(&block)
8
+ return enum_for(:each_database) if block.nil?
9
+ databases.each(&block)
10
+ end
11
+
2
12
  def each_certificate(&block)
3
13
  return enum_for(:each_certificate) if block.nil?
4
14
  certificates.each(&block)
@@ -6,6 +16,7 @@ class StubAccount < OpenStruct
6
16
  end
7
17
 
8
18
  Fabricator(:account, from: :stub_account) do
19
+ id { Fabricate.sequence(:account_id) { |i| i } }
9
20
  bastion_host 'localhost'
10
21
  dumptruck_port 1234
11
22
  handle 'aptible'
@@ -3,17 +3,32 @@ class StubApp < OpenStruct
3
3
  services.map(&:vhosts).flatten
4
4
  end
5
5
 
6
+ def each_vhost(&block)
7
+ return enum_for(:each_vhost) if block.nil?
8
+ vhosts.each(&block)
9
+ end
10
+
6
11
  def each_service(&block)
7
12
  return enum_for(:each_service) if block.nil?
8
13
  services.each(&block)
9
14
  end
15
+
16
+ def each_configuration(&block)
17
+ return enum_for(:each_configuration) if block.nil?
18
+ configurations.each(&block)
19
+ end
10
20
  end
11
21
 
12
22
  Fabricator(:app, from: :stub_app) do
23
+ id { Fabricate.sequence(:app_id) { |i| i } }
13
24
  handle 'hello'
14
25
  status 'provisioned'
26
+ git_repo { Fabricate.sequence(:app_git_repo) { |i| "git://#{i}.git" } }
15
27
  account
16
28
  services { [] }
29
+ configurations { [] }
30
+ current_configuration { nil }
31
+ errors { Aptible::Resource::Errors.new }
17
32
 
18
33
  after_create { |app| app.account.apps << app }
19
34
  end
@@ -0,0 +1,8 @@
1
+ class StubConfiguration < OpenStruct
2
+ end
3
+
4
+ Fabricator(:configuration, from: :stub_configuration) do
5
+ env { {} }
6
+
7
+ after_create { |configuration| app.configurations << configuration }
8
+ end
@@ -0,0 +1,17 @@
1
+ class StubDatabaseImage < OpenStruct
2
+ end
3
+
4
+ Fabricator(:database_image, from: :stub_database_image) do
5
+ type { 'postgresql' }
6
+ version { '9.4' }
7
+
8
+ after_create do |image|
9
+ if image.description.nil?
10
+ image.description = "#{image.type} #{image.version}"
11
+ end
12
+
13
+ if image.docker_repo.nil?
14
+ image.docker_repo = "aptible/#{image.type}:#{image.version}"
15
+ end
16
+ end
17
+ end
@@ -3,4 +3,5 @@ class StubOperation < OpenStruct; end
3
3
  Fabricator(:operation, from: :stub_operation) do
4
4
  status 'queued'
5
5
  resource { Fabricate(:app) }
6
+ errors { Aptible::Resource::Errors.new }
6
7
  end
@@ -8,7 +8,11 @@ end
8
8
  Fabricator(:service, from: :stub_service) do
9
9
  transient :app, :database
10
10
 
11
+ id { Fabricate.sequence(:service_id) { |i| i } }
11
12
  process_type 'web'
13
+ command { nil }
14
+ container_count { 1 }
15
+ container_memory_limit_mb { 512 }
12
16
  vhosts { [] }
13
17
 
14
18
  after_create do |service, transients|
data/spec/spec_helper.rb CHANGED
@@ -19,8 +19,70 @@ end
19
19
  # Require library up front
20
20
  require 'aptible/cli'
21
21
 
22
+ class SpecRenderer < Aptible::CLI::Renderer::Base
23
+ def initialize
24
+ @nodes = []
25
+ end
26
+
27
+ def render(node)
28
+ # For now, we don't support rendering twice, and we probably never need to.
29
+ raise 'Rendered twice!' unless @nodes.empty?
30
+ @nodes << node
31
+ nil
32
+ end
33
+
34
+ def text
35
+ Aptible::CLI::Renderer::Text.new.render(@nodes.first)
36
+ end
37
+
38
+ def json
39
+ JSON.parse(Aptible::CLI::Renderer::Json.new.render(@nodes.first))
40
+ end
41
+
42
+ def text?
43
+ true
44
+ end
45
+
46
+ def json?
47
+ true
48
+ end
49
+ end
50
+
51
+ module SpecHarness
52
+ def reset_spec_harness
53
+ @stream = StringIO.new
54
+ @renderer = SpecRenderer.new
55
+
56
+ logger = Logger.new(@stream)
57
+
58
+ allow(Aptible::CLI).to receive(:logger).and_return(logger)
59
+ allow(Aptible::CLI::Renderer).to receive(:current).and_return(@renderer)
60
+ end
61
+
62
+ def captured_output_text
63
+ @renderer.text
64
+ end
65
+
66
+ def captured_output_json
67
+ @renderer.json
68
+ end
69
+
70
+ def captured_logs
71
+ pos = @stream.pos
72
+
73
+ begin
74
+ @stream.rewind
75
+ @stream.read
76
+ ensure
77
+ @stream.pos = pos
78
+ end
79
+ end
80
+ end
81
+
22
82
  RSpec.configure do |config|
23
- config.before {}
83
+ config.before(:each) { reset_spec_harness }
84
+
85
+ config.include(SpecHarness)
24
86
 
25
87
  # We make the CLI believe it's running in a toolbelt context to avoid running
26
88
  # the toolbelt nag every time it initializes.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aptible-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frank Macreery
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-24 00:00:00.000000000 Z
11
+ date: 2017-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aptible-resource
@@ -128,6 +128,26 @@ dependencies:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
130
  version: 0.10.6
131
+ - !ruby/object:Gem::Dependency
132
+ name: activesupport
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '4.0'
138
+ - - "<"
139
+ - !ruby/object:Gem::Version
140
+ version: '6.0'
141
+ type: :runtime
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '4.0'
148
+ - - "<"
149
+ - !ruby/object:Gem::Version
150
+ version: '6.0'
131
151
  - !ruby/object:Gem::Dependency
132
152
  name: bundler
133
153
  requirement: !ruby/object:Gem::Requirement
@@ -247,6 +267,16 @@ files:
247
267
  - codecov.yml
248
268
  - lib/aptible/cli.rb
249
269
  - lib/aptible/cli/agent.rb
270
+ - lib/aptible/cli/error.rb
271
+ - lib/aptible/cli/formatter.rb
272
+ - lib/aptible/cli/formatter/grouped_keyed_list.rb
273
+ - lib/aptible/cli/formatter/keyed_list.rb
274
+ - lib/aptible/cli/formatter/keyed_object.rb
275
+ - lib/aptible/cli/formatter/list.rb
276
+ - lib/aptible/cli/formatter/node.rb
277
+ - lib/aptible/cli/formatter/object.rb
278
+ - lib/aptible/cli/formatter/root.rb
279
+ - lib/aptible/cli/formatter/value.rb
250
280
  - lib/aptible/cli/helpers/app.rb
251
281
  - lib/aptible/cli/helpers/app_or_database.rb
252
282
  - lib/aptible/cli/helpers/database.rb
@@ -257,6 +287,11 @@ files:
257
287
  - lib/aptible/cli/helpers/tunnel.rb
258
288
  - lib/aptible/cli/helpers/vhost.rb
259
289
  - lib/aptible/cli/helpers/vhost/option_set_builder.rb
290
+ - lib/aptible/cli/renderer.rb
291
+ - lib/aptible/cli/renderer/base.rb
292
+ - lib/aptible/cli/renderer/json.rb
293
+ - lib/aptible/cli/renderer/text.rb
294
+ - lib/aptible/cli/resource_formatter.rb
260
295
  - lib/aptible/cli/subcommands/apps.rb
261
296
  - lib/aptible/cli/subcommands/backup.rb
262
297
  - lib/aptible/cli/subcommands/config.rb
@@ -275,6 +310,7 @@ files:
275
310
  - lib/aptible/cli/version.rb
276
311
  - script/sync-readme-usage
277
312
  - spec/aptible/cli/agent_spec.rb
313
+ - spec/aptible/cli/formatter_spec.rb
278
314
  - spec/aptible/cli/helpers/git_remote_handle_strategy_spec.rb
279
315
  - spec/aptible/cli/helpers/handle_from_git_remote_spec.rb
280
316
  - spec/aptible/cli/helpers/operation_spec.rb
@@ -282,9 +318,12 @@ files:
282
318
  - spec/aptible/cli/helpers/ssh_spec.rb
283
319
  - spec/aptible/cli/helpers/token_spec.rb
284
320
  - spec/aptible/cli/helpers/tunnel_spec.rb
285
- - spec/aptible/cli/helpers/vhost_spec.rb
321
+ - spec/aptible/cli/renderer/json_spec.rb
322
+ - spec/aptible/cli/renderer/text_spec.rb
323
+ - spec/aptible/cli/resource_formatter_spec.rb
286
324
  - spec/aptible/cli/subcommands/apps_spec.rb
287
325
  - spec/aptible/cli/subcommands/backup_spec.rb
326
+ - spec/aptible/cli/subcommands/config_spec.rb
288
327
  - spec/aptible/cli/subcommands/db_spec.rb
289
328
  - spec/aptible/cli/subcommands/deploy_spec.rb
290
329
  - spec/aptible/cli/subcommands/domains_spec.rb
@@ -292,15 +331,19 @@ files:
292
331
  - spec/aptible/cli/subcommands/inspect_spec.rb
293
332
  - spec/aptible/cli/subcommands/logs_spec.rb
294
333
  - spec/aptible/cli/subcommands/operation_spec.rb
334
+ - spec/aptible/cli/subcommands/rebuild_spec.rb
295
335
  - spec/aptible/cli/subcommands/restart_spec.rb
296
336
  - spec/aptible/cli/subcommands/services_spec.rb
297
337
  - spec/aptible/cli/subcommands/ssh_spec.rb
338
+ - spec/aptible/cli_spec.rb
298
339
  - spec/fabricators/account_fabricator.rb
299
340
  - spec/fabricators/app_fabricator.rb
300
341
  - spec/fabricators/backup_fabricator.rb
301
342
  - spec/fabricators/certificate_fabricator.rb
343
+ - spec/fabricators/configuration_fabricator.rb
302
344
  - spec/fabricators/database_credential_fabricator.rb
303
345
  - spec/fabricators/database_fabricator.rb
346
+ - spec/fabricators/database_image_fabricator.rb
304
347
  - spec/fabricators/operation_fabricator.rb
305
348
  - spec/fabricators/service_fabricator.rb
306
349
  - spec/fabricators/stack_fabricator.rb
@@ -341,6 +384,7 @@ specification_version: 4
341
384
  summary: Command-line interface for Aptible services
342
385
  test_files:
343
386
  - spec/aptible/cli/agent_spec.rb
387
+ - spec/aptible/cli/formatter_spec.rb
344
388
  - spec/aptible/cli/helpers/git_remote_handle_strategy_spec.rb
345
389
  - spec/aptible/cli/helpers/handle_from_git_remote_spec.rb
346
390
  - spec/aptible/cli/helpers/operation_spec.rb
@@ -348,9 +392,12 @@ test_files:
348
392
  - spec/aptible/cli/helpers/ssh_spec.rb
349
393
  - spec/aptible/cli/helpers/token_spec.rb
350
394
  - spec/aptible/cli/helpers/tunnel_spec.rb
351
- - spec/aptible/cli/helpers/vhost_spec.rb
395
+ - spec/aptible/cli/renderer/json_spec.rb
396
+ - spec/aptible/cli/renderer/text_spec.rb
397
+ - spec/aptible/cli/resource_formatter_spec.rb
352
398
  - spec/aptible/cli/subcommands/apps_spec.rb
353
399
  - spec/aptible/cli/subcommands/backup_spec.rb
400
+ - spec/aptible/cli/subcommands/config_spec.rb
354
401
  - spec/aptible/cli/subcommands/db_spec.rb
355
402
  - spec/aptible/cli/subcommands/deploy_spec.rb
356
403
  - spec/aptible/cli/subcommands/domains_spec.rb
@@ -358,15 +405,19 @@ test_files:
358
405
  - spec/aptible/cli/subcommands/inspect_spec.rb
359
406
  - spec/aptible/cli/subcommands/logs_spec.rb
360
407
  - spec/aptible/cli/subcommands/operation_spec.rb
408
+ - spec/aptible/cli/subcommands/rebuild_spec.rb
361
409
  - spec/aptible/cli/subcommands/restart_spec.rb
362
410
  - spec/aptible/cli/subcommands/services_spec.rb
363
411
  - spec/aptible/cli/subcommands/ssh_spec.rb
412
+ - spec/aptible/cli_spec.rb
364
413
  - spec/fabricators/account_fabricator.rb
365
414
  - spec/fabricators/app_fabricator.rb
366
415
  - spec/fabricators/backup_fabricator.rb
367
416
  - spec/fabricators/certificate_fabricator.rb
417
+ - spec/fabricators/configuration_fabricator.rb
368
418
  - spec/fabricators/database_credential_fabricator.rb
369
419
  - spec/fabricators/database_fabricator.rb
420
+ - spec/fabricators/database_image_fabricator.rb
370
421
  - spec/fabricators/operation_fabricator.rb
371
422
  - spec/fabricators/service_fabricator.rb
372
423
  - spec/fabricators/stack_fabricator.rb