Sha256: 2b11b220935bb6cbeb6af76fd510026188521de4cbb872e9ec5e71cecfb17cdd

Contents?: true

Size: 1.6 KB

Versions: 10

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true
module KubernetesDeploy
  class Memcached < KubernetesResource
    TIMEOUT = 5.minutes
    CONFIGMAP_NAME = "memcached-url"

    def sync
      _, _err, st = kubectl.run("get", type, @name)
      @found = st.success?
      @deployment_exists = memcached_deployment_exists?
      @service_exists = memcached_service_exists?
      @configmap_exists = memcached_configmap_exists?

      @status = if @deployment_exists && @service_exists && @configmap_exists
        "Provisioned"
      else
        "Unknown"
      end
    end

    def deploy_succeeded?
      @deployment_exists && @service_exists && @configmap_exists
    end

    def deploy_failed?
      false
    end

    def exists?
      @found
    end

    def deploy_method
      :replace
    end

    private

    def memcached_deployment_exists?
      deployment, _err, st = kubectl.run("get", "deployments", "memcached-#{@name}", "-o=json")
      return false unless st.success?
      parsed = JSON.parse(deployment)
      status = parsed.fetch("status", {})
      status.fetch("availableReplicas", -1) == status.fetch("replicas", 0)
    end

    def memcached_service_exists?
      service, _err, st = kubectl.run("get", "services", "memcached-#{@name}", "-o=json")
      return false unless st.success?
      parsed = JSON.parse(service)
      parsed.dig("spec", "clusterIP").present?
    end

    def memcached_configmap_exists?
      secret, _err, st = kubectl.run("get", "configmaps", CONFIGMAP_NAME, "-o=json")
      return false unless st.success?
      parsed = JSON.parse(secret)
      parsed.dig("data", @name).present?
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
kubernetes-deploy-0.18.0 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.17.0 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.16.0 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.15.2 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.15.1 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.15.0 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.14.1 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.14.0 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.13.0 lib/kubernetes-deploy/kubernetes_resource/memcached.rb
kubernetes-deploy-0.12.12 lib/kubernetes-deploy/kubernetes_resource/memcached.rb