minfra-cli 2.1.0 → 3.0.0

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: 5429a3e13b8387b6c3e011eaa2513ac5963ef30c4a14f9458e882a7df0507753
4
- data.tar.gz: 2dbdd6e4e0f4c3cbade95033f52af2480a7a0b421508a68066e1a87ab6049109
3
+ metadata.gz: ec0639d81eca018b238482b84cc895bdb32ee7a1b5bb3d1d6696f1b042f61e23
4
+ data.tar.gz: b84403ebad45d5c4d12d2107c5c6c11e9f0ccfdaaa30a814144e9e2204e863d4
5
5
  SHA512:
6
- metadata.gz: 188ce70ec6fabf9b6d72ddfc0855ce499e63c92bc079d525e044dec3c21b49d5a6c2aba1576a869c5126ef3a27f14bc7aa1e7222b1deff49e8cc35c645cda621
7
- data.tar.gz: 877789c92138b28e33314592464fc5650765729a90ea8d84388c9ca10ea4065dd5988fbfbc9b047ebf0604d28552e38243d5407a52ee7cf9ae18f03b075b8e19
6
+ metadata.gz: 0c0da44b29f119c3cab74943f00e1371ce313fab2ecf05fc6f9e34eb5d64b90399cb985b2b48065904af01d905669ac4437ae0a627277b4a21bf53dab253b27e
7
+ data.tar.gz: 3459bae4cda6ec35edb67b31885bfe894faf4b973d13f53c17df1a055728667fb5c33ea45cce4aa95a28f601c0dea25e7000eb072258cc7fc9fcd1f0da722a63
data/CHANGELOG.md CHANGED
@@ -1,9 +1,19 @@
1
+ # 3.0.0
2
+ * change: debug output on template errors
3
+ Incompatibility
4
+ * change: used_vars are turned into true yaml types when creating the value file
5
+ # 2.2.0
6
+ * fixing: should not modify l('env.roles')
7
+ * cleanup: removing template testing --debug flag, causing noise
8
+ * cleanup: removing Documentation hooks
9
+ * fixing: hiera lookup retrying on gpg memory error exceptions
10
+ * adding: gpgme dependency
1
11
  # 2.1.0
2
- * add :all hook
3
- * fixing setup dev
4
- * colored errors
5
- * wrapping hiera lookup errors of gpg
6
- * adding HIERA_DEBUG_LOOKUPS=true
12
+ * adding: :all hook
13
+ * fixing: setup dev
14
+ * adding: colored errors and warnings
15
+ * change: wrapping hiera lookup errors of gpg
16
+ * adding: HIERA_DEBUG_LOOKUPS=true
7
17
  # 2.0.1
8
18
  Refactorings
9
19
  * installing into Kernel only when 'exec' not at 'init' time
@@ -101,7 +101,7 @@ module Minfra
101
101
  run(%(docker network rm #{kind_name}), exit_on_error: false)
102
102
  end
103
103
 
104
- def deploy(stack_name, reason_message)
104
+ def deploy(stack_name, _reason_message)
105
105
  # TBD: options is global, avoid it!
106
106
 
107
107
  test = options[:test]
@@ -145,8 +145,6 @@ module Minfra
145
145
 
146
146
  exit_error('Deployment aborted!') if !(@config.dev? || options[:force] == true) && !Ask.boolean('Are the changes ok?')
147
147
 
148
- message = "deploying stack #{stack.name}: #{reason_message}."
149
- Minfra::Cli::Document.document(@config, "started #{message}")
150
148
  orch = Orchparty::App.new(cluster_name: cluster,
151
149
  application_name: stack.name,
152
150
  force_variable_definition: false,
@@ -154,7 +152,6 @@ module Minfra
154
152
  status_dir: stack.release_path,
155
153
  options:)
156
154
  orch.send(method)
157
- Minfra::Cli::Document.document(@config, "finished #{message}")
158
155
  end
159
156
 
160
157
  def rollback(stack_name, env, deployment, cluster)
@@ -47,9 +47,7 @@ module Minfra
47
47
  ARGV.delete('test')
48
48
 
49
49
  if File.exist?('./bin/run_tests')
50
- # config = Config.load('staging')
51
50
  project = ProjectInfo.load(Pathname.pwd)
52
- # Minfra::Cli::Document.document(config, "Using project specific ./bin/run_tests in #{project.name}")
53
51
  debug "Using project specific ./bin/run_tests in #{project.name}"
54
52
  system('./bin/run_tests', out: $stdout, err: :out)
55
53
  else
@@ -35,7 +35,7 @@ module Minfra
35
35
  def deploy(stack_name, message = '')
36
36
  stacks = l('env.roles') || l('env.stacks') || []
37
37
  default_stacks = minfra_config.project.default_stacks || []
38
- stacks = stacks.concat(default_stacks)
38
+ stacks = stacks + default_stacks
39
39
  if stacks.include?(stack_name) || options[:force] || options[:test]
40
40
  kube.deploy(stack_name, message)
41
41
  else
@@ -39,6 +39,7 @@ module Minfra
39
39
  else
40
40
  :deep
41
41
  end
42
+ retry_attempts = 0
42
43
  begin
43
44
  result = @hiera.lookup(fst_value, default, @scope, nil, lookup_type)
44
45
  rescue GPGME::Error::NoSecretKey
@@ -50,6 +51,10 @@ module Minfra
50
51
  rescue GPGME::Error
51
52
  error("Having decrypt problems for hiera key: #{value}, #{$ERROR_INFO.message}")
52
53
  raise Errors::ExitError
54
+ rescue Errno::ENOMEM # see https://github.com/ueno/ruby-gpgme/issues/147
55
+ retry_attempts += 1
56
+ sleep 1
57
+ retry if retry_attempts < 5
53
58
  end
54
59
  result = result.dig(*values) if !values.empty? && result.is_a?(Hash) # we return nil or the scalar value and only drill down on hashes
55
60
  result = default if result.nil?
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Minfra
4
4
  module Cli
5
- VERSION = '2.1.0'
5
+ VERSION = '3.0.0'
6
6
  end
7
7
  end
data/lib/minfra/cli.rb CHANGED
@@ -18,7 +18,6 @@ require_relative 'cli/hook'
18
18
  require_relative 'cli/common'
19
19
  require_relative 'cli/command'
20
20
  require_relative 'cli/ask'
21
- require_relative 'cli/document'
22
21
  require_relative 'cli/runner'
23
22
  require_relative 'cli/helm_runner'
24
23
  require_relative 'cli/kubectl_runner'
@@ -188,7 +188,7 @@ module Orchparty
188
188
 
189
189
  def print_install
190
190
  build_chart do |chart_path|
191
- cmd = "helm template --namespace #{namespace} --debug --kube-context #{cluster_name} --output-dir #{chart_path.join(
191
+ cmd = "helm template --namespace #{namespace} --kube-context #{cluster_name} --output-dir #{chart_path.join(
192
192
  '..', 'helm_expanded'
193
193
  )} #{service.name} #{chart_path}"
194
194
  @out_io.puts `$cmd`
@@ -196,6 +196,7 @@ module Orchparty
196
196
 
197
197
  debug('Helm: template check: OK')
198
198
  else
199
+ system("#{cmd} --debug")
199
200
  error('Helm: template check: FAIL')
200
201
  end
201
202
  end
@@ -246,7 +247,19 @@ module Orchparty
246
247
  output_chart_path: output_chart_path
247
248
  )
248
249
  used_vars.each do |variable, value|
249
- helm_values.puts "#{variable}: \"#{value}\""
250
+ if value.is_a?(Numeric) && value >= 1000000 # this is bad as conversion is done only in some cases
251
+ value = value.to_s # see https://github.com/helm/helm/issues/3001
252
+ end
253
+ yml = { variable => value}.to_yaml[4..-1]
254
+ yml = case
255
+ when yml.match(/!ruby\/object/)
256
+ { variable => value.to_s}.to_yaml[4..-1]
257
+ when yml.match(/!ruby\/array:Hashie::Array/)
258
+ { variable => value.to_a}.to_yaml[4..-1]
259
+ else
260
+ yml
261
+ end
262
+ helm_values.write(yml)
250
263
  end
251
264
  end
252
265
  end
data/minfra-cli.gemspec CHANGED
@@ -36,5 +36,6 @@ Gem::Specification.new do |spec|
36
36
  spec.add_runtime_dependency "hiera", "3.9.0"
37
37
  spec.add_runtime_dependency "hiera-eyaml", "3.3.0"
38
38
  spec.add_runtime_dependency "hiera-eyaml-gpg", "0.7.4"
39
+ spec.add_runtime_dependency "gpgme", "~>2.0.0"
39
40
  end
40
41
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minfra-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Schrammel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-30 00:00:00.000000000 Z
11
+ date: 2024-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -142,6 +142,20 @@ dependencies:
142
142
  - - '='
143
143
  - !ruby/object:Gem::Version
144
144
  version: 0.7.4
145
+ - !ruby/object:Gem::Dependency
146
+ name: gpgme
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 2.0.0
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 2.0.0
145
159
  description: A cli framework for k8s based development and deployment.
146
160
  email:
147
161
  - peter.schrammel@gmx.de
@@ -187,7 +201,6 @@ files:
187
201
  - lib/minfra/cli/common.rb
188
202
  - lib/minfra/cli/config.rb
189
203
  - lib/minfra/cli/core_ext.rb
190
- - lib/minfra/cli/document.rb
191
204
  - lib/minfra/cli/env.rb
192
205
  - lib/minfra/cli/errors.rb
193
206
  - lib/minfra/cli/helm_runner.rb
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Minfra
4
- module Cli
5
- class Document
6
- def self.document(config, message)
7
- new(config).document(message)
8
- end
9
-
10
- def initialize(config)
11
- @config = config
12
- end
13
-
14
- def document(_message)
15
- return true if @config.dev?
16
-
17
- puts 'TBD: calling documentation hooks'
18
- true
19
- end
20
- end
21
- end
22
- end