aptible-cli 0.24.1 → 0.24.3

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +16 -1
  3. data/Gemfile.lock +1 -1
  4. data/lib/aptible/cli/agent.rb +9 -1
  5. data/lib/aptible/cli/helpers/app.rb +16 -1
  6. data/lib/aptible/cli/helpers/database.rb +20 -5
  7. data/lib/aptible/cli/helpers/environment.rb +28 -3
  8. data/lib/aptible/cli/helpers/operation.rb +11 -4
  9. data/lib/aptible/cli/helpers/telemetry.rb +58 -0
  10. data/lib/aptible/cli/helpers/token.rb +6 -0
  11. data/lib/aptible/cli/renderer.rb +5 -1
  12. data/lib/aptible/cli/resource_formatter.rb +7 -0
  13. data/lib/aptible/cli/subcommands/apps.rb +31 -2
  14. data/lib/aptible/cli/subcommands/backup.rb +9 -0
  15. data/lib/aptible/cli/subcommands/backup_retention_policy.rb +5 -0
  16. data/lib/aptible/cli/subcommands/config.rb +11 -0
  17. data/lib/aptible/cli/subcommands/db.rb +68 -3
  18. data/lib/aptible/cli/subcommands/deploy.rb +3 -0
  19. data/lib/aptible/cli/subcommands/endpoints.rb +26 -0
  20. data/lib/aptible/cli/subcommands/environment.rb +11 -0
  21. data/lib/aptible/cli/subcommands/log_drain.rb +26 -5
  22. data/lib/aptible/cli/subcommands/logs.rb +5 -0
  23. data/lib/aptible/cli/subcommands/maintenance.rb +5 -0
  24. data/lib/aptible/cli/subcommands/metric_drain.rb +25 -5
  25. data/lib/aptible/cli/subcommands/operation.rb +7 -0
  26. data/lib/aptible/cli/subcommands/rebuild.rb +3 -0
  27. data/lib/aptible/cli/subcommands/restart.rb +3 -0
  28. data/lib/aptible/cli/subcommands/services.rb +12 -3
  29. data/lib/aptible/cli/subcommands/ssh.rb +3 -0
  30. data/lib/aptible/cli/version.rb +1 -1
  31. data/spec/aptible/cli/subcommands/apps_spec.rb +13 -1
  32. data/spec/aptible/cli/subcommands/config_spec.rb +4 -2
  33. data/spec/aptible/cli/subcommands/db_spec.rb +7 -1
  34. data/spec/aptible/cli/subcommands/endpoints_spec.rb +9 -3
  35. data/spec/aptible/cli/subcommands/environment_spec.rb +3 -1
  36. data/spec/aptible/cli/subcommands/log_drain_spec.rb +15 -2
  37. data/spec/aptible/cli/subcommands/maintenance_spec.rb +3 -2
  38. data/spec/aptible/cli/subcommands/metric_drain_spec.rb +15 -2
  39. data/spec/aptible/cli/subcommands/operation_spec.rb +4 -2
  40. data/spec/aptible/cli/subcommands/services_spec.rb +3 -1
  41. data/spec/fabricators/account_fabricator.rb +8 -0
  42. data/spec/fabricators/app_fabricator.rb +9 -0
  43. data/spec/fabricators/database_fabricator.rb +8 -0
  44. data/spec/fabricators/log_drain_fabricator.rb +8 -0
  45. data/spec/fabricators/metric_drain_fabricator.rb +8 -0
  46. data/spec/spec_helper.rb +9 -1
  47. metadata +6 -5
@@ -12,19 +12,40 @@ module Aptible
12
12
  include Helpers::Database
13
13
  include Helpers::Token
14
14
  include Term::ANSIColor
15
+ include Helpers::Telemetry
15
16
 
16
17
  desc 'db:list', 'List all databases'
17
18
  option :environment, aliases: '--env'
18
19
  define_method 'db:list' do
20
+ telemetry(__method__, options)
21
+
19
22
  Formatter.render(Renderer.current) do |root|
20
23
  root.grouped_keyed_list(
21
24
  { 'environment' => 'handle' },
22
25
  'handle'
23
26
  ) do |node|
24
- scoped_environments(options).each do |account|
25
- account.each_database do |db|
27
+ accounts = scoped_environments(options)
28
+ acc_map = environment_map(accounts)
29
+
30
+ if Renderer.format == 'json'
31
+ accounts.each do |account|
32
+ account.each_database do |db|
33
+ node.object do |n|
34
+ ResourceFormatter.inject_database(n, db, account)
35
+ end
36
+ end
37
+ end
38
+ else
39
+ databases_all.each do |db|
40
+ account = acc_map[db.links.account.href]
41
+ next if account.nil?
42
+
26
43
  node.object do |n|
27
- ResourceFormatter.inject_database(n, db, account)
44
+ ResourceFormatter.inject_database_minimal(
45
+ n,
46
+ db,
47
+ account
48
+ )
28
49
  end
29
50
  end
30
51
  end
@@ -34,6 +55,8 @@ module Aptible
34
55
 
35
56
  desc 'db:versions', 'List available database versions'
36
57
  define_method 'db:versions' do
58
+ telemetry(__method__, options)
59
+
37
60
  Formatter.render(Renderer.current) do |root|
38
61
  root.grouped_keyed_list('type', 'version') do |node|
39
62
  Aptible::Api::DatabaseImage.all(
@@ -68,6 +91,8 @@ module Aptible
68
91
  desc: 'Examples: m c r'
69
92
  option :iops, type: :numeric
70
93
  define_method 'db:create' do |handle|
94
+ telemetry(__method__, options.merge(handle: handle))
95
+
71
96
  account = ensure_environment(options)
72
97
 
73
98
  db_opts = {
@@ -128,6 +153,12 @@ module Aptible
128
153
  desc 'db:clone SOURCE DEST', 'Clone a database to create a new one'
129
154
  option :environment, aliases: '--env'
130
155
  define_method 'db:clone' do |source_handle, dest_handle|
156
+ opts = options.merge(
157
+ source_handle: source_handle,
158
+ dest_handle: dest_handle
159
+ )
160
+ telemetry(__method__, opts)
161
+
131
162
  # TODO: Deprecate + recommend backup
132
163
  source = ensure_database(options.merge(db: source_handle))
133
164
  database = clone_database(source, dest_handle)
@@ -150,6 +181,12 @@ module Aptible
150
181
  desc: 'Examples: m c r'
151
182
  option :iops, type: :numeric
152
183
  define_method 'db:replicate' do |source_handle, dest_handle|
184
+ opts = options.merge(
185
+ source_handle: source_handle,
186
+ dest_handle: dest_handle
187
+ )
188
+ telemetry(__method__, opts)
189
+
153
190
  source = ensure_database(options.merge(db: source_handle))
154
191
 
155
192
  if options[:logical]
@@ -193,6 +230,8 @@ module Aptible
193
230
  'Dump a remote database to file'
194
231
  option :environment, aliases: '--env'
195
232
  define_method 'db:dump' do |handle, *dump_options|
233
+ telemetry(__method__, options.merge(handle: handle))
234
+
196
235
  database = ensure_database(options.merge(db: handle))
197
236
  with_postgres_tunnel(database) do |url|
198
237
  filename = "#{handle}.dump"
@@ -207,6 +246,12 @@ module Aptible
207
246
  option :environment, aliases: '--env'
208
247
  option :on_error_stop, type: :boolean
209
248
  define_method 'db:execute' do |handle, sql_path|
249
+ opts = options.merge(
250
+ handle: handle,
251
+ sql_path: sql_path
252
+ )
253
+ telemetry(__method__, opts)
254
+
210
255
  database = ensure_database(options.merge(db: handle))
211
256
  with_postgres_tunnel(database) do |url|
212
257
  CLI.logger.info "Executing #{sql_path} against #{handle}"
@@ -221,6 +266,8 @@ module Aptible
221
266
  option :port, type: :numeric
222
267
  option :type, type: :string
223
268
  define_method 'db:tunnel' do |handle|
269
+ telemetry(__method__, options.merge(handle: handle))
270
+
224
271
  desired_port = Integer(options[:port] || 0)
225
272
  database = ensure_database(options.merge(db: handle))
226
273
 
@@ -264,6 +311,8 @@ module Aptible
264
311
  desc 'db:deprovision HANDLE', 'Deprovision a database'
265
312
  option :environment, aliases: '--env'
266
313
  define_method 'db:deprovision' do |handle|
314
+ telemetry(__method__, options.merge(handle: handle))
315
+
267
316
  database = ensure_database(options.merge(db: handle))
268
317
  CLI.logger.info "Deprovisioning #{database.handle}..."
269
318
  op = database.create_operation!(type: 'deprovision')
@@ -280,6 +329,8 @@ module Aptible
280
329
  desc 'db:backup HANDLE', 'Backup a database'
281
330
  option :environment, aliases: '--env'
282
331
  define_method 'db:backup' do |handle|
332
+ telemetry(__method__, options.merge(handle: handle))
333
+
283
334
  database = ensure_database(options.merge(db: handle))
284
335
  CLI.logger.info "Backing up #{database.handle}..."
285
336
  op = database.create_operation!(type: 'backup')
@@ -289,6 +340,8 @@ module Aptible
289
340
  desc 'db:reload HANDLE', 'Reload a database'
290
341
  option :environment, aliases: '--env'
291
342
  define_method 'db:reload' do |handle|
343
+ telemetry(__method__, options.merge(handle: handle))
344
+
292
345
  database = ensure_database(options.merge(db: handle))
293
346
  CLI.logger.info "Reloading #{database.handle}..."
294
347
  op = database.create_operation!(type: 'reload')
@@ -309,6 +362,8 @@ module Aptible
309
362
  option :iops, type: :numeric
310
363
  option :volume_type
311
364
  define_method 'db:restart' do |handle|
365
+ telemetry(__method__, options.merge(handle: handle))
366
+
312
367
  database = ensure_database(options.merge(db: handle))
313
368
 
314
369
  opts = {
@@ -339,6 +394,8 @@ module Aptible
339
394
  option :iops, type: :numeric
340
395
  option :volume_type
341
396
  define_method 'db:modify' do |handle|
397
+ telemetry(__method__, options.merge(handle: handle))
398
+
342
399
  database = ensure_database(options.merge(db: handle))
343
400
 
344
401
  opts = {
@@ -357,6 +414,8 @@ module Aptible
357
414
  option :environment, aliases: '--env'
358
415
  option :type, type: :string
359
416
  define_method 'db:url' do |handle|
417
+ telemetry(__method__, options.merge(handle: handle))
418
+
360
419
  database = ensure_database(options.merge(db: handle))
361
420
  credential = find_credential(database, options[:type])
362
421
 
@@ -373,6 +432,12 @@ module Aptible
373
432
  ' metric drain destinations, you must reload the database.'
374
433
  option :environment, aliases: '--env'
375
434
  define_method 'db:rename' do |old_handle, new_handle|
435
+ opts = options.merge(
436
+ old_handle: old_handle,
437
+ new_handle: new_handle
438
+ )
439
+ telemetry(__method__, opts)
440
+
376
441
  env = ensure_environment(options)
377
442
  db = ensure_database(options.merge(db: old_handle))
378
443
  db.update!(handle: new_handle)
@@ -18,6 +18,7 @@ module Aptible
18
18
  thor.class_eval do
19
19
  include Helpers::Operation
20
20
  include Helpers::App
21
+ include Helpers::Telemetry
21
22
 
22
23
  desc 'deploy [OPTIONS] [VAR1=VAL1] [VAR2=VAL2] [...]',
23
24
  'Deploy an app'
@@ -46,6 +47,8 @@ module Aptible
46
47
  end
47
48
  app_options
48
49
  def deploy(*args)
50
+ telemetry(__method__, options)
51
+
49
52
  app = ensure_app(options)
50
53
 
51
54
  git_ref = options[:git_commitish]
@@ -10,6 +10,7 @@ module Aptible
10
10
  include Helpers::Operation
11
11
  include Helpers::AppOrDatabase
12
12
  include Helpers::Vhost
13
+ include Helpers::Telemetry
13
14
 
14
15
  database_create_flags = Helpers::Vhost::OptionSetBuilder.new do
15
16
  create!
@@ -20,6 +21,8 @@ module Aptible
20
21
  'Create a Database Endpoint'
21
22
  database_create_flags.declare_options(self)
22
23
  define_method 'endpoints:database:create' do |handle|
24
+ telemetry(__method__, options.merge(handle: handle))
25
+
23
26
  database = ensure_database(options.merge(db: handle))
24
27
  service = database.service
25
28
  raise Thor::Error, 'Database is not provisioned' if service.nil?
@@ -42,6 +45,8 @@ module Aptible
42
45
  'Modify a Database Endpoint'
43
46
  database_modify_flags.declare_options(self)
44
47
  define_method 'endpoints:database:modify' do |hostname|
48
+ telemetry(__method__, options.merge(hostname: hostname))
49
+
45
50
  database = ensure_database(options.merge(db: options[:database]))
46
51
  vhost = find_vhost(each_service(database), hostname)
47
52
  vhost.update!(**database_modify_flags.prepare(database.account,
@@ -59,6 +64,8 @@ module Aptible
59
64
  'Create an App TCP Endpoint'
60
65
  tcp_create_flags.declare_options(self)
61
66
  define_method 'endpoints:tcp:create' do |type|
67
+ telemetry(__method__, options.merge(type: type))
68
+
62
69
  create_app_vhost(
63
70
  tcp_create_flags, options, type,
64
71
  type: 'tcp', platform: 'elb'
@@ -74,6 +81,8 @@ module Aptible
74
81
  'Modify an App TCP Endpoint'
75
82
  tcp_modify_flags.declare_options(self)
76
83
  define_method 'endpoints:tcp:modify' do |hostname|
84
+ telemetry(__method__, options.merge(hostname: hostname))
85
+
77
86
  modify_app_vhost(tcp_modify_flags, options, hostname)
78
87
  end
79
88
 
@@ -88,6 +97,8 @@ module Aptible
88
97
  'Create an App TLS Endpoint'
89
98
  tls_create_flags.declare_options(self)
90
99
  define_method 'endpoints:tls:create' do |type|
100
+ telemetry(__method__, options.merge(type: type))
101
+
91
102
  create_app_vhost(
92
103
  tls_create_flags, options, type,
93
104
  type: 'tls', platform: 'elb'
@@ -104,6 +115,8 @@ module Aptible
104
115
  'Modify an App TLS Endpoint'
105
116
  tls_modify_flags.declare_options(self)
106
117
  define_method 'endpoints:tls:modify' do |hostname|
118
+ telemetry(__method__, options.merge(hostname: hostname))
119
+
107
120
  modify_app_vhost(tls_modify_flags, options, hostname)
108
121
  end
109
122
 
@@ -118,6 +131,8 @@ module Aptible
118
131
  'Create an App gRPC Endpoint'
119
132
  grpc_create_flags.declare_options(self)
120
133
  define_method 'endpoints:grpc:create' do |type|
134
+ telemetry(__method__, options.merge(type: type))
135
+
121
136
  create_app_vhost(
122
137
  grpc_create_flags, options, type,
123
138
  type: 'grpc', platform: 'elb'
@@ -134,6 +149,8 @@ module Aptible
134
149
  'Modify an App gRPC Endpoint'
135
150
  grpc_modify_flags.declare_options(self)
136
151
  define_method 'endpoints:grpc:modify' do |hostname|
152
+ telemetry(__method__, options.merge(hostname: hostname))
153
+
137
154
  modify_app_vhost(grpc_modify_flags, options, hostname)
138
155
  end
139
156
 
@@ -148,6 +165,8 @@ module Aptible
148
165
  'Create an App HTTPS Endpoint'
149
166
  https_create_flags.declare_options(self)
150
167
  define_method 'endpoints:https:create' do |type|
168
+ telemetry(__method__, options.merge(type: type))
169
+
151
170
  create_app_vhost(
152
171
  https_create_flags, options, type,
153
172
  type: 'http', platform: 'alb'
@@ -164,6 +183,7 @@ module Aptible
164
183
  'Modify an App HTTPS Endpoint'
165
184
  https_modify_flags.declare_options(self)
166
185
  define_method 'endpoints:https:modify' do |hostname|
186
+ telemetry(__method__, options.merge(hostname: hostname))
167
187
  modify_app_vhost(https_modify_flags, options, hostname)
168
188
  end
169
189
 
@@ -171,6 +191,8 @@ module Aptible
171
191
  'List Endpoints for an App or Database'
172
192
  app_or_database_options
173
193
  define_method 'endpoints:list' do
194
+ telemetry(__method__, options)
195
+
174
196
  resource = ensure_app_or_database(options)
175
197
 
176
198
  Formatter.render(Renderer.current) do |root|
@@ -191,6 +213,8 @@ module Aptible
191
213
  'Deprovision an App or Database Endpoint'
192
214
  app_or_database_options
193
215
  define_method 'endpoints:deprovision' do |hostname|
216
+ telemetry(__method__, options.merge(hostname: hostname))
217
+
194
218
  resource = ensure_app_or_database(options)
195
219
  vhost = find_vhost(each_service(resource), hostname)
196
220
  op = vhost.create_operation!(type: 'deprovision')
@@ -209,6 +233,8 @@ module Aptible
209
233
  LONGDESC
210
234
  app_options
211
235
  define_method 'endpoints:renew' do |hostname|
236
+ telemetry(__method__, options.merge(hostname: hostname))
237
+
212
238
  app = ensure_app(options)
213
239
  vhost = find_vhost(app.each_service, hostname)
214
240
  op = vhost.create_operation!(type: 'renew')
@@ -6,10 +6,13 @@ module Aptible
6
6
  thor.class_eval do
7
7
  include Helpers::Environment
8
8
  include Helpers::Token
9
+ include Helpers::Telemetry
9
10
 
10
11
  desc 'environment:list', 'List all environments'
11
12
  option :environment, aliases: '--env'
12
13
  define_method 'environment:list' do
14
+ telemetry(__method__, options)
15
+
13
16
  Formatter.render(Renderer.current) do |root|
14
17
  root.keyed_list(
15
18
  'handle'
@@ -27,6 +30,8 @@ module Aptible
27
30
  'Retrieve the CA certificate associated with the environment'
28
31
  option :environment, aliases: '--env'
29
32
  define_method 'environment:ca_cert' do
33
+ telemetry(__method__, options)
34
+
30
35
  Formatter.render(Renderer.current) do |root|
31
36
  root.grouped_keyed_list(
32
37
  'handle',
@@ -48,6 +53,12 @@ module Aptible
48
53
  ' destinations, you must restart the apps/databases in'\
49
54
  ' this environment.'
50
55
  define_method 'environment:rename' do |old_handle, new_handle|
56
+ opts = options.merge(
57
+ old_handle: old_handle,
58
+ new_handle: new_handle
59
+ )
60
+ telemetry(__method__, opts)
61
+
51
62
  env = ensure_environment(options.merge(environment: old_handle))
52
63
  env.update!(handle: new_handle)
53
64
  m1 = "In order for the new environment handle (#{new_handle})"\
@@ -7,6 +7,7 @@ module Aptible
7
7
  include Helpers::Token
8
8
  include Helpers::Database
9
9
  include Helpers::LogDrain
10
+ include Helpers::Telemetry
10
11
 
11
12
  drain_flags = '--environment ENVIRONMENT ' \
12
13
  '[--drain-apps true/false] ' \
@@ -25,16 +26,25 @@ module Aptible
25
26
  desc 'log_drain:list', 'List all Log Drains'
26
27
  option :environment, aliases: '--env'
27
28
  define_method 'log_drain:list' do
29
+ telemetry(__method__, options)
30
+
28
31
  Formatter.render(Renderer.current) do |root|
29
32
  root.grouped_keyed_list(
30
33
  { 'environment' => 'handle' },
31
34
  'handle'
32
35
  ) do |node|
33
- scoped_environments(options).each do |account|
34
- account.log_drains.each do |drain|
35
- node.object do |n|
36
- ResourceFormatter.inject_log_drain(n, drain, account)
37
- end
36
+ accounts = scoped_environments(options)
37
+ acc_map = environment_map(accounts)
38
+
39
+ Aptible::Api::LogDrain.all(
40
+ token: fetch_token,
41
+ href: '/log_drains?per_page=5000'
42
+ ).each do |drain|
43
+ account = acc_map[drain.links.account.href]
44
+ next if account.nil?
45
+
46
+ node.object do |n|
47
+ ResourceFormatter.inject_log_drain(n, drain, account)
38
48
  end
39
49
  end
40
50
  end
@@ -49,6 +59,8 @@ module Aptible
49
59
  option :db, type: :string
50
60
  option :pipeline, type: :string
51
61
  define_method 'log_drain:create:elasticsearch' do |handle|
62
+ telemetry(__method__, options.merge(handle: handle))
63
+
52
64
  account = ensure_environment(options)
53
65
  database = ensure_database(options)
54
66
 
@@ -73,6 +85,8 @@ module Aptible
73
85
  drain_options
74
86
  option :url, type: :string
75
87
  define_method 'log_drain:create:datadog' do |handle|
88
+ telemetry(__method__, options.merge(handle: handle))
89
+
76
90
  msg = 'Must be in the format of ' \
77
91
  '"https://http-intake.logs.datadoghq.com' \
78
92
  '/v1/input/<DD_API_KEY>".'
@@ -86,6 +100,7 @@ module Aptible
86
100
  option :url, type: :string
87
101
  drain_options
88
102
  define_method 'log_drain:create:https' do |handle|
103
+ telemetry(__method__, options.merge(handle: handle))
89
104
  create_https_based_log_drain(handle, options)
90
105
  end
91
106
 
@@ -96,6 +111,7 @@ module Aptible
96
111
  option :url, type: :string
97
112
  drain_options
98
113
  define_method 'log_drain:create:sumologic' do |handle|
114
+ telemetry(__method__, options.merge(handle: handle))
99
115
  create_https_based_log_drain(handle, options)
100
116
  end
101
117
 
@@ -106,6 +122,8 @@ module Aptible
106
122
  option :url, type: :string
107
123
  drain_options
108
124
  define_method 'log_drain:create:logdna' do |handle|
125
+ telemetry(__method__, options.merge(handle: handle))
126
+
109
127
  msg = 'Must be in the format of ' \
110
128
  '"https://logs.logdna.com/aptible/ingest/<INGESTION KEY>".'
111
129
  create_https_based_log_drain(handle, options, url_format_msg: msg)
@@ -119,6 +137,7 @@ module Aptible
119
137
  option :port, type: :string
120
138
  drain_options
121
139
  define_method 'log_drain:create:papertrail' do |handle|
140
+ telemetry(__method__, options.merge(handle: handle))
122
141
  create_syslog_based_log_drain(handle, options)
123
142
  end
124
143
 
@@ -132,6 +151,7 @@ module Aptible
132
151
  option :token, type: :string
133
152
  drain_options
134
153
  define_method 'log_drain:create:syslog' do |handle|
154
+ telemetry(__method__, options.merge(handle: handle))
135
155
  create_syslog_based_log_drain(handle, options)
136
156
  end
137
157
 
@@ -139,6 +159,7 @@ module Aptible
139
159
  'Deprovisions a log drain'
140
160
  option :environment, aliases: '--env'
141
161
  define_method 'log_drain:deprovision' do |handle|
162
+ telemetry(__method__, options.merge(handle: handle))
142
163
  account = ensure_environment(options)
143
164
  drain = ensure_log_drain(account, handle)
144
165
  op = drain.create_operation(type: :deprovision)
@@ -12,11 +12,14 @@ module Aptible
12
12
  include Helpers::AppOrDatabase
13
13
  include Helpers::S3LogHelpers
14
14
  include Helpers::DateHelpers
15
+ include Helpers::Telemetry
15
16
 
16
17
  desc 'logs [--app APP | --database DATABASE]',
17
18
  'Follows logs from a running app or database'
18
19
  app_or_database_options
19
20
  def logs
21
+ telemetry(__method__, options)
22
+
20
23
  resource = ensure_app_or_database(options)
21
24
 
22
25
  unless resource.status == 'provisioned'
@@ -89,6 +92,8 @@ module Aptible
89
92
  type: :string
90
93
 
91
94
  def logs_from_archive
95
+ telemetry(__method__, options)
96
+
92
97
  ensure_aws_creds
93
98
  validate_log_search_options(options)
94
99
 
@@ -7,12 +7,15 @@ module Aptible
7
7
  include Helpers::Environment
8
8
  include Helpers::Maintenance
9
9
  include Helpers::Token
10
+ include Helpers::Telemetry
10
11
 
11
12
  desc 'maintenance:apps',
12
13
  'List Apps impacted by maintenance schedules where '\
13
14
  'restarts are required'
14
15
  option :environment, aliases: '--env'
15
16
  define_method 'maintenance:apps' do
17
+ telemetry(__method__, options)
18
+
16
19
  found_maintenance = false
17
20
  m = maintenance_apps
18
21
  Formatter.render(Renderer.current) do |root|
@@ -48,6 +51,8 @@ module Aptible
48
51
  'restarts are required'
49
52
  option :environment, aliases: '--env'
50
53
  define_method 'maintenance:dbs' do
54
+ telemetry(__method__, options)
55
+
51
56
  found_maintenance = false
52
57
  m = maintenance_databases
53
58
  Formatter.render(Renderer.current) do |root|
@@ -16,20 +16,30 @@ module Aptible
16
16
  include Helpers::Token
17
17
  include Helpers::Database
18
18
  include Helpers::MetricDrain
19
+ include Helpers::Telemetry
19
20
 
20
21
  desc 'metric_drain:list', 'List all Metric Drains'
21
22
  option :environment, aliases: '--env'
22
23
  define_method 'metric_drain:list' do
24
+ telemetry(__method__, options)
25
+
23
26
  Formatter.render(Renderer.current) do |root|
24
27
  root.grouped_keyed_list(
25
28
  { 'environment' => 'handle' },
26
29
  'handle'
27
30
  ) do |node|
28
- scoped_environments(options).each do |account|
29
- account.metric_drains.each do |drain|
30
- node.object do |n|
31
- ResourceFormatter.inject_metric_drain(n, drain, account)
32
- end
31
+ accounts = scoped_environments(options)
32
+ acc_map = environment_map(accounts)
33
+
34
+ Aptible::Api::MetricDrain.all(
35
+ token: fetch_token,
36
+ href: '/metric_drains?per_page=5000'
37
+ ).each do |drain|
38
+ account = acc_map[drain.links.account.href]
39
+ next if account.nil?
40
+
41
+ node.object do |n|
42
+ ResourceFormatter.inject_metric_drain(n, drain, account)
33
43
  end
34
44
  end
35
45
  end
@@ -43,6 +53,8 @@ module Aptible
43
53
  option :environment, aliases: '--env'
44
54
 
45
55
  define_method 'metric_drain:create:influxdb' do |handle|
56
+ telemetry(__method__, options.merge(handle: handle))
57
+
46
58
  account = ensure_environment(options)
47
59
  database = ensure_database(options)
48
60
 
@@ -68,6 +80,8 @@ module Aptible
68
80
  option :db, type: :string
69
81
  option :environment, aliases: '--env'
70
82
  define_method 'metric_drain:create:influxdb:custom' do |handle|
83
+ telemetry(__method__, options.merge(handle: handle))
84
+
71
85
  account = ensure_environment(options)
72
86
 
73
87
  config = {
@@ -97,6 +111,8 @@ module Aptible
97
111
  option :url, type: :string
98
112
  option :environment, aliases: '--env'
99
113
  define_method 'metric_drain:create:influxdb:customv2' do |handle|
114
+ telemetry(__method__, options.merge(handle: handle))
115
+
100
116
  account = ensure_environment(options)
101
117
 
102
118
  config = {
@@ -123,6 +139,8 @@ module Aptible
123
139
  option :site, type: :string
124
140
  option :environment, aliases: '--env'
125
141
  define_method 'metric_drain:create:datadog' do |handle|
142
+ telemetry(__method__, options.merge(handle: handle))
143
+
126
144
  account = ensure_environment(options)
127
145
 
128
146
  config = {
@@ -152,6 +170,8 @@ module Aptible
152
170
  'Deprovisions a Metric Drain'
153
171
  option :environment, aliases: '--env'
154
172
  define_method 'metric_drain:deprovision' do |handle|
173
+ telemetry(__method__, options.merge(handle: handle))
174
+
155
175
  account = ensure_environment(options)
156
176
  drain = ensure_metric_drain(account, handle)
157
177
  op = drain.create_operation(type: :deprovision)
@@ -6,9 +6,12 @@ module Aptible
6
6
  thor.class_eval do
7
7
  include Helpers::Token
8
8
  include Helpers::Operation
9
+ include Helpers::Telemetry
9
10
 
10
11
  desc 'operation:cancel OPERATION_ID', 'Cancel a running operation'
11
12
  define_method 'operation:cancel' do |operation_id|
13
+ telemetry(__method__, options.merge(operation_id: operation_id))
14
+
12
15
  o = Aptible::Api::Operation.find(operation_id, token: fetch_token)
13
16
  raise "Operation ##{operation_id} not found" if o.nil?
14
17
 
@@ -20,6 +23,8 @@ module Aptible
20
23
  desc 'operation:follow OPERATION_ID',
21
24
  'Follow logs of a running operation'
22
25
  define_method 'operation:follow' do |operation_id|
26
+ telemetry(__method__, options.merge(operation_id: operation_id))
27
+
23
28
  o = Aptible::Api::Operation.find(operation_id, token: fetch_token)
24
29
  raise "Operation ##{operation_id} not found" if o.nil?
25
30
 
@@ -37,6 +42,8 @@ module Aptible
37
42
 
38
43
  desc 'operation:logs OPERATION_ID', 'View logs for given operation'
39
44
  define_method 'operation:logs' do |operation_id|
45
+ telemetry(__method__, options.merge(operation_id: operation_id))
46
+
40
47
  o = Aptible::Api::Operation.find(operation_id, token: fetch_token)
41
48
  raise "Operation ##{operation_id} not found" if o.nil?
42
49
 
@@ -6,10 +6,13 @@ module Aptible
6
6
  thor.class_eval do
7
7
  include Helpers::Operation
8
8
  include Helpers::App
9
+ include Helpers::Telemetry
9
10
 
10
11
  desc 'rebuild', 'Rebuild an app, and restart its services'
11
12
  app_options
12
13
  def rebuild
14
+ telemetry(__method__, options)
15
+
13
16
  app = ensure_app(options)
14
17
  operation = app.create_operation!(type: 'rebuild')
15
18
  CLI.logger.info 'Rebuilding app...'
@@ -6,6 +6,7 @@ module Aptible
6
6
  thor.class_eval do
7
7
  include Helpers::Operation
8
8
  include Helpers::App
9
+ include Helpers::Telemetry
9
10
 
10
11
  desc 'restart', 'Restart all services associated with an app'
11
12
  option :simulate_oom,
@@ -20,6 +21,8 @@ module Aptible
20
21
  'default.'
21
22
  app_options
22
23
  def restart
24
+ telemetry(__method__, options)
25
+
23
26
  app = ensure_app(options)
24
27
  type = 'restart'
25
28