kubes 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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