kubes 0.3.4 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +6 -5
  4. data/docs/_docs/ci/cloudbuild.md +2 -0
  5. data/docs/_docs/config/args.md +10 -0
  6. data/docs/_docs/config/args/docker.md +19 -0
  7. data/docs/_docs/config/args/kubectl.md +19 -0
  8. data/docs/_docs/config/docker.md +4 -40
  9. data/docs/_docs/config/env.md +1 -1
  10. data/docs/_docs/config/hooks.md +10 -0
  11. data/docs/_docs/config/hooks/docker.md +70 -0
  12. data/docs/_docs/config/hooks/kubectl.md +83 -0
  13. data/docs/_docs/config/hooks/kubes.md +67 -0
  14. data/docs/_docs/config/hooks/ruby.md +76 -0
  15. data/docs/_docs/config/kubectl.md +3 -54
  16. data/docs/_docs/config/reference.md +20 -0
  17. data/docs/_docs/config/skip.md +58 -0
  18. data/docs/_docs/dsl/resources.md +1 -1
  19. data/docs/_docs/dsl/resources/backend_config.md +1 -1
  20. data/docs/_docs/helpers.md +3 -2
  21. data/docs/_docs/intro.md +6 -3
  22. data/docs/_docs/learn/dsl/review-project.md +4 -2
  23. data/docs/_docs/learn/yaml/review-project.md +4 -2
  24. data/docs/_docs/{auto-context.md → misc/auto-context.md} +0 -0
  25. data/docs/_docs/{kustomize.md → misc/kustomize.md} +0 -0
  26. data/docs/_docs/misc/separate-steps.md +21 -0
  27. data/docs/_docs/patterns.md +4 -1
  28. data/docs/_docs/patterns/clock-web-worker.md +2 -0
  29. data/docs/_docs/patterns/migrations.md +123 -0
  30. data/docs/_docs/patterns/secrets.md +82 -0
  31. data/docs/_includes/config/hooks/options.md +20 -0
  32. data/docs/_includes/sidebar.html +35 -11
  33. data/docs/_reference/kubes-exec.md +14 -6
  34. data/docs/_reference/kubes-init.md +1 -0
  35. data/docs/_reference/kubes-logs.md +1 -0
  36. data/docs/_sass/theme.scss +25 -1
  37. data/kubes.gemspec +3 -0
  38. data/lib/kubes.rb +3 -0
  39. data/lib/kubes/cli.rb +20 -5
  40. data/lib/kubes/cli/apply.rb +2 -1
  41. data/lib/kubes/cli/base.rb +11 -0
  42. data/lib/kubes/cli/compile.rb +8 -0
  43. data/lib/kubes/cli/delete.rb +1 -1
  44. data/lib/kubes/cli/exec.rb +37 -6
  45. data/lib/kubes/cli/get.rb +3 -2
  46. data/lib/kubes/cli/init.rb +7 -2
  47. data/lib/kubes/cli/logs.rb +27 -3
  48. data/lib/kubes/cli/prune.rb +95 -0
  49. data/lib/kubes/compiler.rb +11 -7
  50. data/lib/kubes/compiler/decorator/base.rb +7 -1
  51. data/lib/kubes/compiler/decorator/{resources/secret.rb → hashable.rb} +5 -4
  52. data/lib/kubes/compiler/decorator/hashable/field.rb +53 -0
  53. data/lib/kubes/compiler/decorator/hashable/storage.rb +19 -0
  54. data/lib/kubes/compiler/decorator/post.rb +77 -0
  55. data/lib/kubes/compiler/decorator/pre.rb +12 -0
  56. data/lib/kubes/compiler/shared/helpers.rb +7 -2
  57. data/lib/kubes/compiler/strategy.rb +2 -2
  58. data/lib/kubes/compiler/strategy/base.rb +1 -1
  59. data/lib/kubes/compiler/strategy/result.rb +4 -6
  60. data/lib/kubes/config.rb +16 -11
  61. data/lib/kubes/docker/strategy/build/docker.rb +1 -1
  62. data/lib/kubes/docker/strategy/build/gcloud.rb +1 -1
  63. data/lib/kubes/docker/strategy/image_name.rb +1 -1
  64. data/lib/kubes/docker/strategy/push/docker.rb +1 -1
  65. data/lib/kubes/docker/strategy/push/gcloud.rb +1 -1
  66. data/lib/kubes/docker/strategy/utils.rb +1 -1
  67. data/lib/kubes/hooks/builder.rb +29 -15
  68. data/lib/kubes/hooks/concern.rb +10 -0
  69. data/lib/kubes/hooks/dsl.rb +2 -1
  70. data/lib/kubes/hooks/runner.rb +22 -0
  71. data/lib/kubes/kubectl.rb +21 -18
  72. data/lib/kubes/kubectl/batch.rb +8 -5
  73. data/lib/kubes/kubectl/{decider.rb → dispatcher.rb} +1 -1
  74. data/lib/kubes/kubectl/fetch/base.rb +13 -10
  75. data/lib/kubes/kubectl/fetch/deployment.rb +12 -13
  76. data/lib/kubes/kubectl/fetch/pods.rb +4 -15
  77. data/lib/kubes/kubectl/kustomize.rb +1 -1
  78. data/lib/kubes/kubectl/ordering.rb +12 -0
  79. data/lib/kubes/util/consider.rb +2 -1
  80. data/lib/kubes/util/sh.rb +1 -1
  81. data/lib/kubes/version.rb +1 -1
  82. data/lib/templates/dsl/.kubes/resources/web/deployment.rb +1 -1
  83. data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +1 -1
  84. data/spec/fixtures/decorators/deployment/both/envFrom.yaml +31 -0
  85. data/spec/fixtures/decorators/deployment/both/valueFrom.yaml +33 -0
  86. data/spec/fixtures/decorators/deployment/both/volumes.yaml +40 -0
  87. data/spec/fixtures/prune/capture.yaml +57 -0
  88. data/spec/fixtures/prune/fetch_items.yaml +268 -0
  89. data/spec/kubes/cli/prune_spec.rb +38 -0
  90. data/spec/kubes/compiler/decorator/{resources → post}/deployment_spec.rb +52 -6
  91. data/spec/kubes/compiler/decorator/{resources → post}/pod_spec.rb +2 -11
  92. metadata +57 -19
  93. data/lib/kubes/compiler/decorator.rb +0 -17
  94. data/lib/kubes/compiler/decorator/compile.rb +0 -12
  95. data/lib/kubes/compiler/decorator/resources/base.rb +0 -13
  96. data/lib/kubes/compiler/decorator/resources/container.rb +0 -76
  97. data/lib/kubes/compiler/decorator/resources/container/mapping.rb +0 -28
  98. data/lib/kubes/compiler/decorator/resources/deployment.rb +0 -10
  99. data/lib/kubes/compiler/decorator/resources/pod.rb +0 -10
  100. data/lib/kubes/compiler/decorator/write.rb +0 -14
  101. data/lib/kubes/docker/strategy/hooks.rb +0 -9
@@ -0,0 +1,38 @@
1
+ describe Kubes::CLI::Prune do
2
+ let(:prune) do
3
+ prune = described_class.new
4
+ allow(prune).to receive(:sure?)
5
+ allow(prune).to receive(:capture_items).and_return(capture)
6
+ allow(prune).to receive(:logger).and_return(null)
7
+ prune
8
+ end
9
+ let(:null) { double(:null).as_null_object }
10
+
11
+ let(:fetcher) do
12
+ fetcher = double(:fetcher).as_null_object
13
+ allow(fetcher).to receive(:fetch_items).and_return(fetch_items)
14
+ fetcher
15
+ end
16
+ before(:each) do
17
+ allow(Kubes::Kubectl::Fetch::Base).to receive(:new).and_return(fetcher)
18
+ allow(Kubes::Compiler::Decorator::Hashable::Storage).to receive(:md5s).and_return(built_kinds)
19
+ end
20
+
21
+ context("old resources") do
22
+ let(:fetch_items) { fixture("fetch_items.yaml") }
23
+ let(:capture) { fixture("capture.yaml") }
24
+ let(:built_kinds) do
25
+ {"Secret"=>{"demo-secret"=>"CURRENT111"}}
26
+ end
27
+
28
+ it "run" do
29
+ allow(Kubes::Kubectl).to receive(:execute)
30
+ prune.run
31
+ expect(Kubes::Kubectl).to have_received(:execute).at_least(:once)
32
+ end
33
+ end
34
+
35
+ def fixture(file)
36
+ YAML.load_file("spec/fixtures/prune/#{file}")
37
+ end
38
+ end
@@ -1,11 +1,14 @@
1
- describe Kubes::Compiler::Decorator::Resources::Deployment do
1
+ describe Kubes::Compiler::Decorator::Post do
2
2
  let(:decorator) { described_class.new(data) }
3
3
 
4
4
  def fixture(name)
5
5
  YAML.load_file("spec/fixtures/decorators/deployment/#{name}.yaml")
6
6
  end
7
7
  before(:each) do
8
- allow(Kubes::Compiler::Decorator).to receive(:fetch).and_return("fakehash")
8
+ allow(Kubes::Compiler::Decorator::Hashable::Storage).to receive(:fetch).and_return("fakehash")
9
+ allow(Kubes::Compiler::Decorator::Hashable::Storage).to receive(:fetch).with("Secret", "demo-secret").and_return("fakehash")
10
+ allow(Kubes::Compiler::Decorator::Hashable::Storage).to receive(:fetch).with("ConfigMap", "demo-config-map").and_return("fakehash-config")
11
+ allow(Kubes::Compiler::Decorator::Hashable::Storage).to receive(:fetch).with("ConfigMap", "demo-config-map-2").and_return("fakehash-config2")
9
12
  end
10
13
 
11
14
  context "secret" do
@@ -56,7 +59,7 @@ describe Kubes::Compiler::Decorator::Resources::Deployment do
56
59
  decorator.run
57
60
  data = decorator.data
58
61
  name = data['spec']['template']['spec']['containers'][0]['envFrom'][0]['configMapRef']['name']
59
- expect(name).to eq("demo-config-map-fakehash")
62
+ expect(name).to eq("demo-config-map-fakehash-config")
60
63
  end
61
64
  end
62
65
 
@@ -66,7 +69,7 @@ describe Kubes::Compiler::Decorator::Resources::Deployment do
66
69
  decorator.run
67
70
  data = decorator.data
68
71
  name = data['spec']['template']['spec']['containers'][0]['env'][0]['valueFrom']['configMapKeyRef']['name']
69
- expect(name).to eq("demo-config-map-fakehash")
72
+ expect(name).to eq("demo-config-map-fakehash-config")
70
73
  end
71
74
  end
72
75
 
@@ -76,7 +79,7 @@ describe Kubes::Compiler::Decorator::Resources::Deployment do
76
79
  decorator.run
77
80
  data = decorator.data
78
81
  name = data['spec']['template']['spec']['volumes'][0]['configMap']['name']
79
- expect(name).to eq("demo-config-map-fakehash")
82
+ expect(name).to eq("demo-config-map-fakehash-config")
80
83
  end
81
84
  end
82
85
 
@@ -85,7 +88,50 @@ describe Kubes::Compiler::Decorator::Resources::Deployment do
85
88
  it "data" do
86
89
  decorator.run
87
90
  name = data['spec']['template']['spec']['containers'][0]['envFrom'][0]['configMapRef']['name']
88
- expect(name).to eq("demo-config-map-fakehash")
91
+ expect(name).to eq("demo-config-map-fakehash-config")
92
+ end
93
+ end
94
+ end
95
+
96
+ context "both" do
97
+ describe "envFrom" do
98
+ let(:data) { fixture("both/envFrom") }
99
+ it "run" do
100
+ decorator.run
101
+ data = decorator.data
102
+ envFrom = data['spec']['template']['spec']['containers'][0]['envFrom']
103
+ name = envFrom[0]['secretRef']['name']
104
+ expect(name).to eq("demo-secret-fakehash")
105
+ name = envFrom[1]['configMapRef']['name']
106
+ expect(name).to eq("demo-config-map-fakehash-config")
107
+ name = envFrom[2]['configMapRef']['name']
108
+ expect(name).to eq("demo-config-map-2-fakehash-config2")
109
+ end
110
+ end
111
+
112
+ describe "valueFrom" do
113
+ let(:data) { fixture("both/valueFrom") }
114
+ it "run" do
115
+ decorator.run
116
+ data = decorator.data
117
+ valueFrom = data['spec']['template']['spec']['containers'][0]['env'][0]['valueFrom']
118
+ name = valueFrom['configMapKeyRef']['name']
119
+ expect(name).to eq("demo-config-map-fakehash-config")
120
+ name = valueFrom['secretKeyRef']['name']
121
+ expect(name).to eq("demo-secret-fakehash")
122
+ end
123
+ end
124
+
125
+ describe "volumes" do
126
+ let(:data) { fixture("both/volumes") }
127
+ it "run" do
128
+ decorator.run
129
+ data = decorator.data
130
+ volumes = data['spec']['template']['spec']['volumes']
131
+ name = volumes[0]['configMap']['name']
132
+ expect(name).to eq("demo-config-map-fakehash-config")
133
+ name = volumes[1]['secret']['secretName']
134
+ expect(name).to eq("demo-secret-fakehash")
89
135
  end
90
136
  end
91
137
  end
@@ -1,11 +1,11 @@
1
- describe Kubes::Compiler::Decorator::Resources::Pod do
1
+ describe Kubes::Compiler::Decorator::Post do
2
2
  let(:decorator) { described_class.new(data) }
3
3
 
4
4
  def fixture(name)
5
5
  YAML.load_file("spec/fixtures/decorators/pod/#{name}.yaml")
6
6
  end
7
7
  before(:each) do
8
- allow(Kubes::Compiler::Decorator).to receive(:fetch).and_return("fakehash")
8
+ allow(Kubes::Compiler::Decorator::Hashable::Storage).to receive(:fetch).and_return("fakehash")
9
9
  end
10
10
 
11
11
  context("secret") do
@@ -38,15 +38,6 @@ describe Kubes::Compiler::Decorator::Resources::Pod do
38
38
  expect(name).to eq("demo-secret-fakehash")
39
39
  end
40
40
  end
41
-
42
- describe "run" do
43
- let(:data) { fixture("secret/envFrom") }
44
- it "data" do
45
- decorator.run
46
- name = data['spec']['containers'][0]['envFrom'][0]['secretRef']['name']
47
- expect(name).to eq("demo-secret-fakehash")
48
- end
49
- end
50
41
  end
51
42
 
52
43
  context "configMap" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kubes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-11 00:00:00.000000000 Z
11
+ date: 2020-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: kubes_google
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: bundler
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -232,13 +246,22 @@ files:
232
246
  - docs/README.md
233
247
  - docs/Rakefile
234
248
  - docs/_config.yml
235
- - docs/_docs/auto-context.md
236
249
  - docs/_docs/ci/cloudbuild.md
237
250
  - docs/_docs/config.md
251
+ - docs/_docs/config/args.md
252
+ - docs/_docs/config/args/docker.md
253
+ - docs/_docs/config/args/kubectl.md
238
254
  - docs/_docs/config/builder.md
239
255
  - docs/_docs/config/docker.md
240
256
  - docs/_docs/config/env.md
257
+ - docs/_docs/config/hooks.md
258
+ - docs/_docs/config/hooks/docker.md
259
+ - docs/_docs/config/hooks/kubectl.md
260
+ - docs/_docs/config/hooks/kubes.md
261
+ - docs/_docs/config/hooks/ruby.md
241
262
  - docs/_docs/config/kubectl.md
263
+ - docs/_docs/config/reference.md
264
+ - docs/_docs/config/skip.md
242
265
  - docs/_docs/contributing.md
243
266
  - docs/_docs/dsl.md
244
267
  - docs/_docs/dsl/multiple-resources.md
@@ -269,7 +292,6 @@ files:
269
292
  - docs/_docs/intro/ordering.md
270
293
  - docs/_docs/intro/ordering/custom.md
271
294
  - docs/_docs/intro/structure.md
272
- - docs/_docs/kustomize.md
273
295
  - docs/_docs/layering.md
274
296
  - docs/_docs/layering/dsl.md
275
297
  - docs/_docs/layering/merge.md
@@ -294,15 +316,21 @@ files:
294
316
  - docs/_docs/learn/yaml/next-steps.md
295
317
  - docs/_docs/learn/yaml/review-project.md
296
318
  - docs/_docs/learn/yaml/update.md
319
+ - docs/_docs/misc/auto-context.md
320
+ - docs/_docs/misc/kustomize.md
321
+ - docs/_docs/misc/separate-steps.md
297
322
  - docs/_docs/next-steps.md
298
323
  - docs/_docs/patterns.md
299
324
  - docs/_docs/patterns/clock-web-worker.md
325
+ - docs/_docs/patterns/migrations.md
326
+ - docs/_docs/patterns/secrets.md
300
327
  - docs/_docs/resources.md
301
328
  - docs/_docs/resources/base.md
302
329
  - docs/_docs/resources/role.md
303
330
  - docs/_docs/resources/shared.md
304
331
  - docs/_docs/yaml.md
305
332
  - docs/_includes/commands.html
333
+ - docs/_includes/config/hooks/options.md
306
334
  - docs/_includes/content.html
307
335
  - docs/_includes/dsl/methods.md
308
336
  - docs/_includes/dsl/rolling_deployment.md
@@ -473,19 +501,16 @@ files:
473
501
  - lib/kubes/cli/help/exec.md
474
502
  - lib/kubes/cli/init.rb
475
503
  - lib/kubes/cli/logs.rb
504
+ - lib/kubes/cli/prune.rb
476
505
  - lib/kubes/cli/sequence.rb
477
506
  - lib/kubes/command.rb
478
507
  - lib/kubes/compiler.rb
479
- - lib/kubes/compiler/decorator.rb
480
508
  - lib/kubes/compiler/decorator/base.rb
481
- - lib/kubes/compiler/decorator/compile.rb
482
- - lib/kubes/compiler/decorator/resources/base.rb
483
- - lib/kubes/compiler/decorator/resources/container.rb
484
- - lib/kubes/compiler/decorator/resources/container/mapping.rb
485
- - lib/kubes/compiler/decorator/resources/deployment.rb
486
- - lib/kubes/compiler/decorator/resources/pod.rb
487
- - lib/kubes/compiler/decorator/resources/secret.rb
488
- - lib/kubes/compiler/decorator/write.rb
509
+ - lib/kubes/compiler/decorator/hashable.rb
510
+ - lib/kubes/compiler/decorator/hashable/field.rb
511
+ - lib/kubes/compiler/decorator/hashable/storage.rb
512
+ - lib/kubes/compiler/decorator/post.rb
513
+ - lib/kubes/compiler/decorator/pre.rb
489
514
  - lib/kubes/compiler/dsl/core/base.rb
490
515
  - lib/kubes/compiler/dsl/core/blocks.rb
491
516
  - lib/kubes/compiler/dsl/core/fields.rb
@@ -529,20 +554,21 @@ files:
529
554
  - lib/kubes/docker/strategy/build/base.rb
530
555
  - lib/kubes/docker/strategy/build/docker.rb
531
556
  - lib/kubes/docker/strategy/build/gcloud.rb
532
- - lib/kubes/docker/strategy/hooks.rb
533
557
  - lib/kubes/docker/strategy/image_name.rb
534
558
  - lib/kubes/docker/strategy/push/base.rb
535
559
  - lib/kubes/docker/strategy/push/docker.rb
536
560
  - lib/kubes/docker/strategy/push/gcloud.rb
537
561
  - lib/kubes/docker/strategy/utils.rb
538
562
  - lib/kubes/hooks/builder.rb
563
+ - lib/kubes/hooks/concern.rb
539
564
  - lib/kubes/hooks/dsl.rb
565
+ - lib/kubes/hooks/runner.rb
540
566
  - lib/kubes/kubectl.rb
541
567
  - lib/kubes/kubectl/args/base.rb
542
568
  - lib/kubes/kubectl/args/kustomize.rb
543
569
  - lib/kubes/kubectl/args/standard.rb
544
570
  - lib/kubes/kubectl/batch.rb
545
- - lib/kubes/kubectl/decider.rb
571
+ - lib/kubes/kubectl/dispatcher.rb
546
572
  - lib/kubes/kubectl/fetch/base.rb
547
573
  - lib/kubes/kubectl/fetch/deployment.rb
548
574
  - lib/kubes/kubectl/fetch/pods.rb
@@ -576,6 +602,9 @@ files:
576
602
  - spec/fixtures/artifacts/demo-web/deployment.yaml
577
603
  - spec/fixtures/artifacts/demo-web/service.yaml
578
604
  - spec/fixtures/blocks/deployments.rb
605
+ - spec/fixtures/decorators/deployment/both/envFrom.yaml
606
+ - spec/fixtures/decorators/deployment/both/valueFrom.yaml
607
+ - spec/fixtures/decorators/deployment/both/volumes.yaml
579
608
  - spec/fixtures/decorators/deployment/configMap/envFrom.yaml
580
609
  - spec/fixtures/decorators/deployment/configMap/valueFrom.yaml
581
610
  - spec/fixtures/decorators/deployment/configMap/volumes.yaml
@@ -601,11 +630,14 @@ files:
601
630
  - spec/fixtures/project/.kubes/resources/deployment.rb
602
631
  - spec/fixtures/project/.kubes/resources/foobar.rb
603
632
  - spec/fixtures/project/.kubes/resources/service.rb
633
+ - spec/fixtures/prune/capture.yaml
634
+ - spec/fixtures/prune/fetch_items.yaml
604
635
  - spec/fixtures/services/minimum.rb
605
636
  - spec/fixtures/syntax/network_policy.rb
606
637
  - spec/fixtures/syntax/pod.rb
607
- - spec/kubes/compiler/decorator/resources/deployment_spec.rb
608
- - spec/kubes/compiler/decorator/resources/pod_spec.rb
638
+ - spec/kubes/cli/prune_spec.rb
639
+ - spec/kubes/compiler/decorator/post/deployment_spec.rb
640
+ - spec/kubes/compiler/decorator/post/pod_spec.rb
609
641
  - spec/kubes/compiler/strategy/dsl_spec.rb
610
642
  - spec/kubes/compiler_spec.rb
611
643
  - spec/kubes/dsl/daemon_set.rb
@@ -645,6 +677,9 @@ test_files:
645
677
  - spec/fixtures/artifacts/demo-web/deployment.yaml
646
678
  - spec/fixtures/artifacts/demo-web/service.yaml
647
679
  - spec/fixtures/blocks/deployments.rb
680
+ - spec/fixtures/decorators/deployment/both/envFrom.yaml
681
+ - spec/fixtures/decorators/deployment/both/valueFrom.yaml
682
+ - spec/fixtures/decorators/deployment/both/volumes.yaml
648
683
  - spec/fixtures/decorators/deployment/configMap/envFrom.yaml
649
684
  - spec/fixtures/decorators/deployment/configMap/valueFrom.yaml
650
685
  - spec/fixtures/decorators/deployment/configMap/volumes.yaml
@@ -670,11 +705,14 @@ test_files:
670
705
  - spec/fixtures/project/.kubes/resources/deployment.rb
671
706
  - spec/fixtures/project/.kubes/resources/foobar.rb
672
707
  - spec/fixtures/project/.kubes/resources/service.rb
708
+ - spec/fixtures/prune/capture.yaml
709
+ - spec/fixtures/prune/fetch_items.yaml
673
710
  - spec/fixtures/services/minimum.rb
674
711
  - spec/fixtures/syntax/network_policy.rb
675
712
  - spec/fixtures/syntax/pod.rb
676
- - spec/kubes/compiler/decorator/resources/deployment_spec.rb
677
- - spec/kubes/compiler/decorator/resources/pod_spec.rb
713
+ - spec/kubes/cli/prune_spec.rb
714
+ - spec/kubes/compiler/decorator/post/deployment_spec.rb
715
+ - spec/kubes/compiler/decorator/post/pod_spec.rb
678
716
  - spec/kubes/compiler/strategy/dsl_spec.rb
679
717
  - spec/kubes/compiler_spec.rb
680
718
  - spec/kubes/dsl/daemon_set.rb
@@ -1,17 +0,0 @@
1
- class Kubes::Compiler
2
- module Decorator
3
- @@md5s = {}
4
- def store(name, md5)
5
- @@md5s[name] = md5
6
- end
7
-
8
- def fetch(name)
9
- @@md5s[name]
10
- end
11
-
12
- def md5s
13
- @@md5s
14
- end
15
- extend self
16
- end
17
- end
@@ -1,12 +0,0 @@
1
- module Kubes::Compiler::Decorator
2
- class Compile < Base
3
- def process(item)
4
- case item['kind']
5
- when "ConfigMap", "Secret"
6
- Resources::Secret.new(item).run
7
- else
8
- item # pass through
9
- end
10
- end
11
- end
12
- end
@@ -1,13 +0,0 @@
1
- module Kubes::Compiler::Decorator::Resources
2
- class Base
3
- attr_reader :data
4
- def initialize(data)
5
- @data = data
6
- end
7
-
8
- def run
9
- return @data unless Kubes.config.suffix_hash
10
- perform
11
- end
12
- end
13
- end
@@ -1,76 +0,0 @@
1
- module Kubes::Compiler::Decorator::Resources
2
- class Container
3
- include Mapping
4
-
5
- def initialize(data, kind:, fields_for:)
6
- @data = data
7
- # These methods are defined in Mapping
8
- kind == "Deployment" ? deployment_keys : pod_keys
9
- fields_for == "Secret" ? secrets_fields : configMaps_fields
10
- end
11
-
12
- def run
13
- envFrom!
14
- valueFrom!
15
- volumes!
16
- @data
17
- end
18
-
19
- # spec.envFrom.configMapRef
20
- # spec.envFrom.secretRef
21
- def envFrom!
22
- return @data unless containers
23
-
24
- containers.each do |container|
25
- next unless envFrom_list = container.dig('envFrom') # intentional assignment
26
-
27
- envFrom_list.each do |envFrom|
28
- next unless name = envFrom.dig(@envFrom_field, 'name') # intentional assignment
29
-
30
- md5 = Kubes::Compiler::Decorator.fetch(name)
31
- envFrom[@envFrom_field]['name'] = [name, md5].compact.join('-')
32
- end
33
- end
34
- end
35
-
36
- # spec.valueFrom.configMapKeyRef
37
- # spec.valueFrom.secretKeyRef
38
- def valueFrom!
39
- return @data unless containers
40
-
41
- containers.each do |container|
42
- next unless env_list = container.dig('env') # intentional assignment
43
-
44
- env_list.each do |env|
45
- next unless name = env.dig('valueFrom',@valueFrom_field,'name') # intentional assignment
46
-
47
- md5 = Kubes::Compiler::Decorator.fetch(name)
48
- env['valueFrom'][@valueFrom_field]['name'] = [name, md5].compact.join('-')
49
- end
50
- end
51
- end
52
-
53
- # spec.volumes.configMap.name
54
- # spec.volumes.secret.secretName
55
- def volumes!
56
- volumes = @data.dig(*@volumes_key.split('.'))
57
- return @data unless volumes
58
-
59
- volumes.each do |volume|
60
- # Example:
61
- # next unless field = volume.dig('secret') # intentional assignment
62
- # next unless name = field['secretName'] # intentional assignment
63
- next unless field = volume.dig(@volume_field) # intentional assignment
64
- next unless name = field[@volume_field_name] # intentional assignment
65
-
66
- md5 = Kubes::Compiler::Decorator.fetch(name)
67
- field[@volume_field_name] = [name, md5].compact.join('-')
68
- end
69
- end
70
-
71
- private
72
- def containers
73
- @data.dig(*@containers_key.split('.'))
74
- end
75
- end
76
- end