Class: Krane::ResourceDeployer
- Inherits:
-
Object
- Object
- Krane::ResourceDeployer
- Extended by:
- StatsD::MeasureMethods
- Includes:
- TemplateReporting
- Defined in:
- lib/krane/resource_deployer.rb
Instance Attribute Summary collapse
-
#statsd_tags ⇒ Object
readonly
Returns the value of attribute statsd_tags.
Instance Method Summary collapse
- #deploy!(resources, verify_result, prune) ⇒ Object
-
#initialize(task_config:, prune_whitelist:, global_timeout:, current_sha: nil, selector:, statsd_tags:) ⇒ ResourceDeployer
constructor
A new instance of ResourceDeployer.
- #predeploy_priority_resources(resource_list, predeploy_sequence) ⇒ Object
Methods included from StatsD::MeasureMethods
Methods included from TemplateReporting
#add_para_from_list, #record_invalid_template, #record_warnings
Constructor Details
#initialize(task_config:, prune_whitelist:, global_timeout:, current_sha: nil, selector:, statsd_tags:) ⇒ ResourceDeployer
Returns a new instance of ResourceDeployer.
14 15 16 17 18 19 20 21 |
# File 'lib/krane/resource_deployer.rb', line 14 def initialize(task_config:, prune_whitelist:, global_timeout:, current_sha: nil, selector:, statsd_tags:) @task_config = task_config @prune_whitelist = prune_whitelist @global_timeout = global_timeout @current_sha = current_sha @selector = selector @statsd_tags = end |
Instance Attribute Details
#statsd_tags ⇒ Object (readonly)
Returns the value of attribute statsd_tags.
12 13 14 |
# File 'lib/krane/resource_deployer.rb', line 12 def @statsd_tags end |
Instance Method Details
#deploy!(resources, verify_result, prune) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/krane/resource_deployer.rb', line 23 def deploy!(resources, verify_result, prune) if verify_result deploy_all_resources(resources, prune: prune, verify: true) failed_resources = resources.reject(&:deploy_succeeded?) success = failed_resources.empty? if !success && failed_resources.all?(&:deploy_timed_out?) raise DeploymentTimeoutError end raise FatalDeploymentError unless success else deploy_all_resources(resources, prune: prune, verify: false) logger.summary.add_action("deployed #{resources.length} #{'resource'.pluralize(resources.length)}") warning = <<~MSG Deploy result verification is disabled for this deploy. This means the desired changes were communicated to Kubernetes, but the deploy did not make sure they actually succeeded. MSG logger.summary.add_paragraph(ColorizedString.new(warning).yellow) end end |
#predeploy_priority_resources(resource_list, predeploy_sequence) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/krane/resource_deployer.rb', line 43 def predeploy_priority_resources(resource_list, predeploy_sequence) = resource_list.select { |resource| resource.is_a?(Pod) } if .count == 1 .first.stream_logs = true end predeploy_sequence.each do |resource_type| matching_resources = resource_list.select { |r| r.type == resource_type } next if matching_resources.empty? deploy_resources(matching_resources, verify: true, record_summary: false) failed_resources = matching_resources.reject(&:deploy_succeeded?) fail_count = failed_resources.length if fail_count > 0 Krane::Concurrency.split_across_threads(failed_resources) do |r| r.sync_debug_info(kubectl) end failed_resources.each { |r| logger.summary.add_paragraph(r.) } raise FatalDeploymentError, "Failed to deploy #{fail_count} priority #{'resource'.pluralize(fail_count)}" end logger.blank_line end end |