helm-wrapper 1.7.2 → 1.7.3
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 +4 -4
- data/lib/helm-wrapper/shared/runner.rb +119 -124
- data/lib/helm-wrapper/version.rb +3 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10fea1f8e96fea9ba1aebbbab0ff1677082ab65e6203865423dd5306d5731227
|
4
|
+
data.tar.gz: f7f59f2ad0dd69bb40f5eff053c4d307dec467e85b916642887eb19135cef8f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2213f807e1c09d55fa671fbc4d1521fea4a13e567a1006dd16dfb73a667708117841301e0b664e7214d24c5c16ebaf2dab920a2e6a056b88254134d2f0e8d98
|
7
|
+
data.tar.gz: 265cc10cf924f79cbec060bb0389e56f7c792e766a3f991859183cdead17063aacc0b472884a85192a417931c2570382b97b83bfc5f6c0b9b9158d21b2f64486
|
@@ -5,36 +5,29 @@ require 'open3'
|
|
5
5
|
###############################################################################
|
6
6
|
|
7
7
|
module HelmWrapper
|
8
|
-
|
9
|
-
###############################################################################
|
8
|
+
#############################################################################
|
10
9
|
|
11
10
|
module Shared
|
12
|
-
|
13
|
-
###############################################################################
|
11
|
+
###########################################################################
|
14
12
|
|
15
13
|
class Runner
|
16
|
-
|
17
|
-
###############################################################################
|
14
|
+
#########################################################################
|
18
15
|
|
19
16
|
include HelmWrapper::Shared::Logging
|
20
17
|
|
21
|
-
|
18
|
+
#########################################################################
|
22
19
|
|
23
|
-
@@repo_actions = [
|
20
|
+
@@repo_actions = %w[registry repo]
|
24
21
|
|
25
|
-
|
22
|
+
#########################################################################
|
26
23
|
|
27
24
|
@auths_attempted = false
|
28
25
|
|
29
|
-
|
26
|
+
#########################################################################
|
30
27
|
|
31
|
-
attr_reader :auths
|
32
|
-
attr_reader :binary
|
33
|
-
attr_reader :chart
|
34
|
-
attr_reader :config
|
35
|
-
attr_reader :repos
|
28
|
+
attr_reader :auths, :binary, :chart, :config, :repos
|
36
29
|
|
37
|
-
|
30
|
+
#########################################################################
|
38
31
|
|
39
32
|
def initialize(binary:, chart:, config: nil)
|
40
33
|
@binary = binary
|
@@ -45,10 +38,10 @@ module HelmWrapper
|
|
45
38
|
@repos = false
|
46
39
|
end
|
47
40
|
|
48
|
-
|
41
|
+
#########################################################################
|
49
42
|
|
50
|
-
def init_auths
|
51
|
-
logger.fatal(
|
43
|
+
def init_auths
|
44
|
+
logger.fatal('Cannot initialise authenticators without a valid configuration!') if @config.nil?
|
52
45
|
|
53
46
|
@auths_attempted = true
|
54
47
|
|
@@ -57,81 +50,84 @@ module HelmWrapper
|
|
57
50
|
@auths = true
|
58
51
|
end
|
59
52
|
|
60
|
-
|
53
|
+
#########################################################################
|
61
54
|
|
62
55
|
def init_repos(force: false)
|
63
|
-
ENV["HELM_EXPERIMENTAL_OCI"] = "true"
|
64
|
-
|
65
56
|
@chart.oci.each_with_index do |oci_repo, oci_index|
|
66
|
-
logger.info("Logging into OCI repository: #{oci_repo[
|
57
|
+
logger.info("Logging into OCI repository: #{oci_repo['name']}")
|
67
58
|
|
68
|
-
username = from_environment(variable: oci_repo[
|
69
|
-
password = from_environment(variable: oci_repo[
|
59
|
+
username = from_environment(variable: oci_repo['username'])
|
60
|
+
password = from_environment(variable: oci_repo['password'])
|
70
61
|
|
71
62
|
@chart.oci_active(active: true, index: oci_index)
|
72
63
|
|
73
|
-
parameters =
|
74
|
-
parameters.append(
|
75
|
-
parameters.append("\"#{oci_repo[
|
64
|
+
parameters = []
|
65
|
+
parameters.append('login')
|
66
|
+
parameters.append("\"#{oci_repo['url']}\"")
|
76
67
|
parameters.append("--username=\"#{username}\"")
|
77
|
-
parameters.append(
|
78
|
-
logger.fatal("Failed to login to Helm OCI repository: #{oci_repo[
|
68
|
+
parameters.append('--password-stdin')
|
69
|
+
logger.fatal("Failed to login to Helm OCI repository: #{oci_repo['name']}, url: #{oci_repo['url']}") unless run(
|
70
|
+
action: 'registry', parameters: parameters, stdin: password
|
71
|
+
)
|
79
72
|
end
|
80
73
|
|
81
|
-
if @chart.artefact.length > 0
|
74
|
+
if @chart.artefact.length > 0
|
82
75
|
|
83
76
|
@chart.artefact.each_with_index do |artefact_repo, artefact_index|
|
84
|
-
logger.info("Adding artefact repository: #{artefact_repo[
|
77
|
+
logger.info("Adding artefact repository: #{artefact_repo['name']}")
|
85
78
|
|
86
|
-
username = artefact_repo[
|
87
|
-
password = artefact_repo[
|
79
|
+
username = artefact_repo['username'].nil? ? nil : from_environment(variable: artefact_repo['username'])
|
80
|
+
password = artefact_repo['password'].nil? ? nil : from_environment(variable: artefact_repo['password'])
|
88
81
|
|
89
82
|
@chart.artefact_active(active: true, index: artefact_index)
|
90
83
|
|
91
|
-
parameters =
|
92
|
-
parameters.append(
|
93
|
-
parameters.append("\"#{artefact_repo[
|
94
|
-
parameters.append("\"#{artefact_repo[
|
84
|
+
parameters = []
|
85
|
+
parameters.append('add')
|
86
|
+
parameters.append("\"#{artefact_repo['name']}\"")
|
87
|
+
parameters.append("\"#{artefact_repo['url']}\"")
|
95
88
|
parameters.append("--username=\"#{username}\"") unless username.nil?
|
96
89
|
parameters.append("--password=\"#{password}\"") unless password.nil?
|
97
|
-
parameters.append(
|
98
|
-
logger.fatal("Failed to add Helm repository: #{artefact_repo[
|
90
|
+
parameters.append('--force-update') if force
|
91
|
+
logger.fatal("Failed to add Helm repository: #{artefact_repo['name']}, url: #{artefact_repo['url']}") unless run(
|
92
|
+
action: 'repo', parameters: parameters
|
93
|
+
)
|
99
94
|
end
|
100
95
|
|
101
|
-
logger.info(
|
102
|
-
logger.fatal(
|
96
|
+
logger.info('Updating artefact repositories...')
|
97
|
+
logger.fatal('Failed to update Helm artefact repositories!') unless run(action: 'repo',
|
98
|
+
parameters: Array.new(['update']))
|
103
99
|
end
|
104
100
|
|
105
101
|
@repos = true
|
106
102
|
end
|
107
103
|
|
108
|
-
|
104
|
+
#########################################################################
|
109
105
|
|
110
106
|
def clean(repos: true)
|
111
107
|
clean_repos if repos
|
112
108
|
clean_auths if @auths_attempted
|
113
109
|
end
|
114
110
|
|
115
|
-
|
111
|
+
#########################################################################
|
116
112
|
|
117
|
-
def delete
|
118
|
-
logger.fatal(
|
119
|
-
logger.fatal(
|
113
|
+
def delete
|
114
|
+
logger.fatal('Cannot Helm delete without a valid configuration!') if @config.nil?
|
115
|
+
logger.fatal('Cannot Helm delete before initialising authenticators!') unless auths
|
120
116
|
|
121
|
-
parameters =
|
117
|
+
parameters = []
|
122
118
|
parameters.append("--namespace=\"#{@config.namespace}\"")
|
123
119
|
parameters.append("\"#{@config.release}\"")
|
124
120
|
|
125
|
-
logger.fatal(
|
121
|
+
logger.fatal('Helm delete failed!') unless run(action: 'delete', parameters: parameters)
|
126
122
|
end
|
127
123
|
|
128
|
-
|
124
|
+
#########################################################################
|
129
125
|
|
130
|
-
def template
|
131
|
-
logger.fatal(
|
132
|
-
logger.fatal(
|
126
|
+
def template
|
127
|
+
logger.fatal('Cannot Helm template without a valid configuration!') if @config.nil?
|
128
|
+
logger.fatal('Cannot Helm template before initialising repositories!') unless repos
|
133
129
|
|
134
|
-
parameters =
|
130
|
+
parameters = []
|
135
131
|
parameters.append("--namespace=\"#{@config.namespace}\"")
|
136
132
|
parameters.append("\"#{@config.release}\"")
|
137
133
|
parameters.append("\"#{@chart.name}\"")
|
@@ -139,72 +135,72 @@ module HelmWrapper
|
|
139
135
|
parameters.concat(variable_files)
|
140
136
|
parameters.concat(variable_strings)
|
141
137
|
|
142
|
-
logger.fatal(
|
138
|
+
logger.fatal('Helm template failed!') unless run(action: 'template', parameters: parameters)
|
143
139
|
end
|
144
140
|
|
145
|
-
|
141
|
+
#########################################################################
|
146
142
|
|
147
143
|
def upgrade(install: true)
|
148
|
-
logger.fatal(
|
149
|
-
logger.fatal(
|
150
|
-
logger.fatal(
|
144
|
+
logger.fatal('Cannot Helm upgrade without a valid configuration!') if @config.nil?
|
145
|
+
logger.fatal('Cannot Helm upgrade before initialising authenticators!') unless auths
|
146
|
+
logger.fatal('Cannot Helm upgrade before initialising repositories!') unless repos
|
151
147
|
|
152
|
-
parameters =
|
148
|
+
parameters = []
|
153
149
|
parameters.append("--namespace=\"#{@config.namespace}\"")
|
154
|
-
parameters.append(
|
150
|
+
parameters.append('--install') if install
|
155
151
|
parameters.append("\"#{@config.release}\"")
|
156
152
|
parameters.append("\"#{@chart.name}\"")
|
157
|
-
parameters.append(
|
158
|
-
parameters.append(
|
159
|
-
parameters.append("--timeout=\"#{@config.timeout}\"") if
|
153
|
+
parameters.append('--atomic') if @config.atomic
|
154
|
+
parameters.append('--wait') if @config.wait
|
155
|
+
parameters.append("--timeout=\"#{@config.timeout}\"") if @config.atomic or @config.wait
|
160
156
|
parameters.append("--version=\"#{@chart.version}\"") unless @chart.version.strip.empty?
|
161
157
|
parameters.concat(variable_files)
|
162
158
|
parameters.concat(variable_strings)
|
163
159
|
|
164
|
-
logger.fatal(
|
160
|
+
logger.fatal('Helm upgrade failed!') unless run(action: 'upgrade', parameters: parameters)
|
165
161
|
end
|
166
162
|
|
167
|
-
|
163
|
+
#########################################################################
|
168
164
|
|
169
|
-
def lint
|
170
|
-
parameters =
|
165
|
+
def lint
|
166
|
+
parameters = []
|
171
167
|
parameters.append("\"#{@chart.path}\"")
|
172
168
|
|
173
|
-
logger.fatal(
|
169
|
+
logger.fatal('Helm validate failed!') unless run(action: 'lint', parameters: parameters)
|
174
170
|
end
|
175
171
|
|
176
|
-
|
172
|
+
#########################################################################
|
177
173
|
|
178
|
-
def package(destination:
|
179
|
-
parameters =
|
174
|
+
def package(destination: '.')
|
175
|
+
parameters = []
|
180
176
|
parameters.append("--destination=\"#{destination}\"")
|
181
177
|
parameters.append("\"#{@chart.path}\"")
|
182
178
|
|
183
|
-
logger.fatal(
|
179
|
+
logger.fatal('Helm package failed!') unless run(action: 'package', parameters: parameters)
|
184
180
|
end
|
185
181
|
|
186
|
-
|
182
|
+
#########################################################################
|
187
183
|
|
188
|
-
def push(source:
|
189
|
-
logger.fatal(
|
184
|
+
def push(destination:, source: '.')
|
185
|
+
logger.fatal('Cannot Helm push before initialising repositories!') unless repos
|
190
186
|
|
191
187
|
package_name = "#{@chart.name}-#{@chart.version}.tgz"
|
192
188
|
package_path = File.join(source, package_name)
|
193
189
|
|
194
190
|
logger.fatal("Must package before pushing! Package: #{package_path} not found!") unless File.file?(package_path)
|
195
191
|
|
196
|
-
parameters =
|
192
|
+
parameters = []
|
197
193
|
parameters.append("\"#{package_path}\"")
|
198
194
|
parameters.append("\"#{destination}\"")
|
199
195
|
|
200
|
-
logger.fatal(
|
196
|
+
logger.fatal('Helm push failed!') unless run(action: 'push', parameters: parameters)
|
201
197
|
end
|
202
198
|
|
203
|
-
|
199
|
+
#########################################################################
|
204
200
|
|
205
|
-
|
201
|
+
private
|
206
202
|
|
207
|
-
|
203
|
+
#########################################################################
|
208
204
|
|
209
205
|
def clean_auths
|
210
206
|
@auths = false
|
@@ -212,86 +208,88 @@ module HelmWrapper
|
|
212
208
|
@auths_attempted = false
|
213
209
|
end
|
214
210
|
|
215
|
-
|
211
|
+
#########################################################################
|
216
212
|
|
217
213
|
def clean_repos
|
218
214
|
@repos = false
|
219
215
|
|
220
216
|
@chart.oci.each do |oci_repo|
|
221
|
-
|
222
|
-
logger.info("Logging out of OCI repository: #{oci_repo["name"]}")
|
217
|
+
next unless oci_repo['active']
|
223
218
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
219
|
+
logger.info("Logging out of OCI repository: #{oci_repo['name']}")
|
220
|
+
|
221
|
+
parameters = []
|
222
|
+
parameters.append('logout')
|
223
|
+
parameters.append("\"#{oci_repo['url']}\"")
|
224
|
+
logger.error("Failed to logout of Helm OCI repository: #{oci_repo['name']}, url: #{oci_repo['url']}") unless run(
|
225
|
+
action: 'registry', parameters: parameters
|
226
|
+
)
|
229
227
|
end
|
230
228
|
|
231
229
|
@chart.artefact.each do |artefact_repo|
|
232
|
-
if artefact_repo[
|
233
|
-
if artefact_repo[
|
234
|
-
logger.info("Not removing artefact repository: #{artefact_repo[
|
230
|
+
if artefact_repo['active']
|
231
|
+
if artefact_repo['password'].nil?
|
232
|
+
logger.info("Not removing artefact repository: #{artefact_repo['name']}, no credentials stored.")
|
235
233
|
else
|
236
|
-
logger.info("Removing artefact repository: #{artefact_repo[
|
237
|
-
|
238
|
-
parameters =
|
239
|
-
parameters.append(
|
240
|
-
parameters.append("\"#{artefact_repo[
|
241
|
-
logger.error("Failed to remove Helm repository: #{artefact_repo[
|
234
|
+
logger.info("Removing artefact repository: #{artefact_repo['name']}")
|
235
|
+
|
236
|
+
parameters = []
|
237
|
+
parameters.append('remove')
|
238
|
+
parameters.append("\"#{artefact_repo['name']}\"")
|
239
|
+
logger.error("Failed to remove Helm repository: #{artefact_repo['name']}, url: #{artefact_repo['url']}") unless run(
|
240
|
+
action: 'repo', parameters: parameters
|
241
|
+
)
|
242
242
|
end
|
243
243
|
end
|
244
244
|
end
|
245
|
-
|
246
|
-
ENV.delete("HELM_EXPERIMENTAL_OCI")
|
247
245
|
end
|
248
246
|
|
249
|
-
|
247
|
+
#########################################################################
|
250
248
|
|
251
249
|
def variable_files
|
252
|
-
result =
|
250
|
+
result = []
|
253
251
|
|
254
252
|
@config.variables.files.each do |file|
|
255
253
|
result.append("--values=\"#{file}\"")
|
256
254
|
end
|
257
255
|
|
258
|
-
|
256
|
+
result
|
259
257
|
end
|
260
258
|
|
261
|
-
|
259
|
+
#########################################################################
|
262
260
|
|
263
261
|
def variable_strings
|
264
|
-
result =
|
262
|
+
result = []
|
265
263
|
|
266
264
|
@config.variables.values.each do |key, value|
|
267
|
-
result.append("--set=\"#{key
|
265
|
+
result.append("--set=\"#{key}=#{value}\"")
|
268
266
|
end
|
269
267
|
|
270
|
-
|
268
|
+
result
|
271
269
|
end
|
272
270
|
|
273
|
-
|
271
|
+
#########################################################################
|
274
272
|
|
275
|
-
def run(action:, parameters:
|
273
|
+
def run(action:, parameters: [], stdin: nil)
|
276
274
|
result = false
|
277
275
|
|
278
|
-
parameters.reject! { |item|
|
276
|
+
parameters.reject! { |item| !item.is_a?(String) or item.strip.empty? }
|
279
277
|
|
280
|
-
cmdline = [
|
278
|
+
cmdline = ["\"#{@binary.path}\"", action].concat(parameters).join(' ')
|
281
279
|
|
282
280
|
if @@repo_actions.include?(action)
|
283
281
|
begin
|
284
|
-
out, status = Open3.capture2e(cmdline, :
|
285
|
-
logger.debug(
|
282
|
+
out, status = Open3.capture2e(cmdline, stdin_data: stdin)
|
283
|
+
logger.debug('Helm output:')
|
286
284
|
logger.debug(out)
|
287
285
|
result = status.success?
|
288
|
-
rescue
|
286
|
+
rescue StandardError
|
289
287
|
result = false
|
290
288
|
end
|
291
289
|
else
|
292
290
|
logger.info("Starting Helm, action: #{action}")
|
293
291
|
|
294
|
-
fatal(
|
292
|
+
fatal('Running Helm with data for stdin can only be used when configuring repos!') unless stdin.nil?
|
295
293
|
puts("\n" + ('#' * 80) + "\n\n")
|
296
294
|
|
297
295
|
result = system(cmdline) || false
|
@@ -299,28 +297,25 @@ module HelmWrapper
|
|
299
297
|
puts("\n" + ('#' * 80) + "\n\n")
|
300
298
|
end
|
301
299
|
|
302
|
-
|
300
|
+
result
|
303
301
|
end
|
304
302
|
|
305
|
-
|
303
|
+
#########################################################################
|
306
304
|
|
307
305
|
def from_environment(variable:)
|
308
306
|
logger.fatal("Environment variable: #{variable} does not exist") unless ENV.key?(variable)
|
309
307
|
logger.fatal("Environment variable: #{variable} is blank!") if ENV[variable].strip.empty?
|
310
308
|
|
311
|
-
|
309
|
+
ENV[variable].strip
|
312
310
|
end
|
313
311
|
|
314
|
-
|
315
|
-
|
312
|
+
#########################################################################
|
316
313
|
end
|
317
314
|
|
318
|
-
|
319
|
-
|
315
|
+
###########################################################################
|
320
316
|
end
|
321
317
|
|
322
|
-
|
323
|
-
|
318
|
+
#############################################################################
|
324
319
|
end
|
325
320
|
|
326
321
|
###############################################################################
|
data/lib/helm-wrapper/version.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
1
|
###############################################################################
|
2
2
|
|
3
3
|
module HelmWrapper
|
4
|
+
#############################################################################
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
VERSION = '1.7.2'
|
8
|
-
|
9
|
-
###############################################################################
|
6
|
+
VERSION = '1.7.3'
|
10
7
|
|
8
|
+
#############################################################################
|
11
9
|
end
|
12
10
|
|
13
11
|
###############################################################################
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: helm-wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Lees
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '0'
|
102
102
|
requirements: []
|
103
|
-
rubygems_version: 3.3.
|
103
|
+
rubygems_version: 3.3.26
|
104
104
|
signing_key:
|
105
105
|
specification_version: 4
|
106
106
|
summary: A ruby wrapper for managing Helm binaries and chart deployment.
|