Sha256: d2c63abbe7bc44e4d6a323befdd0d755e67dbf578ef6a22a20ae2d7fbcb3719e

Contents?: true

Size: 1.09 KB

Versions: 8

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true
module Krane
  class Cloudsql < KubernetesResource
    TIMEOUT = 10.minutes

    def sync(cache)
      super
      @proxy_deployment = cache.get_instance(Deployment.kind, "cloudsql-#{cloudsql_resource_uuid}")
      @proxy_service = cache.get_instance(Service.kind, "cloudsql-#{@name}")
    end

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

    def deploy_succeeded?
      proxy_deployment_ready? && proxy_service_ready?
    end

    def deploy_failed?
      false
    end

    private

    def proxy_deployment_ready?
      return false unless (status = @proxy_deployment["status"])
      # all cloudsql-proxy pods are running
      status.fetch("availableReplicas", -1) == status.fetch("replicas", 0)
    end

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

    def cloudsql_resource_uuid
      return unless @instance_data
      @instance_data.dig("metadata", "uid")
    end
  end
end

Version data entries

8 entries across 8 versions & 3 rubygems

Version Path
kubernetes-deploy-1.0.0.pre.2 lib/krane/kubernetes_resource/cloudsql.rb
tobsch-krane-1.0.2 lib/krane/kubernetes_resource/cloudsql.rb
tobsch-krane-1.0.1 lib/krane/kubernetes_resource/cloudsql.rb
tobsch-krane-1.0.0 lib/krane/kubernetes_resource/cloudsql.rb
krane-1.0.0 lib/krane/kubernetes_resource/cloudsql.rb
kubernetes-deploy-1.0.0.pre.1 lib/krane/kubernetes_resource/cloudsql.rb
kubernetes-deploy-0.31.1 lib/krane/kubernetes_resource/cloudsql.rb
kubernetes-deploy-0.31.0 lib/krane/kubernetes_resource/cloudsql.rb