Sha256: 8e5f3f1482b4f5b7baed9314b74e856ee9affdaf6616b01614d892a6b456444c

Contents?: true

Size: 1.36 KB

Versions: 7

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true
module KubernetesDeploy
  class Redis < KubernetesResource
    TIMEOUT = 5.minutes
    UUID_ANNOTATION = "redis.stable.shopify.io/owner_uid"

    def sync(cache)
      super

      @deployment = cache.get_instance(Deployment.kind, name)
      @deployment = cache.get_instance(Deployment.kind, deprecated_name) if @deployment.empty?

      @service = cache.get_instance(Service.kind, name)
      @service = cache.get_instance(Service.kind, deprecated_name) if @service.empty?
    end

    def status
      deploy_succeeded? ? "Provisioned" : "Unknown"
    end

    def deploy_succeeded?
      deployment_ready? && service_ready?
    end

    def deploy_failed?
      false
    end

    private

    def deployment_ready?
      return false unless status = @deployment["status"]
      # all redis pods are running
      status.fetch("availableReplicas", -1) == status.fetch("replicas", 0)
    end

    def service_ready?
      return false unless @service.present?
      # the service has an assigned cluster IP and is therefore functioning
      @service.dig("spec", "clusterIP").present?
    end

    def name
      @definition.dig('metadata', 'name')
    end

    def deprecated_name
      "redis-#{redis_resource_uuid}"
    end

    def redis_resource_uuid
      return unless @instance_data.present?
      @instance_data.dig("metadata", "uid")
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
kubernetes-deploy-0.26.3 lib/kubernetes-deploy/kubernetes_resource/redis.rb
kubernetes-deploy-0.26.2 lib/kubernetes-deploy/kubernetes_resource/redis.rb
kubernetes-deploy-0.26.1 lib/kubernetes-deploy/kubernetes_resource/redis.rb
kubernetes-deploy-0.26.0 lib/kubernetes-deploy/kubernetes_resource/redis.rb
kubernetes-deploy-0.25.0 lib/kubernetes-deploy/kubernetes_resource/redis.rb
kubernetes-deploy-0.24.0 lib/kubernetes-deploy/kubernetes_resource/redis.rb
kubernetes-deploy-0.23.0 lib/kubernetes-deploy/kubernetes_resource/redis.rb