Class: KubernetesDeploy::Deployment
Constant Summary
collapse
- TIMEOUT =
7.minutes
KubernetesResource::DEBUG_RESOURCE_NOT_FOUND_MESSAGE, KubernetesResource::LOG_LINE_COUNT, KubernetesResource::STANDARD_TIMEOUT_MESSAGE, KubernetesResource::UNUSUAL_FAILURE_MESSAGE
Instance Attribute Summary
#context, #deploy_started, #name, #namespace, #type, #validation_error_msg
Instance Method Summary
collapse
build, #debug_message, #deploy_finished?, #deploy_method, #file_path, #id, #initialize, #kubectl, #pretty_status, #report_status_to_statsd, #status, timeout, #timeout, #validate_definition, #validation_failed?
Instance Method Details
#deploy_failed? ⇒ Boolean
46
47
48
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 46
def deploy_failed?
@latest_rs && @latest_rs.deploy_failed?
end
|
#deploy_succeeded? ⇒ Boolean
37
38
39
40
41
42
43
44
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 37
def deploy_succeeded?
return false unless @latest_rs
@latest_rs.deploy_succeeded? &&
@latest_rs.desired_replicas == @desired_replicas && @rollout_data["updatedReplicas"].to_i == @desired_replicas &&
@rollout_data["updatedReplicas"].to_i == @rollout_data["availableReplicas"].to_i
end
|
#deploy_timed_out? ⇒ Boolean
63
64
65
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 63
def deploy_timed_out?
@progress ? @progress["status"] == 'False' : super
end
|
#exists? ⇒ Boolean
67
68
69
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 67
def exists?
@found
end
|
#failure_message ⇒ Object
50
51
52
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 50
def failure_message
@latest_rs&.failure_message
end
|
#fetch_events ⇒ Object
26
27
28
29
30
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 26
def fetch_events
own_events = super
return own_events unless @latest_rs.present?
own_events.merge(@latest_rs.fetch_events)
end
|
#fetch_logs ⇒ Object
32
33
34
35
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 32
def fetch_logs
return {} unless @latest_rs.present?
@latest_rs.fetch_logs
end
|
#sync ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 6
def sync
raw_json, _err, st = kubectl.run("get", type, @name, "--output=json")
@found = st.success?
if @found
deployment_data = JSON.parse(raw_json)
@desired_replicas = deployment_data["spec"]["replicas"].to_i
@latest_rs = find_latest_rs(deployment_data)
@rollout_data = { "replicas" => 0 }.merge(deployment_data["status"]
.slice("replicas", "updatedReplicas", "availableReplicas", "unavailableReplicas"))
@status = @rollout_data.map { |state_replicas, num| "#{num} #{state_replicas.chop.pluralize(num)}" }.join(", ")
conditions = deployment_data.fetch("status", {}).fetch("conditions", [])
@progress = conditions.find { |condition| condition['type'] == 'Progressing' }
else @latest_rs = nil
@rollout_data = { "replicas" => 0 }
@status = nil
end
end
|
#timeout_message ⇒ Object
54
55
56
57
58
59
60
61
|
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 54
def timeout_message
progress_seconds = @definition['spec']['progressDeadlineSeconds']
if progress_seconds
"Deploy timed out due to progressDeadlineSeconds of #{progress_seconds} seconds. #{@latest_rs&.timeout_message}"
else
@latest_rs&.timeout_message
end
end
|