Skip to content

Commit

Permalink
Add memcached resource (#181)
Browse files Browse the repository at this point in the history
* Add memcached resource

* Remove whitespace

* Code review

* Fix compile error

* Fix some issues with predicates

* Fetch using labels instead of name.

* Code cleanup
  • Loading branch information
devonboyer committed Oct 3, 2017
1 parent 7da5ab3 commit 1645b70
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/kubernetes-deploy/kubernetes_resource/cloudsql.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@ def mysql_service_exists?
def cloudsql_resource_uuid
return @cloudsql_resource_uuid if defined?(@cloudsql_resource_uuid) && @cloudsql_resource_uuid

redis, _err, st = kubectl.run("get", "cloudsqls", @name, "-o=json")
cloudsql, _err, st = kubectl.run("get", "cloudsqls", @name, "-o=json")
if st.success?
parsed = JSON.parse(redis)
parsed = JSON.parse(cloudsql)

@cloudsql_resource_uuid = parsed.dig("metadata", "uid")
end
Expand Down
61 changes: 61 additions & 0 deletions lib/kubernetes-deploy/kubernetes_resource/memcached.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# frozen_string_literal: true
module KubernetesDeploy
class Memcached < KubernetesResource
TIMEOUT = 5.minutes
SECRET_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?
@secret_exists = memcached_secret_exists?

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

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

def deploy_failed?
false
end

def exists?
@found
end

private

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

def memcached_service_exists?
services, _err, st = kubectl.run("get", "services", "-l name=#{@name}", "-o=json")
return false unless st.success?
parsed = JSON.parse(services)
return false if parsed.fetch("items", []).count == 0
service = parsed.fetch("items", []).first
service.dig("spec", "clusterIP").present?
end

def memcached_secret_exists?
secret, _err, st = kubectl.run("get", "secrets", SECRET_NAME, "-o=json")
return false unless st.success?
parsed = JSON.parse(secret)
parsed.dig("data", @name).present?
end
end
end
2 changes: 2 additions & 0 deletions lib/kubernetes-deploy/runner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
persistent_volume_claim
pod
redis
memcached
service
pod_template
bugsnag
Expand All @@ -38,6 +39,7 @@ class Runner
ResourceQuota
Cloudsql
Redis
Memcached
Bugsnag
ConfigMap
PersistentVolumeClaim
Expand Down

0 comments on commit 1645b70

Please sign in to comment.