gitorious-munin-plugins 0.9.17 → 0.9.19

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.
@@ -2,6 +2,7 @@
2
2
  require "gitorious-munin-plugins"
3
3
  require "gitorious-munin-plugins/version"
4
4
  require "gitorious-munin-plugins/database"
5
+ require "gitorious-munin-plugins/config"
5
6
  require "gitorious-munin-plugins/cli"
6
7
  require "gitorious-munin-plugins/plugin"
7
8
  require "gitorious-munin-plugins/usage_plugin"
@@ -0,0 +1,43 @@
1
+ module GitoriousMuninPlugins
2
+ class Config
3
+ GITORIOUS_CONF_PATH = "/etc/gitorious.conf"
4
+
5
+ def gitorious_config
6
+ yaml_file = fetch("GITORIOUS_HOME")
7
+ gitorious_yml = Pathname(fetch("GITORIOUS_HOME")) + "config/gitorious.yml"
8
+ YAML::load_file(gitorious_yml)[fetch("RAILS_ENV")]
9
+ end
10
+
11
+ def rails_env
12
+ @rails_env ||= fetch("RAILS_ENV", "production")
13
+ end
14
+
15
+ def gitorious_home
16
+ path = fetch("GITORIOUS_HOME")
17
+ Pathname(path)
18
+ end
19
+
20
+ def database_yaml
21
+ database_yaml = gitorious_home + "config/database.yml"
22
+ raise NotFound, "No database.yml found in #{database_yml}" unless database_yaml.exist?
23
+ database_yaml
24
+ end
25
+
26
+ # Fetch line matching #{key}= in /etc/gitorious.conf
27
+ def fetch(key, default_value=nil)
28
+
29
+ begin
30
+ config_file = File.read(GITORIOUS_CONF_PATH)
31
+ rescue Errno::ENOENT
32
+ abort "Gitorious configuration file #{GITORIOUS_CONF_PATH} was not found, exiting"
33
+ end
34
+
35
+ result = config_file.scan(/^#{key}=(.*)$/).flatten.first
36
+ if result
37
+ result
38
+ elsif default_value
39
+ default_value
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,35 +1,32 @@
1
1
  module GitoriousMuninPlugins
2
2
  class Database
3
3
  def initialize
4
+ @config = Config.new
4
5
  end
5
6
 
6
- def configuration
7
- @configuration ||= load_configuration
7
+ def database_configuration
8
+ @database_configuration ||= load_database_configuration
8
9
  end
9
10
 
10
- def load_configuration
11
- begin
12
- gitorious_conf = File.read("/etc/gitorious.conf")
13
- dir = gitorious_conf.scan(/^GITORIOUS_HOME=(.*)$/).flatten.first
14
- raise NotFound, "/etc/gitorious.conf was found, but no GITORIOUS_HOME was defined" unless dir
15
- rails_env = gitorious_conf.scan(/^RAILS_ENV=(.*)$/).flatten.first || "production"
16
- database_yaml = Pathname(dir) + "config/database.yml"
17
- raise NotFound, "No database.yml found in #{database_yml}" unless database_yaml.exist?
18
- YAML::load_file(database_yaml)[rails_env]
19
- rescue Errno::ENOENT
20
- raise NotFound, "Gitorious configuration file /etc/gitorious.conf was not found, exiting"
21
- end
11
+ def load_database_configuration
12
+ YAML::load_file(@config.database_yaml)[@config.rails_env]
13
+ end
14
+
15
+ def database_connection
16
+ @database_connection ||= Mysql.new(database_configuration["host"],
17
+ database_configuration["username"],
18
+ database_configuration["password"],
19
+ database_configuration["database"])
22
20
  end
23
21
 
24
22
  def select(sql)
23
+ conn = database_connection
25
24
  begin
26
- conn = Mysql.new(configuration["host"], configuration["username"], configuration["password"], configuration["database"])
27
25
  conn.query(sql)
28
26
  ensure
29
27
  conn.close
30
28
  end
31
29
  end
32
30
 
33
- class NotFound < StandardError; end
34
31
  end
35
32
  end
@@ -0,0 +1,38 @@
1
+ config = GitoriousMuninPlugins::Config.new
2
+ home = config.gitorious_home
3
+ ProxyPid = home + "../run/git-proxy-1.pid"
4
+
5
+ def ps_output
6
+ if ProxyPid.exist?
7
+ cmd = "ps ww `cat #{ProxyPid}` | egrep -v '(ps|PID)'"
8
+ res = `#{cmd}`.strip
9
+ if res =~ /\-\ (\d+)\/(\d+)\/(\d+)\ cur\/max\/tot\ conns$/
10
+ curr, max, total = $1, $2, $3
11
+ puts "curr.value #{curr}"
12
+ puts "max.value #{max}"
13
+ puts "total.value #{total}"
14
+ end
15
+ else
16
+ $stderr.puts "#{ProxyPid} not found"
17
+ end
18
+
19
+ end
20
+
21
+ case ARGV.shift
22
+ when "autoconf"
23
+ puts "no"
24
+ when "config"
25
+ puts "graph_title git-proxy activity"
26
+ puts 'graph_args -l 0'
27
+ puts 'graph_vlabel active connections'
28
+ puts 'graph_category Gitorious'
29
+ puts "curr.label Active connections"
30
+ puts "curr.draw LINE2"
31
+ puts "curr.type GAUGE"
32
+ # puts "max.label Max connections so far"
33
+ # puts "max.draw no"
34
+ # puts "total.label Total conncetions"
35
+ # puts "total.draw no"
36
+ else
37
+ ps_output
38
+ end
@@ -0,0 +1,20 @@
1
+ # SSH keys
2
+ database = GitoriousMuninPlugins::Database.new
3
+ cmd = ARGV.shift
4
+
5
+ case cmd
6
+ when "autoconf"
7
+ puts "no"
8
+ when "config"
9
+ puts "graph_title git:// Clones (within last 24 hrs)"
10
+ puts 'graph_args -l 0'
11
+ puts 'graph_vlabel Cloners'
12
+ puts 'graph_category Gitorious'
13
+ puts "new.label Clones"
14
+ puts "new.draw LINE2"
15
+ puts "new.type GAUGE"
16
+ else
17
+ database.select("select count(*) as count from cloners where date >= date_sub(now(), interval 24 hour)").each_hash do |row|
18
+ puts "new.value #{row['count'].to_i}"
19
+ end
20
+ end
@@ -0,0 +1,42 @@
1
+ config = GitoriousMuninPlugins::Config.new
2
+ GitoriousConfig = config.gitorious_config
3
+ Directories = {
4
+ "cache_dir" => GitoriousConfig["archive_cache_dir"],
5
+ "working_dir" => GitoriousConfig["archive_work_dir"],
6
+ "repo_root" => GitoriousConfig["repository_base_path"]
7
+ }
8
+ def disk_usage(key)
9
+ dir = Directories[key]
10
+ command = "du -sb #{dir} 2>/dev/null"
11
+ result = `#{command}`.split(/\s+/).first
12
+ end
13
+
14
+ cmd = ARGV.shift
15
+ case cmd
16
+ when "autoconf"
17
+ puts "no"
18
+ when "config"
19
+ puts "graph_title Disk usage"
20
+ puts "graph_args -l 0"
21
+ puts "graph_vlabel Disk usage"
22
+ puts "graph_category Gitorious"
23
+
24
+ # Cache dir
25
+ puts "cache.label Repo cache"
26
+ puts "cache.draw LINE2"
27
+ puts "cache.type GAUGE"
28
+
29
+ # Work dir
30
+ puts "work.label Repo work"
31
+ puts "work.draw LINE2"
32
+ puts "work.type GAUGE"
33
+
34
+ # Root dir
35
+ puts "root.label Repo storage"
36
+ puts "root.draw LINE2"
37
+ puts "root.type GAUGE"
38
+ else
39
+ puts "cache.value #{disk_usage('cache_dir')}"
40
+ puts "work.value #{disk_usage('working_dir')}"
41
+ puts "root.value #{disk_usage('repo_root')}"
42
+ end
@@ -17,6 +17,7 @@ EOS
17
17
  opt :status, "List install status of plugins"
18
18
  opt :install, "Install PACKAGE1 PACKAGE2. Specify 'all' to install all plugins"
19
19
  opt :uninstall, "Uninstall PACKAGE1 PACKAGE2. Specify 'all' to uninstall all plugins "
20
+ opt :try, "Try running PACKAGE"
20
21
  end
21
22
 
22
23
  if global_options[:status_given]
@@ -25,6 +26,8 @@ EOS
25
26
  install_plugins(ARGV)
26
27
  elsif global_options[:uninstall_given]
27
28
  uninstall_plugins(ARGV)
29
+ elsif global_options[:try_given]
30
+ try_running(ARGV)
28
31
  end
29
32
  end
30
33
 
@@ -50,6 +53,10 @@ EOS
50
53
  end
51
54
  end
52
55
 
56
+ def try_running(name)
57
+ load Plugin.root.realpath + "#{name}.rb"
58
+ end
59
+
53
60
  def extract_plugins_from_spec(spec)
54
61
  if spec.first == "all"
55
62
  @known_plugins.map(&:name)
@@ -1,3 +1,3 @@
1
1
  module GitoriousMuninPlugins
2
- VERSION = "0.9.17"
2
+ VERSION = "0.9.19"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitorious-munin-plugins
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 17
10
- version: 0.9.17
9
+ - 19
10
+ version: 0.9.19
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marius Mathiesen
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-11-02 00:00:00 +01:00
18
+ date: 2012-11-06 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -77,8 +77,12 @@ files:
77
77
  - gitorious-munin-plugins.gemspec
78
78
  - lib/gitorious-munin-plugins.rb
79
79
  - lib/gitorious-munin-plugins/cli.rb
80
+ - lib/gitorious-munin-plugins/config.rb
80
81
  - lib/gitorious-munin-plugins/database.rb
81
82
  - lib/gitorious-munin-plugins/plugin.rb
83
+ - lib/gitorious-munin-plugins/plugins/git_proxy.rb
84
+ - lib/gitorious-munin-plugins/plugins/gitorious_clones.rb
85
+ - lib/gitorious-munin-plugins/plugins/gitorious_disk_usage.rb
82
86
  - lib/gitorious-munin-plugins/plugins/gitorious_ssh_keys.rb
83
87
  - lib/gitorious-munin-plugins/plugins/gitorious_users.rb
84
88
  - lib/gitorious-munin-plugins/usage_plugin.rb