adminix 0.1.14 → 0.1.15
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/.byebug_history +8 -8
- data/exe/adminix +14 -3
- data/lib/adminix/config.rb +4 -3
- data/lib/adminix/service.rb +9 -2
- data/lib/adminix/system.rb +26 -18
- data/lib/adminix/version.rb +1 -1
- data/lib/adminix/watcher.rb +11 -10
- data/lib/adminix/websocket_client.rb +7 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d1340dfd107acc28ac80b42c73ca5a810043d4f
|
4
|
+
data.tar.gz: bf6eaa5de07b2efafabcc77c2b4bd7b5df7ffd1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd09d0eb87229096618c129cc0278c31e6f2b19fd6575f35d6f4007d73e11fe95945f70091c32e6b99ebb8e647df7459c12bf18ee11e44d37d8b884569087c35
|
7
|
+
data.tar.gz: 64e2bd6508b630a83cf8137e258ee6a0c7c784a765b5b23d4ffab9c9ed855a4bd0c45bdbeb77f21494b3ded7abef77e1a07baf78984f6cb2d8a2cf3f8af8c8c1
|
data/.byebug_history
CHANGED
@@ -1,4 +1,12 @@
|
|
1
1
|
q
|
2
|
+
output = system.eval(script)
|
3
|
+
script
|
4
|
+
args['args'].each { |hs| script.gsub!("%{#{hs[0]}}", hs[1]) }
|
5
|
+
script = command['command'].dup
|
6
|
+
command = config.commands.find { |c| c['key'] == key }
|
7
|
+
args
|
8
|
+
key
|
9
|
+
q
|
2
10
|
options
|
3
11
|
options[:action].to_sym
|
4
12
|
parsers[options[:action].to_sym]
|
@@ -246,11 +254,3 @@ Adminix::Config.instance.errors
|
|
246
254
|
Adminix::Config.instance
|
247
255
|
q
|
248
256
|
Adminix::Config.instance.errors
|
249
|
-
Adminix::Config.instance.valid?
|
250
|
-
Adminix::Config.instance
|
251
|
-
q
|
252
|
-
service_id
|
253
|
-
service_name
|
254
|
-
q
|
255
|
-
service_name
|
256
|
-
self.service_name = hs['service_name']
|
data/exe/adminix
CHANGED
@@ -5,6 +5,8 @@ require 'optparse'
|
|
5
5
|
|
6
6
|
options = {
|
7
7
|
action: "help",
|
8
|
+
secret_key: ENV['ADMINIX_SECRET_KEY'],
|
9
|
+
service_id: ENV['ADMINIX_SERVICE_ID'],
|
8
10
|
daemonize: false,
|
9
11
|
stop_daemon: false
|
10
12
|
}
|
@@ -12,7 +14,9 @@ parsers = {}
|
|
12
14
|
|
13
15
|
parsers[:env] = OptionParser.new do |opts|
|
14
16
|
opts.banner = "Display the commands to define ENV variables"
|
15
|
-
opts.separator " Usage: adminix env"
|
17
|
+
opts.separator " Usage: adminix env [options]"
|
18
|
+
opts.on("--secret-key SECRET_KEY", "define api SECRET_KEY") { |key| options[:secret_key] = key }
|
19
|
+
opts.on("--service-id SERVICE_ID", "define api SERVICE_ID") { |id| options[:service_id] = id }
|
16
20
|
opts.separator ""
|
17
21
|
end
|
18
22
|
|
@@ -21,6 +25,8 @@ parsers[:watch] = OptionParser.new do |opts|
|
|
21
25
|
opts.separator " Usage: adminix watch"
|
22
26
|
opts.separator " Usage: adminix watch [options]"
|
23
27
|
opts.separator " Options:"
|
28
|
+
opts.on("--secret-key SECRET_KEY", "define api SECRET_KEY") { |key| options[:secret_key] = key }
|
29
|
+
opts.on("--service-id SERVICE_ID", "define api SERVICE_ID") { |id| options[:service_id] = id }
|
24
30
|
opts.on("-d", "--daemonize", "run watcher in background process") { options[:daemonize] = true }
|
25
31
|
opts.on("-s", "--stop-daemon", "stop daemon watcher") { options[:stop_daemon] = true }
|
26
32
|
opts.separator ""
|
@@ -35,10 +41,15 @@ end
|
|
35
41
|
options[:action] = ARGV[0] || "help"
|
36
42
|
parsers[options[:action].to_sym].parse!(ARGV) rescue nil
|
37
43
|
|
38
|
-
|
44
|
+
unless options[:action] == "help"
|
45
|
+
require'adminix'
|
46
|
+
Adminix::Config.instance.secret_key = options[:secret_key]
|
47
|
+
Adminix::Config.instance.service_id = options[:service_id]
|
48
|
+
Adminix::Config.instance.daemon = options[:daemonize]
|
49
|
+
end
|
39
50
|
|
40
51
|
case options[:action]
|
41
|
-
when "env"
|
52
|
+
when "env"
|
42
53
|
puts Adminix::Service.instance.options_to_envs
|
43
54
|
when "watch"
|
44
55
|
puts Adminix::Watcher.run!(options)
|
data/lib/adminix/config.rb
CHANGED
@@ -6,12 +6,13 @@ module Adminix
|
|
6
6
|
|
7
7
|
DEFAULT_HOST = 'http://api.adminix.io'.freeze
|
8
8
|
|
9
|
-
attr_accessor :service_id, :secret_key, :host
|
9
|
+
attr_accessor :service_id, :secret_key, :host, :commands, :daemon
|
10
10
|
|
11
11
|
def initialize
|
12
|
-
self.service_id = ENV['ADMINIX_SERVICE_ID']
|
13
|
-
self.secret_key = ENV['ADMINIX_SECRET_KEY']
|
12
|
+
#self.service_id = ENV['ADMINIX_SERVICE_ID']
|
13
|
+
#self.secret_key = ENV['ADMINIX_SECRET_KEY']
|
14
14
|
self.host = ENV['ADMINIX_CONFIG_HOST'] || DEFAULT_HOST
|
15
|
+
self.commands = []
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
data/lib/adminix/service.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'singleton'
|
2
|
+
require 'net/http'
|
2
3
|
|
3
4
|
module Adminix
|
4
5
|
class Service
|
@@ -11,6 +12,8 @@ module Adminix
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def to_cable
|
15
|
+
system.check_system_load
|
16
|
+
|
14
17
|
{
|
15
18
|
id: id,
|
16
19
|
process_id: process_id,
|
@@ -23,6 +26,7 @@ module Adminix
|
|
23
26
|
|
24
27
|
def sync(watcher, data)
|
25
28
|
@process_id = data['process_id']
|
29
|
+
config.commands = data['commands'] || []
|
26
30
|
|
27
31
|
commands_queue = data['commands_queue'] || []
|
28
32
|
commands_queue.each do |q|
|
@@ -68,8 +72,11 @@ module Adminix
|
|
68
72
|
# TODO frontend fix attribute args
|
69
73
|
args['args'].each { |hs| script.gsub!("%{#{hs[0]}}", hs[1]) }
|
70
74
|
|
71
|
-
output =
|
72
|
-
|
75
|
+
output = system.eval(script)
|
76
|
+
system.log "Command execution output: "
|
77
|
+
system.log output
|
78
|
+
system.log "-----------------------------------"
|
79
|
+
|
73
80
|
{
|
74
81
|
id: process_id,
|
75
82
|
success: true,
|
data/lib/adminix/system.rb
CHANGED
@@ -28,10 +28,10 @@ module Adminix
|
|
28
28
|
attr_reader :os, :processor_load, :memory_load, :username, :home, :adminix_bin, :ruby_version
|
29
29
|
|
30
30
|
def initialize
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
define_os
|
32
|
+
parse_system_info
|
33
|
+
define_adminix_bin
|
34
|
+
check_system_load
|
35
35
|
end
|
36
36
|
|
37
37
|
def generate_daemon
|
@@ -53,9 +53,28 @@ module Adminix
|
|
53
53
|
@username == 'root'
|
54
54
|
end
|
55
55
|
|
56
|
+
def check_system_load
|
57
|
+
case @os
|
58
|
+
when :mac
|
59
|
+
@processor_load = `ps -A -o %cpu | awk '{s+=$1} END {print s "%"}'`.to_f
|
60
|
+
@memory_load = 0.1
|
61
|
+
when :linux, :unix
|
62
|
+
@processor_load = `grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'`.to_f
|
63
|
+
@memory_load = `free | grep Mem | awk '{print $3/$2 * 100.0}'`.to_f
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def log(message)
|
68
|
+
puts message unless config.daemon
|
69
|
+
end
|
70
|
+
|
56
71
|
private
|
57
72
|
|
58
|
-
def
|
73
|
+
def config
|
74
|
+
Config.instance
|
75
|
+
end
|
76
|
+
|
77
|
+
def define_os
|
59
78
|
@os = if self.class.windows?
|
60
79
|
:windows
|
61
80
|
elsif self.class.mac?
|
@@ -67,30 +86,19 @@ module Adminix
|
|
67
86
|
end
|
68
87
|
end
|
69
88
|
|
70
|
-
def
|
89
|
+
def parse_system_info
|
71
90
|
@username = ENV['USER'] || `whoami`.split("\n")[0]
|
72
91
|
@home = "/home/#{@username}"
|
73
92
|
@ruby_version = RUBY_VERSION
|
74
93
|
end
|
75
94
|
|
76
|
-
def
|
95
|
+
def define_adminix_bin
|
77
96
|
@adminix_bin = if self.class.rvm?
|
78
97
|
"/home/#{@username}/.rvm/gems/ruby-#{@ruby_version}/wrappers/adminix"
|
79
98
|
else
|
80
99
|
"/usr/local/bin/adminix"
|
81
100
|
end
|
82
101
|
end
|
83
|
-
|
84
|
-
def _check_system_load
|
85
|
-
case @os
|
86
|
-
when :mac
|
87
|
-
@processor_load = `ps -A -o %cpu | awk '{s+=$1} END {print s "%"}'`.to_f
|
88
|
-
@memory_load = 0.1
|
89
|
-
when :linux, :unix
|
90
|
-
@processor_load = `grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'`.to_f
|
91
|
-
@memory_load = `free | grep Mem | awk '{print $3/$2 * 100.0}'`.to_f
|
92
|
-
end
|
93
|
-
end
|
94
102
|
end
|
95
103
|
end
|
96
104
|
|
data/lib/adminix/version.rb
CHANGED
data/lib/adminix/watcher.rb
CHANGED
@@ -38,7 +38,6 @@ module Adminix
|
|
38
38
|
end
|
39
39
|
|
40
40
|
@client.connect do |message|
|
41
|
-
puts message
|
42
41
|
on_message_receive(@client, message)
|
43
42
|
end
|
44
43
|
|
@@ -98,7 +97,7 @@ module Adminix
|
|
98
97
|
if pid != 0
|
99
98
|
Process.kill('HUP', pid.to_i)
|
100
99
|
File.delete(@pid_full)
|
101
|
-
|
100
|
+
system.log "Stopped"
|
102
101
|
else
|
103
102
|
warn "Daemon is not running"
|
104
103
|
exit -1
|
@@ -111,13 +110,17 @@ module Adminix
|
|
111
110
|
Config.instance
|
112
111
|
end
|
113
112
|
|
113
|
+
def system
|
114
|
+
System.instance
|
115
|
+
end
|
116
|
+
|
114
117
|
def on_message_receive(client, message)
|
115
118
|
case message['type']
|
116
119
|
when 'welcome'
|
117
|
-
|
120
|
+
system.log 'connected to server'
|
118
121
|
on_success_connect(client)
|
119
122
|
when 'ping'
|
120
|
-
|
123
|
+
#system.log 'ping from server'
|
121
124
|
# do something
|
122
125
|
else
|
123
126
|
# do something
|
@@ -125,9 +128,9 @@ module Adminix
|
|
125
128
|
end
|
126
129
|
|
127
130
|
def on_disconnect(client)
|
128
|
-
|
131
|
+
system.log 'Disconnected. Reconnecting...'
|
129
132
|
client.connect do |message|
|
130
|
-
|
133
|
+
system.log message
|
131
134
|
on_message_receive(client, message)
|
132
135
|
end
|
133
136
|
|
@@ -143,9 +146,7 @@ module Adminix
|
|
143
146
|
end
|
144
147
|
|
145
148
|
def on_service_message_receive(type, data)
|
146
|
-
|
147
|
-
puts type
|
148
|
-
puts data
|
149
|
+
system.log 'on_service_message_receive'
|
149
150
|
case type
|
150
151
|
when 'confirm_subscription'
|
151
152
|
when 'sync'
|
@@ -155,7 +156,7 @@ module Adminix
|
|
155
156
|
|
156
157
|
def trap_signal
|
157
158
|
Signal.trap("SIGINT") do
|
158
|
-
|
159
|
+
system.log "Stopping..."
|
159
160
|
EventMachine.stop
|
160
161
|
end
|
161
162
|
end
|
@@ -19,7 +19,7 @@ module Adminix
|
|
19
19
|
self.channel_handlers = {}
|
20
20
|
self.client = EventMachine::WebSocketClient.connect(url)
|
21
21
|
client.callback do
|
22
|
-
|
22
|
+
system.log "Connected WebSocket to #{url}."
|
23
23
|
self.connected = true
|
24
24
|
end
|
25
25
|
client.stream do |raw|
|
@@ -79,6 +79,12 @@ module Adminix
|
|
79
79
|
result['data'] = JSON.parse(result['data']) if result['data']
|
80
80
|
result
|
81
81
|
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def system
|
86
|
+
System.instance
|
87
|
+
end
|
82
88
|
end
|
83
89
|
end
|
84
90
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adminix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Dyl
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -170,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
170
|
version: '0'
|
171
171
|
requirements: []
|
172
172
|
rubyforge_project:
|
173
|
-
rubygems_version: 2.6.
|
173
|
+
rubygems_version: 2.6.8
|
174
174
|
signing_key:
|
175
175
|
specification_version: 4
|
176
176
|
summary: Adminix
|