kuber_kit 0.4.0 → 0.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88b8c2ffe3973bc966b245ceba37047030243d88119fd672db31efb002c67f86
4
- data.tar.gz: 5fafd218e63a669da3951b723f7167700704902006d4dd4fef13541e8ad1559b
3
+ metadata.gz: f98d973c015745f6a4ccf054e3b97edbd8302683f747842ad6c9c5b3e4e49087
4
+ data.tar.gz: f2e8eb96e320bc73c1c3b03c611d1990515bd55182a93f30b28966b63da0c591
5
5
  SHA512:
6
- metadata.gz: a1c79c0056820500948580504c533be1ba2f9ceafe282802a0bbe44021a34196706c23eb97b05e6905efc26f565719fd9a1c668ec99afdbda642261ad6e8b6e1
7
- data.tar.gz: 3e4e33cc19ff7917ee5210dcdecae40ed22cb29d93f884bdb27adf3ec8565d3397ee8715ed8e89e75ae0316a0cf9192075d5afd66ba55caf3fe4f060064c88b9
6
+ metadata.gz: d550a0a8738447c939b5f6085ef71c7b79898854ede9c6e526e07f73fd4cf6a660b5a18c4e9277f80b081dc41f21f3371aafa69099d6383c884e954b7d15d9ae
7
+ data.tar.gz: 8b8ae8685c357608a6db776443171a1ea34d387272fe72f4802164e3345c7b6bf37d558d7967e5315d8718dbcf2a6a902cad2c1e3e84bb4de0b5811b1d075574
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kuber_kit (0.4.0)
4
+ kuber_kit (0.4.1)
5
5
  cli-ui
6
6
  contracts-lite
7
7
  dry-auto_inject
@@ -10,8 +10,10 @@ class KuberKit::ServiceDeployer::Strategies::Docker < KuberKit::ServiceDeployer:
10
10
  :image_name,
11
11
  :detached,
12
12
  :command_name,
13
- :command_args,
14
- :delete_if_exists
13
+ :custom_args,
14
+ :delete_if_exists,
15
+ :volumes,
16
+ :networks,
15
17
  ]
16
18
 
17
19
  Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Service => Any
@@ -24,7 +26,9 @@ class KuberKit::ServiceDeployer::Strategies::Docker < KuberKit::ServiceDeployer:
24
26
 
25
27
  container_name = strategy_options.fetch(:container_name, service.uri)
26
28
  command_name = strategy_options.fetch(:command_name, "bash")
27
- command_args = strategy_options.fetch(:command_args, nil)
29
+ custom_args = strategy_options.fetch(:custom_args, nil)
30
+ networks = strategy_options.fetch(:networks, [])
31
+ volumes = strategy_options.fetch(:volumes, [])
28
32
 
29
33
  image_name = strategy_options.fetch(:image_name, nil)
30
34
  if image_name.nil?
@@ -37,15 +41,23 @@ class KuberKit::ServiceDeployer::Strategies::Docker < KuberKit::ServiceDeployer:
37
41
  docker_commands.delete_container(shell, container_name)
38
42
  end
39
43
 
40
- command_args = Array(command_args)
44
+ custom_args = Array(custom_args)
41
45
  if container_name
42
- command_args << "--name #{container_name}"
46
+ custom_args << "--name #{container_name}"
47
+ end
48
+ networks.each do |network|
49
+ docker_commands.create_network(shell, network)
50
+ custom_args << "--network #{network}"
51
+ end
52
+ volumes.each do |volume|
53
+ docker_commands.create_volume(shell, volume)
54
+ custom_args << "--volume #{volume}"
43
55
  end
44
56
 
45
57
  docker_commands.run(
46
58
  shell, image.remote_registry_url,
47
59
  command: command_name,
48
- args: command_args,
60
+ args: custom_args,
49
61
  detached: !!strategy_options[:detached]
50
62
  )
51
63
  end
@@ -8,7 +8,7 @@ class KuberKit::ServiceDeployer::Strategies::DockerCompose < KuberKit::ServiceDe
8
8
  STRATEGY_OPTIONS = [
9
9
  :service_name,
10
10
  :command_name,
11
- :command_args,
11
+ :custom_args,
12
12
  :detached
13
13
  ]
14
14
 
@@ -26,12 +26,12 @@ class KuberKit::ServiceDeployer::Strategies::DockerCompose < KuberKit::ServiceDe
26
26
 
27
27
  service_name = strategy_options.fetch(:service_name, service.name.to_s)
28
28
  command_name = strategy_options.fetch(:command_name, "bash")
29
- command_args = strategy_options.fetch(:command_args, nil)
29
+ custom_args = strategy_options.fetch(:custom_args, nil)
30
30
 
31
31
  docker_compose_commands.run(shell, config_path,
32
32
  service: service_name,
33
33
  command: command_name,
34
- args: command_args,
34
+ args: custom_args,
35
35
  detached: !!strategy_options[:detached]
36
36
  )
37
37
  end
@@ -30,15 +30,11 @@ class KuberKit::Shell::Commands::DockerCommands
30
30
  end
31
31
 
32
32
  def container_exists?(shell, container_name, status: nil)
33
- result = get_container_id(shell, container_name, status: status)
33
+ result = get_containers(shell, container_name, status: status)
34
34
  result && result != ""
35
35
  end
36
36
 
37
- def delete_container(shell, container_name)
38
- shell.exec!(%Q{docker rm -f #{container_name}})
39
- end
40
-
41
- def get_container_id(shell, container_name, only_healthy: false, status: nil)
37
+ def get_containers(shell, container_name, only_healthy: false, status: nil)
42
38
  command_parts = []
43
39
  command_parts << "docker ps -a -q"
44
40
 
@@ -52,4 +48,48 @@ class KuberKit::Shell::Commands::DockerCommands
52
48
 
53
49
  shell.exec!(command_parts.join(" "))
54
50
  end
51
+
52
+ def delete_container(shell, container_name)
53
+ shell.exec!("docker rm -f #{container_name}")
54
+ end
55
+
56
+ def create_network(shell, name)
57
+ unless network_exists?(shell, name)
58
+ shell.exec!("docker network create #{name}")
59
+ end
60
+ end
61
+
62
+ def network_exists?(shell, network_name)
63
+ result = get_networks(shell, network_name)
64
+ result && result != ""
65
+ end
66
+
67
+ def get_networks(shell, network_name)
68
+ command_parts = []
69
+ command_parts << "docker network ls"
70
+ command_parts << "--filter=\"name=#{network_name}\""
71
+ command_parts << "--format \"{{.Name}}\""
72
+
73
+ shell.exec!(command_parts.join(" "))
74
+ end
75
+
76
+ def create_volume(shell, name)
77
+ unless volume_exists?(shell, name)
78
+ shell.exec!("docker volume create #{name}")
79
+ end
80
+ end
81
+
82
+ def volume_exists?(shell, volume_name)
83
+ result = get_volumes(shell, volume_name)
84
+ result && result != ""
85
+ end
86
+
87
+ def get_volumes(shell, volume_name)
88
+ command_parts = []
89
+ command_parts << "docker volume ls"
90
+ command_parts << "--filter=\"name=#{volume_name}\""
91
+ command_parts << "--format \"{{.Name}}\""
92
+
93
+ shell.exec!(command_parts.join(" "))
94
+ end
55
95
  end
@@ -1,3 +1,3 @@
1
1
  module KuberKit
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuber_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iskander Khaziev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2021-01-13 00:00:00.000000000 Z
@@ -297,7 +297,7 @@ homepage: https://github.com/ArtStation/kuber_kit
297
297
  licenses:
298
298
  - MIT
299
299
  metadata: {}
300
- post_install_message:
300
+ post_install_message:
301
301
  rdoc_options: []
302
302
  require_paths:
303
303
  - lib
@@ -312,8 +312,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
312
  - !ruby/object:Gem::Version
313
313
  version: '0'
314
314
  requirements: []
315
- rubygems_version: 3.0.8
316
- signing_key:
315
+ rubygems_version: 3.0.9
316
+ signing_key:
317
317
  specification_version: 4
318
318
  summary: Docker Containers Build & Deployment
319
319
  test_files: []