takelage 0.28.24 → 0.29.10
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/README.md +1 -5
- data/lib/takelage.rb +4 -8
- data/lib/takelage/default.yml +6 -10
- data/lib/takelage/docker/cli.rb +0 -3
- data/lib/takelage/docker/container/cli.rb +4 -7
- data/lib/takelage/docker/container/command.rb +6 -3
- data/lib/takelage/docker/container/daemon.rb +1 -1
- data/lib/takelage/docker/container/lib.rb +15 -18
- data/lib/takelage/docker/container/login.rb +26 -4
- data/lib/takelage/info/status/bar.rb +6 -0
- data/lib/takelage/info/status/cli.rb +0 -3
- data/lib/takelage/info/status/ssh.rb +6 -1
- data/lib/takelage/lib/system.rb +20 -0
- data/lib/takelage/mutagen/check/cli.rb +0 -3
- data/lib/takelage/mutagen/check/daemon.rb +22 -4
- data/lib/takelage/mutagen/socket/cli.rb +5 -12
- data/lib/takelage/mutagen/socket/create.rb +13 -7
- data/lib/takelage/version +1 -1
- metadata +1 -7
- data/lib/takelage/docker/socket/cli.rb +0 -75
- data/lib/takelage/docker/socket/host.rb +0 -34
- data/lib/takelage/docker/socket/lib.rb +0 -88
- data/lib/takelage/docker/socket/scheme.rb +0 -46
- data/lib/takelage/docker/socket/start.rb +0 -36
- data/lib/takelage/docker/socket/stop.rb +0 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b28f6c30df4d3f1e62b9f8ad4c282a828eb186521b168bda7f79dfb9a2a483b
|
4
|
+
data.tar.gz: 6adc87395967eac65059df51f82140ee3b879fa19d869082924aaf44d04826b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68bfc3ff719f4fdbd300e38cded2a0379b78bad467259fd7f1b79b773d7137567ca22451f581a7c684070feaff6296c58e6c73ad4c9cdacbe793daf9019b98a6
|
7
|
+
data.tar.gz: c21632713ec979285748664c5076f20499bb2ac58efeda6f957c904421d21ee078bfc4a1e424c9e69ed38bf2f31dc52bf629276df4704f633e19a009e414c70d
|
data/README.md
CHANGED
@@ -90,10 +90,6 @@ tau [docker image tag check](features/cucumber/features/docker/docker.image.tag.
|
|
90
90
|
tau [docker image tag latest](features/cucumber/features/docker/docker.image.tag.latest.feature) | Print latest local docker image tag
|
91
91
|
tau [docker image tag list](features/cucumber/features/docker/docker.image.tag.list.feature) | Print local docker image tags
|
92
92
|
tau [docker image update](features/cucumber/features/docker/docker.image.update.feature) | Get latest remote docker container
|
93
|
-
tau [docker socket host](features/cucumber/features/docker/docker.socket.host.feature) | Print docker socket host ip address
|
94
|
-
tau [docker socket scheme](features/cucumber/features/docker/docker.socket.scheme.feature) | Print docker socket scheme
|
95
|
-
tau [docker socket start](features/cucumber/features/docker/docker.socket.start.feature) | Start sockets for docker container
|
96
|
-
tau [docker socket stop](features/cucumber/features/docker/docker.socket.stop.feature) | Stop sockets for docker container
|
97
93
|
tau [git check clean](features/cucumber/features/git/git.check.clean.feature) | Check if the git workspace is clean
|
98
94
|
tau [git check main](features/cucumber/features/git/git.check.main.feature) | Check if we are on the git main branch
|
99
95
|
tau [git check workspace](features/cucumber/features/git/git.check.workspace.feature) | Check if a git workspace exists
|
@@ -109,7 +105,7 @@ tau [info status mutagen](features/cucumber/features/info/info.status.mutagen.fe
|
|
109
105
|
tau [info status ssh](features/cucumber/features/info/info.status.ssh.feature) | Check ssh status
|
110
106
|
tau [mutagen check daemon](features/cucumber/features/mutagen/mutagen.check.daemon.feature)) | Check if mutagen host conenction is available
|
111
107
|
tau [mutagen socket check](features/cucumber/features/mutagen/mutagen.socket.check.feature) [SOCKET] | Check if mutagen [SOCKET] exists
|
112
|
-
tau [mutagen socket create](features/cucumber/features/mutagen/mutagen.socket.create.feature) [IN] [OUT] | Create a mutagen socket from [IN] to [OUT] of the container
|
108
|
+
tau [mutagen socket create](features/cucumber/features/mutagen/mutagen.socket.create.feature) [NAME] [IN] [OUT] | Create a mutagen socket [NAME] from [IN] to [OUT] of the container
|
113
109
|
tau [mutagen socket list](features/cucumber/features/mutagen/mutagen.socket.list.feature) | List mutagen sockets
|
114
110
|
tau [mutagen socket tidy](features/cucumber/features/mutagen/mutagen.socket.tidy.feature) | Remove mutagen daemon files
|
115
111
|
tau [mutagen socket terminate](features/cucumber/features/mutagen/mutagen.socket.terminate.feature) | Terminate a mutagen socket
|
data/lib/takelage.rb
CHANGED
@@ -45,17 +45,12 @@ require_relative 'takelage/bit/require/cli'
|
|
45
45
|
require_relative 'takelage/bit/cli'
|
46
46
|
require_relative 'takelage/completion/cli'
|
47
47
|
require_relative 'takelage/mutagen/check/daemon'
|
48
|
+
require_relative 'takelage/mutagen/socket/check'
|
48
49
|
require_relative 'takelage/mutagen/socket/create'
|
49
50
|
require_relative 'takelage/mutagen/socket/terminate'
|
50
51
|
require_relative 'takelage/mutagen/socket/tidy'
|
51
52
|
require_relative 'takelage/docker/check/daemon'
|
52
53
|
require_relative 'takelage/docker/check/cli'
|
53
|
-
require_relative 'takelage/docker/socket/lib'
|
54
|
-
require_relative 'takelage/docker/socket/host'
|
55
|
-
require_relative 'takelage/docker/socket/scheme'
|
56
|
-
require_relative 'takelage/docker/socket/start'
|
57
|
-
require_relative 'takelage/docker/socket/stop'
|
58
|
-
require_relative 'takelage/docker/socket/cli'
|
59
54
|
require_relative 'takelage/docker/image/tag/list'
|
60
55
|
require_relative 'takelage/docker/image/tag/latest'
|
61
56
|
require_relative 'takelage/docker/image/tag/check'
|
@@ -75,7 +70,6 @@ require_relative 'takelage/docker/container/prune'
|
|
75
70
|
require_relative 'takelage/docker/container/cli'
|
76
71
|
require_relative 'takelage/docker/cli'
|
77
72
|
require_relative 'takelage/mutagen/check/cli'
|
78
|
-
require_relative 'takelage/mutagen/socket/check'
|
79
73
|
require_relative 'takelage/mutagen/socket/list'
|
80
74
|
require_relative 'takelage/mutagen/socket/cli'
|
81
75
|
require_relative 'takelage/mutagen/cli'
|
@@ -126,7 +120,9 @@ module Takelage
|
|
126
120
|
|
127
121
|
# Set defaults
|
128
122
|
@docker_daemon_running = false
|
129
|
-
@
|
123
|
+
@command_available_docker = false
|
124
|
+
@mutagen_daemon_available = false
|
125
|
+
@command_available_mutagen = false
|
130
126
|
|
131
127
|
# fylla bash completion code
|
132
128
|
@bash_fylla = Fylla.bash_completion self
|
data/lib/takelage/default.yml
CHANGED
@@ -33,7 +33,7 @@ cmd_docker_check_daemon_docker_info: 'docker info'
|
|
33
33
|
cmd_docker_container_check_existing_docker_ps: 'docker ps --filter name=^%{container}$ --quiet'
|
34
34
|
cmd_docker_container_check_network_docker_network: 'docker network ls --quiet --filter name=^%{network}$'
|
35
35
|
cmd_docker_container_check_orphaned_docker_exec: 'docker exec --interactive %{container} ps a'
|
36
|
-
cmd_docker_container_create: 'docker run --detach --env TAKELAGE_PROJECT_BASE_DIR=%{workdir} --env TZ=%{timezone} --hostname %{container} --name %{container} --network %{container} --rm --shm-size %{shmsize} --tty --volume %{dockersock}:/var/run/docker.sock --volume %{homedir}:/hostdir --volume %{workdir}:/project %{volume_dev} --workdir /project %{
|
36
|
+
cmd_docker_container_create: 'docker run --detach --env TAKELAGE_PROJECT_BASE_DIR=%{workdir} --env TZ=%{timezone} --hostname %{container} --name %{container} --network %{container} --rm --shm-size %{shmsize} --tty --volume %{dockersock}:/var/run/docker.sock --volume %{homedir}:/hostdir --volume %{workdir}:/project %{volume_dev} --workdir /project %{docker_run_options} %{image} %{entrypoint} --gid %{gid} --home %{homedir} --uid %{uid} --username %{username} --extra=%{extra} %{entrypoint_options}'
|
37
37
|
cmd_docker_container_create_network: 'docker network create %{network}'
|
38
38
|
cmd_docker_container_enter_container: 'docker exec --interactive --tty %{container} %{loginpoint} --username %{username}'
|
39
39
|
cmd_docker_container_get_container_name: 'docker ps --filter id=%{container} --format "{{.Names}}"'
|
@@ -45,12 +45,6 @@ cmd_docker_image_tag_check_docker_images: 'docker images --quiet %{image}'
|
|
45
45
|
cmd_docker_image_tag_list_docker_images: 'docker images %{docker_user}\/%{docker_repo} --format "{{.Tag}}"'
|
46
46
|
cmd_docker_image_update_docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}:latest'
|
47
47
|
cmd_docker_image_update_docker_remove_dangling: 'docker image prune --force'
|
48
|
-
cmd_docker_socket_config_agent_socket_path: 'gpgconf --list-dirs agent-socket'
|
49
|
-
cmd_docker_socket_config_agent_ssh_socket_path: 'gpgconf --list-dirs agent-ssh-socket'
|
50
|
-
cmd_docker_socket_get_start: 'sudo socat TCP-LISTEN:%{port},bind=%{host},reuseaddr,fork UNIX-CLIENT:%{path}'
|
51
|
-
cmd_docker_socket_start_sudo_true: 'sudo true'
|
52
|
-
cmd_docker_socket_stop_docker_socket_ps: 'sudo ps a -o pid,command'
|
53
|
-
cmd_docker_socket_stop_docker_socket_kill: 'sudo kill -SIGTERM %{pid}'
|
54
48
|
cmd_git_check_clean_git_unstaged: 'git diff --exit-code'
|
55
49
|
cmd_git_check_clean_git_uncommitted: 'git diff --cached --exit-code'
|
56
50
|
cmd_git_check_clean_git_status: 'git status --porcelain'
|
@@ -65,6 +59,7 @@ cmd_info_status_gopass_root_store: 'gopass config | grep "path" | cut -d " " -f
|
|
65
59
|
cmd_info_status_gpg_agent: 'gpg-connect-agent /bye'
|
66
60
|
cmd_info_status_gpg_keys: 'gpg --list-keys'
|
67
61
|
cmd_info_status_ssh_keys: 'ssh-add -l'
|
62
|
+
cmd_info_status_ssh_socket: 'gpgconf --list-dirs agent-ssh-socket'
|
68
63
|
cmd_mutagen_check_daemon_host_connection: 'mutagen forward list --label-selector="%{hostlabel}"'
|
69
64
|
cmd_mutagen_check_daemon_version: 'mutagen version'
|
70
65
|
cmd_mutagen_forward_socket_create: 'mutagen forward create --name=%{socketname} --label=%{hostlabel} --label=%{takellabel} docker://%{username}@%{container}:unix:%{containersock} unix:%{hostsock}'
|
@@ -79,12 +74,13 @@ docker_registry: 'https://registry.hub.docker.com'
|
|
79
74
|
docker_repo: 'takelage'
|
80
75
|
docker_run_options: '--env GOOGLE_APPLICATION_CREDENTIALS=/hostdir/.google/default.json'
|
81
76
|
docker_shm_size: '512M'
|
82
|
-
docker_socket_gpg_agent_port: 17874
|
83
|
-
docker_socket_gpg_ssh_agent_port: 17875
|
84
77
|
docker_tag: 'latest'
|
85
78
|
docker_user: 'takelage'
|
86
79
|
git_main_branch: 'main'
|
87
80
|
info_project_main: 'project.yml'
|
88
81
|
info_project_private: 'private/project.yml'
|
89
|
-
|
82
|
+
login_wait_for_sockets: '0'
|
83
|
+
mutagen_socket_path_mutagen: '~/.mutagen/daemon/daemon.sock'
|
84
|
+
mutagen_socket_path_gpg: '~/.gnupg/S.gpg-agent'
|
85
|
+
mutagen_socket_path_ssh: '~/.gnupg/S.gpg-agent.ssh'
|
90
86
|
mutagen_socket_takelage_label: 'type=takelage-socket'
|
data/lib/takelage/docker/cli.rb
CHANGED
@@ -19,11 +19,8 @@ module Takelage
|
|
19
19
|
include DockerImageTagLatest
|
20
20
|
include DockerImageTagList
|
21
21
|
include DockerImageTagCheck
|
22
|
-
include DockerSocketLib
|
23
|
-
include DockerSocketHost
|
24
|
-
include DockerSocketScheme
|
25
|
-
include DockerSocketStart
|
26
22
|
include MutagenCheckDaemon
|
23
|
+
include MutagenSocketCheck
|
27
24
|
include MutagenSocketCreate
|
28
25
|
include MutagenSocketTerminate
|
29
26
|
|
@@ -43,9 +40,9 @@ module Takelage
|
|
43
40
|
@hostname = _docker_container_lib_hostname
|
44
41
|
@hostlabel = "hostname=#{@hostname}"
|
45
42
|
@takellabel = config.active['mutagen_socket_takelage_label']
|
46
|
-
@
|
47
|
-
@
|
48
|
-
@
|
43
|
+
@mutagensock = config.active['mutagen_socket_path_mutagen']
|
44
|
+
@gpgsock = config.active['mutagen_socket_path_gpg']
|
45
|
+
@sshsock = config.active['mutagen_socket_path_ssh']
|
49
46
|
end
|
50
47
|
# rubocop:enable Metrics/MethodLength
|
51
48
|
# rubocop:enable Metrics/AbcSize
|
@@ -8,10 +8,13 @@ module DockerContainerCommand
|
|
8
8
|
|
9
9
|
return false unless docker_check_daemon
|
10
10
|
|
11
|
-
|
12
|
-
return false unless _docker_container_lib_create_net_and_ctr @hostname
|
11
|
+
# no matrjoschka test here
|
13
12
|
|
14
|
-
|
13
|
+
unless docker_container_check_existing @hostname
|
14
|
+
return false unless _docker_container_lib_create_net_and_ctr @hostname
|
15
|
+
|
16
|
+
_docker_container_lib_start_sockets
|
17
|
+
end
|
15
18
|
|
16
19
|
_docker_container_command_run_command @hostname, command
|
17
20
|
end
|
@@ -6,6 +6,15 @@
|
|
6
6
|
module DockerContainerLib
|
7
7
|
private
|
8
8
|
|
9
|
+
# Create mutagen sockets
|
10
|
+
def _docker_container_lib_start_sockets
|
11
|
+
return false unless mutagen_check_daemon
|
12
|
+
|
13
|
+
mutagen_socket_create 'mutagen', @mutagensock, @mutagensock
|
14
|
+
mutagen_socket_create 'gpg', @gpgsock, @gpgsock
|
15
|
+
mutagen_socket_create 'ssh', @sshsock, @sshsock
|
16
|
+
end
|
17
|
+
|
9
18
|
# Create unique docker hostname
|
10
19
|
def _docker_container_lib_hostname
|
11
20
|
relative_name = "#{@docker_repo}_#{File.basename(@workdir)}"
|
@@ -16,17 +25,12 @@ module DockerContainerLib
|
|
16
25
|
|
17
26
|
# Create docker container and network.
|
18
27
|
def _docker_container_lib_create_net_and_ctr(name)
|
19
|
-
if
|
20
|
-
log.error 'You cannot log in to takelage from within takelage'
|
21
|
-
return false
|
22
|
-
end
|
28
|
+
return true if docker_container_check_existing name
|
23
29
|
|
24
30
|
unless docker_container_check_network name
|
25
31
|
_docker_container_lib_create_network name
|
26
32
|
end
|
27
33
|
|
28
|
-
return true if docker_container_check_existing name
|
29
|
-
|
30
34
|
_docker_container_lib_create_container name
|
31
35
|
end
|
32
36
|
|
@@ -75,10 +79,6 @@ module DockerContainerLib
|
|
75
79
|
|
76
80
|
log.debug "Using docker image \"#{image}\""
|
77
81
|
|
78
|
-
unless @socket_host == '127.0.0.1'
|
79
|
-
addhost = "--add-host host.docker.internal:#{@socket_host}"
|
80
|
-
end
|
81
|
-
|
82
82
|
docker_debug = config.active['docker_debug']
|
83
83
|
entrypoint = '/entrypoint.py '
|
84
84
|
volume_dev = ''
|
@@ -89,7 +89,6 @@ module DockerContainerLib
|
|
89
89
|
|
90
90
|
cmd_docker_create = format(
|
91
91
|
config.active['cmd_docker_container_create'],
|
92
|
-
addhost: addhost,
|
93
92
|
container: container,
|
94
93
|
docker_run_options: config.active['docker_run_options'],
|
95
94
|
dockersock: '/var/run/docker.sock',
|
@@ -97,8 +96,6 @@ module DockerContainerLib
|
|
97
96
|
entrypoint_options: config.active['docker_entrypoint_options'],
|
98
97
|
extra: config.active['docker_entrypoint_extra'],
|
99
98
|
gid: Etc.getpwnam(@username).gid,
|
100
|
-
gpg_agent_port: config.active['docker_socket_gpg_agent_port'],
|
101
|
-
gpg_ssh_agent_port: config.active['docker_socket_gpg_ssh_agent_port'],
|
102
99
|
homedir: ENV['HOME'] || '/tmp',
|
103
100
|
image: image,
|
104
101
|
shmsize: config.active['docker_shm_size'],
|
@@ -119,12 +116,12 @@ module DockerContainerLib
|
|
119
116
|
def _docker_container_lib_check_matrjoschka
|
120
117
|
log.debug 'Checking if we are already inside a takelage container'
|
121
118
|
|
122
|
-
|
123
|
-
|
124
|
-
|
119
|
+
unless ENV.keys.include? 'TAKELAGE_PROJECT_BASE_DIR'
|
120
|
+
log.debug 'We are not inside a takelage container'
|
121
|
+
return false
|
122
|
+
end
|
125
123
|
|
126
|
-
|
127
|
-
sleep 1
|
124
|
+
log.debug 'We are inside a takelage container'
|
128
125
|
|
129
126
|
true
|
130
127
|
end
|
@@ -8,17 +8,30 @@ module DockerContainerLogin
|
|
8
8
|
|
9
9
|
return false unless docker_check_daemon
|
10
10
|
|
11
|
-
|
11
|
+
if _docker_container_lib_check_matrjoschka
|
12
|
+
log.error 'You cannot log in to takelage from within takelage'
|
13
|
+
return false
|
14
|
+
end
|
12
15
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
+
# rubocop:disable Style/IfUnlessModifier
|
17
|
+
unless docker_container_check_existing @hostname
|
18
|
+
_docker_container_login_create_container @hostname
|
19
|
+
end
|
20
|
+
# rubocop:enable Style/IfUnlessModifier
|
16
21
|
|
17
22
|
run_and_exit _docker_container_login_enter_container @hostname
|
18
23
|
end
|
19
24
|
|
20
25
|
private
|
21
26
|
|
27
|
+
# Create container, network and forward sockets
|
28
|
+
def _docker_container_login_create_container(container)
|
29
|
+
return false unless _docker_container_lib_create_net_and_ctr container
|
30
|
+
|
31
|
+
_docker_container_lib_start_sockets
|
32
|
+
_docker_container_wait_for_sockets
|
33
|
+
end
|
34
|
+
|
22
35
|
# Prepare enter existing container command.
|
23
36
|
def _docker_container_login_enter_container(container)
|
24
37
|
log.debug "Entering container \"#{container}\""
|
@@ -33,4 +46,13 @@ module DockerContainerLogin
|
|
33
46
|
username: @username
|
34
47
|
)
|
35
48
|
end
|
49
|
+
|
50
|
+
# Wait for the sockets to come up
|
51
|
+
def _docker_container_wait_for_sockets
|
52
|
+
wait_for_sockets = config.active['login_wait_for_sockets'].to_i
|
53
|
+
return if wait_for_sockets.zero?
|
54
|
+
|
55
|
+
log.debug "Waiting for #{wait_for_sockets} #{pluralize(wait_for_sockets, 'second', 'seconds')}"
|
56
|
+
sleep wait_for_sockets
|
57
|
+
end
|
36
58
|
end
|
@@ -15,6 +15,7 @@ module InfoStatusBar
|
|
15
15
|
_info_status_bar_git
|
16
16
|
_info_status_bar_gopass
|
17
17
|
_info_status_bar_gpg
|
18
|
+
_info_status_bar_mutagen
|
18
19
|
_info_status_bar_ssh
|
19
20
|
|
20
21
|
bar = @bar_list.join(' | ')
|
@@ -61,6 +62,11 @@ module InfoStatusBar
|
|
61
62
|
@bar_list << ("gpg: #{info_status_gpg ? 'ok'.green : 'no'.red}")
|
62
63
|
end
|
63
64
|
|
65
|
+
# Add mutagen status info to bar
|
66
|
+
def _info_status_bar_mutagen
|
67
|
+
@bar_list << ("mutagen: #{mutagen_check_daemon ? 'ok'.green : 'no'.red}")
|
68
|
+
end
|
69
|
+
|
64
70
|
# Add ssh status info to bar
|
65
71
|
def _info_status_bar_ssh
|
66
72
|
@bar_list << ("ssh: #{info_status_ssh ? 'ok'.green : 'no'.red}")
|
@@ -11,9 +11,6 @@ module Takelage
|
|
11
11
|
include DockerContainerCheckNetwork
|
12
12
|
include DockerContainerCommand
|
13
13
|
include DockerContainerLib
|
14
|
-
include DockerSocketLib
|
15
|
-
include DockerSocketScheme
|
16
|
-
include DockerSocketStart
|
17
14
|
include GitCheckWorkspace
|
18
15
|
include InfoStatusLib
|
19
16
|
include InfoStatusGit
|
@@ -9,7 +9,7 @@ module InfoStatusSSH
|
|
9
9
|
log.debug 'Check ssh status'
|
10
10
|
|
11
11
|
ssh_auth_sock = ENV['SSH_AUTH_SOCK']
|
12
|
-
gpg_ssh_socket =
|
12
|
+
gpg_ssh_socket = _info_status_ssh_socket_path.chomp
|
13
13
|
|
14
14
|
unless ssh_auth_sock == gpg_ssh_socket
|
15
15
|
log.error 'ssh does not use gpg ssh socket'
|
@@ -33,6 +33,11 @@ module InfoStatusSSH
|
|
33
33
|
|
34
34
|
private
|
35
35
|
|
36
|
+
# Get ssh socket path
|
37
|
+
def _info_status_ssh_socket_path
|
38
|
+
run config.active['cmd_info_status_ssh_socket']
|
39
|
+
end
|
40
|
+
|
36
41
|
# Check ssh keys
|
37
42
|
def _info_status_ssh_keys
|
38
43
|
status_keys = try config.active['cmd_info_status_ssh_keys']
|
data/lib/takelage/lib/system.rb
CHANGED
@@ -77,6 +77,19 @@ module SystemModule
|
|
77
77
|
stdout_str
|
78
78
|
end
|
79
79
|
|
80
|
+
# Run a command and return the standard output
|
81
|
+
# the standard error and the exit status
|
82
|
+
# @return [[String, String, Integer]] array of
|
83
|
+
# stdout, stderr, exitstatus of command
|
84
|
+
def run_and_capture(command)
|
85
|
+
log.debug "Running amd capturing command \"#{command}\""
|
86
|
+
stdout_str, stderr_str, status = Open3.capture3 command
|
87
|
+
log.debug "Command \"#{command}\" has stdout:\n\"\"\"\n#{stdout_str}\"\"\""
|
88
|
+
log.debug "Command \"#{command}\" has stderr:\n\"\"\"\n#{stderr_str}\"\"\""
|
89
|
+
log.debug "Command \"#{command}\" has exit status: \"#{status.exitstatus}\""
|
90
|
+
[stdout_str, stderr_str, status.exitstatus]
|
91
|
+
end
|
92
|
+
|
80
93
|
# Use Kernel#exec to replace the ruby process with a command.
|
81
94
|
def run_and_exit(command)
|
82
95
|
log.debug "Running command \"#{command}\" and exiting afterwards"
|
@@ -149,5 +162,12 @@ module SystemModule
|
|
149
162
|
end
|
150
163
|
true
|
151
164
|
end
|
165
|
+
|
166
|
+
# Pluralize a verb in relation to a number
|
167
|
+
def pluralize(number, singular, plural)
|
168
|
+
return singular if number == 1
|
169
|
+
|
170
|
+
plural
|
171
|
+
end
|
152
172
|
end
|
153
173
|
# rubocop:enable Metrics/ModuleLength
|
@@ -11,9 +11,6 @@ module Takelage
|
|
11
11
|
include DockerContainerCheckNetwork
|
12
12
|
include DockerContainerCommand
|
13
13
|
include DockerContainerLib
|
14
|
-
include DockerSocketLib
|
15
|
-
include DockerSocketScheme
|
16
|
-
include DockerSocketStart
|
17
14
|
include MutagenCheckDaemon
|
18
15
|
|
19
16
|
# Initialize mutagen check
|
@@ -7,10 +7,12 @@ module MutagenCheckDaemon
|
|
7
7
|
# rubocop:disable Metrics/MethodLength
|
8
8
|
# rubocop:disable Metrics/AbcSize
|
9
9
|
def mutagen_check_daemon
|
10
|
-
|
10
|
+
return true if @mutagen_daemon_available
|
11
11
|
|
12
12
|
return false unless command_available? 'mutagen'
|
13
13
|
|
14
|
+
log.debug 'Check mutagen status'
|
15
|
+
|
14
16
|
# are we outside of a takelage container?
|
15
17
|
unless _docker_container_lib_check_matrjoschka
|
16
18
|
unless _mutagen_check_daemon_version
|
@@ -19,10 +21,11 @@ module MutagenCheckDaemon
|
|
19
21
|
end
|
20
22
|
|
21
23
|
log.debug 'The mutagen daemon is available'
|
24
|
+
@mutagen_daemon_available = true
|
22
25
|
return true
|
23
26
|
end
|
24
27
|
|
25
|
-
unless _file_exists? config.active['
|
28
|
+
unless _file_exists? config.active['mutagen_socket_path_mutagen']
|
26
29
|
log.error 'The mutagen socket is not available'
|
27
30
|
return false
|
28
31
|
end
|
@@ -33,6 +36,7 @@ module MutagenCheckDaemon
|
|
33
36
|
end
|
34
37
|
|
35
38
|
log.debug 'The mutagen daemon is available'
|
39
|
+
@mutagen_daemon_available = true
|
36
40
|
true
|
37
41
|
end
|
38
42
|
# rubocop:enable Metrics/AbcSize
|
@@ -41,14 +45,28 @@ module MutagenCheckDaemon
|
|
41
45
|
private
|
42
46
|
|
43
47
|
# Check mutagen host connection
|
48
|
+
# rubocop:disable Metrics/MethodLength
|
44
49
|
def _mutagen_check_daemon_host_connection
|
45
50
|
check_host_connection = format(
|
46
51
|
config.active['cmd_mutagen_check_daemon_host_connection'],
|
47
52
|
hostlabel: @hostlabel
|
48
53
|
)
|
49
|
-
|
50
|
-
|
54
|
+
stdout, _, exitstatus = run_and_capture check_host_connection
|
55
|
+
|
56
|
+
unless exitstatus.zero?
|
57
|
+
log.debug 'There is no mutagen forward connection to the host'
|
58
|
+
return false
|
59
|
+
end
|
60
|
+
|
61
|
+
unless stdout.include? 'Status: Forwarding connections'
|
62
|
+
log.debug 'The mutagen forward connection to the host ' \
|
63
|
+
'is not forwarding connections'
|
64
|
+
return false
|
65
|
+
end
|
66
|
+
|
67
|
+
true
|
51
68
|
end
|
69
|
+
# rubocop:enable Metrics/MethodLength
|
52
70
|
|
53
71
|
# Check mutagen version
|
54
72
|
def _mutagen_check_daemon_version
|
@@ -11,9 +11,6 @@ module Takelage
|
|
11
11
|
include DockerContainerCheckNetwork
|
12
12
|
include DockerContainerCommand
|
13
13
|
include DockerContainerLib
|
14
|
-
include DockerSocketLib
|
15
|
-
include DockerSocketScheme
|
16
|
-
include DockerSocketStart
|
17
14
|
include DockerImageTagLatest
|
18
15
|
include DockerImageTagList
|
19
16
|
include DockerImageTagCheck
|
@@ -35,13 +32,9 @@ module Takelage
|
|
35
32
|
|
36
33
|
inside = _docker_container_lib_check_matrjoschka
|
37
34
|
@hostname = inside ? ENV['HOSTNAME'] : _docker_container_lib_hostname
|
38
|
-
# See DockerContainerLib::_docker_container_lib_hostname
|
39
|
-
@socketname = @hostname[-11..-1]
|
40
35
|
|
41
36
|
@hostlabel = "hostname=#{@hostname}"
|
42
37
|
@takellabel = config.active['mutagen_socket_takelage_label']
|
43
|
-
|
44
|
-
@sockets = docker_socket_scheme
|
45
38
|
end
|
46
39
|
|
47
40
|
#
|
@@ -59,13 +52,13 @@ module Takelage
|
|
59
52
|
#
|
60
53
|
# mutagen socket create
|
61
54
|
#
|
62
|
-
desc 'create [IN] [OUT]', 'Create a mutagen socket from [IN] to [OUT] of the container'
|
55
|
+
desc 'create [NAME] [IN] [OUT]', 'Create a mutagen socket [NAME] from [IN] to [OUT] of the container'
|
63
56
|
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
64
|
-
Create a mutagen socket from [IN] to [OUT] of the container
|
57
|
+
Create a mutagen socket [NAME] from [IN] to [OUT] of the container
|
65
58
|
LONGDESC
|
66
|
-
# Create a mutagen socket from [IN] to [OUT] of the container.
|
67
|
-
def create(containersock, hostsock)
|
68
|
-
exit mutagen_socket_create containersock, hostsock
|
59
|
+
# Create a mutagen socket [NAME] from [IN] to [OUT] of the container.
|
60
|
+
def create(name, containersock, hostsock)
|
61
|
+
exit mutagen_socket_create name, containersock, hostsock
|
69
62
|
end
|
70
63
|
|
71
64
|
#
|
@@ -3,31 +3,37 @@
|
|
3
3
|
# takelage mutagen socket create
|
4
4
|
module MutagenSocketCreate
|
5
5
|
# Backend method for mutagen socket create.
|
6
|
-
|
7
|
-
|
6
|
+
# rubocop:disable Metrics/MethodLength
|
7
|
+
def mutagen_socket_create(name, containersock, hostsock)
|
8
|
+
# See DockerContainerLib::_docker_container_lib_hostname
|
9
|
+
socketname = "#{@hostname[-11..-1]}-#{name}"
|
10
|
+
log.debug "Create the mutagen socket \"#{socketname}\" in the container " \
|
8
11
|
"at \"#{containersock}\" pointing to the host at \"#{hostsock}\""
|
9
12
|
|
10
13
|
return false unless mutagen_check_daemon
|
11
14
|
|
12
|
-
|
15
|
+
return false if mutagen_socket_check socketname
|
16
|
+
|
17
|
+
socket_created = _mutagen_socket_create_socket(socketname, containersock, hostsock)
|
13
18
|
|
14
19
|
unless socket_created.include? 'Created session'
|
15
|
-
log.debug "Unable to create mutagen socket \"#{
|
20
|
+
log.debug "Unable to create mutagen socket \"#{socketname}\""
|
16
21
|
return false
|
17
22
|
end
|
18
23
|
|
19
|
-
log.debug "Created the mutagen socket \"#{
|
24
|
+
log.debug "Created the mutagen socket \"#{socketname}\""
|
20
25
|
true
|
21
26
|
end
|
27
|
+
# rubocop:enable Metrics/MethodLength
|
22
28
|
|
23
29
|
private
|
24
30
|
|
25
31
|
# Get git branch.
|
26
32
|
# rubocop:disable Metrics/MethodLength
|
27
|
-
def _mutagen_socket_create_socket(containersock, hostsock)
|
33
|
+
def _mutagen_socket_create_socket(socketname, containersock, hostsock)
|
28
34
|
cmd_create_socket = format(
|
29
35
|
config.active['cmd_mutagen_forward_socket_create'],
|
30
|
-
socketname:
|
36
|
+
socketname: socketname,
|
31
37
|
containersock: containersock,
|
32
38
|
hostsock: hostsock,
|
33
39
|
username: @username,
|
data/lib/takelage/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.29.10
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: takelage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.29.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geospin
|
@@ -245,12 +245,6 @@ files:
|
|
245
245
|
- lib/takelage/docker/image/tag/latest.rb
|
246
246
|
- lib/takelage/docker/image/tag/list.rb
|
247
247
|
- lib/takelage/docker/image/update.rb
|
248
|
-
- lib/takelage/docker/socket/cli.rb
|
249
|
-
- lib/takelage/docker/socket/host.rb
|
250
|
-
- lib/takelage/docker/socket/lib.rb
|
251
|
-
- lib/takelage/docker/socket/scheme.rb
|
252
|
-
- lib/takelage/docker/socket/start.rb
|
253
|
-
- lib/takelage/docker/socket/stop.rb
|
254
248
|
- lib/takelage/git/check/clean.rb
|
255
249
|
- lib/takelage/git/check/cli.rb
|
256
250
|
- lib/takelage/git/check/main.rb
|
@@ -1,75 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Takelage
|
4
|
-
# takelage docker socket
|
5
|
-
class DockerSocket < SubCommandBase
|
6
|
-
include LoggingModule
|
7
|
-
include SystemModule
|
8
|
-
include ConfigModule
|
9
|
-
include DockerCheckDaemon
|
10
|
-
include DockerSocketLib
|
11
|
-
include DockerSocketHost
|
12
|
-
include DockerSocketScheme
|
13
|
-
include DockerSocketStart
|
14
|
-
include DockerSocketStop
|
15
|
-
|
16
|
-
# Initialize docker socket
|
17
|
-
def initialize(args = [], local_options = {}, configuration = {})
|
18
|
-
# initialize thor parent class
|
19
|
-
super args, local_options, configuration
|
20
|
-
|
21
|
-
@socket_host = docker_socket_host
|
22
|
-
@sockets = docker_socket_scheme
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
# docker socket host
|
27
|
-
#
|
28
|
-
desc 'host', 'Print docker socket host ip address'
|
29
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
30
|
-
Print docker socket host ip address
|
31
|
-
LONGDESC
|
32
|
-
# Print docker socket host ip address.
|
33
|
-
def host
|
34
|
-
say @socket_host
|
35
|
-
true
|
36
|
-
end
|
37
|
-
|
38
|
-
#
|
39
|
-
# docker socket scheme
|
40
|
-
#
|
41
|
-
desc 'scheme', 'Print docker socket scheme'
|
42
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
43
|
-
Print docker socket scheme
|
44
|
-
LONGDESC
|
45
|
-
# Print docker socket scheme.
|
46
|
-
def scheme
|
47
|
-
say hash_to_yaml(@sockets)
|
48
|
-
true
|
49
|
-
end
|
50
|
-
|
51
|
-
#
|
52
|
-
# docker socket start
|
53
|
-
#
|
54
|
-
desc 'start', 'Start sockets for docker container'
|
55
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
56
|
-
Start sockets for docker container
|
57
|
-
LONGDESC
|
58
|
-
# Start sockets for docker container.
|
59
|
-
def start
|
60
|
-
exit docker_socket_start
|
61
|
-
end
|
62
|
-
|
63
|
-
#
|
64
|
-
# docker socket stop
|
65
|
-
#
|
66
|
-
desc 'stop', 'Stop sockets for docker container'
|
67
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
68
|
-
Stop sockets for docker container
|
69
|
-
LONGDESC
|
70
|
-
# Stop sockets for docker container.
|
71
|
-
def stop
|
72
|
-
exit docker_socket_stop
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker socket host
|
4
|
-
module DockerSocketHost
|
5
|
-
# Backend method for docker socket host.
|
6
|
-
def docker_socket_host
|
7
|
-
log.debug 'Getting docker socket host ip address'
|
8
|
-
|
9
|
-
socket_host = _docker_socket_host_get_socket_host
|
10
|
-
|
11
|
-
log.debug "Docker socket host ip address is \"#{socket_host}\""
|
12
|
-
|
13
|
-
socket_host
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
# Get the socket host, i.e. the ip of the docker host.
|
19
|
-
def _docker_socket_host_get_socket_host
|
20
|
-
socket_host = '127.0.0.1'
|
21
|
-
|
22
|
-
addr_infos = Socket.getifaddrs
|
23
|
-
|
24
|
-
# if interface docker0 exists (== linux host)
|
25
|
-
# then return the ip address
|
26
|
-
addr_infos.each do |addr_info|
|
27
|
-
next unless (addr_info.name == 'docker0') && addr_info.addr.ipv4?
|
28
|
-
|
29
|
-
socket_host = addr_info.addr.ip_address
|
30
|
-
end
|
31
|
-
|
32
|
-
socket_host
|
33
|
-
end
|
34
|
-
end
|
@@ -1,88 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker socket lib
|
4
|
-
module DockerSocketLib
|
5
|
-
private
|
6
|
-
|
7
|
-
# Get socket start commands.
|
8
|
-
# sockets_up is a boolean which defines if the sockets need to be up
|
9
|
-
# to be included in the resulting array of socket start commands
|
10
|
-
def _docker_socket_lib_get_socket_start_commands(mode)
|
11
|
-
cmds_start_socket = []
|
12
|
-
|
13
|
-
# loop over sockets
|
14
|
-
@sockets.each do |socket, socket_config|
|
15
|
-
host = socket_config['host']
|
16
|
-
port = socket_config['port']
|
17
|
-
path = socket_config['path']
|
18
|
-
|
19
|
-
cmd = _docker_socket_lib_get_start_cmd(mode, socket, host, port, path)
|
20
|
-
cmds_start_socket.push cmd if cmd
|
21
|
-
end
|
22
|
-
|
23
|
-
cmds_start_socket
|
24
|
-
end
|
25
|
-
|
26
|
-
# Get socket start command.
|
27
|
-
def _docker_socket_lib_get_start_cmd(mode, socket, host, port, path)
|
28
|
-
if mode == 'start'
|
29
|
-
unless _docker_socket_lib_socket_up? socket, host, port, path
|
30
|
-
return _docker_socket_lib_start_cmd(host, port, path)
|
31
|
-
end
|
32
|
-
elsif _docker_socket_lib_socket_up? socket, host, port, path
|
33
|
-
return _docker_socket_lib_start_cmd(host, port, path)
|
34
|
-
end
|
35
|
-
nil
|
36
|
-
end
|
37
|
-
|
38
|
-
# Get socket start command.
|
39
|
-
def _docker_socket_lib_start_cmd(host, port, path)
|
40
|
-
format(
|
41
|
-
config.active['cmd_docker_socket_get_start'],
|
42
|
-
host: host,
|
43
|
-
port: port,
|
44
|
-
path: path
|
45
|
-
)
|
46
|
-
end
|
47
|
-
|
48
|
-
# Check if a socket is available by trying to connect to it via TCP.
|
49
|
-
def _docker_socket_lib_socket_up?(socket, host, port, path)
|
50
|
-
error_message = _docker_socket_lib_error_msg socket, host, port, path
|
51
|
-
begin
|
52
|
-
Timeout.timeout(1) do
|
53
|
-
_docker_socket_lib_socket_reachable? socket, host, port, error_message
|
54
|
-
end
|
55
|
-
rescue Timeout::Error
|
56
|
-
log.debug "Timeout: #{error_message}"
|
57
|
-
false
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# Create error message.
|
62
|
-
def _docker_socket_lib_error_msg(socket, host, port, path)
|
63
|
-
'failed to connect to ' \
|
64
|
-
"socket \"#{socket}\" " \
|
65
|
-
"using host \"#{host}\", " \
|
66
|
-
"port \"#{port}\", " \
|
67
|
-
"path \"#{path}\""
|
68
|
-
end
|
69
|
-
|
70
|
-
# Test socket.
|
71
|
-
# rubocop:disable Metrics/MethodLength
|
72
|
-
def _docker_socket_lib_socket_reachable?(socket, host, port, error_message)
|
73
|
-
begin
|
74
|
-
s = TCPSocket.new host, port
|
75
|
-
s.close
|
76
|
-
log.debug "Socket \"#{socket}\" up"
|
77
|
-
return true
|
78
|
-
rescue Errno::ECONNREFUSED
|
79
|
-
log.debug "Connection refused: #{error_message}"
|
80
|
-
rescue Errno::EHOSTUNREACH
|
81
|
-
log.debug "Host unreachable: #{error_message}"
|
82
|
-
rescue SocketError
|
83
|
-
log.debug "Socket error: #{error_message}"
|
84
|
-
end
|
85
|
-
false
|
86
|
-
end
|
87
|
-
# rubocop:enable Metrics/MethodLength
|
88
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker socket scheme
|
4
|
-
module DockerSocketScheme
|
5
|
-
# Backend method for docker socket scheme.
|
6
|
-
def docker_socket_scheme
|
7
|
-
log.debug 'Getting docker socket scheme'
|
8
|
-
|
9
|
-
gpg_path = _socket_get_agent_socket_path
|
10
|
-
gpg_port = config.active['docker_socket_gpg_agent_port']
|
11
|
-
ssh_path = _socket_get_agent_ssh_socket_path
|
12
|
-
ssh_port = config.active['docker_socket_gpg_ssh_agent_port']
|
13
|
-
|
14
|
-
socket_scheme = _socket_get_scheme gpg_path, gpg_port, ssh_path, ssh_port
|
15
|
-
log.debug 'Docker socket scheme is ' \
|
16
|
-
"\n\"\"\"\n#{hash_to_yaml socket_scheme}\"\"\""
|
17
|
-
|
18
|
-
socket_scheme
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
# Get gpg agent socket path.
|
24
|
-
def _socket_get_agent_socket_path
|
25
|
-
cmd_agent_socket_path =
|
26
|
-
config.active['cmd_docker_socket_config_agent_socket_path']
|
27
|
-
(run cmd_agent_socket_path).chomp
|
28
|
-
end
|
29
|
-
|
30
|
-
# Get gpg ssh agent socket path.
|
31
|
-
def _socket_get_agent_ssh_socket_path
|
32
|
-
cmd_agent_ssh_socket_path =
|
33
|
-
config.active['cmd_docker_socket_config_agent_ssh_socket_path']
|
34
|
-
(run cmd_agent_ssh_socket_path).chomp
|
35
|
-
end
|
36
|
-
|
37
|
-
# Create socket scheme.
|
38
|
-
def _socket_get_scheme(gpg_path, gpg_port, ssh_path, ssh_port)
|
39
|
-
{ 'agent-socket' => { 'path' => gpg_path,
|
40
|
-
'host' => @socket_host,
|
41
|
-
'port' => gpg_port },
|
42
|
-
'agent-ssh-socket' => { 'path' => ssh_path,
|
43
|
-
'host' => @socket_host,
|
44
|
-
'port' => ssh_port } }
|
45
|
-
end
|
46
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker socket start
|
4
|
-
module DockerSocketStart
|
5
|
-
# Backend method for docker socket start.
|
6
|
-
def docker_socket_start
|
7
|
-
log.debug 'Starting sockets for docker container'
|
8
|
-
|
9
|
-
return false unless docker_check_daemon
|
10
|
-
|
11
|
-
return false unless command_available? 'socat'
|
12
|
-
|
13
|
-
cmds_start_socket = _docker_socket_lib_get_socket_start_commands 'start'
|
14
|
-
|
15
|
-
return true if cmds_start_socket.empty?
|
16
|
-
|
17
|
-
_docker_socket_start_get_sudo
|
18
|
-
|
19
|
-
cmds_start_socket.each do |cmd_start_socket|
|
20
|
-
run_and_fork cmd_start_socket
|
21
|
-
end
|
22
|
-
|
23
|
-
true
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
# Get sudo.
|
29
|
-
def _docker_socket_start_get_sudo
|
30
|
-
log.debug 'Request sudo so that ' \
|
31
|
-
'subsequent background tasks run without delay'
|
32
|
-
cmd_sudo_true =
|
33
|
-
config.active['cmd_docker_socket_start_sudo_true']
|
34
|
-
run cmd_sudo_true
|
35
|
-
end
|
36
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker socket stop
|
4
|
-
module DockerSocketStop
|
5
|
-
# Backend method for docker socket stop.
|
6
|
-
def docker_socket_stop
|
7
|
-
log.debug 'Stopping sockets for docker container'
|
8
|
-
|
9
|
-
return false unless docker_check_daemon
|
10
|
-
|
11
|
-
return false unless command_available? 'socat'
|
12
|
-
|
13
|
-
# get process list
|
14
|
-
# assuming format: "pid command"
|
15
|
-
cmd_ps = config.active['cmd_docker_socket_stop_docker_socket_ps']
|
16
|
-
|
17
|
-
stdout_str = run cmd_ps
|
18
|
-
|
19
|
-
cmds_start_socket = _docker_socket_lib_get_socket_start_commands 'stop'
|
20
|
-
|
21
|
-
# loop over process list
|
22
|
-
stdout_str.split(/\n+/).each do |process|
|
23
|
-
_docker_socket_stop_kill_process process, cmds_start_socket
|
24
|
-
end
|
25
|
-
|
26
|
-
true
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
# Stop process.
|
32
|
-
def _docker_socket_stop_kill_process(process, cmds_start_socket)
|
33
|
-
# split processes in process id and process command
|
34
|
-
pid_command = process.chomp.split(/ /, 2)
|
35
|
-
pid = pid_command[0]
|
36
|
-
command = pid_command[1]
|
37
|
-
|
38
|
-
# loop over socket start commands
|
39
|
-
cmds_start_socket.each do |cmd_start_socket|
|
40
|
-
next unless command == cmd_start_socket
|
41
|
-
|
42
|
-
_docker_socket_stop_kill_pid pid
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
# Kill process.
|
47
|
-
def _docker_socket_stop_kill_pid(pid)
|
48
|
-
log.debug "Killing PID #{pid}"
|
49
|
-
cmd_kill =
|
50
|
-
format(
|
51
|
-
config.active['cmd_docker_socket_stop_docker_socket_kill'],
|
52
|
-
pid: pid
|
53
|
-
)
|
54
|
-
run cmd_kill
|
55
|
-
end
|
56
|
-
end
|