Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[346] added k8s version option #353

Merged
merged 4 commits into from
Oct 16, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 16 additions & 9 deletions lib/uffizzi/cli/cluster.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
require 'uffizzi/services/kubeconfig_service'
require 'uffizzi/services/cluster/disconnect_service'

MANUAL = 'manual'

module Uffizzi
class Cli::Cluster < Thor
class Error < StandardError; end
Expand All @@ -30,6 +32,7 @@ def list
method_option :'update-current-context', type: :boolean, required: false, default: true
method_option :output, required: false, type: :string, aliases: '-o', enum: ['json', 'pretty-json']
method_option :'creation-source', required: false, type: :string
method_option :'k8s-version', required: false, type: :string
moklidia marked this conversation as resolved.
Show resolved Hide resolved
def create(name = nil)
run('create', { name: name })
end
Expand Down Expand Up @@ -113,14 +116,16 @@ def handle_create_command(project_slug, command_args)
end

cluster_name = command_args[:name] || options[:name] || ClusterService.generate_name
creation_source = options[:"creation-source"] || ClusterService::MANUAL_CREATION_SOURCE

moklidia marked this conversation as resolved.
Show resolved Hide resolved
unless ClusterService.valid_name?(cluster_name)
Uffizzi.ui.say_error_and_exit("Cluster name: #{cluster_name} is not valid.")
end

manifest_file_path = options[:manifest]
params = cluster_creation_params(cluster_name, creation_source, manifest_file_path)
creation_source = options[:"creation-source"] || MANUAL
k8s_version = options[:"k8s-version"]
Uffizzi.ui.say_error_and_exit("Cluster name: #{cluster_name} is not valid.") unless ClusterService.valid_name?(cluster_name)

params = cluster_creation_params(
name: cluster_name,
creation_source: creation_source,
manifest_file_path: options[:manifest],
k8s_version: k8s_version,
)
response = create_cluster(ConfigFile.read_option(:server), project_slug, params)

return ResponseHelper.handle_failed_response(response) unless ResponseHelper.created?(response)
Expand Down Expand Up @@ -239,7 +244,7 @@ def say_error_update_kubeconfig(cluster_data)
end
end

def cluster_creation_params(name, creation_source, manifest_file_path)
def cluster_creation_params(name:, creation_source:, manifest_file_path:, k8s_version:)
manifest_content = load_manifest_file(manifest_file_path)
oidc_token = Uffizzi::ConfigFile.read_option(:oidc_token)

Expand All @@ -248,6 +253,7 @@ def cluster_creation_params(name, creation_source, manifest_file_path)
name: name,
manifest: manifest_content,
creation_source: creation_source,
k8s_version: k8s_version,
},
token: oidc_token,
}
Expand Down Expand Up @@ -303,6 +309,7 @@ def handle_succeed_describe(cluster_data)
status: cluster_data[:state],
created: Time.strptime(cluster_data[:created_at], '%Y-%m-%dT%H:%M:%S.%N').strftime('%a %b %d %H:%M:%S %Y'),
url: cluster_data[:host],
k8s_version: cluster_data[:k8s_version],
}

rendered_cluster_data = if Uffizzi.ui.output_format.nil?
Expand Down
11 changes: 10 additions & 1 deletion man/uffizzi-cluster-create.ronn
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
uffizzi cluster create -h
uffizzi-cluster-create - create a cluster
================================================================

Expand All @@ -12,9 +13,17 @@ uffizzi-cluster-create - create a cluster
https://docs.uffizzi.com/references/cli/

## FLAGS

--name
Option is deprecated and will be removed in the newer versions.
Please use a positional argument instead: uffizzi cluster create my-awesome-name.
Please use a positional argument instead: uffizzi cluster create
my-awesome-name.

--k8s-version=<api-version>
Specify which version of the Kubernetes API to use when creating
the cluster, formatted as [MAJOR].[MINOR]. Defaults to 1.27.
Minor versions point to the latest release of the corresponding k3s
minor version. See https://github.com/k3s-io/k3s/releases

--kubeconfig="/path/to/your/kubeconfig"
Path to kubeconfig file
Expand Down
Loading