Class: KubernetesDeploy::Deployment
- Inherits:
-
KubernetesResource
- Object
- KubernetesResource
- KubernetesDeploy::Deployment
- Defined in:
- lib/kubernetes-deploy/kubernetes_resource/deployment.rb
Constant Summary collapse
- TIMEOUT =
15.minutes
Instance Attribute Summary
Attributes inherited from KubernetesResource
#context, #deploy_started, #file, #name, #namespace, #type
Instance Method Summary collapse
- #deploy_failed? ⇒ Boolean
- #deploy_succeeded? ⇒ Boolean
- #deploy_timed_out? ⇒ Boolean
- #exists? ⇒ Boolean
-
#initialize(name, namespace, context, file) ⇒ Deployment
constructor
A new instance of Deployment.
- #status_data ⇒ Object
- #sync ⇒ Object
Methods inherited from KubernetesResource
#deploy_finished?, for_type, #group_name, #id, #log_status, #run_kubectl, #status, timeout, #timeout, #tpr?
Constructor Details
#initialize(name, namespace, context, file) ⇒ Deployment
Returns a new instance of Deployment.
5 6 7 |
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 5 def initialize(name, namespace, context, file) @name, @namespace, @context, @file = name, namespace, context, file end |
Instance Method Details
#deploy_failed? ⇒ Boolean
44 45 46 47 |
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 44 def deploy_failed? # TODO: this should look at the current replica set's pods only or it'll never be true for rolling updates @pods.present? && @pods.all?(&:deploy_failed?) end |
#deploy_succeeded? ⇒ Boolean
37 38 39 40 41 42 |
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 37 def deploy_succeeded? return false unless @rollout_data.key?("availableReplicas") # TODO: this should look at the current replica set's pods too @rollout_data["updatedReplicas"].to_i == @rollout_data["replicas"].to_i && @rollout_data["updatedReplicas"].to_i == @rollout_data["availableReplicas"].to_i end |
#deploy_timed_out? ⇒ Boolean
49 50 51 52 |
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 49 def deploy_timed_out? # TODO: this should look at the current replica set's pods only or it'll never be true for rolling updates super || @pods.present? && @pods.all?(&:deploy_timed_out?) end |
#exists? ⇒ Boolean
54 55 56 |
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 54 def exists? @found end |
#status_data ⇒ Object
58 59 60 |
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 58 def status_data super.merge(replicas: @rollout_data, num_pods: @pods.length) end |
#sync ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/kubernetes-deploy/kubernetes_resource/deployment.rb', line 9 def sync json_data, st = run_kubectl("get", type, @name, "--output=json") @found = st.success? @rollout_data = {} @status = nil @pods = [] if @found @rollout_data = JSON.parse(json_data)["status"].slice("updatedReplicas", "replicas", "availableReplicas", "unavailableReplicas") @status, _ = run_kubectl("rollout", "status", type, @name, "--watch=false") if @deploy_started pod_list, st = run_kubectl("get", "pods", "-a", "-l", "name=#{name}", "--output=json") if st.success? pods_json = JSON.parse(pod_list)["items"] pods_json.each do |pod_json| pod_name = pod_json["metadata"]["name"] pod = Pod.new(pod_name, namespace, context, nil, parent: "#{@name.capitalize} deployment") pod.deploy_started = @deploy_started pod.interpret_json_data(pod_json) pod.log_status @pods << pod end end end log_status end |