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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e4c5c45b9aa5fd47c8c9cd5d5a4df110913adba
4
- data.tar.gz: e63f633f649f3b86d60cdf7595e0233b20e9a3c0
3
+ metadata.gz: bb3922050856fde416418880302b163f39d69388
4
+ data.tar.gz: a9826eeafece63eea9a0f193167352bdfc2fe298
5
5
  SHA512:
6
- metadata.gz: 039745ae78aebe819023cf385c59e1fb988ab976a5a9624d260249358d4f0daa256416f3faab7b6612a53bd6dd92f0e27cd03021065f01ed6746a7cf0ce11685
7
- data.tar.gz: 86dc374f1043f47521f7a178826d0da19cd687e587cf897a67eee12eb60a080662a62cbcbd13e6254cdf52000ce0b0e1561dba1da9a3b70080b67537b26ccf9e
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 -C /path/to/settings.yaml
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.
@@ -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("-c", "--config CONFIG_PATH", String, "Path to settings file") do |s|
22
- @server.conf_path = s
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
- STDERR.puts e.message, "\n", opts
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
- puts "Loading config from #{@conf_path}"
17
+ @logger.info "Loading config from #{@conf_path}"
17
18
  Settings.source @conf_path
18
19
 
19
- puts "Running with executable=#{Settings.exec_command}"
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
- puts "Get queue '#{Settings.sqs.queue_name}' ..."
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
- puts "Start polling queue each #{interval} seconds"
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
- STDERR.puts "Error:" + e.message
39
- STDERR.puts e.backtrace.map{|s| "\t"+s}.join("\n")
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
- puts "Get a messsage #{m.id}, received at #{Time.now}, sent at #{m.sent_timestamp}"
49
- puts "Object body: #{m.body}"
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
- puts "Launching a command"
54
+ @logger.info "Launching a command"
54
55
  system(Settings.exec_command)
55
- puts "Command execution code: #{$?}"
56
+ @logger.info "Command execution code: #{$?}"
56
57
  end
57
58
  rescue => e
58
- puts "Error parsing a message:" + e.message
59
- puts e.backtrace.map{|s| "\t"+s}.join("\n")
60
- puts "Continuing..."
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
@@ -1,3 +1,3 @@
1
1
  module UsbunfreezeDaemon
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -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 server}
12
- spec.description = %q{Usbunfreeze server}
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.0
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 server
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 server
139
+ summary: Usbunfreeze Daemon
140
140
  test_files: []