kuber_kit 0.1.8 → 0.1.9
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/Gemfile.lock +3 -1
- data/README.md +16 -3
- data/TODO.md +1 -3
- data/example/configurations/review.rb +2 -1
- data/example/images/app_sources/Dockerfile +1 -1
- data/example/images/ruby_app/image.rb +4 -4
- data/example/infrastructure/build_servers.rb +8 -0
- data/kuber_kit.gemspec +1 -0
- data/lib/kuber_kit.rb +36 -19
- data/lib/kuber_kit/actions/configuration_loader.rb +3 -0
- data/lib/kuber_kit/actions/env_file_reader.rb +3 -0
- data/lib/kuber_kit/actions/image_compiler.rb +14 -10
- data/lib/kuber_kit/actions/kubectl_applier.rb +4 -1
- data/lib/kuber_kit/actions/service_deployer.rb +4 -0
- data/lib/kuber_kit/actions/service_reader.rb +4 -0
- data/lib/kuber_kit/actions/template_reader.rb +3 -0
- data/lib/kuber_kit/cli.rb +12 -6
- data/lib/kuber_kit/configs.rb +24 -22
- data/lib/kuber_kit/container.rb +17 -13
- data/lib/kuber_kit/core/artifacts/artifact_store.rb +9 -28
- data/lib/kuber_kit/core/build_servers/abstract_build_server.rb +21 -0
- data/lib/kuber_kit/core/build_servers/build_server.rb +24 -0
- data/lib/kuber_kit/core/build_servers/build_server_store.rb +18 -0
- data/lib/kuber_kit/core/configuration.rb +7 -3
- data/lib/kuber_kit/core/configuration_definition.rb +10 -0
- data/lib/kuber_kit/core/configuration_factory.rb +10 -1
- data/lib/kuber_kit/core/configuration_store.rb +14 -24
- data/lib/kuber_kit/core/env_files/env_file_store.rb +8 -23
- data/lib/kuber_kit/core/image_store.rb +8 -18
- data/lib/kuber_kit/core/registries/registry_store.rb +8 -23
- data/lib/kuber_kit/core/service_store.rb +13 -23
- data/lib/kuber_kit/core/store.rb +48 -0
- data/lib/kuber_kit/core/templates/template_store.rb +9 -28
- data/lib/kuber_kit/image_compiler/build_server_pool.rb +30 -0
- data/lib/kuber_kit/image_compiler/build_server_pool_factory.rb +13 -0
- data/lib/kuber_kit/image_compiler/image_build_dir_creator.rb +13 -7
- data/lib/kuber_kit/image_compiler/image_dependency_resolver.rb +25 -5
- data/lib/kuber_kit/preprocessing/file_preprocessor.rb +5 -4
- data/lib/kuber_kit/shell/abstract_shell.rb +4 -0
- data/lib/kuber_kit/shell/{bash_commands.rb → commands/bash_commands.rb} +1 -1
- data/lib/kuber_kit/shell/{docker_commands.rb → commands/docker_commands.rb} +1 -1
- data/lib/kuber_kit/shell/{git_commands.rb → commands/git_commands.rb} +1 -1
- data/lib/kuber_kit/shell/{kubectl_commands.rb → commands/kubectl_commands.rb} +1 -1
- data/lib/kuber_kit/shell/{rsync_commands.rb → commands/rsync_commands.rb} +9 -3
- data/lib/kuber_kit/shell/local_shell.rb +24 -5
- data/lib/kuber_kit/shell/ssh_session.rb +60 -0
- data/lib/kuber_kit/shell/ssh_shell.rb +77 -0
- data/lib/kuber_kit/tools/file_presence_checker.rb +6 -2
- data/lib/kuber_kit/version.rb +1 -1
- metadata +30 -9
- data/lib/kuber_kit/preprocessing/dir_preprocessor.rb +0 -19
- data/lib/kuber_kit/tools/files_sync.rb +0 -10
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
|
3
|
+
class KuberKit::Shell::SshShell < KuberKit::Shell::LocalShell
|
4
|
+
include KuberKit::Import[
|
5
|
+
"tools.logger",
|
6
|
+
"shell.command_counter",
|
7
|
+
"shell.rsync_commands",
|
8
|
+
"shell.local_shell"
|
9
|
+
]
|
10
|
+
|
11
|
+
def connect(host:, user:, port:)
|
12
|
+
@ssh_session = KuberKit::Shell::SshSession.new(host: host, user: user, port: port)
|
13
|
+
end
|
14
|
+
|
15
|
+
def connected?
|
16
|
+
@ssh_session && @ssh_session.connected?
|
17
|
+
end
|
18
|
+
|
19
|
+
def disconnect
|
20
|
+
@ssh_session.disconnect if @ssh_session
|
21
|
+
end
|
22
|
+
|
23
|
+
def exec!(command, log_command: true)
|
24
|
+
command_number = command_counter.get_number.to_s.rjust(2, "0")
|
25
|
+
|
26
|
+
if log_command
|
27
|
+
logger.info("#{ssh_session.host.green} > Execute: [#{command_number}]: #{command.to_s.cyan}")
|
28
|
+
end
|
29
|
+
|
30
|
+
result = ssh_session.exec!(command)
|
31
|
+
|
32
|
+
if result && result != "" && log_command
|
33
|
+
logger.info("#{ssh_session.host.green} > Finished [#{command_number}] with result: \n#{result.grey}")
|
34
|
+
end
|
35
|
+
|
36
|
+
result
|
37
|
+
rescue KuberKit::Shell::SshSession::SshSessionError => e
|
38
|
+
raise ShellError.new(e.message)
|
39
|
+
end
|
40
|
+
|
41
|
+
def sync(local_path, remote_path, exclude: nil)
|
42
|
+
rsync_commands.rsync(
|
43
|
+
local_shell, local_path, remote_path,
|
44
|
+
target_host: "#{ssh_session.user}@#{ssh_session.host}",
|
45
|
+
exclude: exclude
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
def read(file_path)
|
50
|
+
exec!("cat #{file_path}")
|
51
|
+
end
|
52
|
+
|
53
|
+
def write(file_path, content)
|
54
|
+
Tempfile.create do |file|
|
55
|
+
file << content
|
56
|
+
file.flush
|
57
|
+
sync(file.path, file_path)
|
58
|
+
end
|
59
|
+
|
60
|
+
logger.info("Created file #{file_path.to_s.cyan}\r\n#{content.grey}")
|
61
|
+
|
62
|
+
true
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
def ssh_session
|
67
|
+
unless connected?
|
68
|
+
raise ArgumentError, "ssh session is not created, please call #connect"
|
69
|
+
end
|
70
|
+
|
71
|
+
@ssh_session
|
72
|
+
end
|
73
|
+
|
74
|
+
def ensure_directory_exists(file_path)
|
75
|
+
exec!("mkdir -p #{file_path}")
|
76
|
+
end
|
77
|
+
end
|
@@ -1,6 +1,10 @@
|
|
1
1
|
class KuberKit::Tools::FilePresenceChecker
|
2
2
|
FileNotFound = Class.new(KuberKit::Error)
|
3
3
|
|
4
|
+
include KuberKit::Import[
|
5
|
+
"shell.local_shell"
|
6
|
+
]
|
7
|
+
|
4
8
|
def check_file!(file_path)
|
5
9
|
unless file_exists?(file_path)
|
6
10
|
raise FileNotFound, "File not found at path: #{file_path}"
|
@@ -9,7 +13,7 @@ class KuberKit::Tools::FilePresenceChecker
|
|
9
13
|
end
|
10
14
|
|
11
15
|
def file_exists?(file_path)
|
12
|
-
|
16
|
+
local_shell.file_exists?(file_path)
|
13
17
|
end
|
14
18
|
|
15
19
|
def check_dir!(dir_path)
|
@@ -20,6 +24,6 @@ class KuberKit::Tools::FilePresenceChecker
|
|
20
24
|
end
|
21
25
|
|
22
26
|
def dir_exists?(dir_path)
|
23
|
-
|
27
|
+
local_shell.dir_exists?(dir_path)
|
24
28
|
end
|
25
29
|
end
|
data/lib/kuber_kit/version.rb
CHANGED
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: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iskander Khaziev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: contracts-lite
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: net-ssh
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: bundler
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -161,6 +175,7 @@ files:
|
|
161
175
|
- example/images/ruby_app2/build_context/example_file.txt
|
162
176
|
- example/images/ruby_app2/image.rb
|
163
177
|
- example/infrastructure/artifacts.rb
|
178
|
+
- example/infrastructure/build_servers.rb
|
164
179
|
- example/infrastructure/env_files.rb
|
165
180
|
- example/infrastructure/registries.rb
|
166
181
|
- example/infrastructure/templates.rb
|
@@ -186,6 +201,9 @@ files:
|
|
186
201
|
- lib/kuber_kit/core/artifacts/artifact_store.rb
|
187
202
|
- lib/kuber_kit/core/artifacts/git.rb
|
188
203
|
- lib/kuber_kit/core/artifacts/local.rb
|
204
|
+
- lib/kuber_kit/core/build_servers/abstract_build_server.rb
|
205
|
+
- lib/kuber_kit/core/build_servers/build_server.rb
|
206
|
+
- lib/kuber_kit/core/build_servers/build_server_store.rb
|
189
207
|
- lib/kuber_kit/core/configuration.rb
|
190
208
|
- lib/kuber_kit/core/configuration_definition.rb
|
191
209
|
- lib/kuber_kit/core/configuration_definition_factory.rb
|
@@ -211,6 +229,7 @@ files:
|
|
211
229
|
- lib/kuber_kit/core/service_definition_factory.rb
|
212
230
|
- lib/kuber_kit/core/service_factory.rb
|
213
231
|
- lib/kuber_kit/core/service_store.rb
|
232
|
+
- lib/kuber_kit/core/store.rb
|
214
233
|
- lib/kuber_kit/core/templates/abstract_template.rb
|
215
234
|
- lib/kuber_kit/core/templates/artifact_file.rb
|
216
235
|
- lib/kuber_kit/core/templates/template_store.rb
|
@@ -223,12 +242,13 @@ files:
|
|
223
242
|
- lib/kuber_kit/extensions/indocker_compat.rb
|
224
243
|
- lib/kuber_kit/extensions/inspectable.rb
|
225
244
|
- lib/kuber_kit/image_compiler/action_handler.rb
|
245
|
+
- lib/kuber_kit/image_compiler/build_server_pool.rb
|
246
|
+
- lib/kuber_kit/image_compiler/build_server_pool_factory.rb
|
226
247
|
- lib/kuber_kit/image_compiler/compiler.rb
|
227
248
|
- lib/kuber_kit/image_compiler/image_build_dir_creator.rb
|
228
249
|
- lib/kuber_kit/image_compiler/image_builder.rb
|
229
250
|
- lib/kuber_kit/image_compiler/image_dependency_resolver.rb
|
230
251
|
- lib/kuber_kit/image_compiler/version_tag_builder.rb
|
231
|
-
- lib/kuber_kit/preprocessing/dir_preprocessor.rb
|
232
252
|
- lib/kuber_kit/preprocessing/file_preprocessor.rb
|
233
253
|
- lib/kuber_kit/preprocessing/text_preprocessor.rb
|
234
254
|
- lib/kuber_kit/service_deployer/action_handler.rb
|
@@ -240,18 +260,19 @@ files:
|
|
240
260
|
- lib/kuber_kit/service_reader/action_handler.rb
|
241
261
|
- lib/kuber_kit/service_reader/reader.rb
|
242
262
|
- lib/kuber_kit/shell/abstract_shell.rb
|
243
|
-
- lib/kuber_kit/shell/bash_commands.rb
|
244
263
|
- lib/kuber_kit/shell/command_counter.rb
|
245
|
-
- lib/kuber_kit/shell/
|
246
|
-
- lib/kuber_kit/shell/
|
247
|
-
- lib/kuber_kit/shell/
|
264
|
+
- lib/kuber_kit/shell/commands/bash_commands.rb
|
265
|
+
- lib/kuber_kit/shell/commands/docker_commands.rb
|
266
|
+
- lib/kuber_kit/shell/commands/git_commands.rb
|
267
|
+
- lib/kuber_kit/shell/commands/kubectl_commands.rb
|
268
|
+
- lib/kuber_kit/shell/commands/rsync_commands.rb
|
248
269
|
- lib/kuber_kit/shell/local_shell.rb
|
249
|
-
- lib/kuber_kit/shell/
|
270
|
+
- lib/kuber_kit/shell/ssh_session.rb
|
271
|
+
- lib/kuber_kit/shell/ssh_shell.rb
|
250
272
|
- lib/kuber_kit/template_reader/abstract_template_reader.rb
|
251
273
|
- lib/kuber_kit/template_reader/artifact_file_reader.rb
|
252
274
|
- lib/kuber_kit/template_reader/reader.rb
|
253
275
|
- lib/kuber_kit/tools/file_presence_checker.rb
|
254
|
-
- lib/kuber_kit/tools/files_sync.rb
|
255
276
|
- lib/kuber_kit/tools/logger_factory.rb
|
256
277
|
- lib/kuber_kit/ui.rb
|
257
278
|
- lib/kuber_kit/ui/interactive.rb
|
@@ -1,19 +0,0 @@
|
|
1
|
-
class KuberKit::Preprocessing::DirPreprocessor
|
2
|
-
include KuberKit::Import[
|
3
|
-
"preprocessing.file_preprocessor",
|
4
|
-
"shell.bash_commands"
|
5
|
-
]
|
6
|
-
|
7
|
-
def compile(shell, source_dir, destination_dir, context_helper: nil)
|
8
|
-
shell.recursive_list_files(source_dir).each do |source_file_path|
|
9
|
-
relative_path = source_file_path.sub(source_dir, '')
|
10
|
-
destination_file_path = File.join(destination_dir, relative_path)
|
11
|
-
|
12
|
-
file_preprocessor.compile(
|
13
|
-
shell, source_file_path,
|
14
|
-
destination_path: destination_file_path,
|
15
|
-
context_helper: context_helper
|
16
|
-
)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|