Module: LanguageOperator::CLI::Helpers::ClusterValidator
- Defined in:
- lib/language_operator/cli/helpers/cluster_validator.rb
Overview
Validates that a cluster is selected before executing commands
Class Method Summary collapse
-
.current_cluster ⇒ Object
Get current cluster name.
-
.current_cluster_config ⇒ Object
Get current cluster config.
-
.ensure_cluster_selected! ⇒ Object
Ensure a cluster is selected, exit with helpful message if not.
-
.get_cluster(cluster_override = nil) ⇒ Object
Get current cluster, or allow override via --cluster flag.
-
.get_cluster_config(name) ⇒ Object
Get cluster config by name (with validation).
-
.kubernetes_client(cluster_override = nil) ⇒ Object
Create a Kubernetes client for the given cluster.
-
.validate_cluster_exists!(name) ⇒ Object
Validate that a specific cluster exists.
-
.validate_kubeconfig!(cluster_config) ⇒ Object
Validate kubeconfig for the given cluster config.
Class Method Details
.current_cluster ⇒ Object
Get current cluster name
48 49 50 |
# File 'lib/language_operator/cli/helpers/cluster_validator.rb', line 48 def current_cluster Config::ClusterConfig.current_cluster end |
.current_cluster_config ⇒ Object
Get current cluster config
53 54 55 56 |
# File 'lib/language_operator/cli/helpers/cluster_validator.rb', line 53 def current_cluster_config cluster_name = ensure_cluster_selected! Config::ClusterConfig.get_cluster(cluster_name) end |
.ensure_cluster_selected! ⇒ Object
Ensure a cluster is selected, exit with helpful message if not
15 16 17 18 19 |
# File 'lib/language_operator/cli/helpers/cluster_validator.rb', line 15 def ensure_cluster_selected! return current_cluster if current_cluster Errors::Handler.handle_no_cluster_selected end |
.get_cluster(cluster_override = nil) ⇒ Object
Get current cluster, or allow override via --cluster flag
22 23 24 25 26 27 28 29 |
# File 'lib/language_operator/cli/helpers/cluster_validator.rb', line 22 def get_cluster(cluster_override = nil) if cluster_override validate_cluster_exists!(cluster_override) cluster_override else ensure_cluster_selected! end end |
.get_cluster_config(name) ⇒ Object
Get cluster config by name (with validation)
59 60 61 62 63 64 65 66 67 |
# File 'lib/language_operator/cli/helpers/cluster_validator.rb', line 59 def get_cluster_config(name) validate_cluster_exists!(name) config = Config::ClusterConfig.get_cluster(name) # Validate kubeconfig exists and is accessible validate_kubeconfig!(config) config end |
.kubernetes_client(cluster_override = nil) ⇒ Object
Create a Kubernetes client for the given cluster
87 88 89 90 91 92 93 94 95 96 |
# File 'lib/language_operator/cli/helpers/cluster_validator.rb', line 87 def kubernetes_client(cluster_override = nil) cluster = get_cluster(cluster_override) cluster_config = get_cluster_config(cluster) require_relative '../../kubernetes/client' Kubernetes::Client.new( kubeconfig: cluster_config[:kubeconfig], context: cluster_config[:context] ) end |
.validate_cluster_exists!(name) ⇒ Object
Validate that a specific cluster exists
32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/language_operator/cli/helpers/cluster_validator.rb', line 32 def validate_cluster_exists!(name) return if Config::ClusterConfig.cluster_exists?(name) # Build context with available clusters for fuzzy matching clusters = Config::ClusterConfig.list_clusters available_names = clusters.map { |c| c[:name] } # Use error handler with fuzzy matching error = K8s::Error::NotFound.new(404, 'Not Found', 'cluster') Errors::Handler.handle_not_found(error, resource_type: 'cluster', resource_name: name, available_resources: available_names) end |
.validate_kubeconfig!(cluster_config) ⇒ Object
Validate kubeconfig for the given cluster config
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/language_operator/cli/helpers/cluster_validator.rb', line 70 def validate_kubeconfig!(cluster_config) # Check if kubeconfig file exists kubeconfig_path = cluster_config[:kubeconfig] return if kubeconfig_path && File.exist?(kubeconfig_path) Formatters::ProgressFormatter.error("Kubeconfig not found: #{kubeconfig_path}") puts puts 'The kubeconfig file for this cluster does not exist.' puts puts 'To fix this issue:' puts ' 1. Verify the kubeconfig path in ~/.langop/config.yaml' puts ' 2. Re-create the cluster configuration:' puts " langop cluster create #{cluster_config[:name]}" exit 1 end |