amiral 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/amiral/agent.rb +5 -1
- data/lib/amiral/fact_provider.rb +34 -0
- data/lib/amiral/matcher.rb +1 -3
- data/lib/amiral/providers/facts.rb +1 -2
- data/lib/amiral/version.rb +1 -1
- data/lib/amiral.rb +1 -0
- metadata +2 -1
data/lib/amiral/agent.rb
CHANGED
@@ -40,6 +40,9 @@ module Amiral
|
|
40
40
|
:port => @settings[:port],
|
41
41
|
:driver => :hiredis,
|
42
42
|
:logger => @logger
|
43
|
+
|
44
|
+
# start a thread which will refresh fact every minute
|
45
|
+
FactProvider.refresh
|
43
46
|
end
|
44
47
|
|
45
48
|
def run args
|
@@ -62,7 +65,8 @@ module Amiral
|
|
62
65
|
@logger.debug "incoming message"
|
63
66
|
message = deserialize payload
|
64
67
|
|
65
|
-
if agent_matches?
|
68
|
+
if (agent_matches?(message['match']) and
|
69
|
+
PROVIDERS.has_key? message['command']['provider'])
|
66
70
|
@logger.info "valid request type: #{message['command']['provider']}"
|
67
71
|
uuid = uuidgen
|
68
72
|
send_ack(:in_reply_to => message['reply_to'],
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'facter'
|
3
|
+
|
4
|
+
module Amiral
|
5
|
+
class FactProvider
|
6
|
+
def self.refresh
|
7
|
+
Thread.new do
|
8
|
+
while true
|
9
|
+
Facter.loadfacts
|
10
|
+
if File.exist?("/etc/facts.txt")
|
11
|
+
File.readlines("/etc/facts.txt").each do |line|
|
12
|
+
if line =~ /^(.+)=(.+)$/
|
13
|
+
var = $1; val = $2
|
14
|
+
|
15
|
+
Facter.add(var) do
|
16
|
+
setcode { val }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
sleep 60 # refresh every minute
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.all
|
27
|
+
Facter.to_hash
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.[](index)
|
31
|
+
Facter.value(index)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/amiral/matcher.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'facter'
|
3
1
|
|
4
2
|
module Amiral
|
5
3
|
class Matcher
|
@@ -21,7 +19,7 @@ module Amiral
|
|
21
19
|
|
22
20
|
if @spec.has_key? :facts
|
23
21
|
@spec[:facts].map do |k,v|
|
24
|
-
return false unless
|
22
|
+
return false unless FactProvider[k].to_s =~ Regexp.new(v)
|
25
23
|
end
|
26
24
|
end
|
27
25
|
true
|
data/lib/amiral/version.rb
CHANGED
data/lib/amiral.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amiral
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- bin/amiral.rb
|
125
125
|
- lib/amiral.rb
|
126
126
|
- lib/amiral/agent.rb
|
127
|
+
- lib/amiral/fact_provider.rb
|
127
128
|
- lib/amiral/matcher.rb
|
128
129
|
- lib/amiral/message.rb
|
129
130
|
- lib/amiral/providers.rb
|