class Krane::DaemonSet
Constants
- TIMEOUT
Attributes
pods[R]
Public Instance Methods
deploy_failed?()
click to toggle source
# File lib/krane/kubernetes_resource/daemon_set.rb, line 26 def deploy_failed? pods.present? && pods.any?(&:deploy_failed?) && observed_generation == current_generation end
deploy_succeeded?()
click to toggle source
# File lib/krane/kubernetes_resource/daemon_set.rb, line 19 def deploy_succeeded? return false unless exists? current_generation == observed_generation && rollout_data["desiredNumberScheduled"].to_i == rollout_data["updatedNumberScheduled"].to_i && relevant_pods_ready? end
fetch_debug_logs()
click to toggle source
# File lib/krane/kubernetes_resource/daemon_set.rb, line 31 def fetch_debug_logs most_useful_pod = pods.find(&:deploy_failed?) || pods.find(&:deploy_timed_out?) || pods.first most_useful_pod.fetch_debug_logs end
print_debug_logs?()
click to toggle source
# File lib/krane/kubernetes_resource/daemon_set.rb, line 36 def print_debug_logs? pods.present? # the kubectl command times out if no pods exist end
status()
click to toggle source
Calls superclass method
# File lib/krane/kubernetes_resource/daemon_set.rb, line 14 def status return super unless exists? rollout_data.map { |state_replicas, num| "#{num} #{state_replicas}" }.join(", ") end
sync(cache)
click to toggle source
Calls superclass method
# File lib/krane/kubernetes_resource/daemon_set.rb, line 8 def sync(cache) super @pods = exists? ? find_pods(cache) : [] @nodes = find_nodes(cache) if @nodes.blank? end
Private Instance Methods
find_nodes(cache)
click to toggle source
# File lib/krane/kubernetes_resource/daemon_set.rb, line 68 def find_nodes(cache) all_nodes = cache.get_all(Node.kind) all_nodes.map { |node_data| Node.new(definition: node_data) } end
parent_of_pod?(pod_data)
click to toggle source
# File lib/krane/kubernetes_resource/daemon_set.rb, line 79 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
relevant_pods_ready?()
click to toggle source
# File lib/krane/kubernetes_resource/daemon_set.rb, line 57 def relevant_pods_ready? return true if rollout_data["desiredNumberScheduled"].to_i == rollout_data["numberReady"].to_i # all pods ready relevant_node_names = @nodes.map(&:name) considered_pods = @pods.select { |p| relevant_node_names.include?(p.node_name) } @logger.debug("DaemonSet is reporting #{rollout_data['numberReady']} pods ready." \ " Considered #{considered_pods.size} pods out of #{@pods.size} for #{@nodes.size} nodes.") considered_pods.present? && considered_pods.all?(&:deploy_succeeded?) && rollout_data["numberReady"].to_i >= considered_pods.length end
rollout_data()
click to toggle source
# File lib/krane/kubernetes_resource/daemon_set.rb, line 73 def rollout_data return { "currentNumberScheduled" => 0 } unless exists? @instance_data["status"] .slice("updatedNumberScheduled", "desiredNumberScheduled", "numberReady") end