usbunfreeze_daemon 0.1.0 → 0.1.1
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 +8 -1
- data/bin/usbunfreeze_daemon +11 -3
- data/lib/usbunfreeze_daemon/server.rb +14 -13
- data/lib/usbunfreeze_daemon/version.rb +1 -1
- data/usbunfreeze_daemon.gemspec +3 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb3922050856fde416418880302b163f39d69388
|
4
|
+
data.tar.gz: a9826eeafece63eea9a0f193167352bdfc2fe298
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b85d0be43b8ae9a426886a52bb9dcf41ed1b7739a2cf632316389f8869cbdba1df91afb79466dd13f5b7f58309ae34ab0589f691d6de64d519f5fef77a48052
|
7
|
+
data.tar.gz: c84e9549e4162dc140e7d2adf70cecab935af0964f1f20c2897403a4661cc1469367fa87ca669323be804282c0a92ec0a15efb84134b5a863bedff5cab826bf4
|
data/README.md
CHANGED
@@ -20,10 +20,17 @@ Configure Amazon AWS SQS queue and place access, secret key and queue name to th
|
|
20
20
|
|
21
21
|
Launch a daemon:
|
22
22
|
|
23
|
-
usbunfreeze_daemon
|
23
|
+
usbunfreeze_daemon -с /path/to/settings.yaml start
|
24
24
|
|
25
25
|
Daemon will poll AWS SQS queue and launch specified command when a message will be received.
|
26
26
|
|
27
|
+
Possible flags:
|
28
|
+
|
29
|
+
* `--directory PATH` -- use `PATH` for logs and pids. Used usually for non-system installation
|
30
|
+
* `--system` -- use `/var/log` for logging and `/var/run` for pid storing. `-d` is not needed with this flag.s
|
31
|
+
* `--no-daemonize` -- do not fork into daemon
|
32
|
+
* `start|stop|status` -- self-describing control commands
|
33
|
+
|
27
34
|
## License information
|
28
35
|
|
29
36
|
Please consult with the LICENSE.txt for license information. It is MIT by the way.
|
data/bin/usbunfreeze_daemon
CHANGED
@@ -4,6 +4,7 @@ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
|
4
4
|
require 'usbunfreeze_daemon'
|
5
5
|
require 'daemons'
|
6
6
|
require 'optparse'
|
7
|
+
require 'logger'
|
7
8
|
|
8
9
|
class Daemon
|
9
10
|
def initialize(args)
|
@@ -11,15 +12,22 @@ class Daemon
|
|
11
12
|
multiple: false,
|
12
13
|
log_output: true
|
13
14
|
}
|
15
|
+
@logger = Logger.new(STDOUT)
|
16
|
+
@logger.datetime_format = "%Y-%m-%d %H:%M:%S"
|
17
|
+
|
14
18
|
@server = UsbunfreezeDaemon::Server.new
|
19
|
+
@server.logger = @logger
|
15
20
|
|
16
21
|
OptionParser.new do |opts|
|
17
22
|
opts.banner = "Usage: usbunfreeze_daemon [options] start|stop|restart|status"
|
23
|
+
opts.on("-c", "--config CONFIG_PATH", String, "Path to settings file") do |s|
|
24
|
+
@server.conf_path = s
|
25
|
+
end
|
18
26
|
opts.on("-d", "--directory DIR", String, "Path to daemon PIDs and logs") do |s|
|
19
27
|
@options[:dir] = s
|
20
28
|
end
|
21
|
-
opts.on("-
|
22
|
-
@
|
29
|
+
opts.on("-s", "--system", "Use /var for pids and logs") do |s|
|
30
|
+
@options[:dir_mode] = :system
|
23
31
|
end
|
24
32
|
opts.on("-n", "--no-daemonize", "Do not daemonize") do |s|
|
25
33
|
@options[:ontop] = true
|
@@ -28,7 +36,7 @@ class Daemon
|
|
28
36
|
begin
|
29
37
|
opts.parse(ARGV)
|
30
38
|
rescue OptionParser::ParseError => e
|
31
|
-
|
39
|
+
logger.error "Error: #{e.message}\nOpts: #{opts.inspect}"
|
32
40
|
exit(-1)
|
33
41
|
end
|
34
42
|
end.parse!(args)
|
@@ -11,32 +11,33 @@ module UsbunfreezeDaemon
|
|
11
11
|
class Server
|
12
12
|
|
13
13
|
attr_accessor :conf_path
|
14
|
+
attr_accessor :logger
|
14
15
|
|
15
16
|
def run
|
16
|
-
|
17
|
+
@logger.info "Loading config from #{@conf_path}"
|
17
18
|
Settings.source @conf_path
|
18
19
|
|
19
|
-
|
20
|
+
@logger.info "Running with executable=#{Settings.exec_command}"
|
20
21
|
|
21
22
|
sqs = AWS::SQS.new(access_key_id: Settings.sqs.access_key_id,
|
22
23
|
secret_access_key: Settings.sqs.secret_access_key)
|
23
24
|
raise 'No SQS object' unless sqs
|
24
25
|
|
25
|
-
|
26
|
+
@logger.info "Get queue '#{Settings.sqs.queue_name}' ..."
|
26
27
|
q = sqs.queues.named(Settings.sqs.queue_name)
|
27
28
|
raise 'Cannot get queue' unless q
|
28
29
|
raise 'Queue does not exist' unless q.exists?
|
29
30
|
|
30
31
|
interval = [Settings.sqs.interval.to_i, AWS::SQS::Queue::DEFAULT_WAIT_TIME_SECONDS].max
|
31
|
-
|
32
|
+
@logger.info "Start polling queue each #{interval} seconds"
|
32
33
|
|
33
34
|
q.poll(:wait_time_seconds => interval) do |m|
|
34
35
|
handle_message m
|
35
36
|
end
|
36
37
|
|
37
38
|
rescue => e
|
38
|
-
|
39
|
-
|
39
|
+
@logger.error "Error:" + e.message
|
40
|
+
@logger.error e.backtrace.map{|s| "\t"+s}.join("\n")
|
40
41
|
exit 1
|
41
42
|
end
|
42
43
|
|
@@ -45,19 +46,19 @@ module UsbunfreezeDaemon
|
|
45
46
|
# Handle an incoming SQS message
|
46
47
|
# Wrong message is not fatal error
|
47
48
|
def handle_message m
|
48
|
-
|
49
|
-
|
49
|
+
@logger.info "Get a messsage #{m.id}, received at #{Time.now}, sent at #{m.sent_timestamp}"
|
50
|
+
@logger.info "Object body: #{m.body}"
|
50
51
|
json = JSON.parse(m.body)
|
51
52
|
action = json['message'].downcase
|
52
53
|
if json['message'].downcase == 'unfreeze'
|
53
|
-
|
54
|
+
@logger.info "Launching a command"
|
54
55
|
system(Settings.exec_command)
|
55
|
-
|
56
|
+
@logger.info "Command execution code: #{$?}"
|
56
57
|
end
|
57
58
|
rescue => e
|
58
|
-
|
59
|
-
|
60
|
-
|
59
|
+
@logger.info "Error parsing a message:" + e.message
|
60
|
+
@logger.info e.backtrace.map{|s| "\t"+s}.join("\n")
|
61
|
+
@logger.info "Continuing..."
|
61
62
|
end
|
62
63
|
|
63
64
|
end
|
data/usbunfreeze_daemon.gemspec
CHANGED
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = UsbunfreezeDaemon::VERSION
|
9
9
|
spec.authors = ["theirix"]
|
10
10
|
spec.email = ["theirix@gmail.com"]
|
11
|
-
spec.summary = %q{Usbunfreeze
|
12
|
-
spec.description = %q{Usbunfreeze
|
13
|
-
spec.homepage = ""
|
11
|
+
spec.summary = %q{Usbunfreeze Daemon}
|
12
|
+
spec.description = %q{Daemon application for Usbunfreeze kit}
|
13
|
+
spec.homepage = "http://github.com/theirix/usbunfreeze_daemon"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: usbunfreeze_daemon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- theirix
|
@@ -94,7 +94,7 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 1.8.0
|
97
|
-
description: Usbunfreeze
|
97
|
+
description: Daemon application for Usbunfreeze kit
|
98
98
|
email:
|
99
99
|
- theirix@gmail.com
|
100
100
|
executables:
|
@@ -113,7 +113,7 @@ files:
|
|
113
113
|
- lib/usbunfreeze_daemon/server.rb
|
114
114
|
- lib/usbunfreeze_daemon/version.rb
|
115
115
|
- usbunfreeze_daemon.gemspec
|
116
|
-
homepage:
|
116
|
+
homepage: http://github.com/theirix/usbunfreeze_daemon
|
117
117
|
licenses:
|
118
118
|
- MIT
|
119
119
|
metadata: {}
|
@@ -136,5 +136,5 @@ rubyforge_project:
|
|
136
136
|
rubygems_version: 2.4.5
|
137
137
|
signing_key:
|
138
138
|
specification_version: 4
|
139
|
-
summary: Usbunfreeze
|
139
|
+
summary: Usbunfreeze Daemon
|
140
140
|
test_files: []
|