Sha256: 87b61ad3f7378bf7c7a92399f8f7e88595b079a818c00896f56d3006e55d0478
Contents?: true
Size: 1.74 KB
Versions: 3
Compression:
Stored size: 1.74 KB
Contents
# frozen_string_literal: true require 'kubernetes-deploy/kubernetes_resource/pod_set_base' module KubernetesDeploy class DaemonSet < PodSetBase TIMEOUT = 5.minutes attr_reader :pods SYNC_DEPENDENCIES = %w(Pod) def sync(mediator) super @pods = exists? ? find_pods(mediator) : [] end def status return super unless exists? rollout_data.map { |state_replicas, num| "#{num} #{state_replicas}" }.join(", ") end def deploy_succeeded? return false unless exists? rollout_data["desiredNumberScheduled"].to_i == rollout_data["updatedNumberScheduled"].to_i && rollout_data["desiredNumberScheduled"].to_i == rollout_data["numberReady"].to_i && current_generation == observed_generation end def deploy_failed? pods.present? && pods.any?(&:deploy_failed?) && observed_generation == current_generation end def fetch_debug_logs(kubectl) most_useful_pod = pods.find(&:deploy_failed?) || pods.find(&:deploy_timed_out?) || pods.first most_useful_pod.fetch_debug_logs(kubectl) end def print_debug_logs? pods.present? # the kubectl command times out if no pods exist end private def rollout_data return { "currentNumberScheduled" => 0 } unless exists? @instance_data["status"] .slice("updatedNumberScheduled", "desiredNumberScheduled", "numberReady") end def parent_of_pod?(pod_data) return false unless pod_data.dig("metadata", "ownerReferences") pod_data["metadata"]["ownerReferences"].any? { |ref| ref["uid"] == @instance_data["metadata"]["uid"] } && pod_data["metadata"]["labels"]["pod-template-generation"].to_i == @instance_data["spec"]["templateGeneration"].to_i end end end
Version data entries
3 entries across 3 versions & 1 rubygems