puppet-pssh 0.3 → 0.3.1

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.
Files changed (2) hide show
  1. data/lib/puppet-pssh.rb +32 -10
  2. metadata +2 -2
data/lib/puppet-pssh.rb CHANGED
@@ -4,11 +4,12 @@ require 'excon'
4
4
  require 'json'
5
5
  require 'logger'
6
6
  require 'colored'
7
+ require 'uri'
7
8
  require 'pp'
8
9
 
9
10
  module PuppetPSSH
10
11
 
11
- VERSION = "0.3"
12
+ VERSION = "0.3.1"
12
13
 
13
14
  if !defined? Log or Log.nil?
14
15
  Log = Logger.new($stdout)
@@ -27,7 +28,8 @@ module PuppetPSSH
27
28
 
28
29
 
29
30
  class BaseCommand < Clamp::Command
30
-
31
+
32
+ option "--deactivated", :flag, "Include also deactivated nodes"
31
33
  option ["-m", "--match"], "REGEX", "Only the nodes matching the regex", :default => '.*'
32
34
  option ["-p", "--puppetmaster"], "PUPPETMASTER", "Puppet master host", :default => 'puppet'
33
35
  option ["-P", "--puppetmaster-port"], "PUPPETMASTER_PORT", "Puppet master port", :default => '8080'
@@ -40,8 +42,15 @@ module PuppetPSSH
40
42
  "#{use_ssl? ? 'https' : 'http'}://#{puppetmaster}:#{puppetmaster_port}/"
41
43
  end
42
44
 
43
- def get_nodes(puppetmaster)
44
- url = "#{use_ssl? ? 'https' : 'http'}://#{puppetmaster}:#{puppetmaster_port}/nodes"
45
+ def node_status(node)
46
+ JSON.parse(
47
+ Excon.get(master_url + "status/nodes/#{node}").body
48
+ )
49
+ end
50
+
51
+ def get_nodes(puppetmaster, include_deactivated = false)
52
+ query = URI.encode '["=", ["node", "active"], true]'
53
+ url = "#{use_ssl? ? 'https' : 'http'}://#{puppetmaster}:#{puppetmaster_port}/nodes?query=#{query}"
45
54
  Log.debug "Puppet master host: #{puppetmaster}"
46
55
  Log.debug "Puppet master url: #{url}"
47
56
 
@@ -52,6 +61,16 @@ module PuppetPSSH
52
61
  next unless n =~ /#{match}/
53
62
  nodes << n
54
63
  end
64
+ # IF --deactivated, include also deactivated nodes
65
+ if deactivated?
66
+ query = URI.encode '["=", ["node", "active"], false]'
67
+ url = "#{use_ssl? ? 'https' : 'http'}://#{puppetmaster}:#{puppetmaster_port}/nodes?query=#{query}"
68
+ out = Excon.get url
69
+ JSON.parse(out.body).each do |n|
70
+ next unless n =~ /#{match}/
71
+ nodes << n
72
+ end
73
+ end
55
74
  rescue TypeError => e
56
75
  raise Exception.new "Error retrieving node list from master host: #{puppetmaster}"
57
76
  rescue Excon::Errors::SocketError => e
@@ -94,12 +113,14 @@ module PuppetPSSH
94
113
  end
95
114
  elsif status?
96
115
  puts n
97
- status = JSON.parse(
98
- Excon.get(master_url + "status/nodes/#{n}").body
99
- )
100
- puts " #{'name:'.ljust(20).yellow} #{status['name']}"
101
- puts " #{'deactivated:'.ljust(20).yellow} " +
102
- "#{status['deactivated'] || 'no'}"
116
+ status = node_status(n)
117
+ puts " #{'name:'.ljust(20).yellow} #{n}"
118
+ if status['deactivated']
119
+ puts " #{'deactivated:'.ljust(20).yellow} " +
120
+ "yes (#{status['deactivated']})"
121
+ else
122
+ puts " #{'deactivated:'.ljust(20).yellow} no"
123
+ end
103
124
  puts " #{'catalog_timestamp:'.ljust(20).yellow} " +
104
125
  "#{status['catalog_timestamp']}"
105
126
  puts " #{'facts_timestamp:'.ljust(20).yellow} " +
@@ -110,6 +131,7 @@ module PuppetPSSH
110
131
  end
111
132
  rescue Exception => e
112
133
  Log.error e.message
134
+ Log.debug e.backtrace
113
135
  exit 1
114
136
  end
115
137
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-pssh
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-24 00:00:00.000000000 Z
12
+ date: 2012-11-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: colored