aptible-cli 0.18.0 → 0.19.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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -50
  3. data/lib/aptible/cli/agent.rb +9 -3
  4. data/lib/aptible/cli/helpers/config_path.rb +11 -0
  5. data/lib/aptible/cli/helpers/log_drain.rb +85 -0
  6. data/lib/aptible/cli/helpers/metric_drain.rb +39 -0
  7. data/lib/aptible/cli/helpers/ssh.rb +5 -1
  8. data/lib/aptible/cli/helpers/token.rb +5 -1
  9. data/lib/aptible/cli/resource_formatter.rb +66 -3
  10. data/lib/aptible/cli/subcommands/apps.rb +5 -40
  11. data/lib/aptible/cli/subcommands/backup.rb +15 -7
  12. data/lib/aptible/cli/subcommands/db.rb +24 -21
  13. data/lib/aptible/cli/subcommands/log_drain.rb +159 -0
  14. data/lib/aptible/cli/subcommands/metric_drain.rb +137 -0
  15. data/lib/aptible/cli/version.rb +1 -1
  16. data/spec/aptible/cli/resource_formatter_spec.rb +1 -0
  17. data/spec/aptible/cli/subcommands/apps_spec.rb +10 -51
  18. data/spec/aptible/cli/subcommands/backup_spec.rb +1 -1
  19. data/spec/aptible/cli/subcommands/db_spec.rb +0 -26
  20. data/spec/aptible/cli/subcommands/environment_spec.rb +4 -2
  21. data/spec/aptible/cli/subcommands/log_drain_spec.rb +207 -0
  22. data/spec/aptible/cli/subcommands/metric_drain_spec.rb +183 -0
  23. data/spec/fabricators/account_fabricator.rb +3 -0
  24. data/spec/fabricators/app_fabricator.rb +1 -0
  25. data/spec/fabricators/database_disk_fabricator.rb +2 -1
  26. data/spec/fabricators/database_fabricator.rb +1 -0
  27. data/spec/fabricators/log_drain_fabricator.rb +21 -0
  28. data/spec/fabricators/metric_drain_fabricator.rb +8 -0
  29. data/spec/fabricators/service_fabricator.rb +1 -0
  30. data/spec/fabricators/vhost_fabricator.rb +1 -0
  31. data/spec/spec_helper.rb +4 -0
  32. metadata +15 -5
  33. data/lib/aptible/cli/subcommands/domains.rb +0 -40
  34. data/spec/aptible/cli/subcommands/domains_spec.rb +0 -76
@@ -26,4 +26,7 @@ Fabricator(:account, from: :stub_account) do
26
26
  apps { [] }
27
27
  databases { [] }
28
28
  certificates { [] }
29
+ log_drains { [] }
30
+ metric_drains { [] }
31
+ created_at { Time.now }
29
32
  end
@@ -29,6 +29,7 @@ Fabricator(:app, from: :stub_app) do
29
29
  configurations { [] }
30
30
  current_configuration { nil }
31
31
  errors { Aptible::Resource::Errors.new }
32
+ created_at { Time.now }
32
33
 
33
34
  after_create { |app| app.account.apps << app }
34
35
  end
@@ -3,5 +3,6 @@ end
3
3
 
4
4
  Fabricator(:database_disk, from: :stub_database_disk) do
5
5
  size 100
6
- ebs_volume_type { 'gb2' }
6
+ ebs_volume_type { 'gp2' }
7
+ baseline_iops '300'
7
8
  end
@@ -22,6 +22,7 @@ Fabricator(:database, from: :stub_database) do
22
22
 
23
23
  backups { [] }
24
24
  database_credentials { [] }
25
+ created_at { Time.now }
25
26
 
26
27
  after_create do |database, transients|
27
28
  database.account.databases << database
@@ -0,0 +1,21 @@
1
+ class StubLogDrain < OpenStruct
2
+ def attributes
3
+ # I foresee hard-coding values like this
4
+ # being hard to debug in the future,
5
+ # so sorry if you're here and cursing me, but
6
+ # I can't think of a better way to fake this.
7
+ {
8
+ 'drain_username' => drain_username,
9
+ 'drain_host' => drain_host,
10
+ 'drain_port' => drain_port,
11
+ 'url' => url
12
+ }
13
+ end
14
+ end
15
+
16
+ Fabricator(:log_drain, from: :stub_log_drain) do
17
+ id { sequence(:log_drain_id) }
18
+ account
19
+
20
+ after_create { |drain| drain.account.log_drains << drain }
21
+ end
@@ -0,0 +1,8 @@
1
+ class StubMetricDrain < OpenStruct; end
2
+
3
+ Fabricator(:metric_drain, from: :stub_metric_drain) do
4
+ id { sequence(:metric_drain_id) }
5
+ account
6
+
7
+ after_create { |drain| drain.account.metric_drains << drain }
8
+ end
@@ -14,6 +14,7 @@ Fabricator(:service, from: :stub_service) do
14
14
  container_count { 1 }
15
15
  container_memory_limit_mb { 512 }
16
16
  vhosts { [] }
17
+ created_at { Time.now }
17
18
 
18
19
  after_create do |service, transients|
19
20
  if transients[:app]
@@ -7,6 +7,7 @@ Fabricator(:vhost, from: :stub_vhost) do
7
7
  virtual_domain { Fabricate.sequence(:virtual_domain) { |i| "domain#{i}" } }
8
8
  ip_whitelist { [] }
9
9
  container_ports { [] }
10
+ created_at { Time.now }
10
11
 
11
12
  after_create { |vhost| vhost.service.vhosts << vhost }
12
13
  end
data/spec/spec_helper.rb CHANGED
@@ -11,6 +11,10 @@ end
11
11
  # Require library up front
12
12
  require 'aptible/cli'
13
13
 
14
+ def fmt_time(time)
15
+ time.strftime('%Y-%m-%d %H:%M:%S %z')
16
+ end
17
+
14
18
  class SpecRenderer < Aptible::CLI::Renderer::Base
15
19
  def initialize
16
20
  @nodes = []
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.18.0
4
+ version: 0.19.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: 2021-06-01 00:00:00.000000000 Z
11
+ date: 2021-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aptible-resource
@@ -274,8 +274,11 @@ files:
274
274
  - lib/aptible/cli/formatter/value.rb
275
275
  - lib/aptible/cli/helpers/app.rb
276
276
  - lib/aptible/cli/helpers/app_or_database.rb
277
+ - lib/aptible/cli/helpers/config_path.rb
277
278
  - lib/aptible/cli/helpers/database.rb
278
279
  - lib/aptible/cli/helpers/environment.rb
280
+ - lib/aptible/cli/helpers/log_drain.rb
281
+ - lib/aptible/cli/helpers/metric_drain.rb
279
282
  - lib/aptible/cli/helpers/operation.rb
280
283
  - lib/aptible/cli/helpers/security_key.rb
281
284
  - lib/aptible/cli/helpers/ssh.rb
@@ -294,11 +297,12 @@ files:
294
297
  - lib/aptible/cli/subcommands/config.rb
295
298
  - lib/aptible/cli/subcommands/db.rb
296
299
  - lib/aptible/cli/subcommands/deploy.rb
297
- - lib/aptible/cli/subcommands/domains.rb
298
300
  - lib/aptible/cli/subcommands/endpoints.rb
299
301
  - lib/aptible/cli/subcommands/environment.rb
300
302
  - lib/aptible/cli/subcommands/inspect.rb
303
+ - lib/aptible/cli/subcommands/log_drain.rb
301
304
  - lib/aptible/cli/subcommands/logs.rb
305
+ - lib/aptible/cli/subcommands/metric_drain.rb
302
306
  - lib/aptible/cli/subcommands/operation.rb
303
307
  - lib/aptible/cli/subcommands/rebuild.rb
304
308
  - lib/aptible/cli/subcommands/restart.rb
@@ -323,11 +327,12 @@ files:
323
327
  - spec/aptible/cli/subcommands/config_spec.rb
324
328
  - spec/aptible/cli/subcommands/db_spec.rb
325
329
  - spec/aptible/cli/subcommands/deploy_spec.rb
326
- - spec/aptible/cli/subcommands/domains_spec.rb
327
330
  - spec/aptible/cli/subcommands/endpoints_spec.rb
328
331
  - spec/aptible/cli/subcommands/environment_spec.rb
329
332
  - spec/aptible/cli/subcommands/inspect_spec.rb
333
+ - spec/aptible/cli/subcommands/log_drain_spec.rb
330
334
  - spec/aptible/cli/subcommands/logs_spec.rb
335
+ - spec/aptible/cli/subcommands/metric_drain_spec.rb
331
336
  - spec/aptible/cli/subcommands/operation_spec.rb
332
337
  - spec/aptible/cli/subcommands/rebuild_spec.rb
333
338
  - spec/aptible/cli/subcommands/restart_spec.rb
@@ -343,6 +348,8 @@ files:
343
348
  - spec/fabricators/database_disk_fabricator.rb
344
349
  - spec/fabricators/database_fabricator.rb
345
350
  - spec/fabricators/database_image_fabricator.rb
351
+ - spec/fabricators/log_drain_fabricator.rb
352
+ - spec/fabricators/metric_drain_fabricator.rb
346
353
  - spec/fabricators/operation_fabricator.rb
347
354
  - spec/fabricators/service_fabricator.rb
348
355
  - spec/fabricators/stack_fabricator.rb
@@ -398,11 +405,12 @@ test_files:
398
405
  - spec/aptible/cli/subcommands/config_spec.rb
399
406
  - spec/aptible/cli/subcommands/db_spec.rb
400
407
  - spec/aptible/cli/subcommands/deploy_spec.rb
401
- - spec/aptible/cli/subcommands/domains_spec.rb
402
408
  - spec/aptible/cli/subcommands/endpoints_spec.rb
403
409
  - spec/aptible/cli/subcommands/environment_spec.rb
404
410
  - spec/aptible/cli/subcommands/inspect_spec.rb
411
+ - spec/aptible/cli/subcommands/log_drain_spec.rb
405
412
  - spec/aptible/cli/subcommands/logs_spec.rb
413
+ - spec/aptible/cli/subcommands/metric_drain_spec.rb
406
414
  - spec/aptible/cli/subcommands/operation_spec.rb
407
415
  - spec/aptible/cli/subcommands/rebuild_spec.rb
408
416
  - spec/aptible/cli/subcommands/restart_spec.rb
@@ -418,6 +426,8 @@ test_files:
418
426
  - spec/fabricators/database_disk_fabricator.rb
419
427
  - spec/fabricators/database_fabricator.rb
420
428
  - spec/fabricators/database_image_fabricator.rb
429
+ - spec/fabricators/log_drain_fabricator.rb
430
+ - spec/fabricators/metric_drain_fabricator.rb
421
431
  - spec/fabricators/operation_fabricator.rb
422
432
  - spec/fabricators/service_fabricator.rb
423
433
  - spec/fabricators/stack_fabricator.rb
@@ -1,40 +0,0 @@
1
- require 'shellwords'
2
-
3
- module Aptible
4
- module CLI
5
- module Subcommands
6
- module Domains
7
- def self.included(thor)
8
- thor.class_eval do
9
- include Helpers::Operation
10
- include Helpers::App
11
-
12
- desc 'domains',
13
- "Print an app's current virtual domains - DEPRECATED"
14
- app_options
15
- option :verbose, aliases: '-v'
16
- def domains
17
- deprecated 'This command is deprecated in favor of endpoints:list'
18
- app = ensure_app(options)
19
- print_vhosts(app) do |vhost|
20
- if options[:verbose]
21
- "#{vhost.virtual_domain} -> #{vhost.external_host}"
22
- else
23
- vhost.virtual_domain
24
- end
25
- end
26
- end
27
-
28
- private
29
-
30
- def print_vhosts(app)
31
- (app.vhosts || []).each do |vhost|
32
- say yield(vhost)
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,76 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Aptible::CLI::Agent do
4
- before do
5
- allow(subject).to receive(:ask)
6
- allow(subject).to receive(:save_token)
7
- allow(subject).to receive(:fetch_token) { double 'token' }
8
- end
9
-
10
- let!(:account) { Fabricate(:account) }
11
- let!(:app) { Fabricate(:app, handle: 'hello', account: account) }
12
- let!(:service) { Fabricate(:service, app: app) }
13
- let(:op) { Fabricate(:operation, status: 'succeeded', resource: app) }
14
-
15
- before do
16
- allow(Aptible::Api::App).to receive(:all) { [app] }
17
- allow(Aptible::Api::Account).to receive(:all) { [account] }
18
- end
19
-
20
- let!(:vhost1) do
21
- Fabricate(:vhost, virtual_domain: 'domain1', external_host: 'host1',
22
- service: service)
23
- end
24
-
25
- let!(:vhost2) do
26
- Fabricate(:vhost, virtual_domain: 'domain2', external_host: 'host2',
27
- service: service)
28
- end
29
-
30
- describe '#domains' do
31
- it 'should print out the hostnames' do
32
- expect(subject).to receive(:environment_from_handle)
33
- .with('foobar')
34
- .and_return(account)
35
- expect(subject).to receive(:apps_from_handle).and_return([app])
36
- allow(subject).to receive(:options) do
37
- { environment: 'foobar', app: 'web' }
38
- end
39
- expect(subject).to receive(:say).with('domain1')
40
- expect(subject).to receive(:say).with('domain2')
41
-
42
- subject.send('domains')
43
- end
44
-
45
- it 'should fail if app is non-existent' do
46
- allow(subject).to receive(:options) { { app: 'not-an-app' } }
47
-
48
- expect do
49
- subject.send('domains')
50
- end.to raise_error(Thor::Error, /Could not find app/)
51
- end
52
-
53
- it 'should fail if environment is non-existent' do
54
- allow(Aptible::Api::Account).to receive(:all) { [] }
55
-
56
- expect do
57
- subject.send('domains')
58
- end.to raise_error(Thor::Error)
59
- end
60
-
61
- it 'should print hostnames if -v is passed' do
62
- expect(subject).to receive(:environment_from_handle)
63
- .with('foobar')
64
- .and_return(account)
65
- expect(subject).to receive(:apps_from_handle).and_return([app])
66
- allow(subject).to receive(:options) do
67
- { verbose: true, app: 'hello', environment: 'foobar' }
68
- end
69
-
70
- expect(subject).to receive(:say).with('domain1 -> host1')
71
- expect(subject).to receive(:say).with('domain2 -> host2')
72
-
73
- subject.send('domains')
74
- end
75
- end
76
- end