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