pdo 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -5,6 +5,7 @@
5
5
  .bundle
6
6
  .config
7
7
  .rvmrc
8
+ .versions.conf
8
9
  .yardoc
9
10
  Gemfile.lock
10
11
  InstalledFiles
data/bin/pdo CHANGED
@@ -13,7 +13,7 @@ require 'pdo/pdoopts'
13
13
  require 'pdo/task'
14
14
  require 'pp'
15
15
 
16
- logger = Logger['main'] || Logger['pdo']
16
+ include Logging
17
17
 
18
18
  opts = OpenStruct.new
19
19
  # setting default values
@@ -5,14 +5,24 @@ log4r_config:
5
5
  level : INFO
6
6
  outputters:
7
7
  - stderr
8
+ - logfile
8
9
 
9
- # define all outputters (incl. formatters)
10
10
  outputters:
11
11
  - type : StderrOutputter
12
12
  name : stderr
13
- level : INFO
13
+ level : ERROR
14
14
  formatter:
15
15
  type : PatternFormatter
16
16
  pattern: "%d, %C: %l, %m"
17
17
 
18
+ - type : DateFileOutputter
19
+ name : logfile
20
+ level : INFO
21
+ date_pattern: '%Y%m%d'
22
+ trunc : 'false'
23
+ dirname : '#{LOGDIR}'
24
+ formatter :
25
+ type : PatternFormatter
26
+ pattern : '%d %l: %m'
27
+
18
28
  # vim: set et ts=2 sts=2 sw=2 si sta:
data/lib/pdo.rb CHANGED
@@ -1,10 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- include Process
3
+ require 'pdo/logging'
4
4
 
5
5
  class PDO
6
+ include Process
7
+ include Logging
8
+
6
9
  def initialize(tasks, thread_num)
7
- @logger = Logger[self.class.to_s] || Logger['pdo']
8
10
  @tasks = tasks
9
11
  @thread_num = thread_num
10
12
  end
@@ -23,14 +25,14 @@ class PDO
23
25
  1.upto(n) do
24
26
  Thread.new do
25
27
  while true do
26
- @logger.info "#{Thread.current.object_id} started."
28
+ logger.info "#{Thread.current.object_id} started."
27
29
  begin
28
30
  execute(@tasks.next)
29
31
  # presumably new data is ready, thus i stop.
30
32
  # main thread will read :output and then wakes me up.
31
33
  Thread.stop
32
34
  rescue
33
- @logger.info "No more task for #{Thread.current.object_id}."
35
+ logger.info "No more task for #{Thread.current.object_id}."
34
36
  break
35
37
  end
36
38
  end
@@ -44,7 +46,7 @@ class PDO
44
46
  Thread.list.each do |t|
45
47
  next if t == Thread.main
46
48
  if t.key? :output and t.key? :new_data and t[:new_data] then
47
- @logger.info "#{t.object_id} finished."
49
+ logger.info "#{t.object_id} finished."
48
50
  puts "=== #{t[:target]} ==="
49
51
  t[:output].each {|x| puts x}
50
52
  # puts t[:output].join('').gsub("\n", ' | ').chomp(' | ')
@@ -1,14 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'log4r'
4
- include Log4r
5
-
6
3
  require 'pp'
7
4
  require 'yaml'
5
+ require_relative 'logging'
8
6
 
9
7
  module Host
10
8
 
11
- @@logger = Logger[self.class.to_s] || Logger['pdo']
9
+ include Logging
12
10
 
13
11
  @@recursive_level = 9
14
12
  def self.recursive_level=(level)
@@ -30,8 +28,8 @@ module Host
30
28
  begin
31
29
  hosts.update(YAML::load_file(f))
32
30
  rescue => ex
33
- @@logger.warn { "#{ex.class}: #{ex.message}" }
34
- @@logger.debug { ex.backtrace.join "\n" }
31
+ logger.warn { "#{ex.class}: #{ex.message}" }
32
+ logger.debug { ex.backtrace.join "\n" }
35
33
  end
36
34
  end
37
35
  return @@host_hash = hosts
@@ -47,7 +45,7 @@ module Host
47
45
 
48
46
  level += 1
49
47
  if level > @@recursive_level then
50
- @@logger.warn "circle detected in the host definition file."
48
+ logger.warn "circle detected in the host definition file."
51
49
  return []
52
50
  end
53
51
 
@@ -64,11 +62,11 @@ module Host
64
62
  return [ group ]
65
63
  end
66
64
  rescue => ex
67
- @@logger.warn {
65
+ logger.warn {
68
66
  "failed to get hash value for #{group.inspect}. "\
69
67
  'possibly an error in the yaml file.'
70
68
  }
71
- @@logger.debug { ex.backtrace.join "\n" }
69
+ logger.debug { ex.backtrace.join "\n" }
72
70
  return []
73
71
  end
74
72
  end
@@ -83,7 +81,7 @@ module Host
83
81
  elsif list_of_hosts.is_a? Array then
84
82
  list_of_hosts.each do |h|
85
83
  if not h.is_a? String then
86
- @@logger.warn {
84
+ logger.warn {
87
85
  "invalid host or group format: #{h.inspect}\n"\
88
86
  'possibly an error in the yaml file.'
89
87
  }
@@ -96,7 +94,7 @@ module Host
96
94
  end
97
95
  end
98
96
  else
99
- @@logger.fatal "I don't know how to handle this. "\
97
+ logger.fatal "I don't know how to handle this. "\
100
98
  'possibly an error in the yaml file.'
101
99
  exit 1
102
100
  end
@@ -116,7 +114,7 @@ module Host
116
114
 
117
115
  def stepping(hosts, step)
118
116
  unless hosts.is_a? Array or step.is_a? Array then
119
- @@logger.warn "both hosts or step should be array."
117
+ logger.warn "both hosts or step should be array."
120
118
  return nil
121
119
  end
122
120
 
@@ -162,11 +160,11 @@ module Host
162
160
  return [ ]
163
161
  end
164
162
  rescue => ex
165
- @@logger.warn {
163
+ logger.warn {
166
164
  "failed to get hash value for #{group.inspect}. "\
167
165
  'maybe a wrong key is specifid?'
168
166
  }
169
- @@logger.debug { ex.backtrace.join "\n" }
167
+ logger.debug { ex.backtrace.join "\n" }
170
168
  return []
171
169
  end
172
170
  end
@@ -179,13 +177,13 @@ module Host
179
177
  elsif pointer.is_a? Array then
180
178
  return pointer
181
179
  else
182
- @@logger.fatal "I don't know how to handle this. "\
180
+ logger.fatal "I don't know how to handle this. "\
183
181
  'possibly an error in the yaml file.'
184
182
  exit 1
185
183
  end
186
184
 
187
185
  end
188
186
 
189
- end
187
+ end # module Host
190
188
 
191
189
  # vim: set et ts=2 sts=2 sw=2 si sta :
@@ -4,11 +4,28 @@ require 'log4r'
4
4
  require 'log4r/yamlconfigurator'
5
5
  require 'log4r/outputter/datefileoutputter'
6
6
 
7
- conf_dir = File.expand_path("#{File.dirname(__FILE__)}/../../conf")
7
+ module Logging
8
8
 
9
- [conf_dir, '/etc/pdo', "#{ENV['HOME']}/.pdo"].each { |dir|
10
- conf = "#{dir}/log4r.yaml"
11
- Log4r::YamlConfigurator.load_yaml_file conf if File.exists? conf
12
- }
9
+ include Log4r
10
+ # set the default log directory
11
+ Log4r::YamlConfigurator['LOGDIR'] =
12
+ File.expand_path("#{File.dirname(__FILE__)}/../../log")
13
+
14
+ def logger
15
+
16
+ return @logger if @logger
17
+
18
+ conf_dir = File.expand_path("#{File.dirname(__FILE__)}/../../conf")
19
+
20
+ [conf_dir, '/etc/pdo', "#{ENV['HOME']}/.pdo"].each { |dir|
21
+ conf = "#{dir}/log4r.yaml"
22
+ Log4r::YamlConfigurator.load_yaml_file conf if File.exists? conf
23
+ }
24
+
25
+ @logger = Logger[self.class.to_s] || Logger['pdo']
26
+
27
+ end
28
+
29
+ end # module Logging
13
30
 
14
31
  # vim: set et ts=2 sts=2 sw=2 si sta :
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'log4r'
4
- include Log4r
3
+ require_relative 'logging'
5
4
 
6
5
  class SSHCmd
6
+ include Logging
7
+
7
8
  def initialize(local, sshopts)
8
- @logger = Logger[self.class.to_s] || Logger['pdo']
9
9
 
10
10
  @defaults = {
11
11
  :user => 'root',
@@ -19,7 +19,7 @@ class SSHCmd
19
19
  @local = local
20
20
  @sshopts = @defaults[:sshopts]
21
21
  @sshopts = @defaults[:sshopts].update sshopts if sshopts
22
- @logger.debug { @sshopts.inspect }
22
+ logger.debug { @sshopts.inspect }
23
23
  end
24
24
 
25
25
  def form(host, cmd)
@@ -66,9 +66,9 @@ class SSHCmd
66
66
  end
67
67
 
68
68
  class Task
69
+ include Logging
69
70
 
70
71
  def initialize
71
- @logger = Logger[self.class.to_s] || Logger['pdo']
72
72
  @task_q = Queue.new
73
73
  end
74
74
 
@@ -1,3 +1,3 @@
1
1
  module Pdo
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,4 @@
1
+ # Ignore everything in this directory
2
+ *
3
+ # Except this file
4
+ !.gitignore
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - bqbn
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-03-16 00:00:00.000000000 Z
12
+ date: 2013-05-20 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: log4r
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>'
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ! '>'
25
28
  - !ruby/object:Gem::Version
@@ -47,30 +50,32 @@ files:
47
50
  - lib/pdo/pdoopts.rb
48
51
  - lib/pdo/task.rb
49
52
  - lib/pdo/version.rb
53
+ - log/.gitignore
50
54
  - pdo.gemspec
51
55
  homepage: https://github.com/bqbn/pdo
52
56
  licenses:
53
57
  - MIT
54
- metadata: {}
55
58
  post_install_message:
56
59
  rdoc_options: []
57
60
  require_paths:
58
61
  - lib
59
62
  required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
60
64
  requirements:
61
65
  - - ! '>='
62
66
  - !ruby/object:Gem::Version
63
67
  version: 1.9.3
64
68
  required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
65
70
  requirements:
66
71
  - - ! '>='
67
72
  - !ruby/object:Gem::Version
68
73
  version: '0'
69
74
  requirements: []
70
75
  rubyforge_project:
71
- rubygems_version: 2.0.2
76
+ rubygems_version: 1.8.25
72
77
  signing_key:
73
- specification_version: 4
78
+ specification_version: 3
74
79
  summary: pdo is a wrapper for running commands on or against multiple hosts at the
75
80
  same time.
76
81
  test_files: []
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZGRhYjNlMDBhZWRlMWEzNWRhZWM1OGYwZDQwZjQ4ODVlZjc2NTY0Zg==
5
- data.tar.gz: !binary |-
6
- NGU5YWQxOGI4NmYwNDgxZmUwMmJhYTdiMTdhNTQyNmRiYThlYmRkNw==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MWRmMjczMzIyN2M4ZGYxN2ZjNDg4NjgzYjVkYzIwMTBkZGQ5ZWM2MTk4Zjdk
10
- MWM2ZWU1MGI0ZmI0NWZiYmQ5OGVkNjUyNDVhMjM4YzBkYmVhM2JlYjA2NTNk
11
- N2NiMTE2MGM1YTk5MzQ4ZDI3OTdiODQ5ZjNhNGIzYTI1YThhNGI=
12
- data.tar.gz: !binary |-
13
- NDhiOTU5N2U4NTZkY2VjNzNmYmZjNzU3Y2ZhYzA0ZmY1NzRkZDI2ZTVmNzQ4
14
- ZDExMTI5YzRiNzk4MThmYmUxNzUxMGFlZmNhMDgyOTBjYjAzOTNiMjNmMzRl
15
- YzM3NTdmMmU0ODU0YjM3NjBkNDU4MTNiMjgwZjI4NGQwNGZkYWQ=