minfra-cli 1.7.1 → 1.9.0
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/CHANGELOG.md +13 -0
- data/lib/minfra/cli/commands/project.rb +2 -2
- data/lib/minfra/cli/plugins.rb +1 -1
- data/lib/minfra/cli/runner.rb +37 -23
- data/lib/minfra/cli/version.rb +1 -1
- data/lib/minfra/cli.rb +7 -4
- data/lib/orchparty/dsl_parser_kubernetes.rb +13 -0
- data/lib/orchparty/kubernetes_application.rb +1 -1
- 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: f850f6ee46b5749af756bfb223e38836a3bc538dc8bcbe4b1f2fb3bc2c3a131a
|
4
|
+
data.tar.gz: e5b4b5b317c1ead81fedae5d78021003c31a55858fe36e040fad59c61d8e8c23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26036eb5236bedf5a6cf6f3a39b8ceb272d8242938bf1730c20b0385facb0c1c9c1c8c92335c670562b5bd3dc946eae7e5891963b38643e0144f2b5ed5b8d3d3
|
7
|
+
data.tar.gz: 47cba9834d267496e5411d9d326a3a5d8899cb8a06119bbcafa790fdef48fd22ee620eea43725b706627efc59bdfb0db03fa93a0950de5f913476a81a46054eb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
# 1.9.0
|
2
|
+
* helm template now called with --debug
|
3
|
+
* added "file" to service
|
4
|
+
* ready for ruby 3.2
|
5
|
+
* fixing project build "loading int " typo
|
6
|
+
* changing init sequence (first load minfrarc)
|
7
|
+
* STDERR of external commands is now written as INFO
|
8
|
+
|
9
|
+
# 1.8.0
|
10
|
+
* more output which "require" failed when loading dependencies
|
11
|
+
* catching closed stream errors in Minfra::Cli::Runner
|
12
|
+
* stderr of runner goes to info
|
13
|
+
* stdout of runner goes to debug
|
1
14
|
# 1.7.1
|
2
15
|
* fix plugin install edge cases
|
3
16
|
# 1.7.0
|
@@ -40,7 +40,7 @@ module Minfra
|
|
40
40
|
ARGV.delete('project') # ARGV is passed along to `rspec` call
|
41
41
|
ARGV.delete('test')
|
42
42
|
|
43
|
-
if File.
|
43
|
+
if File.exist?('./bin/run_tests')
|
44
44
|
# config = Config.load('staging')
|
45
45
|
project = ProjectInfo.load(Pathname.pwd)
|
46
46
|
# Minfra::Cli::Document.document(config, "Using project specific ./bin/run_tests in #{project.name}")
|
@@ -68,7 +68,7 @@ module Minfra
|
|
68
68
|
exit(1) if res.error?
|
69
69
|
|
70
70
|
unless options[:noload]
|
71
|
-
debug("loading
|
71
|
+
debug("loading image into KIND's registry")
|
72
72
|
Runner.run(%{kind load docker-image #{p.repo_name}:latest --name #{minfra_config.name}})
|
73
73
|
end
|
74
74
|
end
|
data/lib/minfra/cli/plugins.rb
CHANGED
@@ -49,7 +49,7 @@ module Minfra
|
|
49
49
|
begin
|
50
50
|
require minfra_path # this should register the command
|
51
51
|
rescue LoadError
|
52
|
-
logger.warn("Minfra plugin detected but dependencies not installed: #{minfra_path} (
|
52
|
+
logger.warn("Minfra plugin detected but dependencies not installed: #{minfra_path} (#{$!}). TRY: minfra plugin install")
|
53
53
|
end
|
54
54
|
end
|
55
55
|
else
|
data/lib/minfra/cli/runner.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'English'
|
1
4
|
require 'open3'
|
2
5
|
|
3
6
|
module Minfra
|
@@ -5,26 +8,30 @@ module Minfra
|
|
5
8
|
class Runner
|
6
9
|
class Result
|
7
10
|
include Logging
|
8
|
-
|
11
|
+
|
9
12
|
attr_writer :status
|
10
|
-
|
13
|
+
|
11
14
|
def initialize
|
12
|
-
@stderr_lines=[]
|
13
|
-
@stdout_lines=[]
|
14
|
-
@status=nil
|
15
|
+
@stderr_lines = []
|
16
|
+
@stdout_lines = []
|
17
|
+
@status = nil
|
15
18
|
end
|
16
|
-
|
17
|
-
def add(line, stream
|
19
|
+
|
20
|
+
def add(line, stream = :stdout)
|
18
21
|
line.chomp!
|
19
22
|
if stream == :stdout
|
20
23
|
@stdout_lines << line
|
21
24
|
debug line
|
22
25
|
else
|
23
26
|
@stderr_lines << line
|
24
|
-
|
27
|
+
info line
|
25
28
|
end
|
26
29
|
end
|
27
|
-
|
30
|
+
|
31
|
+
def exitstatus
|
32
|
+
@status.exitstatus
|
33
|
+
end
|
34
|
+
|
28
35
|
def success?
|
29
36
|
@status.success?
|
30
37
|
end
|
@@ -36,11 +43,11 @@ module Minfra
|
|
36
43
|
def stdout
|
37
44
|
@stdout_lines.join("\n")
|
38
45
|
end
|
39
|
-
|
46
|
+
|
40
47
|
def stderr
|
41
48
|
@stderr_lines.join("\n")
|
42
|
-
end
|
43
|
-
|
49
|
+
end
|
50
|
+
|
44
51
|
def to_s
|
45
52
|
stdout
|
46
53
|
end
|
@@ -52,39 +59,46 @@ module Minfra
|
|
52
59
|
end
|
53
60
|
|
54
61
|
attr_reader :exit_on_error
|
62
|
+
|
55
63
|
def initialize(cmd, exit_on_error: true)
|
56
|
-
@cmd=cmd
|
64
|
+
@cmd = cmd
|
57
65
|
@exit_on_error = exit_on_error
|
58
66
|
end
|
59
67
|
|
60
68
|
def run
|
61
69
|
debug("running: #{@cmd}")
|
62
|
-
res=nil
|
70
|
+
res = nil
|
63
71
|
begin
|
64
|
-
res=Result.new
|
72
|
+
res = Result.new
|
65
73
|
# see: http://stackoverflow.com/a/1162850/83386
|
66
|
-
|
74
|
+
# the whole implementation is problematic as we migth miss some output lines
|
75
|
+
# Open4 might be a solution. Using Select might be a solution. Using Process.fork might be a solution....
|
76
|
+
Open3.popen3(@cmd) do |_stdin, stdout, stderr, thread|
|
67
77
|
# read each stream from a new thread
|
68
|
-
{ :
|
78
|
+
{ stdout: stdout, stderr: stderr }.each do |key, stream|
|
69
79
|
Thread.new do
|
70
|
-
until (raw_line = stream.gets).nil?
|
80
|
+
until (raw_line = stream.gets).nil?
|
81
|
+
# stream.each do |raw_line|
|
71
82
|
res.add(raw_line, key)
|
72
83
|
end
|
84
|
+
rescue IOError # happens when you read from a close stream
|
85
|
+
raise unless ['stream closed in another thread', 'closed stream'].include?($ERROR_INFO.message)
|
86
|
+
# warn("Caught: #{$ERROR_INFO.message} for #{@cmd}")
|
73
87
|
end
|
74
88
|
end
|
75
89
|
thread.join # don't exit until the external process is done
|
76
90
|
res.status = thread.value
|
77
91
|
end
|
78
|
-
rescue
|
92
|
+
rescue StandardError
|
79
93
|
end
|
80
|
-
|
94
|
+
|
81
95
|
if res.error?
|
82
96
|
error "command failed: #{@cmd}"
|
83
|
-
|
84
|
-
|
97
|
+
debug res.stdout
|
98
|
+
info res.stderr
|
85
99
|
end
|
86
100
|
if exit_on_error && res.error?
|
87
|
-
info "exiting on error"
|
101
|
+
info "command exiting on error (#{res.exitstatus})"
|
88
102
|
exit 1
|
89
103
|
end
|
90
104
|
res
|
data/lib/minfra/cli/version.rb
CHANGED
data/lib/minfra/cli.rb
CHANGED
@@ -47,6 +47,12 @@ module Minfra
|
|
47
47
|
|
48
48
|
@logger=Logger.new(STDERR)
|
49
49
|
logger.level=ENV["MINFRA_LOGGING_LEVEL"] || @config.project.minfra.logging_level || 'warn'
|
50
|
+
|
51
|
+
project_minfrarc_path = @config.base_path.join("config",'minfrarc.rb')
|
52
|
+
require project_minfrarc_path if project_minfrarc_path.exist?
|
53
|
+
me_minfrarc_path = @config.me_path.join('minfrarc.rb')
|
54
|
+
require @me_minfrarc_path if me_minfrarc_path.exist?
|
55
|
+
|
50
56
|
@logger.debug("Minfra: loglevel: #{@logger.level}, env: #{@config.orch_env}")
|
51
57
|
|
52
58
|
hiera_init
|
@@ -58,10 +64,7 @@ module Minfra
|
|
58
64
|
require_relative 'cli/main_command'
|
59
65
|
Minfra::Cli.resolve
|
60
66
|
|
61
|
-
|
62
|
-
require project_minfrarc_path if project_minfrarc_path.exist?
|
63
|
-
me_minfrarc_path = @config.me_path.join('minfrarc.rb')
|
64
|
-
require @me_minfrarc_path if me_minfrarc_path.exist?
|
67
|
+
|
65
68
|
|
66
69
|
end
|
67
70
|
|
@@ -331,6 +331,7 @@ module Orchparty
|
|
331
331
|
|
332
332
|
def initialize(name, type)
|
333
333
|
super AST.service(name: name, _type: type)
|
334
|
+
@node.files = {}
|
334
335
|
end
|
335
336
|
|
336
337
|
# 1. rememebring the secrets in environment_secrets (so these environments can be created differentyly
|
@@ -340,6 +341,18 @@ module Orchparty
|
|
340
341
|
@node.environment_secrets = result
|
341
342
|
self
|
342
343
|
end
|
344
|
+
|
345
|
+
def file(name, volume, &block)
|
346
|
+
result = FileBuilder.build(name, volume, block)
|
347
|
+
@node.files[name]=result
|
348
|
+
self
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
class FileBuilder < CommonBuilder
|
353
|
+
def initialize(name, volume)
|
354
|
+
super AST.service(filename: name, volume: volume)
|
355
|
+
end
|
343
356
|
end
|
344
357
|
|
345
358
|
class ServiceMixinBuilder < CommonBuilder
|
@@ -163,7 +163,7 @@ module Orchparty
|
|
163
163
|
def print_install(chart)
|
164
164
|
|
165
165
|
build_chart(chart) do |chart_path|
|
166
|
-
cmd="helm template --namespace #{namespace} --kube-context #{cluster_name} #{chart.name} #{chart_path}"
|
166
|
+
cmd="helm template --namespace #{namespace} --debug --kube-context #{cluster_name} #{chart.name} #{chart_path}"
|
167
167
|
@out_io.puts `$cmd`
|
168
168
|
if system("#{cmd} > /dev/null")
|
169
169
|
info("helm template check: OK")
|
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: 1.
|
4
|
+
version: 1.9.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: 2023-
|
11
|
+
date: 2023-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -237,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
237
237
|
- !ruby/object:Gem::Version
|
238
238
|
version: '0'
|
239
239
|
requirements: []
|
240
|
-
rubygems_version: 3.
|
240
|
+
rubygems_version: 3.4.6
|
241
241
|
signing_key:
|
242
242
|
specification_version: 4
|
243
243
|
summary: A cli framework for k8s based development and deployment.
|