kuber_kit 1.3.1 → 1.3.3

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +1 -1
  4. data/kuber_kit.gemspec +1 -0
  5. data/lib/kuber_kit/actions/service_deployer.rb +33 -26
  6. data/lib/kuber_kit/actions/service_generator.rb +20 -0
  7. data/lib/kuber_kit/artifacts_sync/artifact_updater.rb +19 -9
  8. data/lib/kuber_kit/artifacts_sync/strategies/abstract.rb +9 -0
  9. data/lib/kuber_kit/artifacts_sync/strategies/git_updater.rb +46 -0
  10. data/lib/kuber_kit/artifacts_sync/strategies/null_updater.rb +12 -0
  11. data/lib/kuber_kit/cli.rb +27 -0
  12. data/lib/kuber_kit/configs.rb +3 -1
  13. data/lib/kuber_kit/container.rb +24 -4
  14. data/lib/kuber_kit/core/artifacts/abstract_artifact.rb +4 -0
  15. data/lib/kuber_kit/core/artifacts/git.rb +6 -1
  16. data/lib/kuber_kit/core/artifacts/local.rb +4 -0
  17. data/lib/kuber_kit/core/configuration.rb +10 -6
  18. data/lib/kuber_kit/core/configuration_definition.rb +30 -9
  19. data/lib/kuber_kit/core/configuration_factory.rb +3 -1
  20. data/lib/kuber_kit/core/context_helper/abstract_helper.rb +5 -0
  21. data/lib/kuber_kit/core/context_helper/base_helper.rb +1 -7
  22. data/lib/kuber_kit/core/context_helper/context_helper_factory.rb +3 -1
  23. data/lib/kuber_kit/core/context_helper/local_context_helper.rb +14 -0
  24. data/lib/kuber_kit/core/context_helper/service_helper.rb +15 -1
  25. data/lib/kuber_kit/core/dependencies/abstract_dependency_resolver.rb +7 -0
  26. data/lib/kuber_kit/core/service.rb +8 -5
  27. data/lib/kuber_kit/core/service_definition.rb +16 -4
  28. data/lib/kuber_kit/core/service_factory.rb +2 -1
  29. data/lib/kuber_kit/defaults.rb +9 -4
  30. data/lib/kuber_kit/image_compiler/image_builder.rb +1 -1
  31. data/lib/kuber_kit/service_deployer/service_dependency_resolver.rb +1 -1
  32. data/lib/kuber_kit/service_deployer/strategies/helm.rb +2 -2
  33. data/lib/kuber_kit/service_generator/action_handler.rb +16 -0
  34. data/lib/kuber_kit/service_generator/generator.rb +26 -0
  35. data/lib/kuber_kit/service_generator/strategies/abstract.rb +5 -0
  36. data/lib/kuber_kit/service_generator/strategies/helm.rb +33 -0
  37. data/lib/kuber_kit/service_generator/strategy_detector.rb +6 -0
  38. data/lib/kuber_kit/service_reader/reader.rb +2 -10
  39. data/lib/kuber_kit/shell/commands/git_commands.rb +10 -0
  40. data/lib/kuber_kit/template_reader/reader.rb +1 -0
  41. data/lib/kuber_kit/template_reader/renderer.rb +17 -0
  42. data/lib/kuber_kit/template_reader/strategies/artifact_file.rb +1 -0
  43. data/lib/kuber_kit/version.rb +1 -1
  44. data/lib/kuber_kit.rb +21 -3
  45. metadata +28 -5
  46. data/lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb +0 -5
  47. data/lib/kuber_kit/artifacts_sync/git_artifact_resolver.rb +0 -31
  48. data/lib/kuber_kit/artifacts_sync/null_artifact_resolver.rb +0 -7
@@ -1,5 +1,5 @@
1
1
  class KuberKit::Core::ContextHelper::ServiceHelper < KuberKit::Core::ContextHelper::BaseHelper
2
- def initialize(image_store:, artifact_store:, shell:, env_file_reader:, service:)
2
+ def initialize(image_store:, artifact_store:, shell:, env_file_reader:, service:, template_renderer:)
3
3
  super(
4
4
  image_store: image_store,
5
5
  artifact_store: artifact_store,
@@ -7,6 +7,7 @@ class KuberKit::Core::ContextHelper::ServiceHelper < KuberKit::Core::ContextHelp
7
7
  env_file_reader: env_file_reader
8
8
  )
9
9
  @service = service
10
+ @template_renderer = template_renderer
10
11
  end
11
12
 
12
13
  def service_name
@@ -20,4 +21,17 @@ class KuberKit::Core::ContextHelper::ServiceHelper < KuberKit::Core::ContextHelp
20
21
  def attribute(attribute_name, default: nil)
21
22
  @service.attribute(attribute_name, default: default)
22
23
  end
24
+
25
+ Contract Maybe[String, Symbol], Hash => String
26
+ def render(template_name, variables = {})
27
+ context_helper = KuberKit::Core::ContextHelper::LocalContextHelper.new(
28
+ parent_context_helper: self,
29
+ variables: variables
30
+ )
31
+ @template_renderer.call(shell, template_name.to_sym, context_helper: context_helper)
32
+ end
33
+
34
+ def method_missing(m, *args, &block)
35
+ raise("Unknown variable: #{m} while rendering '#{service_name}' with '#{@service.template_name}' template.")
36
+ end
23
37
  end
@@ -50,6 +50,13 @@ class KuberKit::Core::Dependencies::AbstractDependencyResolver
50
50
  (deps + item_names).uniq
51
51
  end
52
52
 
53
+ # Get all dependencies for items (excluding the items themself), without any limitations
54
+ Contract Or[Symbol, ArrayOf[Symbol]] => Any
55
+ def get_all_deps(item_names)
56
+ deps = Array(item_names).map { |i| get_recursive_deps(i) }.flatten
57
+ deps.uniq - item_names
58
+ end
59
+
53
60
  def get_recursive_deps(item_name, dependency_tree: [])
54
61
  deps = get_deps(item_name)
55
62
 
@@ -1,25 +1,28 @@
1
1
  class KuberKit::Core::Service
2
2
  AttributeNotSet = Class.new(KuberKit::Error)
3
3
 
4
- attr_reader :name, :dependencies, :template_name, :tags, :images, :attributes, :deployer_strategy
4
+ attr_reader :name, :initializers, :template_name, :tags, :images, :attributes,
5
+ :deployer_strategy, :generator_strategy
5
6
 
6
7
  Contract KeywordArgs[
7
8
  name: Symbol,
8
- dependencies: ArrayOf[Symbol],
9
+ initializers: ArrayOf[Symbol],
9
10
  template_name: Maybe[Symbol],
10
11
  tags: ArrayOf[Symbol],
11
12
  images: ArrayOf[Symbol],
12
13
  attributes: HashOf[Symbol => Any],
13
- deployer_strategy: Maybe[Symbol]
14
+ deployer_strategy: Maybe[Symbol],
15
+ generator_strategy: Maybe[Symbol]
14
16
  ] => Any
15
- def initialize(name:, dependencies:, template_name:, tags:, images:, attributes:, deployer_strategy:)
17
+ def initialize(name:, initializers:, template_name:, tags:, images:, attributes:, deployer_strategy:, generator_strategy:)
16
18
  @name = name
17
- @dependencies = dependencies
19
+ @initializers = initializers
18
20
  @template_name = template_name
19
21
  @tags = tags
20
22
  @images = images
21
23
  @attributes = attributes
22
24
  @deployer_strategy = deployer_strategy
25
+ @generator_strategy = generator_strategy
23
26
  end
24
27
 
25
28
  def uri
@@ -1,26 +1,32 @@
1
1
  class KuberKit::Core::ServiceDefinition
2
- attr_reader :service_name, :template_name, :dependencies
2
+ attr_reader :service_name, :template_name, :dependencies, :initializers
3
3
 
4
4
  Contract Or[Symbol, String] => Any
5
5
  def initialize(service_name)
6
6
  @service_name = service_name.to_sym
7
- @dependencies = []
7
+ @initializers = []
8
8
  end
9
9
 
10
10
  def to_service_attrs
11
11
  OpenStruct.new(
12
12
  name: @service_name,
13
- dependencies: @dependencies,
13
+ initializers: @initializers,
14
14
  template_name: get_value(@template_name),
15
15
  tags: Array(get_value(@tags)).map(&:to_sym),
16
16
  images: Array(get_value(@images)).map(&:to_sym),
17
17
  attributes: get_value(@attributes),
18
18
  deployer_strategy: get_value(@deployer_strategy),
19
+ generator_strategy: get_value(@generator_strategy),
19
20
  )
20
21
  end
21
22
 
22
23
  def depends_on(*value, &block)
23
- @dependencies = Array(value).flatten
24
+ initialize_with(value)
25
+ self
26
+ end
27
+
28
+ def initialize_with(*value, &block)
29
+ @initializers = Array(value).flatten
24
30
  self
25
31
  end
26
32
 
@@ -54,6 +60,12 @@ class KuberKit::Core::ServiceDefinition
54
60
  self
55
61
  end
56
62
 
63
+ def generator_strategy(value = nil, &block)
64
+ @generator_strategy = block_given? ? block : value
65
+
66
+ self
67
+ end
68
+
57
69
  private
58
70
  def get_value(variable)
59
71
  variable.is_a?(Proc) ? variable.call : variable
@@ -7,12 +7,13 @@ class KuberKit::Core::ServiceFactory
7
7
 
8
8
  KuberKit::Core::Service.new(
9
9
  name: service_attrs.name,
10
- dependencies: service_attrs.dependencies,
10
+ initializers: service_attrs.initializers,
11
11
  template_name: service_attrs.template_name,
12
12
  tags: service_attrs.tags,
13
13
  images: service_attrs.images,
14
14
  attributes: attributes,
15
15
  deployer_strategy: service_attrs.deployer_strategy,
16
+ generator_strategy: service_attrs.generator_strategy,
16
17
  )
17
18
  end
18
19
  end
@@ -7,12 +7,12 @@ class KuberKit::Defaults
7
7
  end
8
8
 
9
9
  def init!
10
- container["artifacts_sync.artifact_updater"].use_resolver(
11
- container["artifacts_sync.git_artifact_resolver"],
10
+ container["artifacts_sync.artifact_updater"].use_strategy(
11
+ container["artifacts_sync.strategies.git_updater"],
12
12
  artifact_class: KuberKit::Core::Artifacts::Git
13
13
  )
14
- container["artifacts_sync.artifact_updater"].use_resolver(
15
- container["artifacts_sync.null_artifact_resolver"],
14
+ container["artifacts_sync.artifact_updater"].use_strategy(
15
+ container["artifacts_sync.strategies.null_updater"],
16
16
  artifact_class: KuberKit::Core::Artifacts::Local
17
17
  )
18
18
  container["env_file_reader.reader"].use_reader(
@@ -44,6 +44,11 @@ class KuberKit::Defaults
44
44
  KuberKit::ServiceDeployer::Strategies::Helm.new
45
45
  )
46
46
 
47
+ container["service_generator.generator"].register_strategy(
48
+ :helm,
49
+ KuberKit::ServiceGenerator::Strategies::Helm.new
50
+ )
51
+
47
52
  container["shell_launcher.launcher"].register_strategy(
48
53
  :kubernetes,
49
54
  KuberKit::ShellLauncher::Strategies::Kubernetes.new
@@ -5,7 +5,7 @@ class KuberKit::ImageCompiler::ImageBuilder
5
5
  ]
6
6
 
7
7
  Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Image, String, KeywordArgs[
8
- context_helper: Maybe[KuberKit::Core::ContextHelper::BaseHelper::CONTRACT]
8
+ context_helper: Maybe[KuberKit::Core::ContextHelper::AbstractHelper]
9
9
  ] => Any
10
10
  def build(shell, image, build_dir, context_helper: nil)
11
11
  image.before_build_callback.call(context_helper, build_dir) if image.before_build_callback
@@ -5,7 +5,7 @@ class KuberKit::ServiceDeployer::ServiceDependencyResolver < KuberKit::Core::Dep
5
5
  ]
6
6
 
7
7
  def get_deps(service_name)
8
- service_store.get_definition(service_name).dependencies
8
+ service_store.get_definition(service_name).initializers
9
9
  end
10
10
 
11
11
  def dependency_batch_size
@@ -14,8 +14,8 @@ class KuberKit::ServiceDeployer::Strategies::Helm < KuberKit::ServiceDeployer::S
14
14
  chart_config_path = File.join(chart_root_path, "Chart.yaml")
15
15
  release_path = File.join(chart_templates_path, "release.yaml")
16
16
 
17
- bash_commands.mkdir_p(shell, File.dirname(chart_root_path))
18
- bash_commands.mkdir_p(shell, File.dirname(chart_templates_path))
17
+ bash_commands.mkdir_p(shell, chart_root_path)
18
+ bash_commands.mkdir_p(shell, chart_templates_path)
19
19
 
20
20
  shell.write(release_path, service_config)
21
21
  shell.write(chart_config_path, chart_config_content(service.uri))
@@ -0,0 +1,16 @@
1
+ class KuberKit::ServiceGenerator::ActionHandler
2
+ include KuberKit::Import[
3
+ "service_generator.generator",
4
+ "service_generator.strategy_detector",
5
+ "core.service_store",
6
+ ]
7
+
8
+ Contract KuberKit::Shell::AbstractShell, Symbol, String => Any
9
+ def call(shell, service_name, export_path)
10
+ service = service_store.get_service(service_name)
11
+
12
+ strategy_name = strategy_detector.call(service)
13
+
14
+ generator.generate(shell, service, export_path, strategy_name)
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ class KuberKit::ServiceGenerator::Generator
2
+ StrategyNotFoundError = Class.new(KuberKit::NotFoundError)
3
+
4
+ include KuberKit::Import[
5
+ "core.service_store",
6
+ ]
7
+
8
+ def register_strategy(strategy_name, strategy)
9
+ @@strategies ||= {}
10
+
11
+ if !strategy.is_a?(KuberKit::ServiceGenerator::Strategies::Abstract)
12
+ raise ArgumentError.new("should be an instance of KuberKit::ServiceGenerator::Strategies::Abstract, got: #{strategy.inspect}")
13
+ end
14
+
15
+ @@strategies[strategy_name] = strategy
16
+ end
17
+
18
+ Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Service, String, Symbol => Any
19
+ def generate(shell, service, export_path, strategy_name)
20
+ generator = @@strategies[strategy_name]
21
+
22
+ raise StrategyNotFoundError, "Can't find strategy with name #{strategy_name}" if generator.nil?
23
+
24
+ generator.generate(shell, service, export_path)
25
+ end
26
+ end
@@ -0,0 +1,5 @@
1
+ class KuberKit::ServiceGenerator::Strategies::Abstract
2
+ def generate(shell, service, export_path)
3
+ raise KuberKit::NotImplementedError, "must be implemented"
4
+ end
5
+ end
@@ -0,0 +1,33 @@
1
+ class KuberKit::ServiceGenerator::Strategies::Helm < KuberKit::ServiceGenerator::Strategies::Abstract
2
+ include KuberKit::Import[
3
+ "service_reader.reader",
4
+ "shell.bash_commands",
5
+ "configs",
6
+ ]
7
+
8
+ Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Service, String => Any
9
+ def generate(shell, service, export_path)
10
+ service_config = reader.read(shell, service)
11
+ chart_root_path = File.join(export_path, "#{service.name}_chart")
12
+ chart_templates_path = File.join(chart_root_path, "templates")
13
+ chart_config_path = File.join(chart_root_path, "Chart.yaml")
14
+ release_path = File.join(chart_templates_path, "release.yaml")
15
+
16
+ bash_commands.mkdir_p(shell, chart_root_path)
17
+ bash_commands.mkdir_p(shell, chart_templates_path)
18
+
19
+ shell.write(release_path, service_config)
20
+ shell.write(chart_config_path, chart_config_content(service.uri))
21
+ end
22
+
23
+ def chart_config_content(release_name)
24
+ query = <<-CHART
25
+ apiVersion: v2
26
+ name: #{release_name}
27
+ description: #{release_name}
28
+ type: application
29
+ version: 1.0.0
30
+ appVersion: "1.0.0"
31
+ CHART
32
+ end
33
+ end
@@ -0,0 +1,6 @@
1
+ class KuberKit::ServiceGenerator::StrategyDetector
2
+ Contract KuberKit::Core::Service => Symbol
3
+ def call(service)
4
+ service.generator_strategy || KuberKit.current_configuration.generator_strategy
5
+ end
6
+ end
@@ -1,9 +1,7 @@
1
1
  class KuberKit::ServiceReader::Reader
2
2
  include KuberKit::Import[
3
- "core.template_store",
4
3
  "core.context_helper_factory",
5
- "template_reader.reader",
6
- "preprocessing.text_preprocessor"
4
+ "template_reader.renderer"
7
5
  ]
8
6
 
9
7
  AttributeNotSetError = Class.new(KuberKit::Error)
@@ -14,14 +12,8 @@ class KuberKit::ServiceReader::Reader
14
12
  raise AttributeNotSetError, "Please set template for service using #template method"
15
13
  end
16
14
 
17
- template = template_store.get(service.template_name)
18
-
19
15
  context_helper = context_helper_factory.build_service_context(shell, service)
20
16
 
21
- template = reader.read(shell, template)
22
-
23
- result = text_preprocessor.compile(template, context_helper: context_helper)
24
-
25
- result
17
+ renderer.call(shell, service.template_name, context_helper: context_helper)
26
18
  end
27
19
  end
@@ -8,6 +8,15 @@ class KuberKit::Shell::Commands::GitCommands
8
8
  return nil
9
9
  end
10
10
 
11
+ def get_branch_name(shell, git_repo_path, remote_name: "origin")
12
+ shell.exec!([
13
+ "cd #{git_repo_path}",
14
+ "git rev-parse --abbrev-ref HEAD",
15
+ ].join(" && "), merge_stderr: true)
16
+ rescue KuberKit::Shell::AbstractShell::ShellError
17
+ return nil
18
+ end
19
+
11
20
  def get_version_hash(shell, git_repo_path)
12
21
  shell.exec!([
13
22
  "cd #{git_repo_path}",
@@ -28,6 +37,7 @@ class KuberKit::Shell::Commands::GitCommands
28
37
  "cd #{path}",
29
38
  "git add .",
30
39
  "git reset HEAD --hard",
40
+ "git fetch origin #{branch}",
31
41
  "git checkout #{branch}",
32
42
  "git reset --hard '@{u}'",
33
43
  "git pull --force",
@@ -11,6 +11,7 @@ class KuberKit::TemplateReader::Reader
11
11
  @@readers[template_class] = template_reader
12
12
  end
13
13
 
14
+ Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Templates::AbstractTemplate => String
14
15
  def read(shell, template)
15
16
  reader = @@readers[template.class]
16
17
 
@@ -0,0 +1,17 @@
1
+ class KuberKit::TemplateReader::Renderer
2
+ include KuberKit::Import[
3
+ "core.template_store",
4
+ "preprocessing.text_preprocessor",
5
+ template_reader: "template_reader.reader"
6
+ ]
7
+
8
+
9
+ Contract KuberKit::Shell::AbstractShell, Symbol, KeywordArgs[
10
+ context_helper: KuberKit::Core::ContextHelper::AbstractHelper
11
+ ] => String
12
+ def call(shell, template_name, context_helper:)
13
+ template = template_store.get(template_name)
14
+ template_text = template_reader.read(shell, template)
15
+ text_preprocessor.compile(template_text, context_helper: context_helper)
16
+ end
17
+ end
@@ -3,6 +3,7 @@ class KuberKit::TemplateReader::Strategies::ArtifactFile < KuberKit::TemplateRea
3
3
  "core.artifact_store"
4
4
  ]
5
5
 
6
+ Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Templates::AbstractTemplate => String
6
7
  def read(shell, template)
7
8
  artifact = artifact_store.get(template.artifact_name)
8
9
 
@@ -1,3 +1,3 @@
1
1
  module KuberKit
2
- VERSION = "1.3.1"
2
+ VERSION = "1.3.3"
3
3
  end
data/lib/kuber_kit.rb CHANGED
@@ -61,11 +61,13 @@ module KuberKit
61
61
  end
62
62
 
63
63
  module ContextHelper
64
+ autoload :AbstractHelper, 'core/context_helper/abstract_helper'
64
65
  autoload :BaseHelper, 'core/context_helper/base_helper'
65
66
  autoload :ImageHelper, 'core/context_helper/image_helper'
66
67
  autoload :ServiceHelper, 'core/context_helper/service_helper'
67
68
  autoload :ContextHelperFactory, 'core/context_helper/context_helper_factory'
68
69
  autoload :ContextVars, 'core/context_helper/context_vars'
70
+ autoload :LocalContextHelper, 'core/context_helper/local_context_helper'
69
71
  end
70
72
 
71
73
  module Registries
@@ -125,10 +127,13 @@ module KuberKit
125
127
  end
126
128
 
127
129
  module ArtifactsSync
128
- autoload :AbstractArtifactResolver, 'artifacts_sync/abstract_artifact_resolver'
129
130
  autoload :ArtifactUpdater, 'artifacts_sync/artifact_updater'
130
- autoload :GitArtifactResolver, 'artifacts_sync/git_artifact_resolver'
131
- autoload :NullArtifactResolver, 'artifacts_sync/null_artifact_resolver'
131
+
132
+ module Strategies
133
+ autoload :Abstract, 'artifacts_sync/strategies/abstract'
134
+ autoload :GitUpdater, 'artifacts_sync/strategies/git_updater'
135
+ autoload :NullUpdater, 'artifacts_sync/strategies/null_updater'
136
+ end
132
137
  end
133
138
 
134
139
  module EnvFileReader
@@ -147,6 +152,7 @@ module KuberKit
147
152
  module TemplateReader
148
153
  autoload :ActionHandler, 'template_reader/action_handler'
149
154
  autoload :Reader, 'template_reader/reader'
155
+ autoload :Renderer, 'template_reader/renderer'
150
156
 
151
157
  module Strategies
152
158
  autoload :Abstract, 'template_reader/strategies/abstract'
@@ -171,6 +177,17 @@ module KuberKit
171
177
  end
172
178
  end
173
179
 
180
+ module ServiceGenerator
181
+ autoload :ActionHandler, 'service_generator/action_handler'
182
+ autoload :StrategyDetector, 'service_generator/strategy_detector'
183
+ autoload :Generator, 'service_generator/generator'
184
+
185
+ module Strategies
186
+ autoload :Abstract, 'service_generator/strategies/abstract'
187
+ autoload :Helm, 'service_generator/strategies/helm'
188
+ end
189
+ end
190
+
174
191
  module ServiceReader
175
192
  autoload :ActionHandler, 'service_reader/action_handler'
176
193
  autoload :Reader, 'service_reader/reader'
@@ -194,6 +211,7 @@ module KuberKit
194
211
  autoload :ServiceReader, 'actions/service_reader'
195
212
  autoload :ServiceDeployer, 'actions/service_deployer'
196
213
  autoload :ServiceChecker, 'actions/service_checker'
214
+ autoload :ServiceGenerator, 'actions/service_generator'
197
215
  autoload :ConfigurationLoader, 'actions/configuration_loader'
198
216
  autoload :KubectlApplier, 'actions/kubectl_applier'
199
217
  autoload :KubectlAttacher, 'actions/kubectl_attacher'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuber_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iskander Khaziev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-15 00:00:00.000000000 Z
11
+ date: 2023-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: contracts
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: ed25519
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: bundler
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -259,13 +273,14 @@ files:
259
273
  - lib/kuber_kit/actions/kubectl_logs.rb
260
274
  - lib/kuber_kit/actions/service_checker.rb
261
275
  - lib/kuber_kit/actions/service_deployer.rb
276
+ - lib/kuber_kit/actions/service_generator.rb
262
277
  - lib/kuber_kit/actions/service_reader.rb
263
278
  - lib/kuber_kit/actions/shell_launcher.rb
264
279
  - lib/kuber_kit/actions/template_reader.rb
265
- - lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb
266
280
  - lib/kuber_kit/artifacts_sync/artifact_updater.rb
267
- - lib/kuber_kit/artifacts_sync/git_artifact_resolver.rb
268
- - lib/kuber_kit/artifacts_sync/null_artifact_resolver.rb
281
+ - lib/kuber_kit/artifacts_sync/strategies/abstract.rb
282
+ - lib/kuber_kit/artifacts_sync/strategies/git_updater.rb
283
+ - lib/kuber_kit/artifacts_sync/strategies/null_updater.rb
269
284
  - lib/kuber_kit/cli.rb
270
285
  - lib/kuber_kit/configs.rb
271
286
  - lib/kuber_kit/container.rb
@@ -283,10 +298,12 @@ files:
283
298
  - lib/kuber_kit/core/configuration_definition_factory.rb
284
299
  - lib/kuber_kit/core/configuration_factory.rb
285
300
  - lib/kuber_kit/core/configuration_store.rb
301
+ - lib/kuber_kit/core/context_helper/abstract_helper.rb
286
302
  - lib/kuber_kit/core/context_helper/base_helper.rb
287
303
  - lib/kuber_kit/core/context_helper/context_helper_factory.rb
288
304
  - lib/kuber_kit/core/context_helper/context_vars.rb
289
305
  - lib/kuber_kit/core/context_helper/image_helper.rb
306
+ - lib/kuber_kit/core/context_helper/local_context_helper.rb
290
307
  - lib/kuber_kit/core/context_helper/service_helper.rb
291
308
  - lib/kuber_kit/core/dependencies/abstract_dependency_resolver.rb
292
309
  - lib/kuber_kit/core/env_files/abstract_env_file.rb
@@ -346,6 +363,11 @@ files:
346
363
  - lib/kuber_kit/service_deployer/strategies/helm.rb
347
364
  - lib/kuber_kit/service_deployer/strategies/kubernetes.rb
348
365
  - lib/kuber_kit/service_deployer/strategy_detector.rb
366
+ - lib/kuber_kit/service_generator/action_handler.rb
367
+ - lib/kuber_kit/service_generator/generator.rb
368
+ - lib/kuber_kit/service_generator/strategies/abstract.rb
369
+ - lib/kuber_kit/service_generator/strategies/helm.rb
370
+ - lib/kuber_kit/service_generator/strategy_detector.rb
349
371
  - lib/kuber_kit/service_reader/action_handler.rb
350
372
  - lib/kuber_kit/service_reader/reader.rb
351
373
  - lib/kuber_kit/shell/abstract_shell.rb
@@ -367,6 +389,7 @@ files:
367
389
  - lib/kuber_kit/shell_launcher/strategies/kubernetes.rb
368
390
  - lib/kuber_kit/template_reader/action_handler.rb
369
391
  - lib/kuber_kit/template_reader/reader.rb
392
+ - lib/kuber_kit/template_reader/renderer.rb
370
393
  - lib/kuber_kit/template_reader/strategies/abstract.rb
371
394
  - lib/kuber_kit/template_reader/strategies/artifact_file.rb
372
395
  - lib/kuber_kit/tools/build_dir_cleaner.rb
@@ -1,5 +0,0 @@
1
- class KuberKit::ArtifactsSync::AbstractArtifactResolver
2
- def resolve(shell, artifact)
3
- raise KuberKit::NotImplementedError, "must be implemented"
4
- end
5
- end
@@ -1,31 +0,0 @@
1
- class KuberKit::ArtifactsSync::GitArtifactResolver < KuberKit::ArtifactsSync::AbstractArtifactResolver
2
-
3
- include KuberKit::Import[
4
- "shell.git_commands",
5
- ]
6
-
7
- Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Artifacts::Git => Any
8
- def resolve(shell, artifact)
9
- already_cloned = artifact_already_cloned?(
10
- shell: shell,
11
- target_path: artifact.cloned_path,
12
- remote_url: artifact.remote_url,
13
- )
14
-
15
- if already_cloned
16
- git_commands.force_pull_repo(shell,
17
- path: artifact.cloned_path, branch: artifact.branch
18
- )
19
- else
20
- git_commands.download_repo(shell,
21
- remote_url: artifact.remote_url, path: artifact.cloned_path, branch: artifact.branch
22
- )
23
- end
24
- end
25
-
26
- private
27
- def artifact_already_cloned?(shell:, target_path:, remote_url:)
28
- target_remote_url = git_commands.get_remote_url(shell, target_path)
29
- target_remote_url == remote_url
30
- end
31
- end
@@ -1,7 +0,0 @@
1
- class KuberKit::ArtifactsSync::NullArtifactResolver < KuberKit::ArtifactsSync::AbstractArtifactResolver
2
-
3
- Contract KuberKit::Shell::AbstractShell, Any => Any
4
- def resolve(shell, artifact)
5
- return true
6
- end
7
- end