dapp 0.23.4 → 0.23.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10aba50841edaf51a638a9c6343f4aadaacfd131
4
- data.tar.gz: d711f069cc88acae89e5f95566e769d06c99e137
3
+ metadata.gz: d1672f9ce8c2f27ed332a84192f58e5f7bcd0ac4
4
+ data.tar.gz: 1fca50e98ca0e2ce4b7a92e6d3e550294f2760fe
5
5
  SHA512:
6
- metadata.gz: d18bd976c005d9123e1d4c45a809319b2ebe427d23062324e5c9e171d06a45934b1ce0477e4c1da6af96ca0addec1bf9a07805c35651d4fe23b14753ffff733e
7
- data.tar.gz: e0a31de68d9c6f569a16029774d9c4a96e9ce245cde1d469d9124cf71790fe757d4263ac95465b737999e05bf92da4578fe3af6ff81d793ce8156b4af53ea8da
6
+ metadata.gz: 723888bf022b14c57707e0a11f4129a43bb4abe2016eb5a013c296ac2f95d09e068cc8fade9ea221ded9d14b4f1f6d768db2a6d32d6aefbea9cb1288aa761ddd
7
+ data.tar.gz: e817219bea8f79e6ea181e44e7a38a4940f4d7e28889be4de2bf98be6601b6a7573867360c1005cad4e5f86b146d1da93f70caf8328eaadb61e28a9b6599df3f
@@ -25,6 +25,7 @@ require 'etc'
25
25
  require 'zlib'
26
26
  require 'slugify'
27
27
  require 'base64'
28
+ require 'io/console'
28
29
 
29
30
  require 'dapp/version'
30
31
  require 'dapp/core_ext/hash'
@@ -18,24 +18,46 @@ module Dapp
18
18
  end
19
19
 
20
20
  def kube_flush_hooks_jobs(release)
21
+ all_jobs_names = kube_all_jobs_names
22
+
23
+ all_pods_specs = kubernetes.pod_list["items"]
24
+ .map {|spec| Kubernetes::Client::Resource::Pod.new(spec)}
25
+
21
26
  release.hooks.values
22
27
  .reject { |job| ['0', 'false'].include? job.annotations["dapp/recreate"].to_s }
23
- .select { |job| kube_job_list.include? job.name }
28
+ .select { |job| all_jobs_names.include? job.name }
24
29
  .each do |job|
25
30
  log_process("Delete hooks job `#{job.name}`", short: true) do
26
- kube_delete_job!(job.name) unless dry_run?
31
+ kube_delete_job!(job.name, all_pods_specs) unless dry_run?
27
32
  end
28
33
  end
29
34
  end
30
35
 
31
- def kube_job_list
36
+ def kube_all_jobs_names
32
37
  kubernetes.job_list['items'].map { |i| i['metadata']['name'] }
33
38
  end
34
39
 
35
- def kube_delete_job!(name)
36
- kubernetes.delete_job!(name)
40
+ def kube_delete_job!(job_name, all_pods_specs)
41
+ job_spec = Kubernetes::Client::Resource::Pod.new kubernetes.job(job_name)
42
+
43
+ job_pods_specs = all_pods_specs
44
+ .select do |pod|
45
+ Array(pod.metadata['ownerReferences']).any? do |owner_reference|
46
+ owner_reference['uid'] == job_spec.metadata['uid']
47
+ end
48
+ end
49
+
50
+ job_pods_specs.each do |job_pod_spec|
51
+ kubernetes.delete_pod!(job_pod_spec.name)
52
+ end
53
+
54
+ # FIXME: https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/
55
+ # FIXME: orphanDependents deprecated, should be propagationPolicy=Orphan. But it does not work.
56
+ # FIXME: Also, kubectl uses the same: https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/delete.go#L388
57
+ # FIXME: https://github.com/kubernetes/kubernetes/issues/46659
58
+ kubernetes.delete_job!(job_name, orphanDependents: false)
37
59
  loop do
38
- break unless kubernetes.job?(name)
60
+ break unless kubernetes.job?(job_name)
39
61
  sleep 1
40
62
  end
41
63
  end
@@ -1,4 +1,4 @@
1
1
  module Dapp
2
- VERSION = '0.23.4'.freeze
2
+ VERSION = "0.23.5"
3
3
  BUILD_CACHE_VERSION = 26
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.4
4
+ version: 0.23.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Stolyarov