mkit 0.6.2 → 0.6.3
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/lib/mkit/docker_listener.rb +49 -14
- data/lib/mkit/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ce73321371e8f675a5c28106e9287762ed5cf8b39ecfc8c97b35f62806a45c1
|
4
|
+
data.tar.gz: 21189b10e952913a03d50498201869010fef447f4b621a5f3e2f39a1ab12c94c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e38e72898702d11bf928534444a63fe1744b3af47494c4da7789ece5c01cb611b824e716cc7cc39454c738d730da5533393aefea8801da236ecce97d9b291f3e
|
7
|
+
data.tar.gz: 2e2d930ef466b48fbb75b07dbf12586cb41e0324a043eed2f334b9d4a638ba9369f6d65f85ca6c24d4573d8076dacfb26d43bc166de465212df8dbda3ee4edae
|
data/lib/mkit/docker_listener.rb
CHANGED
@@ -5,16 +5,32 @@ require 'mkit/status'
|
|
5
5
|
# https://docs.docker.com/engine/reference/commandline/events
|
6
6
|
require 'mkit/app/helpers/docker_helper'
|
7
7
|
module MKIt
|
8
|
+
class StopThread < RuntimeError; end
|
9
|
+
|
8
10
|
class DockerListener
|
9
11
|
include MKIt::DockerHelper
|
10
12
|
|
11
13
|
def initialize
|
12
|
-
@
|
14
|
+
@queue = Queue.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def enqueue(msg)
|
18
|
+
@queue << msg
|
13
19
|
end
|
14
20
|
|
15
|
-
def
|
21
|
+
def start
|
22
|
+
@consumer.run if register_consumer
|
23
|
+
@listener.run if register_listener
|
16
24
|
end
|
17
25
|
|
26
|
+
def stop
|
27
|
+
@listener.exit if @listener
|
28
|
+
@consumer.raise StopThread.new
|
29
|
+
MKItLogger.info("docker listener stopped")
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
18
34
|
def parse_message(msg)
|
19
35
|
action = msg['Action'].to_sym
|
20
36
|
type = msg['Type'].to_sym
|
@@ -45,15 +61,17 @@ module MKIt
|
|
45
61
|
MKItLogger.debug(" #{type} #{action} <<TODO>>")
|
46
62
|
end
|
47
63
|
else
|
48
|
-
MKItLogger.warn("docker <<#{type}>> <#{action}> received: #{msg}. But I don't know anything about pod #{pod_id}")
|
64
|
+
MKItLogger.warn("docker <<#{type}>> <#{action}> received: #{msg}. But I don't know anything about pod #{pod_id}/#{pod_name}")
|
49
65
|
end
|
50
66
|
when :network
|
51
67
|
pod_id = msg.Actor.Attributes.container
|
52
|
-
|
68
|
+
inspect = inspect_instance(pod_id).to_o
|
69
|
+
pod_name = inspect.Name[1..]
|
70
|
+
pod = Pod.find_by(name: pod_name)
|
53
71
|
unless pod.nil?
|
54
72
|
case action
|
55
73
|
when :connect
|
56
|
-
MKItLogger.info("docker network #{action} received: #{msg}")
|
74
|
+
MKItLogger.info("docker network #{action} received: #{msg} for pod #{pod_name}")
|
57
75
|
pod.update_ip
|
58
76
|
pod.save
|
59
77
|
when :disconnect
|
@@ -62,20 +80,41 @@ module MKIt
|
|
62
80
|
MKItLogger.debug(" #{type} #{action} <<TODO>>")
|
63
81
|
end
|
64
82
|
else
|
65
|
-
MKItLogger.warn("docker <<#{type}>> <#{action}> received: #{msg}. But I don't know anything about pod #{pod_id}")
|
83
|
+
MKItLogger.warn("docker <<#{type}>> <#{action}> received: #{msg}. But I don't know anything about pod #{pod_id}/#{pod_name}")
|
66
84
|
end
|
67
85
|
else
|
68
86
|
MKItLogger.info("\t#{type} #{action} <<unknown>>")
|
69
87
|
end
|
70
88
|
end
|
71
89
|
|
72
|
-
def
|
73
|
-
|
90
|
+
def register_consumer
|
91
|
+
return false unless @consumer.nil?
|
92
|
+
|
93
|
+
@consumer = Thread.new do
|
94
|
+
running = true
|
95
|
+
while running
|
96
|
+
begin
|
97
|
+
parse_message(@queue.pop)
|
98
|
+
rescue StopThread
|
99
|
+
running = false
|
100
|
+
MKItLogger.info("docker consumer ended")
|
101
|
+
rescue => e
|
102
|
+
MKItLogger.error("error while consuming docker notification: #{e}", e.message, e.backtrace.join("\n"))
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
true
|
107
|
+
end
|
108
|
+
|
109
|
+
def register_listener
|
110
|
+
return false unless @listener.nil?
|
111
|
+
|
112
|
+
@listener = Thread.new {
|
74
113
|
cmd = "docker events --format '{{json .}}'"
|
75
114
|
begin
|
76
115
|
PTY.spawn( cmd ) do |stdout, stdin, pid|
|
77
116
|
begin
|
78
|
-
stdout.each { |line|
|
117
|
+
stdout.each { |line| enqueue JSON.parse(line).to_o }
|
79
118
|
rescue Errno::EIO
|
80
119
|
MKItLogger.warn("Errno:EIO error, but this probably just means " +
|
81
120
|
"that the process has finished giving output")
|
@@ -85,12 +124,8 @@ module MKIt
|
|
85
124
|
MKItLogger.warn("docker event listener process exited!")
|
86
125
|
end
|
87
126
|
}
|
88
|
-
@thread.run
|
89
127
|
MKItLogger.info("docker listener started")
|
90
|
-
|
91
|
-
def stop
|
92
|
-
@thread.exit if @thread
|
93
|
-
MKItLogger.info("docker listener stopped")
|
128
|
+
true
|
94
129
|
end
|
95
130
|
end
|
96
131
|
end
|
data/lib/mkit/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasco Santos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async-dns
|