minfra-cli 0.2.2 → 1.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: 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.