Method: Krane::ResourceDeployer#predeploy_priority_resources

Defined in:
lib/krane/resource_deployer.rb

#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
66
67
68
69
70
71
# File 'lib/krane/resource_deployer.rb', line 43

def predeploy_priority_resources(resource_list, predeploy_sequence)
  bare_pods = resource_list.select { |resource| resource.is_a?(Pod) }
  if bare_pods.count == 1
    bare_pods.first.stream_logs = true
  end

  predeploy_sequence.each do |resource_type, attributes|
    matching_resources = resource_list.select do |r|
      r.type == resource_type &&
      (!attributes[:group] || r.group == attributes[:group])
    end
    StatsD.client.gauge('priority_resources.count', matching_resources.size, tags: statsd_tags)

    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.debug_message) }
      raise DeploymentTimeoutError if failed_resources.all?(&:deploy_timed_out?)
      raise FatalDeploymentError, "Failed to deploy #{fail_count} priority #{'resource'.pluralize(fail_count)}"
    end
    logger.blank_line
  end
end