minfra-cli 0.2.2 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c095831fd4a669abd1381046091e615395c93e367051ee051bf48c458167d63
4
- data.tar.gz: 3b7219fba8adb56249c8be8f249751613c9f9e529d7a8d9341f44c32e69271ac
3
+ metadata.gz: 3a6dedf2d900fb64c7e8b58684942c15e67199910499d8a9afc9c20459deda7d
4
+ data.tar.gz: c7f6d2b107c53169ac51830e7962c2b433f5a533d624c0ea18b23eba9eb159e1
5
5
  SHA512:
6
- metadata.gz: 45aacbd112f2797e1b177f477b9456cb955a20576a11442c8c4799609bbe6a226177d29c3ac1ff27a9b2270a1fd2fd2ac6fe4bd1ab5e813e823ff13bfd1e960c
7
- data.tar.gz: 81bd7e7366bf87ca8c048289e74ec3bc2e5819456c6b386063e1831d8465bb2cb4cc18cd573ada93a5aefdd0c5392bba50be02348a31616ff447f60975ab65e2
6
+ metadata.gz: e17628bc18b689e5033226b6cdc262dc0738423663110dcdd8ab5747c17fddcb04f486ae885b767f7b356ec10aa996a2382694ab897eaf4d945e89a4a5d91e31
7
+ data.tar.gz: 60b5b1f9055d47386232d8ce7b980f8818e1a028b51673ff9a820c92970457fc587c9b427fa5d439973cfdd5e8dbc766065eb50cf3e25052eda9fc47ef9fdd54
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 1.0.0
2
+ * adding hiera as dependecy
3
+ * removing self developped inheritance of data
4
+
1
5
  # 0.2.2 Secrets support in charts
2
6
 
3
7
  # 0.1.0 Initial
data/exe/minfra CHANGED
@@ -2,5 +2,7 @@
2
2
 
3
3
  $LOAD_PATH << File.expand_path('../lib', __dir__)
4
4
  require 'minfra/cli'
5
- Minfra::Cli::Main.start(ARGV)
5
+
6
+ Minfra::Cli.init(ARGV)
7
+ Minfra::Cli.run
6
8
 
@@ -44,10 +44,12 @@ module Minfra
44
44
  @kube_path=@me_path.join('kube')
45
45
  @kube_config_path=@kube_path.join('config')
46
46
  @kind_config_path=@me_path.join("kind.yaml.erb")
47
- @project_minfrarc_path = @base_path.join("config",'minfrarc.rb')
48
- require @project_minfrarc_path if @project_minfrarc_path.exist?
49
- @me_minfrarc_path = @me_path.join('minfrarc.rb')
50
- require @me_minfrarc_path if @me_minfrarc_path.exist?
47
+
48
+ # @project_minfrarc_path = @base_path.join("config",'minfrarc.rb')
49
+ # require @project_minfrarc_path if @project_minfrarc_path.exist?
50
+ # @me_minfrarc_path = @me_path.join('minfrarc.rb')
51
+ # require @me_minfrarc_path if @me_minfrarc_path.exist?
52
+
51
53
  if config_path.exist?
52
54
  @config = Hashie::Mash.new(JSON.parse(Minfra::Cli::Templater.render(File.read(config_path),{})))
53
55
  else
@@ -61,11 +63,7 @@ module Minfra
61
63
  debug( "loading config env: #{orch_env} #{@orch_env}" )
62
64
  return self if defined?(@orch_env)
63
65
  @orch_env = orch_env
64
- @orch_env_config = @config.environments[@orch_env] || raise(EnvironmentNotFoundError.new("Configuration for orchestration environment '#{@orch_env}' not found. Available orechstration environments: #{@config.environments.keys.inspect}"))
65
- @project= @project.
66
- deep_merge(@project.environments[@orch_env]).
67
- deep_merge(@config).
68
- deep_merge(@orch_env_config)
66
+ @orch_env_config=Hashie::Mash.new
69
67
  @orch_env_config['env']=@orch_env
70
68
  self
71
69
  end
@@ -1,5 +1,5 @@
1
1
  module Minfra
2
2
  module Cli
3
- VERSION = '0.2.2'.freeze
3
+ VERSION = '1.0.0'.freeze
4
4
  end
5
5
  end
data/lib/minfra/cli.rb CHANGED
@@ -3,6 +3,7 @@ require 'open3'
3
3
  require 'json'
4
4
  require 'ostruct'
5
5
  require 'orchparty'
6
+ require 'hiera'
6
7
 
7
8
  require_relative 'cli/logging'
8
9
  require_relative 'cli/config'
@@ -25,12 +26,75 @@ module Minfra
25
26
  module Cli
26
27
  extend Minfra::Cli::Logging
27
28
 
29
+
30
+ def self.init(argv)
31
+ @argv = argv
32
+ # we'll set the context very early!
33
+
34
+ if idx=@argv.index("-e")
35
+ @config = Config.load(@argv[idx+1])
36
+ @argv.delete_at(idx)
37
+ @argv.delete_at(idx)
38
+ else
39
+ @config = Config.load('dev')
40
+ end
41
+
42
+ hiera_init
43
+
44
+ Minfra::Cli::Plugins.load
45
+ Minfra::Cli.scan
46
+ require_relative 'cli/main_command'
47
+ Minfra::Cli.resolve
48
+
49
+ project_minfrarc_path = @config.base_path.join("config",'minfrarc.rb')
50
+ require project_minfrarc_path if project_minfrarc_path.exist?
51
+ me_minfrarc_path = @config.me_path.join('minfrarc.rb')
52
+ require @me_minfrarc_path if me_minfrarc_path.exist?
53
+
54
+ end
55
+
56
+ def self.run
57
+ Minfra::Cli::Main.start(@argv)
58
+ end
59
+
28
60
  def self.root_path
29
61
  Pathname.new(File.expand_path(File.join(__FILE__, '../../../')))
30
62
  end
31
63
 
64
+ def self.hiera_init
65
+ @hiera_root = Pathname.new("#{ENV["MINFRA_PATH"]}/hiera")
66
+ hiera = Hiera.new(:config => @hiera_root.join('hiera.yaml').to_s)
67
+ Hiera.logger=:noop
68
+ env= @config.orch_env
69
+ raise("unknown environment #{env}, I expact a file at hiera/hieradata/environments/#{env}.eyaml") unless @hiera_root.join("hieradata/environments/#{env}.eyaml").exist?
70
+
71
+
72
+ scope={ "hieraroot" => @hiera_root.to_s, "env" => env}
73
+ special_lookups=hiera.lookup("lookup_options", {}, scope, nil, :priority)
74
+
75
+ node_scope=hiera.lookup("env", {}, scope, nil, :deeper)
76
+ scope=scope.merge(node_scope)
77
+ cache={}
78
+
79
+ Kernel.define_method(:l) do |value,default=nil|
80
+ return cache[value] if cache.has_key?(value)
81
+
82
+ if special_lookups[value]
83
+ lookup_type={ merge_behavior: special_lookups[value]["merge"].to_sym }
84
+ else
85
+ lookup_type=:native #priority
86
+ end
87
+
88
+ result=hiera.lookup(value, default, scope, nil, lookup_type)
89
+ result=Hashie::Mash.new(result) if result.kind_of?(Hash)
90
+ cache[value] = result
91
+ result
92
+ end
93
+ end
94
+
95
+
32
96
  def self.config
33
- @config ||= Config.new
97
+ @config
34
98
  end
35
99
  def self.scan
36
100
  root_path.join("lib/minfra/cli/commands").each_child do |command_path|
@@ -71,10 +135,3 @@ module Minfra
71
135
  end
72
136
  end
73
137
  end
74
-
75
- Minfra::Cli::Plugins.load
76
- Minfra::Cli.scan
77
- require_relative 'cli/main_command'
78
- Minfra::Cli.resolve
79
-
80
-
@@ -158,7 +158,7 @@ module Orchparty
158
158
 
159
159
  def build_chart(chart)
160
160
  params = chart._services.map {|s| app_config.services[s.to_sym] }.map{|s| [s.name, s]}.to_h
161
- Dir.mktmpdir do |dir|
161
+ Dir.mktmpdir("#{chart.name}-") do |dir|
162
162
  run(templates_path: File.expand_path(chart.template, self.dir_path), params: params, output_chart_path: dir, chart: chart)
163
163
  yield dir
164
164
  end
@@ -294,7 +294,7 @@ class KubernetesApplication
294
294
  services = combine_charts(app_config)
295
295
  services.each do |name|
296
296
  service = app_config[:services][name]
297
- puts "Service: #{name} #{method}"
297
+ puts "Service: #{name}(#{service._type}) #{method}"
298
298
  "::Orchparty::Services::#{service._type.classify}".constantize.new(cluster_name: cluster_name, namespace: namespace, file_path: file_path, app_config: app_config, out_io: @out_io).send(method, service)
299
299
  end
300
300
  end
data/minfra-cli.gemspec CHANGED
@@ -33,4 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_runtime_dependency "hashie", "~>3.5"
34
34
  spec.add_runtime_dependency "activesupport", "~> 6.1"
35
35
  spec.add_runtime_dependency "erubis", "~> 2.7"
36
+ spec.add_runtime_dependency "hiera", "3.9.0"
37
+ spec.add_runtime_dependency "hiera-eyaml", "3.3.0"
38
+ spec.add_runtime_dependency "hiera-eyaml-gpg", "0.7.4"
36
39
  end
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: 0.2.2
4
+ version: 1.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: 2022-07-05 00:00:00.000000000 Z
11
+ date: 2022-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -100,6 +100,48 @@ dependencies:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
102
  version: '2.7'
103
+ - !ruby/object:Gem::Dependency
104
+ name: hiera
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '='
108
+ - !ruby/object:Gem::Version
109
+ version: 3.9.0
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '='
115
+ - !ruby/object:Gem::Version
116
+ version: 3.9.0
117
+ - !ruby/object:Gem::Dependency
118
+ name: hiera-eyaml
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - '='
122
+ - !ruby/object:Gem::Version
123
+ version: 3.3.0
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - '='
129
+ - !ruby/object:Gem::Version
130
+ version: 3.3.0
131
+ - !ruby/object:Gem::Dependency
132
+ name: hiera-eyaml-gpg
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - '='
136
+ - !ruby/object:Gem::Version
137
+ version: 0.7.4
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - '='
143
+ - !ruby/object:Gem::Version
144
+ version: 0.7.4
103
145
  description: A cli framework for k8s based development and deployment.
104
146
  email:
105
147
  - peter.schrammel@gmx.de
@@ -188,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
230
  - !ruby/object:Gem::Version
189
231
  version: '0'
190
232
  requirements: []
191
- rubygems_version: 3.1.2
233
+ rubygems_version: 3.1.6
192
234
  signing_key:
193
235
  specification_version: 4
194
236
  summary: A cli framework for k8s based development and deployment.