kuber_kit 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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: []