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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -1
  3. data/README.md +16 -3
  4. data/TODO.md +1 -3
  5. data/example/configurations/review.rb +2 -1
  6. data/example/images/app_sources/Dockerfile +1 -1
  7. data/example/images/ruby_app/image.rb +4 -4
  8. data/example/infrastructure/build_servers.rb +8 -0
  9. data/kuber_kit.gemspec +1 -0
  10. data/lib/kuber_kit.rb +36 -19
  11. data/lib/kuber_kit/actions/configuration_loader.rb +3 -0
  12. data/lib/kuber_kit/actions/env_file_reader.rb +3 -0
  13. data/lib/kuber_kit/actions/image_compiler.rb +14 -10
  14. data/lib/kuber_kit/actions/kubectl_applier.rb +4 -1
  15. data/lib/kuber_kit/actions/service_deployer.rb +4 -0
  16. data/lib/kuber_kit/actions/service_reader.rb +4 -0
  17. data/lib/kuber_kit/actions/template_reader.rb +3 -0
  18. data/lib/kuber_kit/cli.rb +12 -6
  19. data/lib/kuber_kit/configs.rb +24 -22
  20. data/lib/kuber_kit/container.rb +17 -13
  21. data/lib/kuber_kit/core/artifacts/artifact_store.rb +9 -28
  22. data/lib/kuber_kit/core/build_servers/abstract_build_server.rb +21 -0
  23. data/lib/kuber_kit/core/build_servers/build_server.rb +24 -0
  24. data/lib/kuber_kit/core/build_servers/build_server_store.rb +18 -0
  25. data/lib/kuber_kit/core/configuration.rb +7 -3
  26. data/lib/kuber_kit/core/configuration_definition.rb +10 -0
  27. data/lib/kuber_kit/core/configuration_factory.rb +10 -1
  28. data/lib/kuber_kit/core/configuration_store.rb +14 -24
  29. data/lib/kuber_kit/core/env_files/env_file_store.rb +8 -23
  30. data/lib/kuber_kit/core/image_store.rb +8 -18
  31. data/lib/kuber_kit/core/registries/registry_store.rb +8 -23
  32. data/lib/kuber_kit/core/service_store.rb +13 -23
  33. data/lib/kuber_kit/core/store.rb +48 -0
  34. data/lib/kuber_kit/core/templates/template_store.rb +9 -28
  35. data/lib/kuber_kit/image_compiler/build_server_pool.rb +30 -0
  36. data/lib/kuber_kit/image_compiler/build_server_pool_factory.rb +13 -0
  37. data/lib/kuber_kit/image_compiler/image_build_dir_creator.rb +13 -7
  38. data/lib/kuber_kit/image_compiler/image_dependency_resolver.rb +25 -5
  39. data/lib/kuber_kit/preprocessing/file_preprocessor.rb +5 -4
  40. data/lib/kuber_kit/shell/abstract_shell.rb +4 -0
  41. data/lib/kuber_kit/shell/{bash_commands.rb → commands/bash_commands.rb} +1 -1
  42. data/lib/kuber_kit/shell/{docker_commands.rb → commands/docker_commands.rb} +1 -1
  43. data/lib/kuber_kit/shell/{git_commands.rb → commands/git_commands.rb} +1 -1
  44. data/lib/kuber_kit/shell/{kubectl_commands.rb → commands/kubectl_commands.rb} +1 -1
  45. data/lib/kuber_kit/shell/{rsync_commands.rb → commands/rsync_commands.rb} +9 -3
  46. data/lib/kuber_kit/shell/local_shell.rb +24 -5
  47. data/lib/kuber_kit/shell/ssh_session.rb +60 -0
  48. data/lib/kuber_kit/shell/ssh_shell.rb +77 -0
  49. data/lib/kuber_kit/tools/file_presence_checker.rb +6 -2
  50. data/lib/kuber_kit/version.rb +1 -1
  51. metadata +30 -9
  52. data/lib/kuber_kit/preprocessing/dir_preprocessor.rb +0 -19
  53. 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
- File.exists?(file_path)
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
- Dir.exists?(dir_path)
27
+ local_shell.dir_exists?(dir_path)
24
28
  end
25
29
  end
@@ -1,3 +1,3 @@
1
1
  module KuberKit
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
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.8
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-03 00:00:00.000000000 Z
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/docker_commands.rb
246
- - lib/kuber_kit/shell/git_commands.rb
247
- - lib/kuber_kit/shell/kubectl_commands.rb
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/rsync_commands.rb
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
@@ -1,10 +0,0 @@
1
- class KuberKit::Tools::FilesSync
2
- include KuberKit::Import[
3
- "shell.rsync_commands",
4
- "shell.local_shell"
5
- ]
6
-
7
- def sync(from_path, to_path, exclude: nil)
8
- rsync_commands.rsync(local_shell, from_path, to_path, exclude: exclude)
9
- end
10
- end