From d319915e5e3b0b7813e4a3d35c2c5a7bb3360b27 Mon Sep 17 00:00:00 2001 From: Timothy Smith Date: Fri, 19 Jan 2024 13:55:56 -0500 Subject: [PATCH] If we're going to batch dry run, then let's actually use the results --- Gemfile | 2 +- lib/krane/deploy_task.rb | 13 +++++++------ lib/krane/resource_deployer.rb | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 351033344..59d7fdccb 100644 --- a/Gemfile +++ b/Gemfile @@ -4,4 +4,4 @@ source 'https://rubygems.org' # Specify your gem's dependencies in krane.gemspec gemspec -gem "ruby-lsp", "~> 0.2.0", :group => :development +gem "ruby-lsp", "~> 0.2.0", group: :development diff --git a/lib/krane/deploy_task.rb b/lib/krane/deploy_task.rb index 88e669208..bf6471c4e 100644 --- a/lib/krane/deploy_task.rb +++ b/lib/krane/deploy_task.rb @@ -286,15 +286,16 @@ def validate_configuration(prune:) def validate_resources(resources) validate_globals(resources) - batch_dry_run_success = validate_dry_run(resources) resources.select! { |r| r.selected?(@selector) } if @selector_as_filter + applyables, individuals = resources.partition { |r| r.deploy_method == :apply } + begin + batch_dry_run_success = validate_dry_run(applyables) + rescue FatalDeploymentError => e + raise FatalDeploymentError, "Template validation failed" + end Krane::Concurrency.split_across_threads(resources) do |r| # No need to pass in kubectl (and do per-resource dry run apply) if batch dry run succeeded - if batch_dry_run_success - r.validate_definition(kubectl: nil, selector: @selector, dry_run: false) - else - r.validate_definition(kubectl: kubectl, selector: @selector, dry_run: true) - end + r.validate_definition(kubectl: nil, selector: @selector, dry_run: false) end failed_resources = resources.select(&:validation_failed?) if failed_resources.present? diff --git a/lib/krane/resource_deployer.rb b/lib/krane/resource_deployer.rb index fe0cabe45..2310f6fa2 100644 --- a/lib/krane/resource_deployer.rb +++ b/lib/krane/resource_deployer.rb @@ -169,7 +169,7 @@ def apply_all(resources, prune, dry_run: false) if st.success? log_pruning(out) if prune else - record_apply_failure(err, resources: resources) unless dry_run + record_apply_failure(err, resources: resources) raise FatalDeploymentError, "Command failed: #{Shellwords.join(command)}" end end