warcorrespondent 0.2.1 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ rdoc
19
19
  pkg
20
20
 
21
21
  ## PROJECT::SPECIFIC
22
+ warcorrespondent.gemspec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.3
data/bin/warcorrespondent CHANGED
@@ -9,8 +9,19 @@ end
9
9
 
10
10
  require 'daemons'
11
11
 
12
- Daemons.run_proc('warcorrespondent.rb') do
13
- WarCorrespondent::setup
14
- WarCorrespondent::run
12
+ if !WarCorrespondent::config_file
13
+ WarCorrespondent::Installer::install
14
+ exit
15
+ end
16
+
17
+ if WarCorrespondent::config_file
18
+ Daemons.run_proc('warcorrespondent.rb') do
19
+ WarCorrespondent::setup
20
+ WarCorrespondent::run
21
+ end
22
+ else
23
+ puts "Could not find config file although it should have been installed."
24
+ puts "Maybe you should try it manually, see documentation."
25
+ puts "I'm bailing out now..."
15
26
  end
16
27
 
data/dev ADDED
File without changes
@@ -0,0 +1,74 @@
1
+ module WarCorrespondent
2
+ module Installer
3
+
4
+ TEXT_INTRO = <<-EOT
5
+ warcorrespondent could not find your config file and will now guide you
6
+ through the setup process.
7
+
8
+ Do you want to install system-wide (1) or in your home directory(2)? [1]
9
+ EOT
10
+
11
+ TEXT_TARGET = <<-EOT
12
+ Where do you want warcorrespondent to report to?
13
+ If you want to report to warroom, just press enter [http://warroom.tliff.de/reports]
14
+ EOT
15
+
16
+ TEXT_SECRET = <<-EOT
17
+ What is the secret this warcorrespondent instance will
18
+ use to authenticate to warroom?
19
+ EOT
20
+
21
+ TEXT_BASIC_SETUP = <<-EOT
22
+ warcorrespondent can now set up basic reporting for this host.
23
+ Would you like to have that set up for you(y/n)[y]?
24
+ EOT
25
+
26
+ TEXT_TEMPLATE = <<-EOT
27
+ WarCorrespondent::Reporters::CPU.new(:identifier => 'hosts:@@HOST@@:stats')
28
+ WarCorrespondent::Reporters::LoadAvg.new(:identifier => 'hosts::@@HOST@@:stats')
29
+ WarCorrespondent::Reporters::Memory.new(:identifier => 'hosts::@@HOST@@:stats')
30
+ WarCorrespondent::Reporters::Net.new(:identifier => 'hosts::@@HOST@@:stats')
31
+ EOT
32
+
33
+ TEXT_DONE = <<-EOT
34
+ Setup is now complete.
35
+ EOT
36
+
37
+
38
+ def self.install
39
+ puts TEXT_INTRO
40
+ basepath = nil
41
+ while (cmd = gets.strip) && !['1', '2', ''].member?(cmd) do end
42
+ if cmd == '1' || cmd == '' then
43
+ basepath = '/etc/warcorrespondent'
44
+ elsif cmd == '2'
45
+ basepath = File.expand_path('~/.warcorrespondent')
46
+ end
47
+ #create the directory if necessary
48
+ if !File.exists?(basepath) then Dir.mkdir(basepath) end
49
+ if !File.exists?(basepath+"/reporters") then Dir.mkdir(basepath+"/reporters") end
50
+ config = {}
51
+ puts TEXT_TARGET
52
+ url = gets.strip
53
+ config['url'] = url.empty? ? "http://warroom.tliff.de/reports" : url
54
+ puts TEXT_SECRET
55
+ while (config['secret'] = gets.strip) && config['secret'].empty? do end
56
+ File.open( "#{basepath}/warcorrespondent.yml", 'w+' ) do |f|
57
+ YAML.dump(config, f)
58
+ end
59
+
60
+ puts TEXT_BASIC_SETUP
61
+ while (cmd = gets.strip) && !['y', 'n', ''].member?(cmd) do end
62
+ if cmd == 'y' || cmd == '' then
63
+ hostname = `hostname`.strip
64
+
65
+ File.open("#{basepath}/reporters/basic.rb", "w+") do |f|
66
+ f.write(TEXT_TEMPLATE.gsub(/@@HOST@@/, hostname))
67
+ end
68
+ end
69
+
70
+ puts TEXT_DONE
71
+
72
+ end
73
+ end
74
+ end
@@ -39,6 +39,6 @@ module WarCorrespondent
39
39
 
40
40
  end
41
41
 
42
- Dir.glob(File.dirname(__FILE__) + "/reporters/*.rb") do |i|
43
- require i
42
+ Dir.glob(File.dirname(__FILE__) + "/reporters/*.rb") do |i|
43
+ require i
44
44
  end
@@ -5,11 +5,11 @@ module WarCorrespondent
5
5
  @block = Proc.new do
6
6
  load = SystemInformation::load
7
7
  [
8
- {:identifier => "load:1", :type => "float", :value => load[:load_1]},
9
- {:identifier => "load:5", :type => "float", :value => load[:load_5]},
10
- {:identifier => "load:15", :type => "float", :value => load[:load_15]},
11
- {:identifier => "processes:running", :type => "integer", :value => load[:procs_running]},
12
- {:identifier => "processes:total", :type => "integer", :value => load[:procs_total]}
8
+ {:identifier => "load:1", :value => load[:load_1]},
9
+ {:identifier => "load:5", :value => load[:load_5]},
10
+ {:identifier => "load:15", :value => load[:load_15]},
11
+ {:identifier => "processes:running", :value => load[:procs_running]},
12
+ {:identifier => "processes:total", :value => load[:procs_total]}
13
13
  ]
14
14
  end
15
15
  super(args)
@@ -1,26 +1,46 @@
1
1
  require 'warcorrespondent/reporter.rb'
2
2
  require 'warcorrespondent/uplink.rb'
3
+ require 'warcorrespondent/installer.rb'
3
4
  require 'json'
4
5
  require 'systeminformation'
5
6
  require 'yaml'
6
7
 
7
8
  module WarCorrespondent
8
- CONFIG_FILE = '/etc/warcorrespondent/warcorrespondent.yml'
9
- REPORTERS_DIRECTORIES = '/etc/warcorrespondent/reporters'
9
+
10
+ def self.config_base_directory
11
+ [ '/etc/warcorrespondent', '~/.warcorrespondent'].each do |f|
12
+ if File.exists?(File.expand_path(f))
13
+ return File.expand_path(f)
14
+ end
15
+ end
16
+ nil
17
+ end
18
+
19
+ def self.config_file
20
+ config_base_directory+"/warcorrespondent.yml" if config_base_directory
21
+ end
10
22
 
23
+ def self.reporters_directory
24
+ config_base_directory+"/reporters" if config_base_directory
25
+ end
26
+
11
27
  def self.setup
12
28
  @@reporters ||= []
13
29
  @@uplink = Uplink.new
14
30
  begin
15
- @@config = YAML.load_file(CONFIG_FILE)
31
+ @@config = YAML.load_file(config_file)
16
32
  @@uplink.url = @@config['url']
17
33
  @@uplink.secret = @@config['secret']
18
34
  rescue
19
- raise "Could not load config file #{CONFIG_FILE}"
35
+ raise "Could not load config file #{config_file}"
20
36
  exit
21
37
  end
22
- Dir.glob("#{REPORTERS_DIRECTORIES}/*.rb").each do |i|
23
- require i
38
+ Dir.glob("#{reporters_directory}/*.rb").each do |i|
39
+ begin
40
+ require i
41
+ rescue
42
+ puts "Parse error in #{i}. Bailing out."
43
+ end
24
44
  end
25
45
  end
26
46
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 1
9
- version: 0.2.1
8
+ - 3
9
+ version: 0.2.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Stefan Maier
@@ -14,13 +14,14 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-06-10 00:00:00 +02:00
17
+ date: 2010-06-14 00:00:00 +02:00
18
18
  default_executable: warcorrespondent
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
@@ -33,6 +34,7 @@ dependencies:
33
34
  name: daemons
34
35
  prerelease: false
35
36
  requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
36
38
  requirements:
37
39
  - - ">="
38
40
  - !ruby/object:Gem::Version
@@ -45,6 +47,7 @@ dependencies:
45
47
  name: systeminformation
46
48
  prerelease: false
47
49
  requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
48
51
  requirements:
49
52
  - - ">="
50
53
  - !ruby/object:Gem::Version
@@ -70,7 +73,9 @@ files:
70
73
  - Rakefile
71
74
  - VERSION
72
75
  - bin/warcorrespondent
76
+ - dev
73
77
  - lib/warcorrespondent.rb
78
+ - lib/warcorrespondent/installer.rb
74
79
  - lib/warcorrespondent/reporter.rb
75
80
  - lib/warcorrespondent/reporters/cpu.rb
76
81
  - lib/warcorrespondent/reporters/loadavg.rb
@@ -78,7 +83,6 @@ files:
78
83
  - lib/warcorrespondent/reporters/net.rb
79
84
  - lib/warcorrespondent/reporters/users.rb
80
85
  - lib/warcorrespondent/uplink.rb
81
- - warcorrespondent.gemspec
82
86
  has_rdoc: true
83
87
  homepage: http://github.com/tliff/warcorrespondent
84
88
  licenses: []
@@ -89,6 +93,7 @@ rdoc_options:
89
93
  require_paths:
90
94
  - lib
91
95
  required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
92
97
  requirements:
93
98
  - - ">="
94
99
  - !ruby/object:Gem::Version
@@ -96,6 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
101
  - 0
97
102
  version: "0"
98
103
  required_rubygems_version: !ruby/object:Gem::Requirement
104
+ none: false
99
105
  requirements:
100
106
  - - ">="
101
107
  - !ruby/object:Gem::Version
@@ -105,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
111
  requirements: []
106
112
 
107
113
  rubyforge_project:
108
- rubygems_version: 1.3.6
114
+ rubygems_version: 1.3.7
109
115
  signing_key:
110
116
  specification_version: 3
111
117
  summary: warcorrespondent reports to the warroom.
@@ -1,64 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{warcorrespondent}
8
- s.version = "0.2.1"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Stefan Maier"]
12
- s.date = %q{2010-06-10}
13
- s.default_executable = %q{warcorrespondent}
14
- s.description = %q{warcorrespondent collects data and reports it back to warroom.}
15
- s.email = %q{stefanmaier@gmail.com}
16
- s.executables = ["warcorrespondent"]
17
- s.extra_rdoc_files = [
18
- "LICENSE",
19
- "README.rdoc"
20
- ]
21
- s.files = [
22
- ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/warcorrespondent",
29
- "lib/warcorrespondent.rb",
30
- "lib/warcorrespondent/reporter.rb",
31
- "lib/warcorrespondent/reporters/cpu.rb",
32
- "lib/warcorrespondent/reporters/loadavg.rb",
33
- "lib/warcorrespondent/reporters/memory.rb",
34
- "lib/warcorrespondent/reporters/net.rb",
35
- "lib/warcorrespondent/reporters/users.rb",
36
- "lib/warcorrespondent/uplink.rb",
37
- "warcorrespondent.gemspec"
38
- ]
39
- s.homepage = %q{http://github.com/tliff/warcorrespondent}
40
- s.rdoc_options = ["--charset=UTF-8"]
41
- s.require_paths = ["lib"]
42
- s.rubygems_version = %q{1.3.6}
43
- s.summary = %q{warcorrespondent reports to the warroom.}
44
-
45
- if s.respond_to? :specification_version then
46
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
- s.specification_version = 3
48
-
49
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
50
- s.add_runtime_dependency(%q<json>, [">= 0"])
51
- s.add_runtime_dependency(%q<daemons>, [">= 0"])
52
- s.add_runtime_dependency(%q<systeminformation>, [">= 0"])
53
- else
54
- s.add_dependency(%q<json>, [">= 0"])
55
- s.add_dependency(%q<daemons>, [">= 0"])
56
- s.add_dependency(%q<systeminformation>, [">= 0"])
57
- end
58
- else
59
- s.add_dependency(%q<json>, [">= 0"])
60
- s.add_dependency(%q<daemons>, [">= 0"])
61
- s.add_dependency(%q<systeminformation>, [">= 0"])
62
- end
63
- end
64
-