Class: KubernetesDeploy::ReplicaSet
Constant Summary
collapse
- TIMEOUT =
5.minutes
KubernetesResource::DEBUG_RESOURCE_NOT_FOUND_MESSAGE, KubernetesResource::LOG_LINE_COUNT, KubernetesResource::STANDARD_TIMEOUT_MESSAGE, KubernetesResource::UNUSUAL_FAILURE_MESSAGE
Instance Attribute Summary collapse
#context, #deploy_started, #name, #namespace, #type, #validation_error_msg
Instance Method Summary
collapse
build, #debug_message, #deploy_finished?, #deploy_method, #file_path, #id, #kubectl, #pretty_status, #report_status_to_statsd, #status, timeout, #timeout, #validate_definition, #validation_failed?
Constructor Details
#initialize(namespace:, context:, definition:, logger:, parent: nil, deploy_started: nil) ⇒ ReplicaSet
Returns a new instance of ReplicaSet.
7
8
9
10
11
12
13
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 7
def initialize(namespace:, context:, definition:, logger:, parent: nil, deploy_started: nil)
@parent = parent
@deploy_started = deploy_started
@rollout_data = { "replicas" => 0 }
@pods = []
super(namespace: namespace, context: context, definition: definition, logger: logger)
end
|
Instance Attribute Details
#desired_replicas ⇒ Object
Returns the value of attribute desired_replicas.
5
6
7
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 5
def desired_replicas
@desired_replicas
end
|
Instance Method Details
#deploy_failed? ⇒ Boolean
41
42
43
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 41
def deploy_failed?
@pods.present? && @pods.all?(&:deploy_failed?)
end
|
#deploy_succeeded? ⇒ Boolean
36
37
38
39
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 36
def deploy_succeeded?
@desired_replicas == @rollout_data["availableReplicas"].to_i &&
@desired_replicas == @rollout_data["readyReplicas"].to_i
end
|
#deploy_timed_out? ⇒ Boolean
53
54
55
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 53
def deploy_timed_out?
super || @pods.present? && @pods.all?(&:deploy_timed_out?)
end
|
#exists? ⇒ Boolean
57
58
59
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 57
def exists?
@found
end
|
#failure_message ⇒ Object
45
46
47
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 45
def failure_message
@pods.map(&:failure_message).compact.uniq.join("\n")
end
|
#fetch_events ⇒ Object
61
62
63
64
65
66
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 61
def fetch_events
own_events = super
return own_events unless @pods.present?
most_useful_pod = @pods.find(&:deploy_failed?) || @pods.find(&:deploy_timed_out?) || @pods.first
own_events.merge(most_useful_pod.fetch_events)
end
|
#fetch_logs ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 68
def fetch_logs
container_names.each_with_object({}) do |container_name, container_logs|
out, _err, _st = kubectl.run(
"logs",
id,
"--container=#{container_name}",
"--since-time=#{@deploy_started.to_datetime.rfc3339}",
"--tail=#{LOG_LINE_COUNT}"
)
container_logs[container_name] = out.split("\n")
end
end
|
#sync(rs_data = nil) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 15
def sync(rs_data = nil)
if rs_data.blank?
raw_json, _err, st = kubectl.run("get", type, @name, "--output=json")
rs_data = JSON.parse(raw_json) if st.success?
end
if rs_data.present?
@found = true
@desired_replicas = rs_data["spec"]["replicas"].to_i
@rollout_data = { "replicas" => 0 }.merge(rs_data["status"]
.slice("replicas", "availableReplicas", "readyReplicas"))
@status = @rollout_data.map { |state_replicas, num| "#{num} #{state_replicas.chop.pluralize(num)}" }.join(", ")
@pods = find_pods(rs_data)
else @found = false
@rollout_data = { "replicas" => 0 }
@status = nil
@pods = []
end
end
|
#timeout_message ⇒ Object
49
50
51
|
# File 'lib/kubernetes-deploy/kubernetes_resource/replica_set.rb', line 49
def timeout_message
@pods.map(&:timeout_message).compact.uniq.join("\n")
end
|