uffizzi-cli 2.0.36 → 2.0.37

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: 72e1e0754278f9e3fc7069a15d1f7963c9aa578a67fdb7495d52f9d633bf1f71
4
- data.tar.gz: a1cd9e4a84cba3b3827dfe0bb547ed4f3e734dc8cb9640603f5818937d0abee3
3
+ metadata.gz: f2764a609f5446a2b7f1a11ac9ec37619b14f441278dd220142edbab2b106876
4
+ data.tar.gz: 5f7196a3c7ef61b8d67685d14ce806b7651c9141de0795cb09248455602fed48
5
5
  SHA512:
6
- metadata.gz: f2c0a8c7a2c62cb5ae478f2a18c29a90ee4bdcc2c74b6177930510fc40f1032b2bb8d0e7f8e4947ee30760cc963776d32ac6dbb3e18710a784d2d3cbb4dff862
7
- data.tar.gz: cbd873c5ef8ab6c8868ee518f34acbada4303f44ef0f30770c1d405ef13b443a9d5431f7593dee81522a6a9b2e1bc1722774f1cce6f20cd16797165391bb9534
6
+ metadata.gz: 741e72b2f9c8c20c6a1bd7631af35f55b321b785b5defb052ea98cd273df80edc31223527bf30bffd59f5f0f3c0269f771ca6473be61292e8b8e985414bd0a44
7
+ data.tar.gz: f3f0f3ab58fcda3b73d8ab178a79d79591f8a86e63ae7e5d78b70eb3e6188732fb7e65a3e664bb0ada2cb7d04a0cb4c51281857b2165a833d2baf193fcbf5ca2
@@ -8,6 +8,8 @@ module Uffizzi
8
8
  end
9
9
 
10
10
  def sign_out
11
+ return unless Uffizzi::ConfigFile.exists?
12
+
11
13
  Uffizzi::ConfigFile.unset_option(:cookie)
12
14
  Uffizzi::ConfigFile.unset_option(:account)
13
15
  Uffizzi::ConfigFile.unset_option(:project)
@@ -25,15 +25,15 @@ module Uffizzi
25
25
  run('list')
26
26
  end
27
27
 
28
- desc 'create', 'Create a cluster'
28
+ desc 'create [NAME]', 'Create a cluster'
29
29
  method_option :name, type: :string, required: false, aliases: '-n'
30
30
  method_option :kubeconfig, type: :string, required: false, aliases: '-k'
31
31
  method_option :manifest, type: :string, required: false, aliases: '-m'
32
- method_option :'update-current-context', type: :boolean, required: false
32
+ method_option :'update-current-context', type: :boolean, required: false, default: true
33
33
  method_option :output, required: false, type: :string, aliases: '-o', enum: ['json', 'pretty-json']
34
34
  method_option :'creation-source', required: false, type: :string
35
- def create
36
- run('create')
35
+ def create(name = nil)
36
+ run('create', { name: name })
37
37
  end
38
38
 
39
39
  desc 'describe [NAME]', 'Describe a cluster'
@@ -43,7 +43,7 @@ module Uffizzi
43
43
  end
44
44
 
45
45
  desc 'delete [NAME]', 'Delete a cluster'
46
- method_option :'delete-config', required: false, type: :boolean, aliases: '-c'
46
+ method_option :'delete-config', required: false, type: :boolean, default: true
47
47
  def delete(name)
48
48
  run('delete', cluster_name: name)
49
49
  end
@@ -76,7 +76,7 @@ module Uffizzi
76
76
  when 'list'
77
77
  handle_list_command(project_slug)
78
78
  when 'create'
79
- handle_create_command(project_slug)
79
+ handle_create_command(project_slug, command_args)
80
80
  when 'describe'
81
81
  handle_describe_command(project_slug, command_args)
82
82
  when 'delete'
@@ -104,9 +104,17 @@ module Uffizzi
104
104
  end
105
105
  end
106
106
 
107
- def handle_create_command(project_slug)
107
+ # rubocop:disable Metrics/PerceivedComplexity
108
+ def handle_create_command(project_slug, command_args)
108
109
  Uffizzi.ui.disable_stdout if Uffizzi.ui.output_format
109
- cluster_name = options[:name] || ClusterService.generate_name
110
+
111
+ if options[:name]
112
+ msg = 'DEPRECATION WARNING: The --name option is deprecated and will be removed in the newer versions.' \
113
+ ' Please use a positional argument instead: uffizzi cluster create my-awesome-name'
114
+ Uffizzi.ui.say(msg)
115
+ end
116
+
117
+ cluster_name = command_args[:name] || options[:name] || ClusterService.generate_name
110
118
  creation_source = options[:"creation-source"] || MANUAL
111
119
 
112
120
  unless ClusterService.valid_name?(cluster_name)
@@ -133,6 +141,7 @@ module Uffizzi
133
141
  rescue SystemExit, Interrupt, SocketError
134
142
  handle_interrupt_creation(cluster_name, ConfigFile.read_option(:server), project_slug)
135
143
  end
144
+ # rubocop:enable Metrics/PerceivedComplexity
136
145
 
137
146
  def handle_describe_command(project_slug, command_args)
138
147
  cluster_data = fetch_cluster_data(project_slug, command_args[:cluster_name])
@@ -150,7 +159,7 @@ module Uffizzi
150
159
  kubeconfig = parse_kubeconfig(cluster_data[:kubeconfig])
151
160
 
152
161
  handle_delete_cluster(project_slug, cluster_name)
153
- exclude_kubeconfig(cluster_data[:id], kubeconfig)
162
+ exclude_kubeconfig(cluster_data[:id], kubeconfig) if kubeconfig.present?
154
163
  end
155
164
 
156
165
  def exclude_kubeconfig(cluster_id, kubeconfig)
@@ -308,7 +317,7 @@ module Uffizzi
308
317
  end
309
318
 
310
319
  def handle_succeed_create_response(cluster_data)
311
- kubeconfig_path = options[:kubeconfig]
320
+ kubeconfig_path = options[:kubeconfig] || KubeconfigService.default_path
312
321
  is_update_current_context = options[:'update-current-context']
313
322
  parsed_kubeconfig = parse_kubeconfig(cluster_data[:kubeconfig])
314
323
  rendered_cluster_data = render_cluster_data(cluster_data)
@@ -365,6 +374,8 @@ module Uffizzi
365
374
  end
366
375
 
367
376
  def parse_kubeconfig(kubeconfig)
377
+ return if kubeconfig.nil?
378
+
368
379
  Psych.safe_load(Base64.decode64(kubeconfig))
369
380
  end
370
381
 
@@ -21,7 +21,7 @@ module Uffizzi
21
21
 
22
22
  def run
23
23
  AuthHelper.sign_out if AuthHelper.signed_in?
24
- return perform_email_login if @options[:email]
24
+ return perform_email_login unless @options[:email].nil?
25
25
 
26
26
  perform_browser_login
27
27
  end
@@ -45,7 +45,7 @@ module Uffizzi
45
45
  def perform_browser_login
46
46
  session_id = SecureRandom.uuid
47
47
  response = create_access_token(@server, session_id)
48
- return handle_failed_response(response) unless ResponseHelper.created?(response)
48
+ return ResponseHelper.handle_failed_response(response) unless ResponseHelper.created?(response)
49
49
 
50
50
  url = browser_sign_in_url(@server, session_id)
51
51
  open_browser(url)
@@ -68,7 +68,7 @@ module Uffizzi
68
68
  token = response[:body][:access_token]
69
69
  Uffizzi::Token.delete
70
70
  Uffizzi::Token.write(token)
71
- Uffizzi.ui.say('Login successfull')
71
+ Uffizzi.ui.say('Login successful')
72
72
 
73
73
  set_current_account_and_project
74
74
  end
@@ -84,7 +84,7 @@ module Uffizzi
84
84
  ConfigFile.write_option(:server, @server)
85
85
  ConfigFile.write_option(:username, username)
86
86
  ConfigFile.write_option(:cookie, response[:headers])
87
- Uffizzi.ui.say('Login successfull')
87
+ Uffizzi.ui.say('Login successful')
88
88
 
89
89
  if ENV.fetch('CI_PIPELINE_RUN', false)
90
90
  account = response[:body][:user][:default_account]
data/lib/uffizzi/cli.rb CHANGED
@@ -19,7 +19,7 @@ module Uffizzi
19
19
  desc 'login [OPTIONS]', 'Login to Uffizzi to view and manage your previews'
20
20
  method_option :server, required: false, aliases: '-s'
21
21
  method_option :username, required: false, aliases: '-u'
22
- method_option :email, required: false, aliases: '-e'
22
+ method_option :email, required: false, aliases: '-e', lazy_default: ''
23
23
  def login
24
24
  require_relative 'cli/login'
25
25
  Login.new(options).run
@@ -121,7 +121,7 @@ module Uffizzi
121
121
  when Thor::Error
122
122
  raise exception
123
123
  when Interrupt
124
- raise Uffizzi::CliError.new('The command was interrupted')
124
+ nil
125
125
  when StandardError
126
126
  raise Uffizzi::CliError.new(exception.message)
127
127
  else
@@ -16,13 +16,14 @@ module Uffizzi
16
16
 
17
17
  def set_server(options)
18
18
  config_server = ConfigFile.exists? ? Uffizzi::ConfigHelper.read_option_from_config(:server) : nil
19
- server_address = (options[:server] || config_server || Uffizzi.ui.ask('Server:')).sub(/\/+$/, '')
19
+ server_address = options[:server] || config_server || Uffizzi.configuration.default_server.to_s
20
20
  server_address.start_with?('http:', 'https:') ? server_address : "https://#{server_address}"
21
21
  end
22
22
 
23
23
  def set_username(options)
24
24
  config_username = ConfigFile.exists? ? Uffizzi::ConfigHelper.read_option_from_config(:username) : nil
25
- options[:username] || config_username || Uffizzi.ui.ask('Username:')
25
+ options_username = options[:email].present? ? options[:email] : nil
26
+ options_username || config_username || Uffizzi.ui.ask('Username:')
26
27
  end
27
28
 
28
29
  def set_password
@@ -8,6 +8,7 @@ class ClusterService
8
8
  CLUSTER_STATE_DEPLOYED = 'deployed'
9
9
  CLUSTER_STATE_FAILED_DEPLOY_NAMESPACE = 'failed_deploy_namespace'
10
10
  CLUSTER_STATE_FAILED = 'failed'
11
+ CLUSTER_NAME_MAX_LENGTH = 15
11
12
 
12
13
  class << self
13
14
  include ApiClient
@@ -42,7 +43,7 @@ class ClusterService
42
43
  end
43
44
 
44
45
  def generate_name
45
- name = [Faker::Name.first_name, Faker::Name.last_name].map(&:downcase).join('-')
46
+ name = Faker::Internet.domain_word[0..CLUSTER_NAME_MAX_LENGTH]
46
47
 
47
48
  return name if valid_name?(name)
48
49
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uffizzi
4
- VERSION = '2.0.36'
4
+ VERSION = '2.0.37'
5
5
  end
@@ -5,19 +5,21 @@
5
5
  \fBuffizzi\-cluster\-create\fR \- create a cluster
6
6
  .SH "SYNOPSIS"
7
7
  .nf
8
- uffizzi cluster create
8
+ uffizzi cluster create [CLUSTER_NAME]
9
9
  .fi
10
10
  .SH "DESCRIPTION"
11
11
  .nf
12
- Creates a new cluster\.
12
+ Creates a new cluster\. If no CLUSTER_NAME is specified,
13
+ the cluster is created with the auto generated name\.
13
14
 
14
15
  For more information on Uffizzi clusters, see:
15
16
  https://docs\.uffizzi\.com/references/cli/
16
17
  .fi
17
18
  .SH "FLAGS"
18
19
  .nf
19
- \-\-name=CLUSTER\-NAME
20
- Set cluster name
20
+ \-\- name
21
+ Option is deprecated and will be removed in the newer versions\.
22
+ Please use a positional argument instead: uffizzi cluster create my\-awesome\-name\.
21
23
 
22
24
  \-\-kubeconfig="/path/to/your/kubeconfig"
23
25
  Path to kubeconfig file
@@ -27,6 +29,7 @@ https://docs\.uffizzi\.com/references/cli/
27
29
 
28
30
  \-\-update\-current\-context
29
31
  Update current\-context in kubeconfig file
32
+ Default is true
30
33
 
31
34
  \-\-output=pretty\-json
32
35
  \-\-output=json
@@ -40,10 +43,10 @@ To create a cluster with the auto generated name, run:
40
43
 
41
44
  To create a cluster with name, run:
42
45
 
43
- $ uffizzi cluster create \-\-name="my\-cluster"
46
+ $ uffizzi cluster create my\-cluster
44
47
 
45
48
  To create a cluster from a manifests directory, run:
46
49
 
47
- $ uffizzi cluster create \-\-name="my\-cluster" \-\-manifest=manifests/
50
+ $ uffizzi cluster create my\-cluster \-\-manifest=manifests/
48
51
  .fi
49
52
 
@@ -2,17 +2,19 @@ uffizzi-cluster-create - create a cluster
2
2
  ================================================================
3
3
 
4
4
  ## SYNOPSIS
5
- uffizzi cluster create
5
+ uffizzi cluster create [CLUSTER_NAME]
6
6
 
7
7
  ## DESCRIPTION
8
- Creates a new cluster.
8
+ Creates a new cluster. If no CLUSTER_NAME is specified,
9
+ the cluster is created with the auto generated name.
9
10
 
10
11
  For more information on Uffizzi clusters, see:
11
12
  https://docs.uffizzi.com/references/cli/
12
13
 
13
14
  ## FLAGS
14
- --name=CLUSTER-NAME
15
- Set cluster name
15
+ --name
16
+ Option is deprecated and will be removed in the newer versions.
17
+ Please use a positional argument instead: uffizzi cluster create my-awesome-name.
16
18
 
17
19
  --kubeconfig="/path/to/your/kubeconfig"
18
20
  Path to kubeconfig file
@@ -22,6 +24,7 @@ uffizzi-cluster-create - create a cluster
22
24
 
23
25
  --update-current-context
24
26
  Update current-context in kubeconfig file
27
+ Default is true
25
28
 
26
29
  --output=pretty-json
27
30
  --output=json
@@ -34,8 +37,8 @@ uffizzi-cluster-create - create a cluster
34
37
 
35
38
  To create a cluster with name, run:
36
39
 
37
- $ uffizzi cluster create --name="my-cluster"
40
+ $ uffizzi cluster create my-cluster
38
41
 
39
42
  To create a cluster from a manifests directory, run:
40
43
 
41
- $ uffizzi cluster create --name="my-cluster" --manifest=manifests/
44
+ $ uffizzi cluster create my-cluster --manifest=manifests/
@@ -1,6 +1,6 @@
1
1
  .\" generated with Ronn-NG/v0.9.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.9.1
3
- .TH "UFFIZZI\-CLUSTER\-DELETE" "" "August 2023" ""
3
+ .TH "UFFIZZI\-CLUSTER\-DELETE" "" "September 2023" ""
4
4
  .SH "NAME"
5
5
  \fBuffizzi\-cluster\-delete\fR \- delete a cluster
6
6
  .SH "SYNOPSIS"
@@ -23,6 +23,12 @@ https://docs\.uffizzi\.com/references/cli/
23
23
  [CLUSTER_NAME]
24
24
  Name for the cluster you want to delete\.
25
25
  .fi
26
+ .SH "FLAGS"
27
+ .nf
28
+ \-\-delete\-config=false
29
+ Delete cluster from kubeconfig\.
30
+ Default is true\.
31
+ .fi
26
32
  .SH "EXAMPLES"
27
33
  .nf
28
34
  The following command deletes the cluster with CLUSTER_NAME my\-cluster:
@@ -18,6 +18,11 @@ uffizzi-cluster-delete - delete a cluster
18
18
  [CLUSTER_NAME]
19
19
  Name for the cluster you want to delete.
20
20
 
21
+ ## FLAGS
22
+ --delete-config=false
23
+ Delete cluster from kubeconfig.
24
+ Default is true.
25
+
21
26
  ## EXAMPLES
22
27
  The following command deletes the cluster with CLUSTER_NAME my-cluster:
23
28
 
@@ -2,7 +2,7 @@
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.9.1
3
3
  .TH "UFFIZZI\-CLUSTER\-DISCONNECT" "" "September 2023" ""
4
4
  .SH "NAME"
5
- \fBuffizzi\-cluster\-disconnect\fR \- disconnect from current cluster
5
+ \fBuffizzi\-cluster\-disconnect\fR \- disconnect from current cluster context
6
6
  .SH "SYNOPSIS"
7
7
  .nf
8
8
  uffizzi cluster disconnect
@@ -17,7 +17,7 @@ https://docs\.uffizzi\.com/references/cli/
17
17
  .SH "FLAGS"
18
18
  .nf
19
19
  \-\-ask
20
- Show list available contexts for kubeconfig
20
+ Show list available contexts for kubeconfig and set new origin current context
21
21
 
22
22
  \-\-kubeconfig="/path/to/your/kubeconfig"
23
23
  Path to kubeconfig file
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: 2.0.36
4
+ version: 2.0.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Thurman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-09-11 00:00:00.000000000 Z
12
+ date: 2023-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport