uffizzi-cli 0.3.6 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08414382a904ff9a676cf23591fbbb909122d8c5d234ce5f6eb54d0ebc5bdc3a'
4
- data.tar.gz: d2b438a98fc5c7b068c51d6f5c64607a102d90a9d06f939e2af722764af3676a
3
+ metadata.gz: f517c288807e4cb2a7480303b9c04b2856fe76885c79abc3bfb39f77dee24abc
4
+ data.tar.gz: be93d597d0a6892854974706d2bd629c5b323cffc6ee682f2623884d61d013ba
5
5
  SHA512:
6
- metadata.gz: 4bd85b8e4b9dc97d01235521b32d08d54df974e37d8b23aac86bdaf2ee2d072fdbb185ac7d87829e716b393d36de0e8bb85a3ed9eb208836b0ee932d85cb1d3c
7
- data.tar.gz: 71324d98bcfa5c49c693684555e22c5ab7711d95b3ffd74e683013cb24bf9b358aa6a1ff7bd1193560cad8ebe10b2915419b33642ab836dbd0019d551b8daff9
6
+ metadata.gz: 54df68a43dddc1827a83dfa0f172c57d68b12f6ac52064990b02cd69ccb6a27bced898db4420f146fdd55dcefc017317142b7c587213114af2135dd0a4cc2444
7
+ data.tar.gz: ff40d04955d46452f0823788c1e62b6de2267fc4623cf4cdd0448e107d78610a1d021051346cd7db55f1b5c1ff18b27da9c81328490fb98c3bb19bf4e0a406aa
data/README.md CHANGED
@@ -176,6 +176,16 @@ $ uffizzi config delete OPTION
176
176
 
177
177
  Deletes specified option.
178
178
 
179
+ ### disconnect ###
180
+
181
+ ```
182
+ $ uffizzi disconnect CREDENTIAL_TYPE
183
+ ```
184
+
185
+ Deletes credential of specified type
186
+
187
+ Supported credential types - `docker-hub`, `acr`, `ecr`, `gcr`
188
+
179
189
  ## Git workflow for the app:
180
190
 
181
191
  1. Clone the repository and checkout to `develop` branch
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uffizzi'
4
+
5
+ module Uffizzi
6
+ class CLI::Disconnect
7
+ include ApiClient
8
+
9
+ def run(credential_type)
10
+ connection_type = case credential_type
11
+ when 'docker-hub'
12
+ Uffizzi.configuration.credential_types[:dockerhub]
13
+ when 'acr'
14
+ Uffizzi.configuration.credential_types[:azure]
15
+ when 'ecr'
16
+ Uffizzi.configuration.credential_types[:amazon]
17
+ when 'gcr'
18
+ Uffizzi.configuration.credential_types[:google]
19
+ else
20
+ raise Uffizzi::Error.new('Unsupported credential type.')
21
+ end
22
+
23
+ response = delete_credential(ConfigFile.read_option(:hostname), connection_type)
24
+
25
+ if ResponseHelper.no_content?(response)
26
+ Uffizzi.ui.say("Successfully disconnected #{connection_name(credential_type)} connection")
27
+ else
28
+ ResponseHelper.handle_failed_response(response)
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def connection_name(credential_type)
35
+ {
36
+ 'docker-hub' => 'DockerHub',
37
+ 'acr' => 'ACR',
38
+ 'ecr' => 'ECR',
39
+ 'gcr' => 'GCR',
40
+ }[credential_type]
41
+ end
42
+ end
43
+ end
@@ -9,7 +9,23 @@ module Uffizzi
9
9
  class CLI::Preview::Service < Thor
10
10
  include ApiClient
11
11
 
12
- desc 'list', 'list'
12
+ desc 'uffizzi preview service logs [LOGS_TYPE] [DEPLOYMENT_ID] [CONTAINER_NAME]', 'logs'
13
+ def logs(logs_type, deployment_name, container_name = args)
14
+ return Uffizzi.ui.say('You are not logged in.') unless Uffizzi::AuthHelper.signed_in?
15
+ return Uffizzi.ui.say('This command needs project to be set in config file') unless Uffizzi::AuthHelper.project_set?
16
+
17
+ deployment_id = PreviewService.read_deployment_id(deployment_name)
18
+ response = service_logs_response(logs_type, deployment_id, container_name)
19
+ return Uffizzi.ui.say(response[:errors]) if response[:errors]
20
+
21
+ if ResponseHelper.ok?(response)
22
+ handle_succeed_logs_response(response, container_name)
23
+ else
24
+ ResponseHelper.handle_failed_response(response)
25
+ end
26
+ end
27
+
28
+ desc 'uffizzi preview service logs [DEPLOYMENT_ID]', 'list'
13
29
  def list(deployment_name)
14
30
  return Uffizzi.ui.say('You are not logged in.') unless Uffizzi::AuthHelper.signed_in?
15
31
  return Uffizzi.ui.say('This command needs project to be set in config file') unless Uffizzi::AuthHelper.project_set?
@@ -20,7 +36,7 @@ module Uffizzi
20
36
  response = fetch_deployment_services(hostname, project_slug, deployment_id)
21
37
 
22
38
  if ResponseHelper.ok?(response)
23
- handle_succeed_response(response, deployment_name)
39
+ handle_succeed_list_response(response, deployment_name)
24
40
  else
25
41
  ResponseHelper.handle_failed_response(response)
26
42
  end
@@ -28,7 +44,19 @@ module Uffizzi
28
44
 
29
45
  private
30
46
 
31
- def handle_succeed_response(response, deployment_name)
47
+ def service_logs_response(logs_type, deployment_id, container_name)
48
+ project_slug = ConfigFile.read_option(:project)
49
+ hostname = ConfigFile.read_option(:hostname)
50
+
51
+ case logs_type
52
+ when 'container'
53
+ fetch_deployment_service_logs(hostname, project_slug, deployment_id, container_name)
54
+ else
55
+ raise Uffizzi::Error.new('Unknown log type')
56
+ end
57
+ end
58
+
59
+ def handle_succeed_list_response(response, deployment_name)
32
60
  services = response[:body][:containers] || []
33
61
  return Uffizzi.ui.say("There are no services associated with the preview #{deployment_name}") if services.empty?
34
62
 
@@ -36,5 +64,14 @@ module Uffizzi
36
64
  Uffizzi.ui.say(service)
37
65
  end
38
66
  end
67
+
68
+ def handle_succeed_logs_response(response, container_name)
69
+ logs = response[:body][:logs] || []
70
+ return Uffizzi.ui.say("The service #{container_name} has no logs") if logs.empty?
71
+
72
+ logs.each do |log|
73
+ Uffizzi.ui.say(log)
74
+ end
75
+ end
39
76
  end
40
77
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'uffizzi'
4
- require 'tty-spinner'
5
4
  require 'uffizzi/auth_helper'
6
5
  require 'uffizzi/services/preview_service'
7
6
 
data/lib/uffizzi/cli.rb CHANGED
@@ -8,6 +8,10 @@ module Uffizzi
8
8
  require_relative 'cli/common'
9
9
  class_option :help, type: :boolean, aliases: ['-h', 'help']
10
10
 
11
+ def self.exit_on_failure?
12
+ true
13
+ end
14
+
11
15
  desc 'version', 'show version'
12
16
  def version
13
17
  require_relative 'version'
@@ -54,5 +58,11 @@ module Uffizzi
54
58
  require_relative 'cli/connect'
55
59
  Connect.new.run(credential_type, credential_file_path)
56
60
  end
61
+
62
+ desc 'disconect CREDENTIAL_TYPE', 'Disonnect credentials from Uffizzi'
63
+ def disconnect(credential_type)
64
+ require_relative 'cli/disconnect'
65
+ Disconnect.new.run(credential_type)
66
+ end
57
67
  end
58
68
  end
@@ -41,6 +41,20 @@ module ApiClient
41
41
  build_response(response)
42
42
  end
43
43
 
44
+ def delete_credential(hostname, credential_type)
45
+ uri = delete_credential_uri(hostname, credential_type)
46
+ response = Uffizzi::HttpClient.make_delete_request(uri)
47
+
48
+ build_response(response)
49
+ end
50
+
51
+ def fetch_deployment_service_logs(hostname, project_slug, deployment_id, container_name)
52
+ uri = preview_service_logs_uri(hostname, project_slug, deployment_id, container_name)
53
+ response = Uffizzi::HttpClient.make_get_request(uri)
54
+
55
+ build_response(response)
56
+ end
57
+
44
58
  def set_compose_file(hostname, params, project_slug)
45
59
  uri = compose_file_uri(hostname, project_slug)
46
60
  response = Uffizzi::HttpClient.make_post_request(uri, params)
@@ -55,4 +55,12 @@ module ApiRoutes
55
55
  def preview_services_uri(hostname, project_slug, deployment_id)
56
56
  "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers"
57
57
  end
58
+
59
+ def delete_credential_uri(hostname, credential_type)
60
+ "#{hostname}/api/cli/v1/account/credentials/#{credential_type}"
61
+ end
62
+
63
+ def preview_service_logs_uri(hostname, project_slug, deployment_id, container_name)
64
+ "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers/#{container_name}/logs"
65
+ end
58
66
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uffizzi
4
+ class Error < Thor::Error; end
5
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uffizzi
4
- VERSION = '0.3.6'
4
+ VERSION = '0.4.0'
5
5
  end
data/lib/uffizzi.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'io/console'
4
+ require 'tty-spinner'
4
5
 
6
+ require 'thor'
7
+ require 'uffizzi/error'
5
8
  require 'uffizzi/shell'
6
9
  require 'uffizzi/version'
7
10
  require 'uffizzi/clients/api/api_client'
@@ -10,8 +13,6 @@ require 'uffizzi/config_file'
10
13
  require_relative '../config/uffizzi'
11
14
 
12
15
  module Uffizzi
13
- class Error < StandardError; end
14
-
15
16
  class << self
16
17
  def ui
17
18
  @ui ||= Uffizzi::UI::Shell.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uffizzi-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Thurman
@@ -9,8 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-03-28 00:00:00.000000000 Z
12
+ date: 2022-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: tty-spinner
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
14
42
  - !ruby/object:Gem::Dependency
15
43
  name: bump
16
44
  requirement: !ruby/object:Gem::Requirement
@@ -235,20 +263,6 @@ dependencies:
235
263
  - - ">="
236
264
  - !ruby/object:Gem::Version
237
265
  version: '0'
238
- - !ruby/object:Gem::Dependency
239
- name: tty-spinner
240
- requirement: !ruby/object:Gem::Requirement
241
- requirements:
242
- - - ">="
243
- - !ruby/object:Gem::Version
244
- version: '0'
245
- type: :development
246
- prerelease: false
247
- version_requirements: !ruby/object:Gem::Requirement
248
- requirements:
249
- - - ">="
250
- - !ruby/object:Gem::Version
251
- version: '0'
252
266
  - !ruby/object:Gem::Dependency
253
267
  name: webmock
254
268
  requirement: !ruby/object:Gem::Requirement
@@ -263,20 +277,6 @@ dependencies:
263
277
  - - ">="
264
278
  - !ruby/object:Gem::Version
265
279
  version: '0'
266
- - !ruby/object:Gem::Dependency
267
- name: thor
268
- requirement: !ruby/object:Gem::Requirement
269
- requirements:
270
- - - ">="
271
- - !ruby/object:Gem::Version
272
- version: '0'
273
- type: :runtime
274
- prerelease: false
275
- version_requirements: !ruby/object:Gem::Requirement
276
- requirements:
277
- - - ">="
278
- - !ruby/object:Gem::Version
279
- version: '0'
280
280
  description: uffizzi-cli
281
281
  email:
282
282
  - info@uffizzi.com
@@ -285,22 +285,9 @@ executables:
285
285
  extensions: []
286
286
  extra_rdoc_files: []
287
287
  files:
288
- - ".dockerignore"
289
- - ".rubocop.yml"
290
- - CHANGELOG.md
291
- - CONTRIBUTING.md
292
- - Dockerfile
293
- - Gemfile
294
- - Gemfile.lock
295
288
  - LICENSE
296
- - Makefile
297
289
  - README.md
298
- - Rakefile
299
- - bin/console
300
- - bin/setup
301
290
  - config/uffizzi.rb
302
- - docker-compose.yml
303
- - docker-entrypoint.sh
304
291
  - exe/uffizzi
305
292
  - lib/uffizzi.rb
306
293
  - lib/uffizzi/auth_helper.rb
@@ -308,6 +295,7 @@ files:
308
295
  - lib/uffizzi/cli/common.rb
309
296
  - lib/uffizzi/cli/config.rb
310
297
  - lib/uffizzi/cli/connect.rb
298
+ - lib/uffizzi/cli/disconnect.rb
311
299
  - lib/uffizzi/cli/login.rb
312
300
  - lib/uffizzi/cli/logout.rb
313
301
  - lib/uffizzi/cli/preview.rb
@@ -319,27 +307,13 @@ files:
319
307
  - lib/uffizzi/clients/api/api_routes.rb
320
308
  - lib/uffizzi/clients/api/http_client.rb
321
309
  - lib/uffizzi/config_file.rb
310
+ - lib/uffizzi/error.rb
322
311
  - lib/uffizzi/response_helper.rb
323
312
  - lib/uffizzi/services/compose_file_service.rb
324
313
  - lib/uffizzi/services/env_variables_service.rb
325
314
  - lib/uffizzi/services/preview_service.rb
326
315
  - lib/uffizzi/shell.rb
327
316
  - lib/uffizzi/version.rb
328
- - man/uffizzi-create
329
- - man/uffizzi-create.ronn
330
- - man/uffizzi-delete
331
- - man/uffizzi-delete.ronn
332
- - man/uffizzi-describe
333
- - man/uffizzi-describe.ronn
334
- - man/uffizzi-events
335
- - man/uffizzi-events.ronn
336
- - man/uffizzi-list
337
- - man/uffizzi-list.ronn
338
- - man/uffizzi-logout
339
- - man/uffizzi-logout.ronn
340
- - man/uffizzi-preview
341
- - man/uffizzi-preview.ronn
342
- - uffizzi.gemspec
343
317
  homepage: https://uffizzi.com
344
318
  licenses:
345
319
  - Apache-2.0
data/.dockerignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- .byebug_history