helm-wrapper 1.2.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04761d13453be5c76dde3ad75e0318bd4bdd5c3a67f10d2f934bc75c0f7f768c
4
- data.tar.gz: c542c8b49e6f6fead7766dfeffec28df80777ec9475066d6ae2683102590f26b
3
+ metadata.gz: 64fe7756c771f5de17023c164a926696c6514315542e35b444ef31d4396ac130
4
+ data.tar.gz: 79334dd60dfc68de644ca511ebefde9b2382ca13bbb7f65e7347868337a13aa8
5
5
  SHA512:
6
- metadata.gz: 991ea23d02ad2276e14ae5aeca40270b175f65d4dbd2e1598b4d69102a6729e59c0247a03c7dce419d21d36da224ada8ca5c73e237255b0ab21582a73ad26de7
7
- data.tar.gz: 9e88d25edc24fff4999c276b49494727cfe5f095d33517a175457bea3f34b83b6d7fd540d6f7003d4201b0fa5cf6a0942553d5bc7c19d407bcc66c0706f326a5
6
+ metadata.gz: e69d4b002536594076ac8476f791a4e5b0fe3c2062de5cf5f4225e6df1919e21eb19b4ba362ed430d36cc2f01e8bda9edd14ab1f0cc2fa1701955c2d46944b61
7
+ data.tar.gz: 681c5bc705a01aa22730f6994ac975785701c16d1f39ef0265851cccfdf81404ea97d75b9a8edc868871ff51cdd1dc2a70bd89528411b9bf44698822ef60d76c
data/lib/helm-wrapper.rb CHANGED
@@ -23,7 +23,7 @@ module HelmWrapper
23
23
  ###############################################################################
24
24
 
25
25
  def self.deployment_tasks(chart:, namespace:, release:, options: Hash.new)
26
- @logger.info("Building deployment tasks for chart: #{chart}...")
26
+ @logger.info("Building deployment tasks for release: #{release}...")
27
27
 
28
28
  @logger.fatal("Options must be specified as a hash!") unless options.kind_of?(Hash)
29
29
 
@@ -35,14 +35,17 @@ module HelmWrapper
35
35
  chart_options["name"] = chart
36
36
  chart_options["path"] = nil
37
37
  chart_options["repos"] = options.key?("chart-repos") ? options["chart-repos"] : Array.new
38
+ chart_options["release"] = release
38
39
  chart_options["version"] = options.key?("chart-version") ? options["chart-version"] : String.new
39
40
 
40
41
  config_options = Hash.new
42
+ config_options["atomic"] = options.key?("config-atomic") ? options["config-atomic"] : false
41
43
  config_options["auth-azure"] = options.key?("config-auth-azure") ? options["config-auth-azure"] : false
42
44
  config_options["auth-azure-options"] = options.key?("config-auth-azure-options") ? options["config-auth-azure-options"] : Hash.new
43
45
  config_options["base"] = options.key?("config-base") ? options["config-base"] : File.join(Dir.pwd, "config")
44
46
  config_options["namespace"] = namespace
45
- config_options["release"] = release
47
+ config_options["timeout"] = options.key?("config-timeout") ? options["config-timeout"] : "5m0s"
48
+ config_options["wait"] = options.key?("config-wait") ? options["config-wait"] : true
46
49
 
47
50
  binary = HelmWrapper::Shared::Binary.new(options: binary_options)
48
51
  chart = HelmWrapper::Shared::Chart.new(options: chart_options)
@@ -20,6 +20,7 @@ module HelmWrapper
20
20
  attr_reader :name
21
21
  attr_reader :path
22
22
  attr_reader :oci
23
+ attr_reader :release
23
24
  attr_reader :version
24
25
 
25
26
  ###############################################################################
@@ -30,10 +31,6 @@ module HelmWrapper
30
31
 
31
32
  @name = options["name"]
32
33
 
33
- logger.fatal("Chart version must be a string!") unless options["version"].kind_of?(String)
34
-
35
- @version = options["version"]
36
-
37
34
  unless options["path"].nil? then
38
35
  logger.fatal("Chart path must be a string!") unless options["path"].kind_of?(String)
39
36
  logger.fatal("Chart path must not be blank!") if options["path"].strip.empty?
@@ -42,6 +39,15 @@ module HelmWrapper
42
39
 
43
40
  @path = options["path"]
44
41
 
42
+ logger.fatal("Chart release instance must be a string!") unless options["release"].kind_of?(String)
43
+ logger.fatal("Chart release instance must not be blank!") if options["release"].strip.empty?
44
+
45
+ @release = options["release"]
46
+
47
+ logger.fatal("Chart version must be a string!") unless options["version"].kind_of?(String)
48
+
49
+ @version = options["version"]
50
+
45
51
  logger.fatal("Chart repos must be a list of hashes!") unless options["repos"].kind_of?(Array)
46
52
 
47
53
  repos = options["repos"]
@@ -49,7 +55,11 @@ module HelmWrapper
49
55
  @oci = Array.new
50
56
  @artefact = Array.new
51
57
 
52
- repos.each do |repo|
58
+ repos.each do |repo| logger.fatal("Configuration name must be a string!") unless options["name"].kind_of?(String)
59
+ logger.fatal("Configuration name must not be blank!") if options["name"].strip.empty?
60
+
61
+ @name = options["name"]
62
+
53
63
  logger.fatal("All elements of chart repos must be hashes!") unless repo.kind_of?(Hash)
54
64
 
55
65
  logger.fatal("Chart repo: #{hash["name"]} must have a type attribute!") unless repo.key?("type")
@@ -24,18 +24,24 @@ module HelmWrapper
24
24
 
25
25
  ###############################################################################
26
26
 
27
+ attr_reader :atomic
27
28
  attr_reader :auths
28
29
  attr_reader :base
29
30
  attr_reader :chart
30
31
  attr_reader :name
31
32
  attr_reader :namespace
32
33
  attr_reader :path
33
- attr_reader :release
34
+ attr_reader :timeout
34
35
  attr_reader :variables
36
+ attr_reader :wait
35
37
 
36
38
  ###############################################################################
37
39
 
38
40
  def initialize(chart:, options:)
41
+ logger.fatal("Configuration atomic mode must be a boolean!") unless [ true, false ].include?(options["atomic"])
42
+
43
+ @atomic = options["atomic"]
44
+
39
45
  logger.fatal("Configuration base path must be a string!") unless options["base"].kind_of?(String)
40
46
  logger.fatal("Configuration base path must not be blank!") if options["base"].strip.empty?
41
47
 
@@ -46,32 +52,38 @@ module HelmWrapper
46
52
 
47
53
  @name = options["name"]
48
54
 
49
- logger.fatal("Configuration destination namespace must be a string!") unless options["namespace"].kind_of?(String)
50
- logger.fatal("Configuration destination namespace must not be blank!") if options["namespace"].strip.empty?
55
+ logger.fatal("Configuration wait timeout must be a string!") unless options["timeout"].kind_of?(String)
56
+ logger.fatal("Configuration wait timeout must not be blank!") if options["timeout"].strip.empty?
51
57
 
52
- namespace = options["namespace"]
58
+ @timeout = options["timeout"]
53
59
 
54
- logger.fatal("Configuration release name must be a string!") unless options["release"].kind_of?(String)
55
- logger.fatal("Configuration release name must not be blank!") if options["release"].strip.empty?
56
-
57
- release = options["release"]
58
-
59
- logger.fatal("Configuration authenticator for Azure enabled must be a Boolean!") unless [ true, false ].include?(options["auth-azure"])
60
+ logger.fatal("Configuration authenticator for Azure enabled must be a boolean!") unless [ true, false ].include?(options["auth-azure"])
60
61
 
61
62
  auth_azure = options["auth-azure"]
62
63
 
63
- logger.fatal("Configuration authenticator for Azure options must be a Hash!") unless options["auth-azure-options"].kind_of?(Hash)
64
+ logger.fatal("Configuration authenticator for Azure options must be a hash!") unless options["auth-azure-options"].kind_of?(Hash)
64
65
 
65
66
  auth_azure_options = options["auth-azure-options"]
66
67
 
68
+ logger.fatal("Configuration destination namespace must be a string!") unless options["namespace"].kind_of?(String)
69
+ logger.fatal("Configuration destination namespace must not be blank!") if options["namespace"].strip.empty?
70
+
71
+ namespace = options["namespace"]
72
+
73
+ logger.fatal("Configuration wait mode must be a boolean!") unless [ true, false ].include?(options["wait"])
74
+
75
+ wait = options["wait"]
76
+
67
77
  @chart = chart
68
78
  @path = ::HelmWrapper.find(base: @base, name: @name, exts: @@config_exts, description: "Configuration")
79
+ @wait = (not @atomic) and wait
69
80
 
70
81
  yaml = YAML.load(File.read(@path))
71
82
  logger.fatal("Invalid YAML in configuration file: #{@path}") unless yaml.kind_of?(Hash)
72
83
 
73
84
  identifers = yaml.key?("identifiers") ? yaml["identifiers"] : Hash.new
74
- @variables = HelmWrapper::Shared::Variables.new(chart: @chart.name, config: @name, namespace: namespace, release: release, identifiers: identifers)
85
+ @variables = HelmWrapper::Shared::Variables.new(chart: @chart.name, config: @name, namespace: namespace, release: @chart.release, identifiers: identifers)
86
+ @namespace = @variables.core[:namespace]
75
87
 
76
88
  if yaml.key?("globals") then
77
89
  logger.fatal("Key 'globals' is not a hash in configuration file: #{@path}") unless yaml["globals"].kind_of?(Hash)
@@ -84,7 +96,7 @@ module HelmWrapper
84
96
  logger.fatal("Key 'helm' is not a hash in configuration file: #{@path}") unless yaml["helm"].kind_of?(Hash)
85
97
  helm = yaml["helm"]
86
98
 
87
- [ "globals", @chart.name ].each do |extra|
99
+ [ "globals", @chart.release ].each do |extra|
88
100
  if helm.key?(extra) then
89
101
  logger.fatal("Key '#{extra}' under 'helm' is not a hash in configuration file: #{@path}") unless helm[extra].kind_of?(Hash)
90
102
  section = helm[extra]
@@ -95,9 +107,6 @@ module HelmWrapper
95
107
  end
96
108
  end
97
109
 
98
- @namespace = @variables.core[:namespace]
99
- @release = @variables.core[:release]
100
-
101
110
  @auths = Array.new
102
111
  @auths.append(HelmWrapper::Shared::Auths::Azure.new(options: auth_azure_options, variables: @variables)) if auth_azure
103
112
  end
@@ -120,7 +120,7 @@ module HelmWrapper
120
120
 
121
121
  parameters = Array.new
122
122
  parameters.append("--namespace=\"#{@config.namespace}\"")
123
- parameters.append("\"#{@config.release}\"")
123
+ parameters.append("\"#{@chart.release}\"")
124
124
 
125
125
  logger.fatal("Helm delete failed!") unless run(action: "delete", parameters: parameters)
126
126
  end
@@ -133,7 +133,7 @@ module HelmWrapper
133
133
 
134
134
  parameters = Array.new
135
135
  parameters.append("--namespace=\"#{@config.namespace}\"")
136
- parameters.append("\"#{@config.release}\"")
136
+ parameters.append("\"#{@chart.release}\"")
137
137
  parameters.append("\"#{@chart.name}\"")
138
138
  parameters.append("--version=\"#{@chart.version}\"") unless @chart.version.strip.empty?
139
139
  parameters.concat(variable_files)
@@ -152,8 +152,11 @@ module HelmWrapper
152
152
  parameters = Array.new
153
153
  parameters.append("--namespace=\"#{@config.namespace}\"")
154
154
  parameters.append("--install") if install
155
- parameters.append("\"#{@config.release}\"")
155
+ parameters.append("\"#{@chart.release}\"")
156
156
  parameters.append("\"#{@chart.name}\"")
157
+ parameters.append("--atomic") if @config.atomic
158
+ parameters.append("--wait") if @config.wait
159
+ parameters.append("--timeout=\"#{@config.timeout}\"") if (@config.atomic or @config.wait)
157
160
  parameters.append("--version=\"#{@chart.version}\"") unless @chart.version.strip.empty?
158
161
  parameters.concat(variable_files)
159
162
  parameters.concat(variable_strings)
@@ -35,15 +35,14 @@ module HelmWrapper
35
35
  core[:chart] = chart
36
36
  core[:config] = config
37
37
  core[:namespace] = nil
38
- core[:release] = nil
38
+ core[:release] = release
39
39
 
40
40
  user = cleanse(variables: identifiers, reserved: core.keys)
41
41
 
42
42
  begin
43
43
  core[:namespace] = namespace % user
44
- core[:release] = release % user
45
44
  rescue
46
- logger.fatal("Provided configuration options include identifiers that are not included in the configuration file!")
45
+ logger.fatal("Provided namespace includes identifiers that are not included in the configuration file!")
47
46
  end
48
47
 
49
48
  merged = core.merge(user)
@@ -45,7 +45,7 @@ module HelmWrapper
45
45
  config = HelmWrapper::Shared::Config.new(chart: @chart, options: options)
46
46
  runner = HelmWrapper::Shared::Runner.new(binary: @binary, chart: @chart, config: config)
47
47
 
48
- logger.info("Running Helm upgrade for release: #{config.release}, namespace: #{config.namespace}...")
48
+ logger.info("Running Helm upgrade for release: #{@chart.release}, namespace: #{config.namespace}...")
49
49
 
50
50
  begin
51
51
  runner.init_repos
@@ -44,7 +44,7 @@ module HelmWrapper
44
44
  config = HelmWrapper::Shared::Config.new(chart: @chart, options: options)
45
45
  runner = HelmWrapper::Shared::Runner.new(binary: @binary, chart: @chart, config: config)
46
46
 
47
- logger.info("Running Helm delete for release: #{config.release}, namespace: #{config.namespace}...")
47
+ logger.info("Running Helm delete for release: #{@chart.release}, namespace: #{config.namespace}...")
48
48
 
49
49
  begin
50
50
  runner.init_auths
@@ -45,7 +45,7 @@ module HelmWrapper
45
45
  config = HelmWrapper::Shared::Config.new(chart: @chart, options: options)
46
46
  runner = HelmWrapper::Shared::Runner.new(binary: @binary, chart: @chart, config: config)
47
47
 
48
- logger.info("Running Helm template for release: #{config.release}, namespace: #{config.namespace}...")
48
+ logger.info("Running Helm template for release: #{@chart.release}, namespace: #{config.namespace}...")
49
49
 
50
50
  begin
51
51
  runner.init_repos
@@ -4,7 +4,7 @@ module HelmWrapper
4
4
 
5
5
  ###############################################################################
6
6
 
7
- VERSION = "1.2.0"
7
+ VERSION = "1.3.1"
8
8
 
9
9
  ###############################################################################
10
10
 
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.2.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Lees
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-10 00:00:00.000000000 Z
11
+ date: 2021-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake