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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +1 -1
- data/kuber_kit.gemspec +1 -0
- data/lib/kuber_kit/actions/service_deployer.rb +33 -26
- data/lib/kuber_kit/actions/service_generator.rb +20 -0
- data/lib/kuber_kit/artifacts_sync/artifact_updater.rb +19 -9
- data/lib/kuber_kit/artifacts_sync/strategies/abstract.rb +9 -0
- data/lib/kuber_kit/artifacts_sync/strategies/git_updater.rb +46 -0
- data/lib/kuber_kit/artifacts_sync/strategies/null_updater.rb +12 -0
- data/lib/kuber_kit/cli.rb +27 -0
- data/lib/kuber_kit/configs.rb +3 -1
- data/lib/kuber_kit/container.rb +24 -4
- data/lib/kuber_kit/core/artifacts/abstract_artifact.rb +4 -0
- data/lib/kuber_kit/core/artifacts/git.rb +6 -1
- data/lib/kuber_kit/core/artifacts/local.rb +4 -0
- data/lib/kuber_kit/core/configuration.rb +10 -6
- data/lib/kuber_kit/core/configuration_definition.rb +30 -9
- data/lib/kuber_kit/core/configuration_factory.rb +3 -1
- data/lib/kuber_kit/core/context_helper/abstract_helper.rb +5 -0
- data/lib/kuber_kit/core/context_helper/base_helper.rb +1 -7
- data/lib/kuber_kit/core/context_helper/context_helper_factory.rb +3 -1
- data/lib/kuber_kit/core/context_helper/local_context_helper.rb +14 -0
- data/lib/kuber_kit/core/context_helper/service_helper.rb +15 -1
- data/lib/kuber_kit/core/dependencies/abstract_dependency_resolver.rb +7 -0
- data/lib/kuber_kit/core/service.rb +8 -5
- data/lib/kuber_kit/core/service_definition.rb +16 -4
- data/lib/kuber_kit/core/service_factory.rb +2 -1
- data/lib/kuber_kit/defaults.rb +9 -4
- data/lib/kuber_kit/image_compiler/image_builder.rb +1 -1
- data/lib/kuber_kit/service_deployer/service_dependency_resolver.rb +1 -1
- data/lib/kuber_kit/service_deployer/strategies/helm.rb +2 -2
- data/lib/kuber_kit/service_generator/action_handler.rb +16 -0
- data/lib/kuber_kit/service_generator/generator.rb +26 -0
- data/lib/kuber_kit/service_generator/strategies/abstract.rb +5 -0
- data/lib/kuber_kit/service_generator/strategies/helm.rb +33 -0
- data/lib/kuber_kit/service_generator/strategy_detector.rb +6 -0
- data/lib/kuber_kit/service_reader/reader.rb +2 -10
- data/lib/kuber_kit/shell/commands/git_commands.rb +10 -0
- data/lib/kuber_kit/template_reader/reader.rb +1 -0
- data/lib/kuber_kit/template_reader/renderer.rb +17 -0
- data/lib/kuber_kit/template_reader/strategies/artifact_file.rb +1 -0
- data/lib/kuber_kit/version.rb +1 -1
- data/lib/kuber_kit.rb +21 -3
- metadata +28 -5
- data/lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb +0 -5
- data/lib/kuber_kit/artifacts_sync/git_artifact_resolver.rb +0 -31
- 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, :
|
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
|
-
|
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:,
|
17
|
+
def initialize(name:, initializers:, template_name:, tags:, images:, attributes:, deployer_strategy:, generator_strategy:)
|
16
18
|
@name = name
|
17
|
-
@
|
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
|
-
@
|
7
|
+
@initializers = []
|
8
8
|
end
|
9
9
|
|
10
10
|
def to_service_attrs
|
11
11
|
OpenStruct.new(
|
12
12
|
name: @service_name,
|
13
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/kuber_kit/defaults.rb
CHANGED
@@ -7,12 +7,12 @@ class KuberKit::Defaults
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def init!
|
10
|
-
container["artifacts_sync.artifact_updater"].
|
11
|
-
container["artifacts_sync.
|
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"].
|
15
|
-
container["artifacts_sync.
|
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::
|
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).
|
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,
|
18
|
-
bash_commands.mkdir_p(shell,
|
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,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
|
@@ -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.
|
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
|
-
|
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
|
|
data/lib/kuber_kit/version.rb
CHANGED
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
|
-
|
131
|
-
|
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.
|
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-
|
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/
|
268
|
-
- lib/kuber_kit/artifacts_sync/
|
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,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
|