kubes 0.3.1 → 0.4.0

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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/README.md +6 -5
  4. data/docs/_config.yml +1 -1
  5. data/docs/_docs/ci/cloudbuild.md +2 -0
  6. data/docs/_docs/config/args.md +10 -0
  7. data/docs/_docs/config/args/docker.md +19 -0
  8. data/docs/_docs/config/args/kubectl.md +19 -0
  9. data/docs/_docs/config/docker.md +4 -40
  10. data/docs/_docs/config/env.md +1 -1
  11. data/docs/_docs/config/hooks.md +10 -0
  12. data/docs/_docs/config/hooks/docker.md +70 -0
  13. data/docs/_docs/config/hooks/kubectl.md +83 -0
  14. data/docs/_docs/config/hooks/kubes.md +67 -0
  15. data/docs/_docs/config/hooks/ruby.md +74 -0
  16. data/docs/_docs/config/kubectl.md +3 -54
  17. data/docs/_docs/config/reference.md +20 -0
  18. data/docs/_docs/config/skip.md +58 -0
  19. data/docs/_docs/dsl/resources.md +1 -1
  20. data/docs/_docs/dsl/resources/backend_config.md +1 -1
  21. data/docs/_docs/intro.md +6 -3
  22. data/docs/_docs/learn/yaml/new-project.md +0 -1
  23. data/docs/_docs/{auto-context.md → misc/auto-context.md} +0 -0
  24. data/docs/_docs/{kustomize.md → misc/kustomize.md} +0 -0
  25. data/docs/_docs/misc/separate-steps.md +21 -0
  26. data/docs/_docs/patterns/migrations.md +121 -0
  27. data/docs/_includes/commands.html +2 -0
  28. data/docs/_includes/config/hooks/options.md +20 -0
  29. data/docs/_includes/sidebar.html +32 -10
  30. data/docs/_reference/kubes-exec.md +14 -6
  31. data/docs/_reference/kubes-init.md +1 -0
  32. data/docs/_reference/kubes-logs.md +1 -0
  33. data/docs/_sass/theme.scss +27 -2
  34. data/docs/img/logos/kubes-white.png +0 -0
  35. data/docs/index.html +2 -2
  36. data/lib/kubes/cli.rb +25 -6
  37. data/lib/kubes/cli/apply.rb +2 -1
  38. data/lib/kubes/cli/base.rb +11 -0
  39. data/lib/kubes/cli/delete.rb +1 -1
  40. data/lib/kubes/cli/exec.rb +37 -6
  41. data/lib/kubes/cli/get.rb +3 -2
  42. data/lib/kubes/cli/init.rb +34 -2
  43. data/lib/kubes/cli/logs.rb +52 -3
  44. data/lib/kubes/cli/prune.rb +95 -0
  45. data/lib/kubes/compiler.rb +18 -7
  46. data/lib/kubes/compiler/decorator/base.rb +7 -1
  47. data/lib/kubes/compiler/decorator/{resources/secret.rb → hashable.rb} +5 -4
  48. data/lib/kubes/compiler/decorator/hashable/field.rb +53 -0
  49. data/lib/kubes/compiler/decorator/hashable/storage.rb +19 -0
  50. data/lib/kubes/compiler/decorator/post.rb +77 -0
  51. data/lib/kubes/compiler/decorator/pre.rb +12 -0
  52. data/lib/kubes/compiler/strategy.rb +2 -2
  53. data/lib/kubes/compiler/strategy/base.rb +1 -1
  54. data/lib/kubes/compiler/strategy/result.rb +4 -6
  55. data/lib/kubes/config.rb +16 -11
  56. data/lib/kubes/docker/strategy/build/docker.rb +1 -1
  57. data/lib/kubes/docker/strategy/build/gcloud.rb +1 -1
  58. data/lib/kubes/docker/strategy/image_name.rb +1 -1
  59. data/lib/kubes/docker/strategy/push/docker.rb +1 -1
  60. data/lib/kubes/docker/strategy/push/gcloud.rb +1 -1
  61. data/lib/kubes/docker/strategy/utils.rb +1 -1
  62. data/lib/kubes/hooks/builder.rb +29 -15
  63. data/lib/kubes/hooks/concern.rb +10 -0
  64. data/lib/kubes/hooks/dsl.rb +2 -1
  65. data/lib/kubes/hooks/runner.rb +22 -0
  66. data/lib/kubes/kubectl.rb +21 -18
  67. data/lib/kubes/kubectl/batch.rb +8 -5
  68. data/lib/kubes/kubectl/{decider.rb → dispatcher.rb} +1 -1
  69. data/lib/kubes/kubectl/fetch/base.rb +13 -10
  70. data/lib/kubes/kubectl/fetch/deployment.rb +21 -11
  71. data/lib/kubes/kubectl/fetch/pods.rb +4 -15
  72. data/lib/kubes/kubectl/kustomize.rb +1 -1
  73. data/lib/kubes/kubectl/ordering.rb +12 -0
  74. data/lib/kubes/util/consider.rb +2 -1
  75. data/lib/kubes/util/sh.rb +1 -1
  76. data/lib/kubes/version.rb +1 -1
  77. data/lib/templates/dsl/.kubes/resources/base/all.rb.tt +6 -1
  78. data/lib/templates/dsl/.kubes/resources/shared/namespace.rb.tt +1 -1
  79. data/lib/templates/dsl/.kubes/resources/web/deployment.rb +1 -1
  80. data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +1 -1
  81. data/lib/templates/yaml/.kubes/resources/shared/namespace.yaml.tt +1 -1
  82. data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +1 -1
  83. data/spec/fixtures/decorators/deployment/both/envFrom.yaml +31 -0
  84. data/spec/fixtures/prune/capture.yaml +57 -0
  85. data/spec/fixtures/prune/fetch_items.yaml +268 -0
  86. data/spec/kubes/cli/prune_spec.rb +38 -0
  87. data/spec/kubes/compiler/decorator/{resources → post}/deployment_spec.rb +25 -6
  88. data/spec/kubes/compiler/decorator/{resources → post}/pod_spec.rb +2 -11
  89. metadata +39 -19
  90. data/lib/kubes/compiler/decorator.rb +0 -17
  91. data/lib/kubes/compiler/decorator/compile.rb +0 -12
  92. data/lib/kubes/compiler/decorator/resources/base.rb +0 -13
  93. data/lib/kubes/compiler/decorator/resources/container.rb +0 -76
  94. data/lib/kubes/compiler/decorator/resources/container/mapping.rb +0 -28
  95. data/lib/kubes/compiler/decorator/resources/deployment.rb +0 -10
  96. data/lib/kubes/compiler/decorator/resources/pod.rb +0 -10
  97. data/lib/kubes/compiler/decorator/write.rb +0 -14
  98. data/lib/kubes/docker/strategy/hooks.rb +0 -9
@@ -0,0 +1,268 @@
1
+ ---
2
+ - apiVersion: apps/v1
3
+ kind: Deployment
4
+ metadata:
5
+ annotations:
6
+ deployment.kubernetes.io/revision: '2'
7
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"garden","role":"clock"},"name":"clock","namespace":"garden"},"spec":{"replicas":1,"revisionHistoryLimit":0,"selector":{"matchLabels":{"app":"garden","role":"clock"}},"template":{"metadata":{"labels":{"app":"garden","role":"clock"}},"spec":{"containers":[{"envFrom":[{"secretRef":{"name":"demo-secret-OLD1111111"}}],"image":"gcr.io/PROJECT/secret:kubes-2020-10-08T19-42-34-a428e44","name":"clock"}]}}}}
8
+
9
+ '
10
+ creationTimestamp: '2020-10-08T02:24:30Z'
11
+ generation: 3
12
+ labels:
13
+ app: garden
14
+ role: clock
15
+ name: clock
16
+ namespace: garden
17
+ resourceVersion: '1076690'
18
+ selfLink: "/apis/apps/v1/namespaces/garden/deployments/clock"
19
+ uid: 6c6234bd-e7e8-421c-856d-10e6f0ae18df
20
+ spec:
21
+ progressDeadlineSeconds: 600
22
+ replicas: 1
23
+ revisionHistoryLimit: 0
24
+ selector:
25
+ matchLabels:
26
+ app: garden
27
+ role: clock
28
+ strategy:
29
+ rollingUpdate:
30
+ maxSurge: 25%
31
+ maxUnavailable: 25%
32
+ type: RollingUpdate
33
+ template:
34
+ metadata:
35
+ creationTimestamp:
36
+ labels:
37
+ app: garden
38
+ role: clock
39
+ spec:
40
+ containers:
41
+ - envFrom:
42
+ - secretRef:
43
+ name: demo-secret-OLD1111111
44
+ image: gcr.io/PROJECT/secret:kubes-2020-10-08T19-42-34-a428e44
45
+ imagePullPolicy: IfNotPresent
46
+ name: clock
47
+ resources: {}
48
+ terminationMessagePath: "/dev/termination-log"
49
+ terminationMessagePolicy: File
50
+ dnsPolicy: ClusterFirst
51
+ restartPolicy: Always
52
+ schedulerName: default-scheduler
53
+ securityContext: {}
54
+ terminationGracePeriodSeconds: 30
55
+ status:
56
+ availableReplicas: 1
57
+ conditions:
58
+ - lastTransitionTime: '2020-10-08T02:24:31Z'
59
+ lastUpdateTime: '2020-10-08T19:42:45Z'
60
+ message: ReplicaSet "clock-6f9f9d47cb" has successfully progressed.
61
+ reason: NewReplicaSetAvailable
62
+ status: 'True'
63
+ type: Progressing
64
+ - lastTransitionTime: '2020-10-08T19:46:34Z'
65
+ lastUpdateTime: '2020-10-08T19:46:34Z'
66
+ message: Deployment has minimum availability.
67
+ reason: MinimumReplicasAvailable
68
+ status: 'True'
69
+ type: Available
70
+ observedGeneration: 3
71
+ readyReplicas: 1
72
+ replicas: 1
73
+ updatedReplicas: 1
74
+ - apiVersion: batch/v1
75
+ kind: Job
76
+ metadata:
77
+ annotations:
78
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"batch/v1","kind":"Job","metadata":{"annotations":{},"name":"migrate","namespace":"garden"},"spec":{"backoffLimit":4,"template":{"spec":{"containers":[{"command":["sleep","60"],"envFrom":[{"secretRef":{"name":"demo-secret-CURRENT111"}}],"image":"gcr.io/PROJECT/secret:kubes-2020-10-07T20-12-16-84dbc4e","name":"migrate"}],"restartPolicy":"Never"}}}}
79
+
80
+ '
81
+ creationTimestamp: '2020-10-07T20:12:29Z'
82
+ labels:
83
+ controller-uid: a5dbf73c-a49f-4eca-993e-7ab6db0946c8
84
+ job-name: migrate
85
+ name: migrate
86
+ namespace: garden
87
+ resourceVersion: '514227'
88
+ selfLink: "/apis/batch/v1/namespaces/garden/jobs/migrate"
89
+ uid: a5dbf73c-a49f-4eca-993e-7ab6db0946c8
90
+ spec:
91
+ backoffLimit: 4
92
+ completions: 1
93
+ parallelism: 1
94
+ selector:
95
+ matchLabels:
96
+ controller-uid: a5dbf73c-a49f-4eca-993e-7ab6db0946c8
97
+ template:
98
+ metadata:
99
+ creationTimestamp:
100
+ labels:
101
+ controller-uid: a5dbf73c-a49f-4eca-993e-7ab6db0946c8
102
+ job-name: migrate
103
+ spec:
104
+ containers:
105
+ - command:
106
+ - sleep
107
+ - '60'
108
+ envFrom:
109
+ - secretRef:
110
+ name: demo-secret-CURRENT111
111
+ image: gcr.io/PROJECT/secret:kubes-2020-10-07T20-12-16-84dbc4e
112
+ imagePullPolicy: IfNotPresent
113
+ name: migrate
114
+ resources: {}
115
+ terminationMessagePath: "/dev/termination-log"
116
+ terminationMessagePolicy: File
117
+ dnsPolicy: ClusterFirst
118
+ restartPolicy: Never
119
+ schedulerName: default-scheduler
120
+ securityContext: {}
121
+ terminationGracePeriodSeconds: 30
122
+ status:
123
+ completionTime: '2020-10-07T20:13:31Z'
124
+ conditions:
125
+ - lastProbeTime: '2020-10-07T20:13:31Z'
126
+ lastTransitionTime: '2020-10-07T20:13:31Z'
127
+ status: 'True'
128
+ type: Complete
129
+ startTime: '2020-10-07T20:12:29Z'
130
+ succeeded: 1
131
+ - apiVersion: v1
132
+ kind: Namespace
133
+ metadata:
134
+ annotations:
135
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"labels":{"app":"garden"},"name":"garden"}}
136
+
137
+ '
138
+ creationTimestamp: '2020-10-07T19:04:11Z'
139
+ labels:
140
+ app: garden
141
+ name: garden
142
+ resourceVersion: '486464'
143
+ selfLink: "/api/v1/namespaces/garden"
144
+ uid: 3db2c4cf-40b9-42cd-96f4-7f0aebff80e1
145
+ spec:
146
+ finalizers:
147
+ - kubernetes
148
+ status:
149
+ phase: Active
150
+ - apiVersion: v1
151
+ data:
152
+ foo: Zm9vCg==
153
+ password: cGFzcw==
154
+ username: dXNlcg==
155
+ kind: Secret
156
+ metadata:
157
+ annotations:
158
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","data":{"foo":"Zm9vCg==","password":"cGFzcw==","username":"dXNlcg=="},"kind":"Secret","metadata":{"annotations":{},"labels":{"app":"garden"},"name":"demo-secret-OLD1111111","namespace":"garden"}}
159
+
160
+ '
161
+ creationTimestamp: '2020-10-08T19:42:41Z'
162
+ labels:
163
+ app: garden
164
+ name: demo-secret-OLD1111111
165
+ namespace: garden
166
+ resourceVersion: '1075012'
167
+ selfLink: "/api/v1/namespaces/garden/secrets/demo-secret-OLD1111111"
168
+ uid: 63c386ad-0069-4767-b0b8-e70dbafb7c9c
169
+ type: Opaque
170
+ - apiVersion: apps/v1
171
+ kind: Deployment
172
+ metadata:
173
+ annotations:
174
+ deployment.kubernetes.io/revision: '5'
175
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"garden","role":"web"},"name":"web","namespace":"garden"},"spec":{"replicas":1,"revisionHistoryLimit":0,"selector":{"matchLabels":{"app":"garden","role":"web"}},"template":{"metadata":{"labels":{"app":"garden","role":"web"}},"spec":{"containers":[{"envFrom":[{"secretRef":{"name":"demo-secret-OLD1111111"}}],"image":"gcr.io/PROJECT/secret:kubes-2020-10-08T19-42-34-a428e44","name":"web"}]}}}}
176
+
177
+ '
178
+ creationTimestamp: '2020-10-07T19:04:14Z'
179
+ generation: 6
180
+ labels:
181
+ app: garden
182
+ role: web
183
+ name: web
184
+ namespace: garden
185
+ resourceVersion: '1076735'
186
+ selfLink: "/apis/apps/v1/namespaces/garden/deployments/web"
187
+ uid: 31b562a8-1a35-4bf6-972d-f2d44a47e149
188
+ spec:
189
+ progressDeadlineSeconds: 600
190
+ replicas: 1
191
+ revisionHistoryLimit: 0
192
+ selector:
193
+ matchLabels:
194
+ app: garden
195
+ role: web
196
+ strategy:
197
+ rollingUpdate:
198
+ maxSurge: 25%
199
+ maxUnavailable: 25%
200
+ type: RollingUpdate
201
+ template:
202
+ metadata:
203
+ creationTimestamp:
204
+ labels:
205
+ app: garden
206
+ role: web
207
+ spec:
208
+ containers:
209
+ - envFrom:
210
+ - secretRef:
211
+ name: demo-secret-OLD1111111
212
+ image: gcr.io/PROJECT/secret:kubes-2020-10-08T19-42-34-a428e44
213
+ imagePullPolicy: IfNotPresent
214
+ name: web
215
+ resources: {}
216
+ terminationMessagePath: "/dev/termination-log"
217
+ terminationMessagePolicy: File
218
+ dnsPolicy: ClusterFirst
219
+ restartPolicy: Always
220
+ schedulerName: default-scheduler
221
+ securityContext: {}
222
+ terminationGracePeriodSeconds: 30
223
+ status:
224
+ availableReplicas: 1
225
+ conditions:
226
+ - lastTransitionTime: '2020-10-07T19:04:14Z'
227
+ lastUpdateTime: '2020-10-08T19:42:46Z'
228
+ message: ReplicaSet "web-9c4796f88" has successfully progressed.
229
+ reason: NewReplicaSetAvailable
230
+ status: 'True'
231
+ type: Progressing
232
+ - lastTransitionTime: '2020-10-08T19:46:40Z'
233
+ lastUpdateTime: '2020-10-08T19:46:40Z'
234
+ message: Deployment has minimum availability.
235
+ reason: MinimumReplicasAvailable
236
+ status: 'True'
237
+ type: Available
238
+ observedGeneration: 6
239
+ readyReplicas: 1
240
+ replicas: 1
241
+ updatedReplicas: 1
242
+ - apiVersion: v1
243
+ kind: Service
244
+ metadata:
245
+ annotations:
246
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"role":"web"},"name":"web","namespace":"garden"},"spec":{"ports":[{"port":80,"protocol":"TCP","targetPort":80}],"selector":{"role":"web"},"type":"ClusterIP"}}
247
+
248
+ '
249
+ creationTimestamp: '2020-10-07T19:04:13Z'
250
+ labels:
251
+ role: web
252
+ name: web
253
+ namespace: garden
254
+ resourceVersion: '486485'
255
+ selfLink: "/api/v1/namespaces/garden/services/web"
256
+ uid: 51eb23f5-d107-4554-b096-a4a081dfee5d
257
+ spec:
258
+ clusterIP: 10.12.10.177
259
+ ports:
260
+ - port: 80
261
+ protocol: TCP
262
+ targetPort: 80
263
+ selector:
264
+ role: web
265
+ sessionAffinity: None
266
+ type: ClusterIP
267
+ status:
268
+ loadBalancer: {}
@@ -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,13 @@
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).with("Secret", "demo-secret").and_return("fakehash")
9
+ allow(Kubes::Compiler::Decorator::Hashable::Storage).to receive(:fetch).with("ConfigMap", "demo-config-map").and_return("fakehash-config")
10
+ allow(Kubes::Compiler::Decorator::Hashable::Storage).to receive(:fetch).with("ConfigMap", "demo-config-map-2").and_return("fakehash-config2")
9
11
  end
10
12
 
11
13
  context "secret" do
@@ -56,7 +58,7 @@ describe Kubes::Compiler::Decorator::Resources::Deployment do
56
58
  decorator.run
57
59
  data = decorator.data
58
60
  name = data['spec']['template']['spec']['containers'][0]['envFrom'][0]['configMapRef']['name']
59
- expect(name).to eq("demo-config-map-fakehash")
61
+ expect(name).to eq("demo-config-map-fakehash-config")
60
62
  end
61
63
  end
62
64
 
@@ -66,7 +68,7 @@ describe Kubes::Compiler::Decorator::Resources::Deployment do
66
68
  decorator.run
67
69
  data = decorator.data
68
70
  name = data['spec']['template']['spec']['containers'][0]['env'][0]['valueFrom']['configMapKeyRef']['name']
69
- expect(name).to eq("demo-config-map-fakehash")
71
+ expect(name).to eq("demo-config-map-fakehash-config")
70
72
  end
71
73
  end
72
74
 
@@ -76,7 +78,7 @@ describe Kubes::Compiler::Decorator::Resources::Deployment do
76
78
  decorator.run
77
79
  data = decorator.data
78
80
  name = data['spec']['template']['spec']['volumes'][0]['configMap']['name']
79
- expect(name).to eq("demo-config-map-fakehash")
81
+ expect(name).to eq("demo-config-map-fakehash-config")
80
82
  end
81
83
  end
82
84
 
@@ -85,7 +87,24 @@ describe Kubes::Compiler::Decorator::Resources::Deployment do
85
87
  it "data" do
86
88
  decorator.run
87
89
  name = data['spec']['template']['spec']['containers'][0]['envFrom'][0]['configMapRef']['name']
88
- expect(name).to eq("demo-config-map-fakehash")
90
+ expect(name).to eq("demo-config-map-fakehash-config")
91
+ end
92
+ end
93
+ end
94
+
95
+ context "both" do
96
+ describe "envFrom" do
97
+ let(:data) { fixture("both/envFrom") }
98
+ it "run" do
99
+ decorator.run
100
+ data = decorator.data
101
+ envFrom = data['spec']['template']['spec']['containers'][0]['envFrom']
102
+ name = envFrom[0]['secretRef']['name']
103
+ expect(name).to eq("demo-secret-fakehash")
104
+ name = envFrom[1]['configMapRef']['name']
105
+ expect(name).to eq("demo-config-map-fakehash-config")
106
+ name = envFrom[2]['configMapRef']['name']
107
+ expect(name).to eq("demo-config-map-2-fakehash-config2")
89
108
  end
90
109
  end
91
110
  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.1
4
+ version: 0.4.0
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-02 00:00:00.000000000 Z
11
+ date: 2020-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -232,13 +232,22 @@ files:
232
232
  - docs/README.md
233
233
  - docs/Rakefile
234
234
  - docs/_config.yml
235
- - docs/_docs/auto-context.md
236
235
  - docs/_docs/ci/cloudbuild.md
237
236
  - docs/_docs/config.md
237
+ - docs/_docs/config/args.md
238
+ - docs/_docs/config/args/docker.md
239
+ - docs/_docs/config/args/kubectl.md
238
240
  - docs/_docs/config/builder.md
239
241
  - docs/_docs/config/docker.md
240
242
  - docs/_docs/config/env.md
243
+ - docs/_docs/config/hooks.md
244
+ - docs/_docs/config/hooks/docker.md
245
+ - docs/_docs/config/hooks/kubectl.md
246
+ - docs/_docs/config/hooks/kubes.md
247
+ - docs/_docs/config/hooks/ruby.md
241
248
  - docs/_docs/config/kubectl.md
249
+ - docs/_docs/config/reference.md
250
+ - docs/_docs/config/skip.md
242
251
  - docs/_docs/contributing.md
243
252
  - docs/_docs/dsl.md
244
253
  - docs/_docs/dsl/multiple-resources.md
@@ -269,7 +278,6 @@ files:
269
278
  - docs/_docs/intro/ordering.md
270
279
  - docs/_docs/intro/ordering/custom.md
271
280
  - docs/_docs/intro/structure.md
272
- - docs/_docs/kustomize.md
273
281
  - docs/_docs/layering.md
274
282
  - docs/_docs/layering/dsl.md
275
283
  - docs/_docs/layering/merge.md
@@ -294,15 +302,20 @@ files:
294
302
  - docs/_docs/learn/yaml/next-steps.md
295
303
  - docs/_docs/learn/yaml/review-project.md
296
304
  - docs/_docs/learn/yaml/update.md
305
+ - docs/_docs/misc/auto-context.md
306
+ - docs/_docs/misc/kustomize.md
307
+ - docs/_docs/misc/separate-steps.md
297
308
  - docs/_docs/next-steps.md
298
309
  - docs/_docs/patterns.md
299
310
  - docs/_docs/patterns/clock-web-worker.md
311
+ - docs/_docs/patterns/migrations.md
300
312
  - docs/_docs/resources.md
301
313
  - docs/_docs/resources/base.md
302
314
  - docs/_docs/resources/role.md
303
315
  - docs/_docs/resources/shared.md
304
316
  - docs/_docs/yaml.md
305
317
  - docs/_includes/commands.html
318
+ - docs/_includes/config/hooks/options.md
306
319
  - docs/_includes/content.html
307
320
  - docs/_includes/dsl/methods.md
308
321
  - docs/_includes/dsl/rolling_deployment.md
@@ -366,6 +379,7 @@ files:
366
379
  - docs/img/logos/filler-logo.png
367
380
  - docs/img/logos/kubes-black.png
368
381
  - docs/img/logos/kubes-sign.png
382
+ - docs/img/logos/kubes-white.png
369
383
  - docs/index.html
370
384
  - docs/js/app.js
371
385
  - docs/opal/app.rb
@@ -472,19 +486,16 @@ files:
472
486
  - lib/kubes/cli/help/exec.md
473
487
  - lib/kubes/cli/init.rb
474
488
  - lib/kubes/cli/logs.rb
489
+ - lib/kubes/cli/prune.rb
475
490
  - lib/kubes/cli/sequence.rb
476
491
  - lib/kubes/command.rb
477
492
  - lib/kubes/compiler.rb
478
- - lib/kubes/compiler/decorator.rb
479
493
  - lib/kubes/compiler/decorator/base.rb
480
- - lib/kubes/compiler/decorator/compile.rb
481
- - lib/kubes/compiler/decorator/resources/base.rb
482
- - lib/kubes/compiler/decorator/resources/container.rb
483
- - lib/kubes/compiler/decorator/resources/container/mapping.rb
484
- - lib/kubes/compiler/decorator/resources/deployment.rb
485
- - lib/kubes/compiler/decorator/resources/pod.rb
486
- - lib/kubes/compiler/decorator/resources/secret.rb
487
- - lib/kubes/compiler/decorator/write.rb
494
+ - lib/kubes/compiler/decorator/hashable.rb
495
+ - lib/kubes/compiler/decorator/hashable/field.rb
496
+ - lib/kubes/compiler/decorator/hashable/storage.rb
497
+ - lib/kubes/compiler/decorator/post.rb
498
+ - lib/kubes/compiler/decorator/pre.rb
488
499
  - lib/kubes/compiler/dsl/core/base.rb
489
500
  - lib/kubes/compiler/dsl/core/blocks.rb
490
501
  - lib/kubes/compiler/dsl/core/fields.rb
@@ -528,20 +539,21 @@ files:
528
539
  - lib/kubes/docker/strategy/build/base.rb
529
540
  - lib/kubes/docker/strategy/build/docker.rb
530
541
  - lib/kubes/docker/strategy/build/gcloud.rb
531
- - lib/kubes/docker/strategy/hooks.rb
532
542
  - lib/kubes/docker/strategy/image_name.rb
533
543
  - lib/kubes/docker/strategy/push/base.rb
534
544
  - lib/kubes/docker/strategy/push/docker.rb
535
545
  - lib/kubes/docker/strategy/push/gcloud.rb
536
546
  - lib/kubes/docker/strategy/utils.rb
537
547
  - lib/kubes/hooks/builder.rb
548
+ - lib/kubes/hooks/concern.rb
538
549
  - lib/kubes/hooks/dsl.rb
550
+ - lib/kubes/hooks/runner.rb
539
551
  - lib/kubes/kubectl.rb
540
552
  - lib/kubes/kubectl/args/base.rb
541
553
  - lib/kubes/kubectl/args/kustomize.rb
542
554
  - lib/kubes/kubectl/args/standard.rb
543
555
  - lib/kubes/kubectl/batch.rb
544
- - lib/kubes/kubectl/decider.rb
556
+ - lib/kubes/kubectl/dispatcher.rb
545
557
  - lib/kubes/kubectl/fetch/base.rb
546
558
  - lib/kubes/kubectl/fetch/deployment.rb
547
559
  - lib/kubes/kubectl/fetch/pods.rb
@@ -575,6 +587,7 @@ files:
575
587
  - spec/fixtures/artifacts/demo-web/deployment.yaml
576
588
  - spec/fixtures/artifacts/demo-web/service.yaml
577
589
  - spec/fixtures/blocks/deployments.rb
590
+ - spec/fixtures/decorators/deployment/both/envFrom.yaml
578
591
  - spec/fixtures/decorators/deployment/configMap/envFrom.yaml
579
592
  - spec/fixtures/decorators/deployment/configMap/valueFrom.yaml
580
593
  - spec/fixtures/decorators/deployment/configMap/volumes.yaml
@@ -600,11 +613,14 @@ files:
600
613
  - spec/fixtures/project/.kubes/resources/deployment.rb
601
614
  - spec/fixtures/project/.kubes/resources/foobar.rb
602
615
  - spec/fixtures/project/.kubes/resources/service.rb
616
+ - spec/fixtures/prune/capture.yaml
617
+ - spec/fixtures/prune/fetch_items.yaml
603
618
  - spec/fixtures/services/minimum.rb
604
619
  - spec/fixtures/syntax/network_policy.rb
605
620
  - spec/fixtures/syntax/pod.rb
606
- - spec/kubes/compiler/decorator/resources/deployment_spec.rb
607
- - spec/kubes/compiler/decorator/resources/pod_spec.rb
621
+ - spec/kubes/cli/prune_spec.rb
622
+ - spec/kubes/compiler/decorator/post/deployment_spec.rb
623
+ - spec/kubes/compiler/decorator/post/pod_spec.rb
608
624
  - spec/kubes/compiler/strategy/dsl_spec.rb
609
625
  - spec/kubes/compiler_spec.rb
610
626
  - spec/kubes/dsl/daemon_set.rb
@@ -644,6 +660,7 @@ test_files:
644
660
  - spec/fixtures/artifacts/demo-web/deployment.yaml
645
661
  - spec/fixtures/artifacts/demo-web/service.yaml
646
662
  - spec/fixtures/blocks/deployments.rb
663
+ - spec/fixtures/decorators/deployment/both/envFrom.yaml
647
664
  - spec/fixtures/decorators/deployment/configMap/envFrom.yaml
648
665
  - spec/fixtures/decorators/deployment/configMap/valueFrom.yaml
649
666
  - spec/fixtures/decorators/deployment/configMap/volumes.yaml
@@ -669,11 +686,14 @@ test_files:
669
686
  - spec/fixtures/project/.kubes/resources/deployment.rb
670
687
  - spec/fixtures/project/.kubes/resources/foobar.rb
671
688
  - spec/fixtures/project/.kubes/resources/service.rb
689
+ - spec/fixtures/prune/capture.yaml
690
+ - spec/fixtures/prune/fetch_items.yaml
672
691
  - spec/fixtures/services/minimum.rb
673
692
  - spec/fixtures/syntax/network_policy.rb
674
693
  - spec/fixtures/syntax/pod.rb
675
- - spec/kubes/compiler/decorator/resources/deployment_spec.rb
676
- - spec/kubes/compiler/decorator/resources/pod_spec.rb
694
+ - spec/kubes/cli/prune_spec.rb
695
+ - spec/kubes/compiler/decorator/post/deployment_spec.rb
696
+ - spec/kubes/compiler/decorator/post/pod_spec.rb
677
697
  - spec/kubes/compiler/strategy/dsl_spec.rb
678
698
  - spec/kubes/compiler_spec.rb
679
699
  - spec/kubes/dsl/daemon_set.rb