chef_knives 0.4.1 → 0.5

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.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.5 / 2009-15-09
2
+
3
+ * added chef_node_last_checkin script
4
+
1
5
  === 0.4.1 / 2009-14-09
2
6
 
3
7
  * require chef gem >= 0.7
data/Manifest.txt CHANGED
@@ -5,6 +5,7 @@ README.txt
5
5
  Rakefile
6
6
  bin/chef_node_find
7
7
  bin/chef_node_fs_usage
8
+ bin/chef_node_last_checkin
8
9
  bin/chef_node_mem_usage
9
10
  bin/chef_node_stats
10
11
  bin/chef_vlan_stats
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'couchrest'
4
+ require 'chef'
5
+ require 'choice'
6
+ require 'pp'
7
+
8
+ CHEF_DB_URL = 'http://localhost:5984/chef'
9
+
10
+ def last_check_in_time(last_check_in)
11
+ status_msg = ''
12
+ hours, minutes, seconds, frac = DateTime.day_fraction_to_time(DateTime.now - last_check_in)
13
+ hours_text = "#{hours} hour#{hours == 1 ? '' : 's'}"
14
+ minutes_text = "#{minutes} minute#{minutes == 1 ? '' : 's'}"
15
+ if hours > 48
16
+ status_msg = "> #{hours/24} days ago"
17
+ elsif hours > 0
18
+ status_msg = "> #{hours_text} ago"
19
+ elsif minutes < 1
20
+ status_msg = "< 1 minute ago"
21
+ else
22
+ status_msg = "#{minutes_text} ago"
23
+ end
24
+ status_msg
25
+ end
26
+
27
+ def main
28
+ Choice.options do
29
+ header ''
30
+ header 'Available options:'
31
+
32
+ option :help do
33
+ long '--help'
34
+ short '-h'
35
+ desc 'Show this message'
36
+ action do
37
+ Choice.help
38
+ exit
39
+ end
40
+ end
41
+
42
+ option :threshold do
43
+ long '--threshold=MINUTES'
44
+ short '-t'
45
+ desc 'Print only the nodes with last check-in time greater than than this value'
46
+ end
47
+ end
48
+
49
+ db = CouchRest.database(CHEF_DB_URL)
50
+
51
+ db.documents['rows'].each do |doc|
52
+ if doc['id'] =~ /node_/
53
+ node = db.get(doc['id'])
54
+ next if node.fqdn !~ /#{Choice.choices[:match]}/
55
+ last_check_in = DateTime.parse(Time.at(node.ohai_time).to_s)
56
+ hours, minutes, seconds, frac = DateTime.day_fraction_to_time(DateTime.now - last_check_in)
57
+ if Choice.choices[:threshold]
58
+ if ((hours * 60) + minutes) >= Choice.choices[:threshold].to_i
59
+ print "#{node.fqdn}: ".ljust(40)
60
+ puts last_check_in_time(last_check_in)
61
+ end
62
+ else
63
+ print "#{node.fqdn}: ".ljust(50)
64
+ puts last_check_in_time(last_check_in)
65
+ end
66
+ end
67
+ end
68
+
69
+ end
70
+
71
+ main
data/chef_knives.gemspec CHANGED
@@ -1,15 +1,18 @@
1
+ (in /Users/rubiojr/Work/github/chef_knives)
2
+ # -*- encoding: utf-8 -*-
3
+
1
4
  Gem::Specification.new do |s|
2
5
  s.name = %q{chef_knives}
3
- s.version = "0.4.1"
6
+ s.version = "0.5"
4
7
 
5
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
9
  s.authors = ["Sergio Rubio"]
7
- s.date = %q{2009-09-14}
10
+ s.date = %q{2009-09-15}
8
11
  s.description = %q{Unofficial Chef Server scripts and related stuff. http://wiki.opscode.com/display/chef}
9
12
  s.email = ["sergio@rubio.name"]
10
- s.executables = ["chef_node_find", "chef_node_fs_usage", "chef_node_mem_usage", "chef_node_stats", "chef_vlan_stats"]
13
+ s.executables = ["chef_node_find", "chef_node_fs_usage", "chef_node_last_checkin", "chef_node_mem_usage", "chef_node_stats", "chef_vlan_stats"]
11
14
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
12
- s.files = ["AUTHORS", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/chef_node_find", "bin/chef_node_fs_usage", "bin/chef_node_mem_usage", "bin/chef_node_stats", "bin/chef_vlan_stats", "chef_knives.gemspec", "lib/chef/knives.rb"]
15
+ s.files = ["AUTHORS", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/chef_node_find", "bin/chef_node_fs_usage", "bin/chef_node_last_checkin", "bin/chef_node_mem_usage", "bin/chef_node_stats", "bin/chef_vlan_stats", "chef_knives.gemspec", "lib/chef/knives.rb"]
13
16
  s.homepage = %q{http://github.com/rubiojr/chef-knives}
14
17
  s.rdoc_options = ["--main", "README.txt"]
15
18
  s.require_paths = ["lib"]
data/lib/chef/knives.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Chef
2
2
  module Knives
3
- VERSION = '0.4.1'
3
+ VERSION = '0.5'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef_knives
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: "0.5"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Rubio
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-14 00:00:00 +02:00
12
+ date: 2009-09-15 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -78,6 +78,7 @@ email:
78
78
  executables:
79
79
  - chef_node_find
80
80
  - chef_node_fs_usage
81
+ - chef_node_last_checkin
81
82
  - chef_node_mem_usage
82
83
  - chef_node_stats
83
84
  - chef_vlan_stats
@@ -95,6 +96,7 @@ files:
95
96
  - Rakefile
96
97
  - bin/chef_node_find
97
98
  - bin/chef_node_fs_usage
99
+ - bin/chef_node_last_checkin
98
100
  - bin/chef_node_mem_usage
99
101
  - bin/chef_node_stats
100
102
  - bin/chef_vlan_stats