Class: KubernetesDeploy::CustomResource
Constant Summary
collapse
- TIMEOUT_MESSAGE_DIFFERENT_GENERATIONS =
<<~MSG
This resource's status could not be used to determine rollout success because it is not up-to-date
(.metadata.generation != .status.observedGeneration).
MSG
KubernetesResource::DEBUG_RESOURCE_NOT_FOUND_MESSAGE, KubernetesResource::DISABLED_EVENT_INFO_MESSAGE, KubernetesResource::DISABLED_LOG_INFO_MESSAGE, KubernetesResource::DISABLE_FETCHING_EVENT_INFO, KubernetesResource::DISABLE_FETCHING_LOG_INFO, KubernetesResource::GLOBAL, KubernetesResource::LAST_APPLIED_ANNOTATION, KubernetesResource::LOG_LINE_COUNT, KubernetesResource::SENSITIVE_TEMPLATE_CONTENT, KubernetesResource::STANDARD_TIMEOUT_MESSAGE, KubernetesResource::TIMEOUT, KubernetesResource::TIMEOUT_OVERRIDE_ANNOTATION, KubernetesResource::UNUSUAL_FAILURE_MESSAGE
Instance Attribute Summary
#context, #deploy_started_at, #name, #namespace
Instance Method Summary
collapse
#<=>, #after_sync, build, class_for_kind, #current_generation, #debug_message, #deploy_method, #deploy_started?, #deploy_timed_out?, #disappeared?, #exists?, #fetch_events, #file_path, #global?, #id, kind, #kubectl_resource_type, #observed_generation, #pretty_status, #pretty_timeout_type, #report_status_to_statsd, #sensitive_template_content?, #sync, #sync_debug_info, #terminating?, timeout, #timeout_override, #to_kubeclient_resource, #validation_error_msg, #validation_failed?
Constructor Details
#initialize(namespace:, context:, definition:, logger:, statsd_tags: [], crd:) ⇒ CustomResource
Returns a new instance of CustomResource.
11
12
13
14
15
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 11
def initialize(namespace:, context:, definition:, logger:, statsd_tags: [], crd:)
super(namespace: namespace, context: context, definition: definition,
logger: logger, statsd_tags: statsd_tags)
@crd = crd
end
|
Instance Method Details
#deploy_failed? ⇒ Boolean
28
29
30
31
32
33
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 28
def deploy_failed?
return super unless rollout_conditions
return false unless observed_generation == current_generation
rollout_conditions.rollout_failed?(@instance_data)
end
|
#deploy_succeeded? ⇒ Boolean
21
22
23
24
25
26
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 21
def deploy_succeeded?
return super unless rollout_conditions
return false unless observed_generation == current_generation
rollout_conditions.rollout_successful?(@instance_data)
end
|
#failure_message ⇒ Object
35
36
37
38
39
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 35
def failure_message
return super unless rollout_conditions
messages = rollout_conditions.failure_messages(@instance_data)
messages.join("\n") if messages.present?
end
|
#status ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 49
def status
if !exists? || rollout_conditions.nil?
super
elsif deploy_succeeded?
"Healthy"
elsif deploy_failed?
"Unhealthy"
else
"Unknown"
end
end
|
#timeout ⇒ Object
17
18
19
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 17
def timeout
timeout_override || @crd.timeout_for_instance || TIMEOUT
end
|
#timeout_message ⇒ Object
41
42
43
44
45
46
47
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 41
def timeout_message
if rollout_conditions && current_generation != observed_generation
TIMEOUT_MESSAGE_DIFFERENT_GENERATIONS
else
super
end
end
|
#type ⇒ Object
61
62
63
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 61
def type
kind
end
|
#validate_definition ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/kubernetes-deploy/kubernetes_resource/custom_resource.rb', line 65
def validate_definition(*)
super
@crd.validate_rollout_conditions
rescue RolloutConditionsError => e
@validation_errors << "The CRD that specifies this resource is using invalid rollout conditions. " \
"Kubernetes-deploy will not be able to continue until those rollout conditions are fixed.\n" \
"Rollout conditions can be found on the CRD that defines this resource (#{@crd.name}), " \
"under the annotation #{CustomResourceDefinition::ROLLOUT_CONDITIONS_ANNOTATION}.\n" \
"Validation failed with: #{e}"
end
|