mkit 0.7.2 → 0.8.0

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: 2ddd1f77569b1f7982812ae1cf236b76816bd6fc31a27cde9067e010a296c981
4
- data.tar.gz: cedb9272ef3c6ce621989c94a2fd08bf917e7a1f242c4f465306d82749af103c
3
+ metadata.gz: fa9363526eb6b57ea708a370424cfa71ede7d50f7d91d0d8700e1170f3af5930
4
+ data.tar.gz: 9c50d7cd862d5573b986f4c3231f76769ab4e5f930839c821232acd0bedf2923
5
5
  SHA512:
6
- metadata.gz: 5ae6c65f2c6b68e116c66c8ac5716f5668d7642922869fdccbf55264d9f9bd96bc36320148bcd9e7d0f2909d010f1caf55e18095c301415432e48a2ecb5845dc
7
- data.tar.gz: ad171bc7fa68ac93813dd15675119bc328f929063694c4627c7db013a5ad938dfdbedb0c8a7a9e45fbfc5b2ae834ef11ca4a24fae16ff37cd81c1f9d0a1da2b4
6
+ metadata.gz: 4c30c9847cdada9bbc87c059b1824430462e29d169498144d7e690d5848e30db29aee6008da4b09a59038355d20ee28688fce7a45d018f76b4afeee82ef3e660
7
+ data.tar.gz: 770e96f7cb6be72e5c0442c51b2f0229ccdb53a6611c8569a58fe370ec1f405a5d7cadd77a22dae8de1075f9202467a79b26c736f158fb661b5b50dd68aa6c66
data/README.md CHANGED
@@ -9,7 +9,7 @@ The database is a simple sqlite3 db and the server is a Sinatra based applicatio
9
9
 
10
10
  A client is also included to access the API, e.g. `mkit ps`.
11
11
 
12
- The daemon is responsible for HAProxy pods routing configuration. It also provides the cluster DNS and manages the internal host interface and the docker instances.
12
+ The daemon is responsible for HAProxy pods routing configuration. It also provides the cluster DNS and manages the internal host interface and the pod instances.
13
13
 
14
14
  ## Requirements
15
15
 
@@ -124,7 +124,7 @@ my_id: unique_id # this id is generated running mkit init
124
124
 
125
125
  ```
126
126
  service:
127
- name: rabbitmq # unique
127
+ name: rabbitmq # unique. Available on internal DNS as 'rabbitmq'
128
128
  image: rabbitmq:3-management-alpine # image
129
129
  network: bridge # docker network - it will be created if it does not exists
130
130
  ports: # haproxy port mapping
@@ -140,7 +140,7 @@ service:
140
140
  - 5672:5672:tcp:round_robin
141
141
  - 80:15672:http:round_robin
142
142
  resources:
143
- min_replicas: 1 # default value
143
+ min_replicas: 1 # default value. Pods will be available on internal DNS as '<service_name>.internal'
144
144
  max_replicas: 1 # default value
145
145
  volumes:
146
146
  - docker://mkit_rabbitmq_data:/var/lib/rabbitmq # a docker volume - it will be created if it does not exists
@@ -192,8 +192,9 @@ restart restart service
192
192
  create create new service
193
193
  update update service
194
194
  rm remove service
195
+ exec execute a command in a running pod
195
196
  logs view service logs
196
- version prints mkit server version
197
+ version prints mkit client and server version
197
198
  proxy haproxy status and control
198
199
  profile mkit client configuration profile
199
200
 
data/bin/mkit CHANGED
@@ -13,6 +13,7 @@ require 'uri'
13
13
  require 'fileutils'
14
14
  require 'mkit/client/command_parser'
15
15
  require 'mkit/client/mkitd_client'
16
+ require 'mkit/version'
16
17
 
17
18
  class InvalidConfigurationException < Exception
18
19
  attr_reader :command
@@ -91,6 +92,10 @@ class MKItClient
91
92
  client.request(request, request_data)
92
93
  end
93
94
 
95
+ def version(request, request_data)
96
+ puts "MKIt Client version #{MKIt::VERSION}"
97
+ request(request, request_data)
98
+ end
94
99
  #
95
100
  # commands
96
101
  #
@@ -174,8 +179,3 @@ end
174
179
  #
175
180
  client = MKItClient.new
176
181
  client.doIt(ARGV.dup)
177
- #
178
- # if ARGV.any?
179
- # parse args
180
- # host, socket, config file
181
- # end
@@ -4,7 +4,7 @@ require 'mkit/version'
4
4
 
5
5
  class MkitController < MKIt::Server
6
6
  get '/mkit/version' do
7
- "MKIt version #{MKIt::VERSION}\n"
7
+ "MKIt Server version #{MKIt::VERSION}\n"
8
8
  end
9
9
 
10
10
  put '/mkit/proxy/restart' do
@@ -1,16 +1,42 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class PodsController < MKIt::Server
4
- get '/services/:service_id/pods' do
5
- "Not implemented\n"
6
- end
3
+ require 'mkit/app/model/pod'
4
+ require 'mkit/app/helpers/pods_helper'
5
+ require 'mkit/app/helpers/params_helper'
6
+ require 'mkit/pods/docker_exec_command'
7
+ require 'mkit/exceptions'
7
8
 
8
- get '/services/:service_id/pods/:pod_id' do
9
- "Not implemented\n"
10
- end
9
+ class PodsController < MKIt::Server
10
+ helpers MKIt::PodsHelper
11
+ helpers MKIt::ParamsHelper
11
12
 
12
- put '/services/:service_id/pods/:pod_id' do
13
- "Not implemented\n"
13
+ get '/pods/:id/exec' do
14
+ pod = find_by_id_or_name
15
+ if request.websocket?
16
+ options_parameter = build_options_hash(params: params, options: [:varargs])
17
+ raise MKIt::BaseException.new(400, "Missing parameters") unless options_parameter[:varargs]
18
+ options_parameter[:varargs] = JSON.parse(params['varargs'])
19
+ request.websocket do |ws|
20
+ listener = nil
21
+ ws.onopen do
22
+ settings.sockets << ws
23
+ listener = MKIt::DockerExecCommand.new(pod, ws, options: options_parameter)
24
+ settings.listeners << listener
25
+ listener.register
26
+ end
27
+ ws.onclose do
28
+ MKItLogger.info("websocket closed [#{listener}]")
29
+ settings.sockets.delete(ws)
30
+ if listener
31
+ MKItLogger.info("unregister [#{listener}]")
32
+ settings.listeners.delete(listener)
33
+ listener.unregister
34
+ end
35
+ end
36
+ end
37
+ else
38
+ raise MKIt::BaseException.new(400, "Bad request")
39
+ end
14
40
  end
15
41
 
16
42
  delete '/services/:service_id/pods/:pod_id' do
@@ -2,10 +2,13 @@
2
2
 
3
3
  require 'mkit/app/model/service'
4
4
  require 'mkit/app/helpers/services_helper'
5
- require 'mkit/docker_log_listener'
5
+ require 'mkit/app/helpers/params_helper'
6
+ require 'mkit/pods/docker_log_listener'
7
+ require 'mkit/pods/docker_exec_command'
6
8
 
7
9
  class ServicesController < MKIt::Server
8
10
  helpers MKIt::ServicesHelper
11
+ helpers MKIt::ParamsHelper
9
12
 
10
13
  # curl localhost:4567/services
11
14
  get '/services' do
@@ -37,13 +40,14 @@ class ServicesController < MKIt::Server
37
40
  if !request.websocket?
38
41
  srv.log
39
42
  else
43
+ pod = find_srv_pod_by_id_or_name(srv)
40
44
  options_parameter = build_options_hash(params: params, options: [:nr_lines, :pods, :follow])
41
45
  request.websocket do |ws|
42
46
  listener = nil
43
47
  ws.onopen do
44
48
  settings.sockets << ws
45
49
  ws.send("<<<< %s | %s >>>>\n" % [srv.name, srv.pod.first.name])
46
- listener = MKIt::DockerLogListener.new(srv.pod.first, ws, options: options_parameter)
50
+ listener = MKIt::DockerLogListener.new(pod, ws, options: options_parameter)
47
51
  settings.listeners << listener
48
52
  listener.register
49
53
  end
@@ -115,4 +119,34 @@ class ServicesController < MKIt::Server
115
119
  MkitJob.publish(topic: :start_service, service_id: srv.id)
116
120
  format_response(srv)
117
121
  end
122
+
123
+ get '/services/:id/pods/exec' do
124
+ srv = find_by_id_or_name
125
+ if request.websocket?
126
+ pod = find_srv_pod_by_id_or_name(srv)
127
+ options_parameter = build_options_hash(params: params, options: [:varargs, :interactive, :detached])
128
+ raise MKIt::BaseException.new(400, "Missing parameters") unless options_parameter[:varargs]
129
+ options_parameter[:varargs] = JSON.parse(params['varargs'])
130
+ request.websocket do |ws|
131
+ listener = nil
132
+ ws.onopen do
133
+ settings.sockets << ws
134
+ listener = MKIt::DockerExecCommand.new(pod, ws, options: options_parameter)
135
+ settings.listeners << listener
136
+ listener.register
137
+ end
138
+ ws.onclose do
139
+ MKItLogger.info("websocket closed [#{listener}]")
140
+ settings.sockets.delete(ws)
141
+ if listener
142
+ MKItLogger.info("unregister [#{listener}]")
143
+ settings.listeners.delete(listener)
144
+ listener.unregister
145
+ end
146
+ end
147
+ end
148
+ else
149
+ raise MKIt::BaseException.new(400, "Bad request")
150
+ end
151
+ end
118
152
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MKIt
4
+ module ParamsHelper
5
+
6
+ def build_options_hash(params:, options:)
7
+ hash = {}
8
+ options.each do |option|
9
+ hash[option] = params[option]
10
+ end
11
+ hash
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MKIt
4
+ module PodsHelper
5
+
6
+ def find_by_id_or_name
7
+ pod = Pod.find_by_id(params[:id])
8
+ pod ||= Pod.find_by_name(params[:id])
9
+ error 404, "Couldn't find Pod '#{params[:id]}'\n" unless pod
10
+ pod
11
+ end
12
+
13
+ end
14
+ end
@@ -16,13 +16,6 @@ module MKIt
16
16
  table.to_s
17
17
  end
18
18
 
19
- def build_options_hash(params:, options:)
20
- hash = {}
21
- options.each do |option|
22
- hash[option] = params[option]
23
- end
24
- hash
25
- end
26
19
  def find_by_id_or_name
27
20
  srv = Service.find_by_id(params[:id])
28
21
  srv ||= Service.find_by_name(params[:id])
@@ -30,6 +23,16 @@ module MKIt
30
23
  srv
31
24
  end
32
25
 
26
+ def find_srv_pod_by_id_or_name(srv)
27
+ if params[:pod_id]
28
+ pod = srv.find_pod_by_id_or_name(params[:pod_id])
29
+ error 404, "Service pod not found." unless pod
30
+ else
31
+ pod = srv.pod.first
32
+ end
33
+ pod
34
+ end
35
+
33
36
  def build_table_row(data)
34
37
  ports = data.service_port&.each.map { |p| build_port(p) }.join(',')
35
38
  pods = data.pod.each.map { |p| p.name.to_s }.join(' ')
@@ -32,7 +32,7 @@ class Pod < ActiveRecord::Base
32
32
  def update_dns
33
33
  self.dns_host ||= DnsHost.new(
34
34
  service: self.service,
35
- name: "#{name}.#{self.service.name}",
35
+ name: "#{self.service.name}.internal",
36
36
  ip: self.ip
37
37
  )
38
38
  self.dns_host.ip = self.ip
@@ -222,6 +222,11 @@ class Service < ActiveRecord::Base
222
222
  MkitJob.publish(topic: :destroy_proxy_config, data: {filename: filename})
223
223
  end
224
224
 
225
+ def find_pod_by_id_or_name(pod_id)
226
+ pod = self.pod.find_by(id: pod_id)
227
+ pod = self.pod.find_by(name: pod_id) unless pod
228
+ pod
229
+ end
225
230
  #
226
231
  # ctrl
227
232
  #
@@ -71,10 +71,22 @@ class CommandParser
71
71
  # request_data = {}
72
72
  def fill_cmd_args(args, argv, request, request_data)
73
73
  return if args.nil?
74
- # add to schema
75
74
  args.each do |arg|
76
75
  arg[:type] = 'value' unless arg[:type]
77
76
  end
77
+ split = split_argv(argv)
78
+ argv = split[0]
79
+ varargs = split[1]
80
+ varargs = nil if varargs.empty?
81
+
82
+ # find vararg and fill it
83
+ vararg = args.select { |arg| arg[:type].to_sym == :varargs }.first
84
+ if vararg
85
+ request_data[vararg[:name].to_sym] = varargs
86
+ request[:params] ||= []
87
+ request[:params] << ["#{vararg[:name].to_sym}", varargs ]
88
+ end
89
+
78
90
  # flag and options
79
91
  fill_flag_and_options_args(args, argv, request, request_data)
80
92
  idx = 0
@@ -88,6 +100,18 @@ class CommandParser
88
100
  end
89
101
  end
90
102
 
103
+ def split_argv(argv)
104
+ separator_index = argv.index('--')
105
+ if separator_index
106
+ left_side = argv[0...separator_index]
107
+ right_side = argv[(separator_index + 1)..-1]
108
+ else
109
+ left_side = argv
110
+ right_side = []
111
+ end
112
+ [left_side, right_side]
113
+ end
114
+
91
115
  def fill_flag_and_options_args(args, argv, request, request_data)
92
116
  # flags
93
117
  # checking flags first, avoids -n -f, with -f being the value of -n
@@ -122,7 +146,7 @@ class CommandParser
122
146
  request[:uri] = request[:uri] + arg[:uri] unless arg[:uri].nil?
123
147
  unless arg[:param].nil?
124
148
  request[:params] ||= []
125
- request[:params] << [ "#{arg[:name]}", "#{arg[:param]}"]
149
+ request[:params] << %W[#{arg[:name]} #{arg[:param]}]
126
150
  end
127
151
  end
128
152
 
@@ -108,9 +108,53 @@
108
108
  request:
109
109
  verb: delete
110
110
  uri: "/services/<%=id%>"
111
+ - cmd: exec
112
+ usage:
113
+ - "<service_id_or_name> [options] -- <command> [args...]"
114
+ help: execute a command in a running pod
115
+ request:
116
+ verb: ws_console
117
+ uri: "/services/<%=id%>/pods/exec"
118
+ args:
119
+ - name: id
120
+ help:
121
+ - id
122
+ - Service id or name
123
+ mandatory: true
124
+ - name: pod_id
125
+ help:
126
+ - -p <pod_id>
127
+ - Execute command for specified pod (default first)
128
+ mandatory: false
129
+ param: "<%=pod_id%>"
130
+ type: option
131
+ switch:
132
+ - "-p"
133
+ - name: detached
134
+ help:
135
+ - -d
136
+ - Run command in background
137
+ mandatory: false
138
+ param: "<%=true%>"
139
+ type: flag
140
+ switch:
141
+ - "-d"
142
+ - name: separator
143
+ help:
144
+ - --
145
+ - Ends mkit options and starts the command
146
+ mandatory: false
147
+ type: separator
148
+ - name: varargs
149
+ help:
150
+ - command
151
+ - Command and options
152
+ mandatory: true
153
+ type: varargs
154
+ param: <%=varargs%>
111
155
  - cmd: logs
112
156
  usage:
113
- - "<service_id_or_name> [-f] [-n <lines>]"
157
+ - "<service_id_or_name> [-p <pod_id>] [-f] [-n <lines>]"
114
158
  help: view service logs
115
159
  request:
116
160
  verb: ws # new type
@@ -123,6 +167,15 @@
123
167
  help:
124
168
  - id
125
169
  - Service id or name
170
+ - name: pod_id
171
+ help:
172
+ - -p <pod_id>
173
+ - Show logs for specified pod (default first)
174
+ mandatory: false
175
+ param: "<%=pod_id%>"
176
+ type: option
177
+ switch:
178
+ - "-p"
126
179
  - name: follow
127
180
  help:
128
181
  - -f
@@ -141,17 +194,8 @@
141
194
  type: option
142
195
  switch:
143
196
  - "-n"
144
- - name: pods
145
- help:
146
- - -p <[pods]>
147
- - Show logs for specified pods, e.g. pod1, pod2 (default first)
148
- mandatory: false
149
- param: "<%=pods%>"
150
- type: option
151
- switch:
152
- - "-n"
153
197
  - cmd: version
154
- help: prints mkit server version
198
+ help: prints mkit client and server version
155
199
  request:
156
200
  verb: get
157
201
  uri: "/mkit/version"
@@ -0,0 +1,57 @@
1
+ # # frozen_string_literal: true
2
+ require 'faye/websocket'
3
+ require 'eventmachine'
4
+ require 'json'
5
+ require 'io/console'
6
+
7
+ module MKIt
8
+ class ConsoleWebSocketClient
9
+
10
+ def initialize(uri, options)
11
+ @uri = uri
12
+ @options = options
13
+ end
14
+
15
+ def doIt
16
+ EM.run {
17
+ ws = Faye::WebSocket::Client.new(@uri, nil, @options)
18
+
19
+ ws.on :open do |_event|
20
+ puts "Connected to WebSocket server"
21
+ puts "\r\n"
22
+ end
23
+
24
+ ws.on :message do |event|
25
+ print event.data
26
+ end
27
+
28
+ ws.on :error do |event|
29
+ p [:error, event.message]
30
+ ws = nil
31
+ EventMachine.stop
32
+ end
33
+
34
+ ws.on :close do |_event|
35
+ ws = nil
36
+ puts "\r\n"
37
+ EventMachine.stop
38
+ end
39
+
40
+ Thread.new do
41
+ STDIN.raw do
42
+ loop do
43
+ input = STDIN.getc.chr
44
+ # if input == "\u0003" # Ctrl+C
45
+ # puts "bye..."
46
+ # EventMachine.stop
47
+ # break
48
+ # else
49
+ ws.send(input)
50
+ # end
51
+ end
52
+ end
53
+ end
54
+ }
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,46 @@
1
+ # # frozen_string_literal: true
2
+ require 'faye/websocket'
3
+ require 'eventmachine'
4
+ require 'json'
5
+ require 'io/console'
6
+
7
+ module MKIt
8
+ class LogWebSocketClient
9
+
10
+ def initialize(uri, options)
11
+ @uri = uri
12
+ @options = options
13
+ trap("SIGINT") do
14
+ puts "Bye..."
15
+ EventMachine.stop
16
+ end
17
+ end
18
+
19
+ def doIt
20
+ EM.run {
21
+ ws = Faye::WebSocket::Client.new(@uri, nil, @options)
22
+
23
+ ws.on :open do |_event|
24
+ puts "Connected to WebSocket server"
25
+ puts "\r\n"
26
+ end
27
+
28
+ ws.on :message do |event|
29
+ puts event.data
30
+ end
31
+
32
+ ws.on :error do |event|
33
+ p [:error, event.message]
34
+ ws = nil
35
+ EventMachine.stop
36
+ end
37
+
38
+ ws.on :close do |_event|
39
+ ws = nil
40
+ puts "\r\n"
41
+ EventMachine.stop
42
+ end
43
+ }
44
+ end
45
+ end
46
+ end
@@ -6,7 +6,7 @@ module MKIt
6
6
  class MKItdClient
7
7
  def initialize(request, server_url, my_id)
8
8
  case request[:verb].to_sym
9
- when :ws
9
+ when :ws, :ws_console
10
10
  @client = MKIt::WebSocketClient.new(server_url, my_id)
11
11
  else
12
12
  @client = MKIt::HttpClient.new(server_url, my_id)
@@ -14,6 +14,8 @@ module MKIt
14
14
  end
15
15
 
16
16
  def request(request, request_data)
17
+ # puts "Request: #{request}"
18
+ # puts "Request data: #{request_data}"
17
19
  @client.request(request, request_data)
18
20
  end
19
21
  end
@@ -2,9 +2,13 @@
2
2
  require 'faye/websocket'
3
3
  require 'eventmachine'
4
4
  require 'json'
5
+ require 'io/console'
6
+ require 'mkit/client/console_websocket_client'
7
+ require 'mkit/client/log_websocket_client'
5
8
 
6
9
  module MKIt
7
10
  class WebSocketClient
11
+
8
12
  def initialize(server_url, my_id)
9
13
  @server_url = server_url
10
14
  @my_id = my_id
@@ -14,10 +18,6 @@ module MKIt
14
18
  @options[:headers] = { 'X-API-KEY' => @my_id }
15
19
  url_prefix = use_ssl ? "wss" : "ws"
16
20
  @ws_url = "#{url_prefix}://#{uri.host}:#{uri.port}"
17
- trap("SIGINT") do
18
- puts "Bye..."
19
- EventMachine.stop
20
- end
21
21
  end
22
22
 
23
23
  def request(request, request_data)
@@ -26,40 +26,15 @@ module MKIt
26
26
  uri = uri + '?' + request[:params].map { |k, v| "#{k}=#{v}" }.join('&')
27
27
  end
28
28
  uri = ERB.new("#{@ws_url}#{uri}").result_with_hash(request_data)
29
-
30
- EM.run {
31
- ws = Faye::WebSocket::Client.new(uri, nil, @options)
32
-
33
- ws.on :open do |event|
34
- # no op
35
- end
36
29
 
37
- ws.on :message do |event|
38
- puts event.data
39
- end
40
-
41
- ws.on :error do |event|
42
- p [:error, event.message]
43
- ws = nil
44
- return
45
- end
46
-
47
- ws.on :close do |event|
48
- ws = nil
49
- EventMachine.stop
50
- end
30
+ case request[:verb].to_sym
31
+ when :ws_console
32
+ client = ConsoleWebSocketClient.new(uri, @options)
33
+ when :ws
34
+ client = LogWebSocketClient.new(uri, @options)
35
+ end
36
+ client.doIt
51
37
 
52
- Thread.new do
53
- loop do
54
- input = STDIN.gets.chomp
55
- if input == 'exit'
56
- puts "bye..."
57
- EventMachine.stop
58
- break
59
- end
60
- end
61
- end
62
- }
63
38
  end
64
39
  end
65
40
  end
@@ -0,0 +1,38 @@
1
+ require "mkit/cmd/shell_client"
2
+
3
+ module MKIt
4
+ class DockerExecCommand < MKIt::ShellClient
5
+
6
+ def initialize(pod, ws, options: {})
7
+ puts "DockerExecCommand: #{options}"
8
+ @pod = pod
9
+ @ws = ws
10
+ command = "docker exec"
11
+ command += " -it" unless options[:detached] == 'true'
12
+ command += " -d" if options[:detached] == 'true'
13
+ command += " #{@pod.name}"
14
+ command += " #{options[:varargs].join(' ')}" if options[:varargs]
15
+ super(command: command)
16
+ end
17
+
18
+ def register
19
+ super do |stdout, stdin, pid|
20
+ @stdout_thread = Thread.new do
21
+ stdout.each_char { |line| @ws.send(line) }
22
+ end
23
+
24
+ @stdin_thread = Thread.new do
25
+ @ws.onmessage do |msg|
26
+ stdin.putc msg
27
+ end
28
+ end
29
+ @stdout_thread.join
30
+ end
31
+ end
32
+
33
+ def close
34
+ @ws.close_websocket unless @ws.nil?
35
+ end
36
+ end
37
+ end
38
+
data/lib/mkit/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module MKIt
2
- VERSION = "0.7.2"
2
+ VERSION = "0.8.0"
3
3
  end
4
4
 
data/lib/mkit.rb CHANGED
@@ -16,7 +16,7 @@ require 'mkit/config/load_default_configs'
16
16
  require_relative 'mkit/version'
17
17
  require_relative 'mkit/mkit_interface'
18
18
  require_relative 'mkit/mkit_dns'
19
- require_relative 'mkit/docker_listener'
19
+ require_relative 'mkit/pods/docker_listener'
20
20
  require 'mkit/app/helpers/haproxy'
21
21
  require 'mkit/app/controllers/services_controller'
22
22
  require 'mkit/app/controllers/mkitjobs_controller'
@@ -26,7 +26,6 @@ require 'mkit/mkit_dns'
26
26
  require 'mkit/job_manager'
27
27
  require 'mkit/workers/worker_manager'
28
28
  require 'mkit/sagas/saga_manager'
29
- require 'mkit/docker_listener'
30
29
  require 'mkit/app/helpers/haproxy'
31
30
  require 'active_record/tasks/database_tasks'
32
31
  require 'mkit/utils'
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.7.2
4
+ version: 0.8.0
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-12-16 00:00:00.000000000 Z
11
+ date: 2024-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-dns
@@ -385,6 +385,8 @@ files:
385
385
  - lib/mkit/app/helpers/erb_helper.rb
386
386
  - lib/mkit/app/helpers/haproxy.rb
387
387
  - lib/mkit/app/helpers/interface_helper.rb
388
+ - lib/mkit/app/helpers/params_helper.rb
389
+ - lib/mkit/app/helpers/pods_helper.rb
388
390
  - lib/mkit/app/helpers/services_helper.rb
389
391
  - lib/mkit/app/mkit_server.rb
390
392
  - lib/mkit/app/model/dns_host.rb
@@ -402,7 +404,9 @@ files:
402
404
  - lib/mkit/app/templates/haproxy/xapp_haproxy.cfg.erb
403
405
  - lib/mkit/client/command_parser.rb
404
406
  - lib/mkit/client/commands.yaml
407
+ - lib/mkit/client/console_websocket_client.rb
405
408
  - lib/mkit/client/http_client.rb
409
+ - lib/mkit/client/log_websocket_client.rb
406
410
  - lib/mkit/client/mkitd_client.rb
407
411
  - lib/mkit/client/websocket_client.rb
408
412
  - lib/mkit/cmd/shell_client.rb
@@ -414,12 +418,13 @@ files:
414
418
  - lib/mkit/config/load_default_configs.rb
415
419
  - lib/mkit/config/the_config.yml
416
420
  - lib/mkit/ctypes.rb
417
- - lib/mkit/docker_listener.rb
418
- - lib/mkit/docker_log_listener.rb
419
421
  - lib/mkit/exceptions.rb
420
422
  - lib/mkit/job_manager.rb
421
423
  - lib/mkit/mkit_dns.rb
422
424
  - lib/mkit/mkit_interface.rb
425
+ - lib/mkit/pods/docker_exec_command.rb
426
+ - lib/mkit/pods/docker_listener.rb
427
+ - lib/mkit/pods/docker_log_listener.rb
423
428
  - lib/mkit/sagas/asaga.rb
424
429
  - lib/mkit/sagas/create_pod_saga.rb
425
430
  - lib/mkit/sagas/saga_manager.rb