adminix 0.1.14 → 0.1.15
Sign up to get free protection for your applications and to get access to all the features.
- 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
|