usbunfreeze_daemon 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []