dapp 0.23.4 → 0.23.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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