class Krane::CustomResource

Constants

TIMEOUT_MESSAGE_DIFFERENT_GENERATIONS

Public Class Methods

new(namespace:, context:, definition:, logger:, statsd_tags: [], crd:) click to toggle source
Calls superclass method Krane::KubernetesResource::new
# File lib/krane/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

Public Instance Methods

deploy_failed?() click to toggle source
# File lib/krane/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?() click to toggle source
# File lib/krane/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() click to toggle source
# File lib/krane/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() click to toggle source
Calls superclass method Krane::KubernetesResource#status
# File lib/krane/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() click to toggle source
# File lib/krane/kubernetes_resource/custom_resource.rb, line 17
def timeout
  timeout_override || @crd.timeout_for_instance || TIMEOUT
end
timeout_message() click to toggle source
# File lib/krane/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() click to toggle source
# File lib/krane/kubernetes_resource/custom_resource.rb, line 61
def type
  kind
end
validate_definition(*, **) click to toggle source
# File lib/krane/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. " \
  "Krane 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 #{Annotation.for(CustomResourceDefinition::ROLLOUT_CONDITIONS_ANNOTATION)}.\n" \
  "Validation failed with: #{e}"
end

Private Instance Methods

kind() click to toggle source
# File lib/krane/kubernetes_resource/custom_resource.rb, line 79
def kind
  @definition["kind"]
end
rollout_conditions() click to toggle source
# File lib/krane/kubernetes_resource/custom_resource.rb, line 83
def rollout_conditions
  @crd.rollout_conditions
end